Coverage Report

Created: 2026-10-28 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/spicy/build/ci/fuzz/PNG_File_PNG.cc
Line
Count
Source
1
// Begin of PNG (from "/src/spicy/spicy-png/analyzer/analyzer.spicy")
2
// Compiled by HILTI version 1.18.0-dev.47
3
4
#include <hilti/rt/compiler-setup.h>
5
6
#include <spicy/rt/libspicy.h>
7
#include <hilti/rt/libhilti.h>
8
9
extern uint64_t hlt_internal_PNG_File_hlto_scope;
10
11
namespace hlt_internal_PNG_File::type_info { namespace {
12
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__PLTE_ENTRY_namex2aPNG__PLTE_ENTRYx2b;
13
    extern const ::hilti::rt::TypeInfo _t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b;
14
    extern const ::hilti::rt::TypeInfo _t_ti_hilti__RecoverableFailure_namex2ahilti__RecoverableFailurex2b;
15
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__PLTE_namex2aPNG__PLTEx2b;
16
    extern const ::hilti::rt::TypeInfo _t_ti_vector_PLTE_ENTRY__vectorx2anamex2aPNG__PLTE_ENTRYx2bx2b;
17
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__bKGD_namex2aPNG__bKGDx2b;
18
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__cHRM_namex2aPNG__cHRMx2b;
19
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__gAMA_namex2aPNG__gAMAx2b;
20
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__iCCP_namex2aPNG__iCCPx2b;
21
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__iTXt_namex2aPNG__iTXtx2b;
22
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__pHYs_namex2aPNG__pHYsx2b;
23
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__sBIT_namex2aPNG__sBITx2b;
24
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__sRGB_namex2aPNG__sRGBx2b;
25
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__tEXt_namex2aPNG__tEXtx2b;
26
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__tIME_namex2aPNG__tIMEx2b;
27
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__tRNS_namex2aPNG__tRNSx2b;
28
    extern const ::hilti::rt::TypeInfo _t_ti_vector_uint_8___vectorx2auint8x2b;
29
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__zTXt_namex2aPNG__zTXtx2b;
30
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__IHDR_namex2aPNG__IHDRx2b;
31
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__File_namex2aPNG__Filex2b;
32
    extern const ::hilti::rt::TypeInfo _t_ti_PNG__Chunk_namex2aPNG__Chunkx2b;
33
    extern const ::hilti::rt::TypeInfo _t_ti_value_ref_IHDR__value_refx2anamex2aPNG__IHDRx2bx2b;
34
    extern const ::hilti::rt::TypeInfo _t_ti_vector_uint_16___vectorx2auint16x2b;
35
    extern const ::hilti::rt::TypeInfo _t_ti_value_ref_PNG__File__value_refx2anamex2aPNG__Filex2bx2b;
36
    extern const ::hilti::rt::TypeInfo _t_ti_strong_ref_const_PNG__File__strong_refx2anamex2aPNG__Filex2bx2b;
37
} }
38
39
namespace hlt_internal_PNG_File::PNG {
40
    struct PLTE_ENTRY;
41
    struct PLTE;
42
    struct bKGD;
43
    struct cHRM;
44
    struct gAMA;
45
    struct iCCP;
46
    struct iTXt;
47
    struct pHYs;
48
    struct sBIT;
49
    struct sRGB;
50
    struct tEXt;
51
    struct tIME;
52
    struct tRNS;
53
    struct zTXt;
54
    struct IHDR;
55
    struct File;
56
    struct Chunk;
57
    struct PLTE_ENTRY : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<PLTE_ENTRY> {
58
9.25M
        auto _t_self() { return ::hilti::rt::ValueReference<PLTE_ENTRY>::self(this); }
59
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> red{};
60
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> green{};
61
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> blue{};
62
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
63
        auto _t_parse_PNG__PLTE_ENTRY_4_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
64
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
65
        PLTE_ENTRY();
66
0
        PLTE_ENTRY(const PLTE_ENTRY&) = default;
67
16.3M
        PLTE_ENTRY(PLTE_ENTRY&&) = default;
68
0
        PLTE_ENTRY& operator=(const PLTE_ENTRY&) = default;
69
4.62M
        PLTE_ENTRY& operator=(PLTE_ENTRY&&) = default;
70
71
0
        std::string __to_string() const {
72
0
            return "["s + hilti::rt::to_string_for_print("$red=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$green=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$blue=(optimized out)"_hs) + "]";
73
0
        }
74
    };
75
76
    struct PLTE : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<PLTE> {
77
19.2k
        auto _t_self() { return ::hilti::rt::ValueReference<PLTE>::self(this); }
78
        ::hilti::rt::Optional<::hilti::rt::Vector<PLTE_ENTRY>> entries{};
79
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
80
        auto _t_parse_entries_3_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<PLTE_ENTRY>& _t_dst) -> ::hilti::rt::stream::View;
81
        auto _t_parse_PNG__PLTE_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
82
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
83
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
84
        PLTE();
85
0
        PLTE(const PLTE&) = default;
86
0
        PLTE(PLTE&&) = default;
87
0
        PLTE& operator=(const PLTE&) = default;
88
6.40k
        PLTE& operator=(PLTE&&) = default;
89
        explicit PLTE(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<PLTE_ENTRY>>> entries);
90
        explicit PLTE(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
91
92
0
        std::string __to_string() const {
93
0
            return "["s + "$entries=" + hilti::rt::to_string(entries) + "]";
94
0
        }
95
    };
96
97
    struct bKGD : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<bKGD> {
98
27.3k
        auto _t_self() { return ::hilti::rt::ValueReference<bKGD>::self(this); }
99
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> greyscale{};
100
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> red{};
101
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> green{};
102
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> blue{};
103
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> palette_index{};
104
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
105
        auto _t_parse_switch_10_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
106
        auto _t_parse_PNG__bKGD_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
107
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
108
        ::hilti::rt::integer::safe<uint8_t> _t_p_colour_type{};
109
        bKGD();
110
0
        bKGD(const bKGD&) = default;
111
0
        bKGD(bKGD&&) = default;
112
0
        bKGD& operator=(const bKGD&) = default;
113
9.13k
        bKGD& operator=(bKGD&&) = default;
114
        explicit bKGD(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type);
115
116
0
        std::string __to_string() const {
117
0
            return "["s + hilti::rt::to_string_for_print("$greyscale=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$red=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$green=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$blue=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$palette_index=(optimized out)"_hs) + "]";
118
0
        }
119
    };
120
121
    struct cHRM : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<cHRM> {
122
32.9k
        auto _t_self() { return ::hilti::rt::ValueReference<cHRM>::self(this); }
123
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> white_point_x{};
124
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> white_point_y{};
125
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> red_x{};
126
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> red_y{};
127
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> green_x{};
128
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> green_y{};
129
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> blue_x{};
130
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> blue_y{};
131
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
132
        auto _t_parse_PNG__cHRM_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
133
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
134
        cHRM();
135
0
        cHRM(const cHRM&) = default;
136
0
        cHRM(cHRM&&) = default;
137
0
        cHRM& operator=(const cHRM&) = default;
138
16.4k
        cHRM& operator=(cHRM&&) = default;
139
140
0
        std::string __to_string() const {
141
0
            return "["s + hilti::rt::to_string_for_print("$white_point_x=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$white_point_y=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$red_x=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$red_y=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$green_x=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$green_y=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$blue_x=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$blue_y=(optimized out)"_hs) + "]";
142
0
        }
143
    };
144
145
    struct gAMA : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<gAMA> {
146
14.5k
        auto _t_self() { return ::hilti::rt::ValueReference<gAMA>::self(this); }
147
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> gamma{};
148
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
149
        auto _t_parse_PNG__gAMA_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
150
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
151
        gAMA();
152
0
        gAMA(const gAMA&) = default;
153
0
        gAMA(gAMA&&) = default;
154
0
        gAMA& operator=(const gAMA&) = default;
155
7.25k
        gAMA& operator=(gAMA&&) = default;
156
157
0
        std::string __to_string() const {
158
0
            return "["s + hilti::rt::to_string_for_print("$gamma=(optimized out)"_hs) + "]";
159
0
        }
160
    };
161
162
    struct iCCP : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<iCCP> {
163
7.33k
        auto _t_self() { return ::hilti::rt::ValueReference<iCCP>::self(this); }
164
        ::hilti::rt::Optional<::hilti::rt::Bytes> profile_name{};
165
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> compression_method{};
166
        // ::hilti::rt::Optional<::hilti::rt::Bytes> compressed_profile{};
167
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
168
        auto _t_parse_PNG__iCCP_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
169
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
170
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
171
        iCCP();
172
0
        iCCP(const iCCP&) = default;
173
0
        iCCP(iCCP&&) = default;
174
0
        iCCP& operator=(const iCCP&) = default;
175
3.66k
        iCCP& operator=(iCCP&&) = default;
176
        explicit iCCP(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> profile_name);
177
        explicit iCCP(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
178
179
0
        std::string __to_string() const {
180
0
            return "["s + "$profile_name=" + hilti::rt::to_string(profile_name) + ", "s + hilti::rt::to_string_for_print("$compression_method=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$compressed_profile=(optimized out)"_hs) + "]";
181
0
        }
182
    };
183
184
    struct iTXt : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<iTXt> {
185
38.6k
        auto _t_self() { return ::hilti::rt::ValueReference<iTXt>::self(this); }
186
        ::hilti::rt::Optional<::hilti::rt::Bytes> keyword{};
187
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> compression_flag{};
188
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> compression_method{};
189
        ::hilti::rt::Optional<::hilti::rt::Bytes> language_tag{};
190
        ::hilti::rt::Optional<::hilti::rt::Bytes> translated_keyword{};
191
        // ::hilti::rt::Optional<::hilti::rt::Bytes> text{};
192
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
193
        auto _t_parse_PNG__iTXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
194
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
195
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
196
        iTXt();
197
0
        iTXt(const iTXt&) = default;
198
0
        iTXt(iTXt&&) = default;
199
0
        iTXt& operator=(const iTXt&) = default;
200
19.3k
        iTXt& operator=(iTXt&&) = default;
201
        explicit iTXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> language_tag, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> translated_keyword);
202
        explicit iTXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
203
204
0
        std::string __to_string() const {
205
0
            return "["s + "$keyword=" + hilti::rt::to_string(keyword) + ", "s + hilti::rt::to_string_for_print("$compression_flag=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$compression_method=(optimized out)"_hs) + ", "s + "$language_tag=" + hilti::rt::to_string(language_tag) + ", "s + "$translated_keyword=" + hilti::rt::to_string(translated_keyword) + ", "s + hilti::rt::to_string_for_print("$text=(optimized out)"_hs) + "]";
206
0
        }
207
    };
208
209
    struct pHYs : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<pHYs> {
210
12.5k
        auto _t_self() { return ::hilti::rt::ValueReference<pHYs>::self(this); }
211
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> ppux{};
212
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> ppuy{};
213
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> unit_specifier{};
214
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
215
        auto _t_parse_PNG__pHYs_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
216
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
217
        pHYs();
218
0
        pHYs(const pHYs&) = default;
219
0
        pHYs(pHYs&&) = default;
220
0
        pHYs& operator=(const pHYs&) = default;
221
6.25k
        pHYs& operator=(pHYs&&) = default;
222
223
0
        std::string __to_string() const {
224
0
            return "["s + hilti::rt::to_string_for_print("$ppux=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$ppuy=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$unit_specifier=(optimized out)"_hs) + "]";
225
0
        }
226
    };
227
228
    struct sBIT : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<sBIT> {
229
65.2k
        auto _t_self() { return ::hilti::rt::ValueReference<sBIT>::self(this); }
230
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> significant_greyscale_bits{};
231
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> significant_red_bits{};
232
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> significant_green_bits{};
233
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> significant_blue_bits{};
234
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> significant_alpha_bits{};
235
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
236
        auto _t_parse_switch_9_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
237
        auto _t_parse_PNG__sBIT_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
238
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
239
        ::hilti::rt::integer::safe<uint8_t> _t_p_colour_type{};
240
        sBIT();
241
0
        sBIT(const sBIT&) = default;
242
0
        sBIT(sBIT&&) = default;
243
0
        sBIT& operator=(const sBIT&) = default;
244
21.7k
        sBIT& operator=(sBIT&&) = default;
245
        explicit sBIT(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type);
246
247
0
        std::string __to_string() const {
248
0
            return "["s + hilti::rt::to_string_for_print("$significant_greyscale_bits=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$significant_red_bits=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$significant_green_bits=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$significant_blue_bits=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$significant_alpha_bits=(optimized out)"_hs) + "]";
249
0
        }
250
    };
251
252
    struct sRGB : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<sRGB> {
253
8.62k
        auto _t_self() { return ::hilti::rt::ValueReference<sRGB>::self(this); }
254
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> rendering_intent{};
255
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
256
        auto _t_parse_PNG__sRGB_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
257
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
258
        sRGB();
259
0
        sRGB(const sRGB&) = default;
260
0
        sRGB(sRGB&&) = default;
261
0
        sRGB& operator=(const sRGB&) = default;
262
4.31k
        sRGB& operator=(sRGB&&) = default;
263
264
0
        std::string __to_string() const {
265
0
            return "["s + hilti::rt::to_string_for_print("$rendering_intent=(optimized out)"_hs) + "]";
266
0
        }
267
    };
268
269
    struct tEXt : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<tEXt> {
270
63.7k
        auto _t_self() { return ::hilti::rt::ValueReference<tEXt>::self(this); }
271
        ::hilti::rt::Optional<::hilti::rt::Bytes> keyword{};
272
        // ::hilti::rt::Optional<::hilti::rt::Bytes> text_string{};
273
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
274
        auto _t_parse_PNG__tEXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
275
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
276
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
277
        tEXt();
278
0
        tEXt(const tEXt&) = default;
279
0
        tEXt(tEXt&&) = default;
280
0
        tEXt& operator=(const tEXt&) = default;
281
31.8k
        tEXt& operator=(tEXt&&) = default;
282
        explicit tEXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword);
283
        explicit tEXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
284
285
0
        std::string __to_string() const {
286
0
            return "["s + "$keyword=" + hilti::rt::to_string(keyword) + ", "s + hilti::rt::to_string_for_print("$text_string=(optimized out)"_hs) + "]";
287
0
        }
288
    };
289
290
    struct tIME : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<tIME> {
291
25.5k
        auto _t_self() { return ::hilti::rt::ValueReference<tIME>::self(this); }
292
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> year{};
293
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> month{};
294
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> day{};
295
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> hour{};
296
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> minute{};
297
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> second{};
298
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
299
        auto _t_parse_PNG__tIME_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
300
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
301
        tIME();
302
0
        tIME(const tIME&) = default;
303
0
        tIME(tIME&&) = default;
304
0
        tIME& operator=(const tIME&) = default;
305
12.7k
        tIME& operator=(tIME&&) = default;
306
307
0
        std::string __to_string() const {
308
0
            return "["s + hilti::rt::to_string_for_print("$year=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$month=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$day=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$hour=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$minute=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$second=(optimized out)"_hs) + "]";
309
0
        }
310
    };
311
312
    struct tRNS : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<tRNS> {
313
142k
        auto _t_self() { return ::hilti::rt::ValueReference<tRNS>::self(this); }
314
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> grey_sample_value{};
315
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> red_sample_value{};
316
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> green_sample_value{};
317
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint16_t>> blue_sample_value{};
318
        ::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>> alpha{};
319
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
320
        auto _t_parse_alpha_3_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>& _t_dst) -> ::hilti::rt::stream::View;
321
        auto _t_parse_switch_11_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
322
        auto _t_parse_PNG__tRNS_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
323
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
324
        ::hilti::rt::integer::safe<uint8_t> _t_p_colour_type{};
325
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
326
        tRNS();
327
0
        tRNS(const tRNS&) = default;
328
0
        tRNS(tRNS&&) = default;
329
0
        tRNS& operator=(const tRNS&) = default;
330
37.0k
        tRNS& operator=(tRNS&&) = default;
331
        explicit tRNS(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>>> alpha);
332
        explicit tRNS(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
333
334
0
        std::string __to_string() const {
335
0
            return "["s + hilti::rt::to_string_for_print("$grey_sample_value=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$red_sample_value=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$green_sample_value=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$blue_sample_value=(optimized out)"_hs) + ", "s + "$alpha=" + hilti::rt::to_string(alpha) + "]";
336
0
        }
337
    };
338
339
    struct zTXt : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<zTXt> {
340
22.7k
        auto _t_self() { return ::hilti::rt::ValueReference<zTXt>::self(this); }
341
        ::hilti::rt::Optional<::hilti::rt::Bytes> keyword{};
342
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> compression_method{};
343
        // ::hilti::rt::Optional<::hilti::rt::Bytes> compressed_text{};
344
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
345
        auto _t_parse_PNG__zTXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View;
346
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
347
        ::hilti::rt::integer::safe<uint32_t> _t_p_length{};
348
        zTXt();
349
0
        zTXt(const zTXt&) = default;
350
0
        zTXt(zTXt&&) = default;
351
0
        zTXt& operator=(const zTXt&) = default;
352
11.3k
        zTXt& operator=(zTXt&&) = default;
353
        explicit zTXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword);
354
        explicit zTXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length);
355
356
0
        std::string __to_string() const {
357
0
            return "["s + "$keyword=" + hilti::rt::to_string(keyword) + ", "s + hilti::rt::to_string_for_print("$compression_method=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$compressed_text=(optimized out)"_hs) + "]";
358
0
        }
359
    };
360
361
    struct IHDR : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<IHDR> {
362
66.5k
        auto _t_self() { return ::hilti::rt::ValueReference<IHDR>::self(this); }
363
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> width{};
364
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> height{};
365
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> bit_depth{};
366
        ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> colour_type{};
367
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> compression_method{};
368
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> filter_method{};
369
        // ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> interlace_method{};
370
        void _t_on_0x25_done();
371
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
372
        auto _t_parse_PNG__IHDR_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
373
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
374
        ::hilti::rt::WeakReference<File> _t_p_top{};
375
        IHDR();
376
0
        IHDR(const IHDR&) = default;
377
0
        IHDR(IHDR&&) = default;
378
0
        IHDR& operator=(const IHDR&) = default;
379
22.2k
        IHDR& operator=(IHDR&&) = default;
380
        explicit IHDR(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>>> colour_type);
381
        explicit IHDR(::hilti::rt::struct_::tag::Parameters, ::hilti::rt::ValueReference<File>& _t_p_top);
382
383
0
        std::string __to_string() const {
384
0
            return "["s + hilti::rt::to_string_for_print("$width=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$height=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$bit_depth=(optimized out)"_hs) + ", "s + "$colour_type=" + hilti::rt::to_string(colour_type) + ", "s + hilti::rt::to_string_for_print("$compression_method=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$filter_method=(optimized out)"_hs) + ", "s + hilti::rt::to_string_for_print("$interlace_method=(optimized out)"_hs) + "]";
385
0
        }
386
    };
387
388
    struct File : ::hilti::rt::trait::isStruct, ::hilti::rt::Controllable<File> {
389
14.6k
        auto _t_self() { return ::hilti::rt::ValueReference<File>::self(this); }
390
        ::hilti::rt::Optional<::hilti::rt::Bytes> signature{};
391
        ::hilti::rt::integer::safe<uint8_t> colour_type{};
392
        inline static ::spicy::rt::Parser _t_parser{};
393
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::integer::safe<int64_t>& _t_lah, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::integer::safe<int64_t>, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
394
        static auto parse1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View;
395
        static auto parse2(::hilti::rt::ValueReference<File>& _t_unit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View;
396
        static auto parse3(::hilti::rt::ValueReference<::spicy::rt::ParsedUnit>& _t_gunit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View;
397
        auto _t_parse__anon_2_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
398
        auto _t_parse_PNG__File_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, const ::hilti::rt::integer::safe<int64_t>& _t_lah, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::integer::safe<int64_t>, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
399
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
400
        File();
401
        File(const File&) = default;
402
9.83k
        File(File&&) = default;
403
        File& operator=(const File&) = default;
404
        File& operator=(File&&) = default;
405
        explicit File(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> signature, ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> colour_type);
406
407
0
        std::string __to_string() const {
408
0
            return "["s + "$signature=" + hilti::rt::to_string(signature) + ", "s + "$colour_type=" + hilti::rt::to_string(colour_type) + "]";
409
0
        }
410
    };
411
412
    struct Chunk : ::hilti::rt::trait::isStruct, hilti::rt::trait::hasParameters, ::hilti::rt::Controllable<Chunk> {
413
1.48M
        auto _t_self() { return ::hilti::rt::ValueReference<Chunk>::self(this); }
414
        ::hilti::rt::integer::safe<uint64_t> max_chunk_size{};
415
        ::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>> length{};
416
        ::hilti::rt::Optional<::hilti::rt::Bytes> chunk_type{};
417
        ::hilti::rt::Optional<::hilti::rt::ValueReference<IHDR>> ihdr{};
418
        ::hilti::rt::Optional<PLTE> plte{};
419
        ::hilti::rt::Optional<iCCP> iccp{};
420
        ::hilti::rt::Optional<pHYs> phys{};
421
        ::hilti::rt::Optional<iTXt> itxt{};
422
        ::hilti::rt::Optional<tEXt> text{};
423
        ::hilti::rt::Optional<zTXt> ztzt{};
424
        ::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>> frequency{};
425
        ::hilti::rt::Optional<cHRM> chrm{};
426
        ::hilti::rt::Optional<gAMA> gama{};
427
        ::hilti::rt::Optional<sRGB> srgb{};
428
        ::hilti::rt::Optional<sBIT> sbit{};
429
        ::hilti::rt::Optional<bKGD> bkgd{};
430
        ::hilti::rt::Optional<tRNS> trns{};
431
        ::hilti::rt::Optional<tIME> ttime{};
432
        // ::hilti::rt::Optional<::hilti::rt::Bytes> crc{};
433
        auto _t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
434
        auto _t_parse_frequency_2_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>& _t_dst) -> ::hilti::rt::stream::View;
435
        auto _t_parse_switch_5_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
436
        auto _t_parse_PNG__Chunk_2_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>>;
437
        ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error{};
438
        ::hilti::rt::WeakReference<File> _t_p_top{};
439
        Chunk();
440
        Chunk(const Chunk&) = default;
441
990k
        Chunk(Chunk&&) = default;
442
0
        Chunk& operator=(const Chunk&) = default;
443
        Chunk& operator=(Chunk&&) = default;
444
        explicit Chunk(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::integer::safe<uint64_t>> max_chunk_size, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>>> length, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> chunk_type, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::ValueReference<IHDR>>> ihdr, ::hilti::rt::Optional<::hilti::rt::Optional<PLTE>> plte, ::hilti::rt::Optional<::hilti::rt::Optional<iCCP>> iccp, ::hilti::rt::Optional<::hilti::rt::Optional<pHYs>> phys, ::hilti::rt::Optional<::hilti::rt::Optional<iTXt>> itxt, ::hilti::rt::Optional<::hilti::rt::Optional<tEXt>> text, ::hilti::rt::Optional<::hilti::rt::Optional<zTXt>> ztzt, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>>> frequency, ::hilti::rt::Optional<::hilti::rt::Optional<cHRM>> chrm, ::hilti::rt::Optional<::hilti::rt::Optional<gAMA>> gama, ::hilti::rt::Optional<::hilti::rt::Optional<sRGB>> srgb, ::hilti::rt::Optional<::hilti::rt::Optional<sBIT>> sbit, ::hilti::rt::Optional<::hilti::rt::Optional<bKGD>> bkgd, ::hilti::rt::Optional<::hilti::rt::Optional<tRNS>> trns, ::hilti::rt::Optional<::hilti::rt::Optional<tIME>> ttime);
445
        explicit Chunk(::hilti::rt::struct_::tag::Parameters, ::hilti::rt::ValueReference<File>& _t_p_top);
446
447
0
        std::string __to_string() const {
448
0
            return "["s + "$max_chunk_size=" + hilti::rt::to_string(max_chunk_size) + ", "s + "$length=" + hilti::rt::to_string(length) + ", "s + "$chunk_type=" + hilti::rt::to_string(chunk_type) + ", "s + "$ihdr=" + hilti::rt::to_string(ihdr) + ", "s + "$plte=" + hilti::rt::to_string(plte) + ", "s + "$iccp=" + hilti::rt::to_string(iccp) + ", "s + "$phys=" + hilti::rt::to_string(phys) + ", "s + "$itxt=" + hilti::rt::to_string(itxt) + ", "s + "$text=" + hilti::rt::to_string(text) + ", "s + "$ztzt=" + hilti::rt::to_string(ztzt) + ", "s + "$frequency=" + hilti::rt::to_string(frequency) + ", "s + "$chrm=" + hilti::rt::to_string(chrm) + ", "s + "$gama=" + hilti::rt::to_string(gama) + ", "s + "$srgb=" + hilti::rt::to_string(srgb) + ", "s + "$sbit=" + hilti::rt::to_string(sbit) + ", "s + "$bkgd=" + hilti::rt::to_string(bkgd) + ", "s + "$trns=" + hilti::rt::to_string(trns) + ", "s + "$ttime=" + hilti::rt::to_string(ttime) + ", "s + hilti::rt::to_string_for_print("$crc=(optimized out)"_hs) + "]";
449
0
        }
450
    };
451
452
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25is_filter = ::hilti::rt::Bool{false};
453
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25supports_filters = ::hilti::rt::Bool{false};
454
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25supports_sinks = ::hilti::rt::Bool{false};
455
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25synchronization = ::hilti::rt::Bool{false};
456
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25uses_offset = ::hilti::rt::Bool{false};
457
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25uses_random_access = ::hilti::rt::Bool{false};
458
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25uses_stream = ::hilti::rt::Bool{false};
459
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40Chunk0x25uses_sync_advance = ::hilti::rt::Bool{false};
460
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25is_filter = ::hilti::rt::Bool{false};
461
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25supports_filters = ::hilti::rt::Bool{false};
462
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25supports_sinks = ::hilti::rt::Bool{false};
463
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25synchronization = ::hilti::rt::Bool{false};
464
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25uses_offset = ::hilti::rt::Bool{false};
465
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25uses_random_access = ::hilti::rt::Bool{false};
466
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25uses_stream = ::hilti::rt::Bool{false};
467
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40File0x25uses_sync_advance = ::hilti::rt::Bool{false};
468
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25is_filter = ::hilti::rt::Bool{false};
469
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25supports_filters = ::hilti::rt::Bool{false};
470
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25supports_sinks = ::hilti::rt::Bool{false};
471
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25synchronization = ::hilti::rt::Bool{false};
472
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25uses_offset = ::hilti::rt::Bool{false};
473
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25uses_random_access = ::hilti::rt::Bool{false};
474
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25uses_stream = ::hilti::rt::Bool{false};
475
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40IHDR0x25uses_sync_advance = ::hilti::rt::Bool{false};
476
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25is_filter = ::hilti::rt::Bool{false};
477
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25supports_filters = ::hilti::rt::Bool{false};
478
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25supports_sinks = ::hilti::rt::Bool{false};
479
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25synchronization = ::hilti::rt::Bool{false};
480
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25uses_offset = ::hilti::rt::Bool{false};
481
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25uses_random_access = ::hilti::rt::Bool{false};
482
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25uses_stream = ::hilti::rt::Bool{false};
483
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE0x25uses_sync_advance = ::hilti::rt::Bool{false};
484
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25is_filter = ::hilti::rt::Bool{false};
485
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25supports_filters = ::hilti::rt::Bool{false};
486
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25supports_sinks = ::hilti::rt::Bool{false};
487
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25synchronization = ::hilti::rt::Bool{false};
488
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25uses_offset = ::hilti::rt::Bool{false};
489
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25uses_random_access = ::hilti::rt::Bool{false};
490
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25uses_stream = ::hilti::rt::Bool{false};
491
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40PLTE_ENTRY0x25uses_sync_advance = ::hilti::rt::Bool{false};
492
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25is_filter = ::hilti::rt::Bool{false};
493
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25supports_filters = ::hilti::rt::Bool{false};
494
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25supports_sinks = ::hilti::rt::Bool{false};
495
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25synchronization = ::hilti::rt::Bool{false};
496
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25uses_offset = ::hilti::rt::Bool{false};
497
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25uses_random_access = ::hilti::rt::Bool{false};
498
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25uses_stream = ::hilti::rt::Bool{false};
499
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40bKGD0x25uses_sync_advance = ::hilti::rt::Bool{false};
500
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25is_filter = ::hilti::rt::Bool{false};
501
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25supports_filters = ::hilti::rt::Bool{false};
502
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25supports_sinks = ::hilti::rt::Bool{false};
503
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25synchronization = ::hilti::rt::Bool{false};
504
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25uses_offset = ::hilti::rt::Bool{false};
505
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25uses_random_access = ::hilti::rt::Bool{false};
506
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25uses_stream = ::hilti::rt::Bool{false};
507
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40cHRM0x25uses_sync_advance = ::hilti::rt::Bool{false};
508
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25is_filter = ::hilti::rt::Bool{false};
509
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25supports_filters = ::hilti::rt::Bool{false};
510
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25supports_sinks = ::hilti::rt::Bool{false};
511
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25synchronization = ::hilti::rt::Bool{false};
512
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25uses_offset = ::hilti::rt::Bool{false};
513
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25uses_random_access = ::hilti::rt::Bool{false};
514
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25uses_stream = ::hilti::rt::Bool{false};
515
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40gAMA0x25uses_sync_advance = ::hilti::rt::Bool{false};
516
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25is_filter = ::hilti::rt::Bool{false};
517
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25supports_filters = ::hilti::rt::Bool{false};
518
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25supports_sinks = ::hilti::rt::Bool{false};
519
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25synchronization = ::hilti::rt::Bool{false};
520
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25uses_offset = ::hilti::rt::Bool{false};
521
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25uses_random_access = ::hilti::rt::Bool{false};
522
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25uses_stream = ::hilti::rt::Bool{false};
523
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iCCP0x25uses_sync_advance = ::hilti::rt::Bool{false};
524
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25is_filter = ::hilti::rt::Bool{false};
525
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25supports_filters = ::hilti::rt::Bool{false};
526
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25supports_sinks = ::hilti::rt::Bool{false};
527
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25synchronization = ::hilti::rt::Bool{false};
528
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25uses_offset = ::hilti::rt::Bool{false};
529
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25uses_random_access = ::hilti::rt::Bool{false};
530
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25uses_stream = ::hilti::rt::Bool{false};
531
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40iTXt0x25uses_sync_advance = ::hilti::rt::Bool{false};
532
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25is_filter = ::hilti::rt::Bool{false};
533
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25supports_filters = ::hilti::rt::Bool{false};
534
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25supports_sinks = ::hilti::rt::Bool{false};
535
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25synchronization = ::hilti::rt::Bool{false};
536
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25uses_offset = ::hilti::rt::Bool{false};
537
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25uses_random_access = ::hilti::rt::Bool{false};
538
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25uses_stream = ::hilti::rt::Bool{false};
539
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40pHYs0x25uses_sync_advance = ::hilti::rt::Bool{false};
540
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25is_filter = ::hilti::rt::Bool{false};
541
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25supports_filters = ::hilti::rt::Bool{false};
542
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25supports_sinks = ::hilti::rt::Bool{false};
543
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25synchronization = ::hilti::rt::Bool{false};
544
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25uses_offset = ::hilti::rt::Bool{false};
545
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25uses_random_access = ::hilti::rt::Bool{false};
546
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25uses_stream = ::hilti::rt::Bool{false};
547
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sBIT0x25uses_sync_advance = ::hilti::rt::Bool{false};
548
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25is_filter = ::hilti::rt::Bool{false};
549
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25supports_filters = ::hilti::rt::Bool{false};
550
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25supports_sinks = ::hilti::rt::Bool{false};
551
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25synchronization = ::hilti::rt::Bool{false};
552
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25uses_offset = ::hilti::rt::Bool{false};
553
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25uses_random_access = ::hilti::rt::Bool{false};
554
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25uses_stream = ::hilti::rt::Bool{false};
555
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40sRGB0x25uses_sync_advance = ::hilti::rt::Bool{false};
556
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25is_filter = ::hilti::rt::Bool{false};
557
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25supports_filters = ::hilti::rt::Bool{false};
558
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25supports_sinks = ::hilti::rt::Bool{false};
559
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25synchronization = ::hilti::rt::Bool{false};
560
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25uses_offset = ::hilti::rt::Bool{false};
561
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25uses_random_access = ::hilti::rt::Bool{false};
562
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25uses_stream = ::hilti::rt::Bool{false};
563
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tEXt0x25uses_sync_advance = ::hilti::rt::Bool{false};
564
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25is_filter = ::hilti::rt::Bool{false};
565
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25supports_filters = ::hilti::rt::Bool{false};
566
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25supports_sinks = ::hilti::rt::Bool{false};
567
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25synchronization = ::hilti::rt::Bool{false};
568
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25uses_offset = ::hilti::rt::Bool{false};
569
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25uses_random_access = ::hilti::rt::Bool{false};
570
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25uses_stream = ::hilti::rt::Bool{false};
571
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tIME0x25uses_sync_advance = ::hilti::rt::Bool{false};
572
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25is_filter = ::hilti::rt::Bool{false};
573
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25supports_filters = ::hilti::rt::Bool{false};
574
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25supports_sinks = ::hilti::rt::Bool{false};
575
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25synchronization = ::hilti::rt::Bool{false};
576
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25uses_offset = ::hilti::rt::Bool{false};
577
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25uses_random_access = ::hilti::rt::Bool{false};
578
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25uses_stream = ::hilti::rt::Bool{false};
579
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40tRNS0x25uses_sync_advance = ::hilti::rt::Bool{false};
580
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25is_filter = ::hilti::rt::Bool{false};
581
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25supports_filters = ::hilti::rt::Bool{false};
582
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25supports_sinks = ::hilti::rt::Bool{false};
583
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25synchronization = ::hilti::rt::Bool{false};
584
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25uses_offset = ::hilti::rt::Bool{false};
585
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25uses_random_access = ::hilti::rt::Bool{false};
586
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25uses_stream = ::hilti::rt::Bool{false};
587
    const ::hilti::rt::Bool _t_feat0x25PNG0x400x40zTXt0x25uses_sync_advance = ::hilti::rt::Bool{false};
588
}
589
590
namespace hlt_PNG_File::PNG::File {
591
    using Type = hlt_internal_PNG_File::PNG::File;
592
}
593
594
namespace hlt_internal_PNG_File::PNG {
595
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::PLTE_ENTRY& x) -> std::ostream&;
596
9.25M
    PLTE_ENTRY::PLTE_ENTRY() {
597
9.25M
    }
598
599
    
600
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::PLTE& x) -> std::ostream&;
601
6.40k
    PLTE::PLTE() {
602
6.40k
    }
603
604
6.40k
    PLTE::PLTE(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_length(_t_p_length) {
605
6.40k
    }
606
607
0
    PLTE::PLTE(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<hlt_internal_PNG_File::PNG::PLTE_ENTRY>>> entries) : PLTE() {
608
0
        if ( entries ) this->entries = std::move(*entries);
609
0
    }
610
611
    
612
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::bKGD& x) -> std::ostream&;
613
9.13k
    bKGD::bKGD() {
614
9.13k
    }
615
616
9.13k
    bKGD::bKGD(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type) : _t_p_colour_type(_t_p_colour_type) {
617
9.13k
    }
618
619
    
620
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::cHRM& x) -> std::ostream&;
621
32.9k
    cHRM::cHRM() {
622
32.9k
    }
623
624
    
625
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::gAMA& x) -> std::ostream&;
626
14.5k
    gAMA::gAMA() {
627
14.5k
    }
628
629
    
630
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::iCCP& x) -> std::ostream&;
631
3.66k
    iCCP::iCCP() {
632
3.66k
    }
633
634
3.66k
    iCCP::iCCP(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_length(_t_p_length) {
635
3.66k
    }
636
637
0
    iCCP::iCCP(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> profile_name) : iCCP() {
638
0
        if ( profile_name ) this->profile_name = std::move(*profile_name);
639
0
    }
640
641
    
642
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::iTXt& x) -> std::ostream&;
643
19.3k
    iTXt::iTXt() {
644
19.3k
    }
645
646
19.3k
    iTXt::iTXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_length(_t_p_length) {
647
19.3k
    }
648
649
0
    iTXt::iTXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> language_tag, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> translated_keyword) : iTXt() {
650
0
        if ( keyword ) this->keyword = std::move(*keyword);
651
0
        if ( language_tag ) this->language_tag = std::move(*language_tag);
652
0
        if ( translated_keyword ) this->translated_keyword = std::move(*translated_keyword);
653
0
    }
654
655
    
656
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::pHYs& x) -> std::ostream&;
657
12.5k
    pHYs::pHYs() {
658
12.5k
    }
659
660
    
661
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::sBIT& x) -> std::ostream&;
662
21.7k
    sBIT::sBIT() {
663
21.7k
    }
664
665
21.7k
    sBIT::sBIT(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type) : _t_p_colour_type(_t_p_colour_type) {
666
21.7k
    }
667
668
    
669
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::sRGB& x) -> std::ostream&;
670
8.62k
    sRGB::sRGB() {
671
8.62k
    }
672
673
    
674
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tEXt& x) -> std::ostream&;
675
31.8k
    tEXt::tEXt() {
676
31.8k
    }
677
678
31.8k
    tEXt::tEXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_length(_t_p_length) {
679
31.8k
    }
680
681
0
    tEXt::tEXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword) : tEXt() {
682
0
        if ( keyword ) this->keyword = std::move(*keyword);
683
0
    }
684
685
    
686
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tIME& x) -> std::ostream&;
687
25.5k
    tIME::tIME() {
688
25.5k
    }
689
690
    
691
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tRNS& x) -> std::ostream&;
692
37.0k
    tRNS::tRNS() {
693
37.0k
    }
694
695
37.0k
    tRNS::tRNS(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint8_t>& _t_p_colour_type, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_colour_type(_t_p_colour_type), _t_p_length(_t_p_length) {
696
37.0k
    }
697
698
0
    tRNS::tRNS(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>>> alpha) : tRNS() {
699
0
        if ( alpha ) this->alpha = std::move(*alpha);
700
0
    }
701
702
    
703
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::zTXt& x) -> std::ostream&;
704
11.3k
    zTXt::zTXt() {
705
11.3k
    }
706
707
11.3k
    zTXt::zTXt(::hilti::rt::struct_::tag::Parameters, const ::hilti::rt::integer::safe<uint32_t>& _t_p_length) : _t_p_length(_t_p_length) {
708
11.3k
    }
709
710
0
    zTXt::zTXt(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> keyword) : zTXt() {
711
0
        if ( keyword ) this->keyword = std::move(*keyword);
712
0
    }
713
714
    
715
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::IHDR& x) -> std::ostream&;
716
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::File& x) -> std::ostream&;
717
    extern void _t_hook_IHDR__t_on_0x25_done(::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::IHDR>& _t_self);
718
22.2k
    IHDR::IHDR() {
719
22.2k
    }
720
721
22.2k
    IHDR::IHDR(::hilti::rt::struct_::tag::Parameters, ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>& _t_p_top) : _t_p_top(_t_p_top) {
722
22.2k
    }
723
724
0
    IHDR::IHDR(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>>> colour_type) : IHDR() {
725
0
        if ( colour_type ) this->colour_type = std::move(*colour_type);
726
0
    }
727
728
    
729
    extern auto operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::Chunk& x) -> std::ostream&;
730
27.1k
    File::File() {
731
27.1k
        colour_type = ::hilti::rt::integer::safe<std::uint8_t>{0U};
732
27.1k
    }
733
734
0
    File::File(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> signature, ::hilti::rt::Optional<::hilti::rt::integer::safe<uint8_t>> colour_type) : File() {
735
0
        if ( signature ) this->signature = std::move(*signature);
736
0
        if ( colour_type ) this->colour_type = std::move(*colour_type);
737
0
    }
738
739
    
740
0
    Chunk::Chunk() {
741
0
    }
742
743
495k
    Chunk::Chunk(::hilti::rt::struct_::tag::Parameters, ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>& _t_p_top) : _t_p_top(_t_p_top) {
744
495k
        max_chunk_size = ::hilti::rt::pow(::hilti::rt::integer::safe<std::uint64_t>{2U}, ::hilti::rt::integer::safe<std::uint64_t>{31U});
745
495k
    }
746
747
0
    Chunk::Chunk(::hilti::rt::struct_::tag::Inits, ::hilti::rt::Optional<::hilti::rt::integer::safe<uint64_t>> max_chunk_size, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::integer::safe<uint32_t>>> length, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Bytes>> chunk_type, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::IHDR>>> ihdr, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::PLTE>> plte, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::iCCP>> iccp, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::pHYs>> phys, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::iTXt>> itxt, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::tEXt>> text, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::zTXt>> ztzt, ::hilti::rt::Optional<::hilti::rt::Optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>>> frequency, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::cHRM>> chrm, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::gAMA>> gama, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::sRGB>> srgb, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::sBIT>> sbit, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::bKGD>> bkgd, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::tRNS>> trns, ::hilti::rt::Optional<::hilti::rt::Optional<hlt_internal_PNG_File::PNG::tIME>> ttime) : Chunk() {
748
0
        if ( max_chunk_size ) this->max_chunk_size = std::move(*max_chunk_size);
749
0
        if ( length ) this->length = std::move(*length);
750
0
        if ( chunk_type ) this->chunk_type = std::move(*chunk_type);
751
0
        if ( ihdr ) this->ihdr = std::move(*ihdr);
752
0
        if ( plte ) this->plte = std::move(*plte);
753
0
        if ( iccp ) this->iccp = std::move(*iccp);
754
0
        if ( phys ) this->phys = std::move(*phys);
755
0
        if ( itxt ) this->itxt = std::move(*itxt);
756
0
        if ( text ) this->text = std::move(*text);
757
0
        if ( ztzt ) this->ztzt = std::move(*ztzt);
758
0
        if ( frequency ) this->frequency = std::move(*frequency);
759
0
        if ( chrm ) this->chrm = std::move(*chrm);
760
0
        if ( gama ) this->gama = std::move(*gama);
761
0
        if ( srgb ) this->srgb = std::move(*srgb);
762
0
        if ( sbit ) this->sbit = std::move(*sbit);
763
0
        if ( bkgd ) this->bkgd = std::move(*bkgd);
764
0
        if ( trns ) this->trns = std::move(*trns);
765
0
        if ( ttime ) this->ttime = std::move(*ttime);
766
0
    }
767
768
    
769
}
770
771
namespace hlt_PNG_File::PNG::File {
772
    auto parse1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable;
773
    auto parse2(::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>& _t_unit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable;
774
    auto parse3(::hilti::rt::ValueReference<::spicy::rt::ParsedUnit>& _t_gunit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable;
775
}
776
777
namespace hlt_internal_PNG_File::PNG {
778
    extern void _t_hook_IHDR__t_on_0x25_done_17851791508062947275(::hilti::rt::ValueReference<IHDR>& _t_self);
779
    extern void _t_hook_IHDR__t_on_0x25_done(::hilti::rt::ValueReference<IHDR>& _t_self);
780
    extern void _t_hook_IHDR__t_on_0x25_done_17851791508062947275(::hilti::rt::ValueReference<IHDR>& _t_self);
781
    extern void _t_register_PNG_Chunk();
782
    extern void _t_register_PNG_File();
783
    extern void _t_register_PNG_IHDR();
784
    extern void _t_register_PNG_PLTE();
785
    extern void _t_register_PNG_PLTE_ENTRY();
786
    extern void _t_register_PNG_bKGD();
787
    extern void _t_register_PNG_cHRM();
788
    extern void _t_register_PNG_gAMA();
789
    extern void _t_register_PNG_iCCP();
790
    extern void _t_register_PNG_iTXt();
791
    extern void _t_register_PNG_pHYs();
792
    extern void _t_register_PNG_sBIT();
793
    extern void _t_register_PNG_sRGB();
794
    extern void _t_register_PNG_tEXt();
795
    extern void _t_register_PNG_tIME();
796
    extern void _t_register_PNG_tRNS();
797
    extern void _t_register_PNG_zTXt();
798
    extern void _t_init_module();
799
    extern void _t_register_module();
800
}
801
802
namespace hlt_internal_PNG_File::type_info { namespace {
803
0
    const ::hilti::rt::TypeInfo _t_ti_hilti__RecoverableFailure_namex2ahilti__RecoverableFailurex2b = { "hilti::RecoverableFailure", "hilti::RecoverableFailure", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::RecoverableFailure*>(self)); }, new ::hilti::rt::type_info::Exception() };
804
0
    const ::hilti::rt::TypeInfo _t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b = { {}, "optional<spicy::RecoverableFailure>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>*>(self)); }, new ::hilti::rt::type_info::Optional(&type_info::_t_ti_hilti__RecoverableFailure_namex2ahilti__RecoverableFailurex2b, ::hilti::rt::type_info::Optional::accessor<::hilti::rt::RecoverableFailure>()) };
805
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__PLTE_ENTRY_namex2aPNG__PLTE_ENTRYx2b = { "PNG::PLTE_ENTRY", "PNG::PLTE_ENTRY", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::PLTE_ENTRY*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "red", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "green", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "blue", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::PLTE_ENTRY, _t_error)), true, false, true }})) };
806
0
    const ::hilti::rt::TypeInfo _t_ti_vector_PLTE_ENTRY__vectorx2anamex2aPNG__PLTE_ENTRYx2bx2b = { {}, "vector<PLTE_ENTRY>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::Vector<hlt_internal_PNG_File::PNG::PLTE_ENTRY>*>(self)); }, new ::hilti::rt::type_info::Vector(&type_info::_t_ti_PNG__PLTE_ENTRY_namex2aPNG__PLTE_ENTRYx2b, ::hilti::rt::type_info::Vector::accessor<hlt_internal_PNG_File::PNG::PLTE_ENTRY>()) };
807
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__PLTE_namex2aPNG__PLTEx2b = { "PNG::PLTE", "PNG::PLTE", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::PLTE*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "entries", &type_info::_t_ti_vector_PLTE_ENTRY__vectorx2anamex2aPNG__PLTE_ENTRYx2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::PLTE, entries)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Vector<hlt_internal_PNG_File::PNG::PLTE_ENTRY>>() }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::PLTE, _t_error)), true, false, true }})) };
808
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__bKGD_namex2aPNG__bKGDx2b = { "PNG::bKGD", "PNG::bKGD", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::bKGD*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "greyscale", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "red", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "green", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "blue", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "palette_index", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::bKGD, _t_error)), true, false, true }})) };
809
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__cHRM_namex2aPNG__cHRMx2b = { "PNG::cHRM", "PNG::cHRM", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::cHRM*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "white_point_x", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "white_point_y", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "red_x", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "red_y", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "green_x", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "green_y", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "blue_x", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "blue_y", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::cHRM, _t_error)), true, false, true }})) };
810
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__gAMA_namex2aPNG__gAMAx2b = { "PNG::gAMA", "PNG::gAMA", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::gAMA*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "gamma", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::gAMA, _t_error)), true, false, true }})) };
811
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__iCCP_namex2aPNG__iCCPx2b = { "PNG::iCCP", "PNG::iCCP", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::iCCP*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "profile_name", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::iCCP, profile_name)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "compression_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "compressed_profile", &::hilti::rt::type_info::bytes, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::iCCP, _t_error)), true, false, true }})) };
812
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__iTXt_namex2aPNG__iTXtx2b = { "PNG::iTXt", "PNG::iTXt", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::iTXt*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "keyword", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::iTXt, keyword)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "compression_flag", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "compression_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "language_tag", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::iTXt, language_tag)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "translated_keyword", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::iTXt, translated_keyword)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "text", &::hilti::rt::type_info::bytes, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::iTXt, _t_error)), true, false, true }})) };
813
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__pHYs_namex2aPNG__pHYsx2b = { "PNG::pHYs", "PNG::pHYs", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::pHYs*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "ppux", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "ppuy", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "unit_specifier", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::pHYs, _t_error)), true, false, true }})) };
814
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__sBIT_namex2aPNG__sBITx2b = { "PNG::sBIT", "PNG::sBIT", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::sBIT*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "significant_greyscale_bits", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "significant_red_bits", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "significant_green_bits", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "significant_blue_bits", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "significant_alpha_bits", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::sBIT, _t_error)), true, false, true }})) };
815
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__sRGB_namex2aPNG__sRGBx2b = { "PNG::sRGB", "PNG::sRGB", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::sRGB*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "rendering_intent", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::sRGB, _t_error)), true, false, true }})) };
816
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__tEXt_namex2aPNG__tEXtx2b = { "PNG::tEXt", "PNG::tEXt", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::tEXt*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "keyword", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::tEXt, keyword)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "text_string", &::hilti::rt::type_info::bytes, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::tEXt, _t_error)), true, false, true }})) };
817
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__tIME_namex2aPNG__tIMEx2b = { "PNG::tIME", "PNG::tIME", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::tIME*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "year", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "month", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "day", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "hour", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "minute", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "second", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::tIME, _t_error)), true, false, true }})) };
818
0
    const ::hilti::rt::TypeInfo _t_ti_vector_uint_8___vectorx2auint8x2b = { {}, "vector<uint<8>>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>*>(self)); }, new ::hilti::rt::type_info::Vector(&::hilti::rt::type_info::uint8, ::hilti::rt::type_info::Vector::accessor<::hilti::rt::integer::safe<uint8_t>>()) };
819
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__tRNS_namex2aPNG__tRNSx2b = { "PNG::tRNS", "PNG::tRNS", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::tRNS*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "grey_sample_value", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "red_sample_value", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "green_sample_value", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "blue_sample_value", &::hilti::rt::type_info::uint16, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "alpha", &type_info::_t_ti_vector_uint_8___vectorx2auint8x2b, static_cast<std::ptrdiff_t>(offsetof(PNG::tRNS, alpha)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>>() }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::tRNS, _t_error)), true, false, true }})) };
820
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__zTXt_namex2aPNG__zTXtx2b = { "PNG::zTXt", "PNG::zTXt", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::zTXt*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "keyword", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::zTXt, keyword)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "compression_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "compressed_text", &::hilti::rt::type_info::bytes, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::zTXt, _t_error)), true, false, true }})) };
821
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__IHDR_namex2aPNG__IHDRx2b = { "PNG::IHDR", "PNG::IHDR", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::IHDR*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "width", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "height", &::hilti::rt::type_info::uint32, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "bit_depth", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "colour_type", &::hilti::rt::type_info::uint8, static_cast<std::ptrdiff_t>(offsetof(PNG::IHDR, colour_type)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::integer::safe<uint8_t>>() }, ::hilti::rt::type_info::struct_::Field{ "compression_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "filter_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "interlace_method", &::hilti::rt::type_info::uint8, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::IHDR, _t_error)), true, false, true }})) };
822
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__File_namex2aPNG__Filex2b = { "PNG::File", "PNG::File", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::File*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "signature", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::File, signature)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "colour_type", &::hilti::rt::type_info::uint8, static_cast<std::ptrdiff_t>(offsetof(PNG::File, colour_type)), false, false, true }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::File, _t_error)), true, false, true }})) };
823
0
    const ::hilti::rt::TypeInfo _t_ti_value_ref_IHDR__value_refx2anamex2aPNG__IHDRx2bx2b = { {}, "value_ref<IHDR>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::IHDR>*>(self)); }, new ::hilti::rt::type_info::ValueReference(&type_info::_t_ti_PNG__IHDR_namex2aPNG__IHDRx2b, ::hilti::rt::type_info::ValueReference::accessor<hlt_internal_PNG_File::PNG::IHDR>()) };
824
0
    const ::hilti::rt::TypeInfo _t_ti_vector_uint_16___vectorx2auint16x2b = { {}, "vector<uint<16>>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>*>(self)); }, new ::hilti::rt::type_info::Vector(&::hilti::rt::type_info::uint16, ::hilti::rt::type_info::Vector::accessor<::hilti::rt::integer::safe<uint16_t>>()) };
825
0
    const ::hilti::rt::TypeInfo _t_ti_PNG__Chunk_namex2aPNG__Chunkx2b = { "PNG::Chunk", "PNG::Chunk", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const hlt_internal_PNG_File::PNG::Chunk*>(self)); }, new ::hilti::rt::type_info::Struct(std::vector<::hilti::rt::type_info::struct_::Field>({::hilti::rt::type_info::struct_::Field{ "max_chunk_size", &::hilti::rt::type_info::uint64, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, max_chunk_size)), false, false, true }, ::hilti::rt::type_info::struct_::Field{ "length", &::hilti::rt::type_info::uint32, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, length)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::integer::safe<uint32_t>>() }, ::hilti::rt::type_info::struct_::Field{ "chunk_type", &::hilti::rt::type_info::bytes, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, chunk_type)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Bytes>() }, ::hilti::rt::type_info::struct_::Field{ "ihdr", &type_info::_t_ti_value_ref_IHDR__value_refx2anamex2aPNG__IHDRx2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, ihdr)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::IHDR>>() }, ::hilti::rt::type_info::struct_::Field{ "plte", &type_info::_t_ti_PNG__PLTE_namex2aPNG__PLTEx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, plte)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::PLTE>() }, ::hilti::rt::type_info::struct_::Field{ "iccp", &type_info::_t_ti_PNG__iCCP_namex2aPNG__iCCPx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, iccp)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::iCCP>() }, ::hilti::rt::type_info::struct_::Field{ "phys", &type_info::_t_ti_PNG__pHYs_namex2aPNG__pHYsx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, phys)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::pHYs>() }, ::hilti::rt::type_info::struct_::Field{ "itxt", &type_info::_t_ti_PNG__iTXt_namex2aPNG__iTXtx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, itxt)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::iTXt>() }, ::hilti::rt::type_info::struct_::Field{ "text", &type_info::_t_ti_PNG__tEXt_namex2aPNG__tEXtx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, text)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::tEXt>() }, ::hilti::rt::type_info::struct_::Field{ "ztzt", &type_info::_t_ti_PNG__zTXt_namex2aPNG__zTXtx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, ztzt)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::zTXt>() }, ::hilti::rt::type_info::struct_::Field{ "frequency", &type_info::_t_ti_vector_uint_16___vectorx2auint16x2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, frequency)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>>() }, ::hilti::rt::type_info::struct_::Field{ "chrm", &type_info::_t_ti_PNG__cHRM_namex2aPNG__cHRMx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, chrm)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::cHRM>() }, ::hilti::rt::type_info::struct_::Field{ "gama", &type_info::_t_ti_PNG__gAMA_namex2aPNG__gAMAx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, gama)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::gAMA>() }, ::hilti::rt::type_info::struct_::Field{ "srgb", &type_info::_t_ti_PNG__sRGB_namex2aPNG__sRGBx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, srgb)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::sRGB>() }, ::hilti::rt::type_info::struct_::Field{ "sbit", &type_info::_t_ti_PNG__sBIT_namex2aPNG__sBITx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, sbit)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::sBIT>() }, ::hilti::rt::type_info::struct_::Field{ "bkgd", &type_info::_t_ti_PNG__bKGD_namex2aPNG__bKGDx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, bkgd)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::bKGD>() }, ::hilti::rt::type_info::struct_::Field{ "trns", &type_info::_t_ti_PNG__tRNS_namex2aPNG__tRNSx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, trns)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::tRNS>() }, ::hilti::rt::type_info::struct_::Field{ "ttime", &type_info::_t_ti_PNG__tIME_namex2aPNG__tIMEx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, ttime)), false, false, true, ::hilti::rt::type_info::struct_::Field::accessor_optional<hlt_internal_PNG_File::PNG::tIME>() }, ::hilti::rt::type_info::struct_::Field{ "crc", &::hilti::rt::type_info::bytes, std::ptrdiff_t{-1}, false, false, false }, ::hilti::rt::type_info::struct_::Field{ "_t_error", &type_info::_t_ti_optional_spicy__RecoverableFailure__optionalx2anamex2ahilti__RecoverableFailurex2bx2b, static_cast<std::ptrdiff_t>(offsetof(PNG::Chunk, _t_error)), true, false, true }})) };
826
0
    const ::hilti::rt::TypeInfo _t_ti_value_ref_PNG__File__value_refx2anamex2aPNG__Filex2bx2b = { {}, "value_ref<PNG::File>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>*>(self)); }, new ::hilti::rt::type_info::ValueReference(&type_info::_t_ti_PNG__File_namex2aPNG__Filex2b, ::hilti::rt::type_info::ValueReference::accessor<hlt_internal_PNG_File::PNG::File>()) };
827
0
    const ::hilti::rt::TypeInfo _t_ti_strong_ref_const_PNG__File__strong_refx2anamex2aPNG__Filex2bx2b = { {}, "strong_ref<const PNG::File>", [](const void *self) { return hilti::rt::to_string(*reinterpret_cast<const ::hilti::rt::StrongReference<hlt_internal_PNG_File::PNG::File>*>(self)); }, new ::hilti::rt::type_info::StrongReference(&type_info::_t_ti_PNG__File_namex2aPNG__Filex2b, ::hilti::rt::type_info::StrongReference::accessor<hlt_internal_PNG_File::PNG::File>()) };
828
} }
829
830
HILTI_PRE_INIT(hlt_internal_PNG_File::PNG::_t_register_module)
831
832
4.91k
auto hlt_PNG_File::PNG::File::parse1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable {
833
4.91k
    auto args = std::make_tuple(::hilti::rt::resumable::detail::copyArg(_t_data), ::hilti::rt::resumable::detail::copyArg(_t_cur), ::hilti::rt::resumable::detail::copyArg(_t_context));
834
4.91k
    auto args_on_heap = std::make_shared<decltype(args)>(std::move(args));
835
4.91k
    auto cb = [args_on_heap = std::move(args_on_heap)](::hilti::rt::resumable::Handle* r) -> ::hilti::rt::any {
836
4.91k
        return hlt_internal_PNG_File::PNG::File::parse1(std::get<0>(*args_on_heap), std::get<1>(*args_on_heap), std::get<2>(*args_on_heap));
837
4.91k
    };
838
839
4.91k
    auto r = std::make_unique<::hilti::rt::Resumable>(std::move(cb));
840
4.91k
    r->run();
841
4.91k
    return std::move(*r);
842
4.91k
}
843
844
0
auto hlt_PNG_File::PNG::File::parse2(::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>& _t_unit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable {
845
0
    auto args = std::make_tuple(::hilti::rt::resumable::detail::copyArg(_t_unit), ::hilti::rt::resumable::detail::copyArg(_t_data), ::hilti::rt::resumable::detail::copyArg(_t_cur), ::hilti::rt::resumable::detail::copyArg(_t_context));
846
0
    auto args_on_heap = std::make_shared<decltype(args)>(std::move(args));
847
0
    auto cb = [args_on_heap = std::move(args_on_heap)](::hilti::rt::resumable::Handle* r) -> ::hilti::rt::any {
848
0
        return hlt_internal_PNG_File::PNG::File::parse2(std::get<0>(*args_on_heap), std::get<1>(*args_on_heap), std::get<2>(*args_on_heap), std::get<3>(*args_on_heap));
849
0
    };
850
851
0
    auto r = std::make_unique<::hilti::rt::Resumable>(std::move(cb));
852
0
    r->run();
853
0
    return std::move(*r);
854
0
}
855
856
0
auto hlt_PNG_File::PNG::File::parse3(::hilti::rt::ValueReference<::spicy::rt::ParsedUnit>& _t_gunit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::Resumable {
857
0
    auto args = std::make_tuple(::hilti::rt::resumable::detail::copyArg(_t_gunit), ::hilti::rt::resumable::detail::copyArg(_t_data), ::hilti::rt::resumable::detail::copyArg(_t_cur), ::hilti::rt::resumable::detail::copyArg(_t_context));
858
0
    auto args_on_heap = std::make_shared<decltype(args)>(std::move(args));
859
0
    auto cb = [args_on_heap = std::move(args_on_heap)](::hilti::rt::resumable::Handle* r) -> ::hilti::rt::any {
860
0
        return hlt_internal_PNG_File::PNG::File::parse3(std::get<0>(*args_on_heap), std::get<1>(*args_on_heap), std::get<2>(*args_on_heap), std::get<3>(*args_on_heap));
861
0
    };
862
863
0
    auto r = std::make_unique<::hilti::rt::Resumable>(std::move(cb));
864
0
    r->run();
865
0
    return std::move(*r);
866
0
}
867
868
495k
auto hlt_internal_PNG_File::PNG::Chunk::_t_parse_PNG__Chunk_2_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
869
495k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_1;::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_2;
870
495k
    auto _t_self = Chunk::_t_self();
871
495k
    ::hilti::rt::detail::checkStack();
872
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:11:14-43:1");
873
495k
    ::hilti::rt::integer::safe<uint32_t> _t_v_length;
874
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:14:13-14:18");
875
876
    // Begin parsing production: Variable: length_2 -> uint<32>;
877
495k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:14:13-14:18"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
878
495k
    ::hilti::rt::tuple::assign(std::tie(_t_v_length, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
879
495k
    if ( _t_trim ) {
880
495k
        (*_t_data).trim(_t_cur.begin());
881
495k
    }
882
883
    // End parsing production: Variable: length_2 -> uint<32>;
884
885
495k
    (*_t_self).length.valueOrInit() = _t_v_length;
886
495k
    ::hilti::rt::Result<::hilti::rt::Nothing> _t_requires = ((::hilti::rt::integer::safe<uint64_t>{::hilti::rt::detail::move_non_trivial(_t_v_length)} <= (*_t_self).max_chunk_size) ? ::hilti::rt::make_result(::hilti::rt::Nothing{}) : ::hilti::rt::result::Error{"&requires failed: ($$ <= self.max_chunk_size)"});
887
495k
    if ( ! (::hilti::rt::Bool{static_cast<bool>(_t_requires)}) ) {
888
241
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:14:20-14:56");
889
241
        throw ::spicy::rt::ParseError{::hilti::rt::detail::move_non_trivial(_t_requires).errorOrThrow(), "/src/spicy/spicy-png/analyzer/analyzer.spicy:14:20-14:56"};
890
241
    }
891
892
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:15:17-15:21");
893
894
    // Begin parsing production: Variable: chunk_type_2 -> bytes;
895
495k
    (*_t_self).chunk_type.valueOrInit() = ::spicy::rt::detail::extractBytes(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:15:5-15:30"sv, (_t_lhs_1=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
896
495k
    _t_cur = _t_cur.advance(::hilti::rt::integer::safe<std::uint64_t>{4U});
897
495k
    if ( _t_trim ) {
898
494k
        (*_t_data).trim(_t_cur.begin());
899
494k
    }
900
901
    // End parsing production: Variable: chunk_type_2 -> bytes;
902
903
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:16:5-36:6");
904
905
    // Begin parsing production: Switch: switch_5 -> [b"IHDR"] -> switch_5_case_1 | [b"PLTE"] -> switch_5_case_2 | [b"iCCP"] -> switch_5_case_3 | [b"pHYs"] -> switch_5_case_4 | [b"iTXt"] -> switch_5_case_5 | [b"tEXt"] -> switch_5_case_6 | [b"zTXt"] -> switch_5_case_7 | [b"IEND"] -> switch_5_case_8 | [b"IDAT"] -> switch_5_case_9 | [b"hIST"] -> switch_5_case_10 | [b"cHRM"] -> switch_5_case_11 | [b"gAMA"] -> switch_5_case_12 | [b"sRGB"] -> switch_5_case_13 | [b"sBIT"] -> switch_5_case_14 | [b"bKGD"] -> switch_5_case_15 | [b"tRNS"] -> switch_5_case_16 | [b"tIME"] -> switch_5_case_17 |  | * -> switch_5_default;
906
495k
    ::hilti::rt::tuple::assign(std::tie(_t_cur, _t_error), (*_t_self)._t_parse_switch_5_stage1(_t_data, _t_cur, _t_trim, _t_error));
907
    // End parsing production: Switch: switch_5 -> [b"IHDR"] -> switch_5_case_1 | [b"PLTE"] -> switch_5_case_2 | [b"iCCP"] -> switch_5_case_3 | [b"pHYs"] -> switch_5_case_4 | [b"iTXt"] -> switch_5_case_5 | [b"tEXt"] -> switch_5_case_6 | [b"zTXt"] -> switch_5_case_7 | [b"IEND"] -> switch_5_case_8 | [b"IDAT"] -> switch_5_case_9 | [b"hIST"] -> switch_5_case_10 | [b"cHRM"] -> switch_5_case_11 | [b"gAMA"] -> switch_5_case_12 | [b"sRGB"] -> switch_5_case_13 | [b"sBIT"] -> switch_5_case_14 | [b"bKGD"] -> switch_5_case_15 | [b"tRNS"] -> switch_5_case_16 | [b"tIME"] -> switch_5_case_17 |  | * -> switch_5_default;
908
909
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:37:10-37:14");
910
911
    // Begin parsing production: Variable: crc_2 -> bytes;
912
495k
    ::spicy::rt::detail::extractBytes(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:37:5-37:23"sv, (_t_lhs_2=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
913
495k
    _t_cur = _t_cur.advance(::hilti::rt::integer::safe<std::uint64_t>{4U});
914
495k
    if ( _t_trim ) {
915
490k
        (*_t_data).trim(_t_cur.begin());
916
490k
    }
917
918
    // End parsing production: Variable: crc_2 -> bytes;
919
920
495k
    ::hilti::rt::debug::dedent("spicy"sv);
921
495k
    return ::hilti::rt::tuple::make_from_optionals(::hilti::rt::optional::make(_t_cur), ::hilti::rt::optional::make(_t_error));
922
495k
}
923
924
2.81k
auto hlt_internal_PNG_File::PNG::Chunk::_t_parse_frequency_2_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<::hilti::rt::integer::safe<uint16_t>>& _t_dst) -> ::hilti::rt::stream::View {
925
2.81k
    auto _t_self = Chunk::_t_self();
926
2.81k
    ::hilti::rt::detail::checkStack();
927
2.81k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:26:20-26:54");
928
2.81k
    ::hilti::rt::integer::safe<uint64_t> _t_repeat = ::hilti::rt::integer::safe<uint64_t>{(*_t_self).length.value() / ::hilti::rt::integer::safe<std::uint32_t>{2U}};
929
2.81k
    _t_dst.reserve((::hilti::rt::integer::safe<std::uint64_t>{128U} <= _t_repeat ? ::hilti::rt::integer::safe<std::uint64_t>{128U} : _t_repeat));
930
4.42M
    for ( ::hilti::rt::integer::safe<uint64_t> _t_i = ::hilti::rt::detail::move_non_trivial(_t_repeat); ::hilti::rt::Bool{static_cast<bool>(_t_i)};  ) {
931
4.42M
        _t_i--;
932
4.42M
        ::hilti::rt::integer::safe<uint16_t> _t_elem;
933
4.42M
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:26:31-26:36");
934
935
        // Begin parsing production: Variable: _anon_5_2 -> uint<16> (container 'frequency');
936
4.42M
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:26:31-26:36"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
937
4.42M
        ::hilti::rt::tuple::assign(std::tie(_t_elem, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
938
4.42M
        if ( _t_trim ) {
939
4.42M
            (*_t_data).trim(_t_cur.begin());
940
4.42M
        }
941
942
        // End parsing production: Variable: _anon_5_2 -> uint<16> (container 'frequency');
943
944
4.42M
        _t_dst.emplace_back(_t_elem);
945
4.42M
    }
946
947
2.81k
    return _t_cur;
948
2.81k
}
949
950
495k
auto hlt_internal_PNG_File::PNG::Chunk::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
951
495k
    auto _t_self = Chunk::_t_self();
952
495k
    ::hilti::rt::detail::checkStack();
953
495k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:11:14-43:1");
954
495k
    ::hilti::rt::debug::indent("spicy"sv);
955
495k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
956
495k
    return (*_t_self)._t_parse_PNG__Chunk_2_stage2(_t_data, _t_cur, _t_trim, _t_error);
957
495k
}
958
959
494k
auto hlt_internal_PNG_File::PNG::Chunk::_t_parse_switch_5_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
960
494k
    auto _t_self = Chunk::_t_self();
961
494k
    ::hilti::rt::detail::checkStack();
962
494k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:16:5-36:6");
963
494k
    ::hilti::rt::debug::indent("spicy"sv);
964
494k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:16:5-36:6");
965
494k
    if ( auto _t_x = (*_t_self).chunk_type.value(); _t_x == "IHDR"_b ) {
966
22.2k
        ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File> _t_lhs_3;
967
22.2k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:17:9-17:35");
968
22.2k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:17:9-17:35");
969
970
        // Begin parsing production: Block: switch_5_case_1 -> Resolved_19;
971
22.2k
        ::hilti::rt::debug::indent("spicy"sv);
972
22.2k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:45:13-57:1");
973
974
        // Begin parsing production: Unit: PNG__IHDR_2 -> width_2 height_2 bit_depth_2 colour_type_2 compression_method_5 filter_method_2 interlace_method_2 (field 'ihdr', id n/a, parser, args: (top));
975
22.2k
        (*_t_self).ihdr.valueOrInit() = (hlt_internal_PNG_File::PNG::IHDR{::hilti::rt::struct_::tag::Parameters(), (_t_lhs_3=(_t_self->_t_p_top.derefAsValue()).asSharedPtr())});
976
22.2k
        ::hilti::rt::tuple::assign(std::tie(_t_cur, _t_error), (*(*_t_self).ihdr.value())._t_parse_stage1(_t_data, _t_cur, _t_trim, _t_error));
977
        // End parsing production: Unit: PNG__IHDR_2 -> width_2 height_2 bit_depth_2 colour_type_2 compression_method_5 filter_method_2 interlace_method_2 (field 'ihdr', id n/a, parser, args: (top));
978
979
22.2k
        ::hilti::rt::debug::dedent("spicy"sv);
980
        // End parsing production: Block: switch_5_case_1 -> Resolved_19;
981
22.2k
    }
982
983
472k
    else if ( _t_x == "PLTE"_b ) {
984
6.40k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:18:9-18:43");
985
6.40k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:18:9-18:43");
986
987
        // Begin parsing production: Block: switch_5_case_2 -> Resolved_20;
988
6.40k
        ::hilti::rt::debug::indent("spicy"sv);
989
6.40k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:60:13-62:1");
990
991
        // Begin parsing production: Unit: PNG__PLTE_2 -> entries_2 (field 'plte', id n/a, parser, args: (self.length));
992
6.40k
        (*_t_self).plte.valueOrInit() = (hlt_internal_PNG_File::PNG::PLTE{::hilti::rt::struct_::tag::Parameters(), (*_t_self).length.value()});
993
6.40k
        _t_cur = (*_t_self).plte.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
994
        // End parsing production: Unit: PNG__PLTE_2 -> entries_2 (field 'plte', id n/a, parser, args: (self.length));
995
996
6.40k
        ::hilti::rt::debug::dedent("spicy"sv);
997
        // End parsing production: Block: switch_5_case_2 -> Resolved_20;
998
6.40k
    }
999
1000
466k
    else if ( _t_x == "iCCP"_b ) {
1001
3.66k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:19:9-19:43");
1002
3.66k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:19:9-19:43");
1003
1004
        // Begin parsing production: Block: switch_5_case_3 -> Resolved_22;
1005
3.66k
        ::hilti::rt::debug::indent("spicy"sv);
1006
3.66k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:71:13-75:1");
1007
1008
        // Begin parsing production: Unit: PNG__iCCP_2 -> profile_name_2 compression_method_6 compressed_profile_2 (field 'iccp', id n/a, parser, args: (self.length));
1009
3.66k
        (*_t_self).iccp.valueOrInit() = (hlt_internal_PNG_File::PNG::iCCP{::hilti::rt::struct_::tag::Parameters(), (*_t_self).length.value()});
1010
3.66k
        _t_cur = (*_t_self).iccp.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1011
        // End parsing production: Unit: PNG__iCCP_2 -> profile_name_2 compression_method_6 compressed_profile_2 (field 'iccp', id n/a, parser, args: (self.length));
1012
1013
3.66k
        ::hilti::rt::debug::dedent("spicy"sv);
1014
        // End parsing production: Block: switch_5_case_3 -> Resolved_22;
1015
3.66k
    }
1016
1017
462k
    else if ( _t_x == "pHYs"_b ) {
1018
6.25k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:20:9-20:30");
1019
6.25k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:20:9-20:30");
1020
1021
        // Begin parsing production: Block: switch_5_case_4 -> Resolved_23;
1022
6.25k
        ::hilti::rt::debug::indent("spicy"sv);
1023
6.25k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:78:13-82:1");
1024
1025
        // Begin parsing production: Unit: PNG__pHYs_2 -> ppux_2 ppuy_2 unit_specifier_2;
1026
6.25k
        (*_t_self).phys.valueOrInit() = (hlt_internal_PNG_File::PNG::pHYs{});
1027
6.25k
        _t_cur = (*_t_self).phys.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1028
        // End parsing production: Unit: PNG__pHYs_2 -> ppux_2 ppuy_2 unit_specifier_2;
1029
1030
6.25k
        ::hilti::rt::debug::dedent("spicy"sv);
1031
        // End parsing production: Block: switch_5_case_4 -> Resolved_23;
1032
6.25k
    }
1033
1034
456k
    else if ( _t_x == "iTXt"_b ) {
1035
19.3k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:21:9-21:43");
1036
19.3k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:21:9-21:43");
1037
1038
        // Begin parsing production: Block: switch_5_case_5 -> Resolved_24;
1039
19.3k
        ::hilti::rt::debug::indent("spicy"sv);
1040
19.3k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:85:13-92:1");
1041
1042
        // Begin parsing production: Unit: PNG__iTXt_2 -> keyword_4 compression_flag_2 compression_method_7 language_tag_2 translated_keyword_2 text_2 (field 'itxt', id n/a, parser, args: (self.length));
1043
19.3k
        (*_t_self).itxt.valueOrInit() = (hlt_internal_PNG_File::PNG::iTXt{::hilti::rt::struct_::tag::Parameters(), (*_t_self).length.value()});
1044
19.3k
        _t_cur = (*_t_self).itxt.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1045
        // End parsing production: Unit: PNG__iTXt_2 -> keyword_4 compression_flag_2 compression_method_7 language_tag_2 translated_keyword_2 text_2 (field 'itxt', id n/a, parser, args: (self.length));
1046
1047
19.3k
        ::hilti::rt::debug::dedent("spicy"sv);
1048
        // End parsing production: Block: switch_5_case_5 -> Resolved_24;
1049
19.3k
    }
1050
1051
437k
    else if ( _t_x == "tEXt"_b ) {
1052
31.8k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:22:9-22:43");
1053
31.8k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:22:9-22:43");
1054
1055
        // Begin parsing production: Block: switch_5_case_6 -> Resolved_25;
1056
31.8k
        ::hilti::rt::debug::indent("spicy"sv);
1057
31.8k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:95:13-98:1");
1058
1059
        // Begin parsing production: Unit: PNG__tEXt_2 -> keyword_5 text_string_2 (field 'text', id n/a, parser, args: (self.length));
1060
31.8k
        (*_t_self).text.valueOrInit() = (hlt_internal_PNG_File::PNG::tEXt{::hilti::rt::struct_::tag::Parameters(), (*_t_self).length.value()});
1061
31.8k
        _t_cur = (*_t_self).text.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1062
        // End parsing production: Unit: PNG__tEXt_2 -> keyword_5 text_string_2 (field 'text', id n/a, parser, args: (self.length));
1063
1064
31.8k
        ::hilti::rt::debug::dedent("spicy"sv);
1065
        // End parsing production: Block: switch_5_case_6 -> Resolved_25;
1066
31.8k
    }
1067
1068
405k
    else if ( _t_x == "zTXt"_b ) {
1069
11.3k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:23:9-23:43");
1070
11.3k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:23:9-23:43");
1071
1072
        // Begin parsing production: Block: switch_5_case_7 -> Resolved_26;
1073
11.3k
        ::hilti::rt::debug::indent("spicy"sv);
1074
11.3k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:101:13-105:1");
1075
1076
        // Begin parsing production: Unit: PNG__zTXt_2 -> keyword_6 compression_method_8 compressed_text_2 (field 'ztzt', id n/a, parser, args: (self.length));
1077
11.3k
        (*_t_self).ztzt.valueOrInit() = (hlt_internal_PNG_File::PNG::zTXt{::hilti::rt::struct_::tag::Parameters(), (*_t_self).length.value()});
1078
11.3k
        _t_cur = (*_t_self).ztzt.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1079
        // End parsing production: Unit: PNG__zTXt_2 -> keyword_6 compression_method_8 compressed_text_2 (field 'ztzt', id n/a, parser, args: (self.length));
1080
1081
11.3k
        ::hilti::rt::debug::dedent("spicy"sv);
1082
        // End parsing production: Block: switch_5_case_7 -> Resolved_26;
1083
11.3k
    }
1084
1085
393k
    else if ( _t_x == "IEND"_b ) {
1086
678
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:24:9-24:55");
1087
678
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:24:9-24:55");
1088
1089
        // Begin parsing production: Block: switch_5_case_8 -> <epsilon>;
1090
678
        ::hilti::rt::debug::indent("spicy"sv);
1091
678
        ::hilti::rt::location("<no location>");
1092
1093
        // Begin parsing production: Epsilon: <epsilon> -> ();
1094
        // End parsing production: Epsilon: <epsilon> -> ();
1095
1096
678
        ::hilti::rt::Result<::hilti::rt::Nothing> _t_requires = (((*_t_self).length.value() == ::hilti::rt::integer::safe<std::uint32_t>{0U}) ? ::hilti::rt::make_result(::hilti::rt::Nothing{}) : ::hilti::rt::result::Error{"&requires failed: (self.length == 0)"});
1097
678
        if ( ! (::hilti::rt::Bool{static_cast<bool>(_t_requires)}) ) {
1098
35
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:24:27-24:54");
1099
35
            throw ::spicy::rt::ParseError{::hilti::rt::detail::move_non_trivial(_t_requires).errorOrThrow(), "/src/spicy/spicy-png/analyzer/analyzer.spicy:24:27-24:54"};
1100
35
        }
1101
1102
643
        ::hilti::rt::debug::dedent("spicy"sv);
1103
        // End parsing production: Block: switch_5_case_8 -> <epsilon>;
1104
643
    }
1105
1106
393k
    else if ( _t_x == "IDAT"_b ) {
1107
925
        ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_4;
1108
925
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:25:9-25:45");
1109
925
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:25:9-25:45");
1110
1111
        // Begin parsing production: Block: switch_5_case_9 -> _anon_4_2;
1112
925
        ::hilti::rt::debug::indent("spicy"sv);
1113
925
        ::hilti::rt::Bytes _t_transient__anon_4;
1114
925
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:25:22-25:26");
1115
1116
        // Begin parsing production: Variable: _anon_4_2 -> bytes;
1117
925
        ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{(*_t_self).length.value()};
1118
925
        _t_transient__anon_4 = ::spicy::rt::detail::extractBytes(_t_data, _t_cur, _t_size, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:25:20-25:45"sv, (_t_lhs_4=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
1119
925
        _t_cur = _t_cur.advance(::hilti::rt::detail::move_non_trivial(_t_size));
1120
925
        if ( _t_trim ) {
1121
881
            (*_t_data).trim(_t_cur.begin());
1122
881
        }
1123
1124
        // End parsing production: Variable: _anon_4_2 -> bytes;
1125
1126
925
        ::hilti::rt::debug::dedent("spicy"sv);
1127
        // End parsing production: Block: switch_5_case_9 -> _anon_4_2;
1128
925
    }
1129
1130
392k
    else if ( _t_x == "hIST"_b ) {
1131
2.81k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:26:9-26:54");
1132
2.81k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:26:9-26:54");
1133
1134
        // Begin parsing production: Block: switch_5_case_10 -> frequency_2;
1135
2.81k
        ::hilti::rt::debug::indent("spicy"sv);
1136
2.81k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:26:20-26:54");
1137
1138
        // Begin parsing production: Counter: frequency_2 -> counter(self.length / 2): _anon_5_2;
1139
2.81k
        _t_cur = (*_t_self)._t_parse_frequency_2_stage1(_t_data, _t_cur, _t_trim, (*_t_self).frequency.valueOrInit());
1140
        // End parsing production: Counter: frequency_2 -> counter(self.length / 2): _anon_5_2;
1141
1142
2.81k
        ::hilti::rt::debug::dedent("spicy"sv);
1143
        // End parsing production: Block: switch_5_case_10 -> frequency_2;
1144
2.81k
    }
1145
1146
389k
    else if ( _t_x == "cHRM"_b ) {
1147
16.4k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:27:9-27:30");
1148
16.4k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:27:9-27:30");
1149
1150
        // Begin parsing production: Block: switch_5_case_11 -> Resolved_27;
1151
16.4k
        ::hilti::rt::debug::indent("spicy"sv);
1152
16.4k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:108:13-117:1");
1153
1154
        // Begin parsing production: Unit: PNG__cHRM_2 -> white_point_x_2 white_point_y_2 red_x_2 red_y_2 green_x_2 green_y_2 blue_x_2 blue_y_2;
1155
16.4k
        (*_t_self).chrm.valueOrInit() = (hlt_internal_PNG_File::PNG::cHRM{});
1156
16.4k
        _t_cur = (*_t_self).chrm.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1157
        // End parsing production: Unit: PNG__cHRM_2 -> white_point_x_2 white_point_y_2 red_x_2 red_y_2 green_x_2 green_y_2 blue_x_2 blue_y_2;
1158
1159
16.4k
        ::hilti::rt::debug::dedent("spicy"sv);
1160
        // End parsing production: Block: switch_5_case_11 -> Resolved_27;
1161
16.4k
    }
1162
1163
372k
    else if ( _t_x == "gAMA"_b ) {
1164
7.25k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:28:9-28:30");
1165
7.25k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:28:9-28:30");
1166
1167
        // Begin parsing production: Block: switch_5_case_12 -> Resolved_28;
1168
7.25k
        ::hilti::rt::debug::indent("spicy"sv);
1169
7.25k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:120:13-122:1");
1170
1171
        // Begin parsing production: Unit: PNG__gAMA_2 -> gamma_2;
1172
7.25k
        (*_t_self).gama.valueOrInit() = (hlt_internal_PNG_File::PNG::gAMA{});
1173
7.25k
        _t_cur = (*_t_self).gama.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1174
        // End parsing production: Unit: PNG__gAMA_2 -> gamma_2;
1175
1176
7.25k
        ::hilti::rt::debug::dedent("spicy"sv);
1177
        // End parsing production: Block: switch_5_case_12 -> Resolved_28;
1178
7.25k
    }
1179
1180
365k
    else if ( _t_x == "sRGB"_b ) {
1181
4.31k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:29:9-29:30");
1182
4.31k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:29:9-29:30");
1183
1184
        // Begin parsing production: Block: switch_5_case_13 -> Resolved_29;
1185
4.31k
        ::hilti::rt::debug::indent("spicy"sv);
1186
4.31k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:125:13-127:1");
1187
1188
        // Begin parsing production: Unit: PNG__sRGB_2 -> rendering_intent_2;
1189
4.31k
        (*_t_self).srgb.valueOrInit() = (hlt_internal_PNG_File::PNG::sRGB{});
1190
4.31k
        _t_cur = (*_t_self).srgb.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1191
        // End parsing production: Unit: PNG__sRGB_2 -> rendering_intent_2;
1192
1193
4.31k
        ::hilti::rt::debug::dedent("spicy"sv);
1194
        // End parsing production: Block: switch_5_case_13 -> Resolved_29;
1195
4.31k
    }
1196
1197
361k
    else if ( _t_x == "sBIT"_b ) {
1198
21.7k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:30:9-30:47");
1199
21.7k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:30:9-30:47");
1200
1201
        // Begin parsing production: Block: switch_5_case_14 -> Resolved_30;
1202
21.7k
        ::hilti::rt::debug::indent("spicy"sv);
1203
21.7k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:130:13-150:1");
1204
1205
        // Begin parsing production: Unit: PNG__sBIT_2 -> switch_6 (field 'sbit', id n/a, parser, args: (top.colour_type));
1206
21.7k
        (*_t_self).sbit.valueOrInit() = (hlt_internal_PNG_File::PNG::sBIT{::hilti::rt::struct_::tag::Parameters(), (*_t_self->_t_p_top.derefAsValue()).colour_type});
1207
21.7k
        _t_cur = (*_t_self).sbit.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1208
        // End parsing production: Unit: PNG__sBIT_2 -> switch_6 (field 'sbit', id n/a, parser, args: (top.colour_type));
1209
1210
21.7k
        ::hilti::rt::debug::dedent("spicy"sv);
1211
        // End parsing production: Block: switch_5_case_14 -> Resolved_30;
1212
21.7k
    }
1213
1214
339k
    else if ( _t_x == "bKGD"_b ) {
1215
9.13k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:31:9-31:47");
1216
9.13k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:31:9-31:47");
1217
1218
        // Begin parsing production: Block: switch_5_case_15 -> Resolved_31;
1219
9.13k
        ::hilti::rt::debug::indent("spicy"sv);
1220
9.13k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:153:13-165:1");
1221
1222
        // Begin parsing production: Unit: PNG__bKGD_2 -> switch_7 (field 'bkgd', id n/a, parser, args: (top.colour_type));
1223
9.13k
        (*_t_self).bkgd.valueOrInit() = (hlt_internal_PNG_File::PNG::bKGD{::hilti::rt::struct_::tag::Parameters(), (*_t_self->_t_p_top.derefAsValue()).colour_type});
1224
9.13k
        _t_cur = (*_t_self).bkgd.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1225
        // End parsing production: Unit: PNG__bKGD_2 -> switch_7 (field 'bkgd', id n/a, parser, args: (top.colour_type));
1226
1227
9.13k
        ::hilti::rt::debug::dedent("spicy"sv);
1228
        // End parsing production: Block: switch_5_case_15 -> Resolved_31;
1229
9.13k
    }
1230
1231
330k
    else if ( _t_x == "tRNS"_b ) {
1232
37.0k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:32:9-32:60");
1233
37.0k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:32:9-32:60");
1234
1235
        // Begin parsing production: Block: switch_5_case_16 -> Resolved_32;
1236
37.0k
        ::hilti::rt::debug::indent("spicy"sv);
1237
37.0k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:168:13-178:1");
1238
1239
        // Begin parsing production: Unit: PNG__tRNS_2 -> switch_8 (field 'trns', id n/a, parser, args: (top.colour_type, self.length));
1240
37.0k
        (*_t_self).trns.valueOrInit() = (hlt_internal_PNG_File::PNG::tRNS{::hilti::rt::struct_::tag::Parameters(), (*_t_self->_t_p_top.derefAsValue()).colour_type, (*_t_self).length.value()});
1241
37.0k
        _t_cur = (*_t_self).trns.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1242
        // End parsing production: Unit: PNG__tRNS_2 -> switch_8 (field 'trns', id n/a, parser, args: (top.colour_type, self.length));
1243
1244
37.0k
        ::hilti::rt::debug::dedent("spicy"sv);
1245
        // End parsing production: Block: switch_5_case_16 -> Resolved_32;
1246
37.0k
    }
1247
1248
293k
    else if ( ::hilti::rt::detail::move_non_trivial(_t_x) == "tIME"_b ) {
1249
12.7k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:33:9-33:31");
1250
12.7k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:33:9-33:31");
1251
1252
        // Begin parsing production: Block: switch_5_case_17 -> Resolved_33;
1253
12.7k
        ::hilti::rt::debug::indent("spicy"sv);
1254
12.7k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:181:13-188:1");
1255
1256
        // Begin parsing production: Unit: PNG__tIME_2 -> year_2 month_2 day_2 hour_2 minute_2 second_2;
1257
12.7k
        (*_t_self).ttime.valueOrInit() = (hlt_internal_PNG_File::PNG::tIME{});
1258
12.7k
        _t_cur = (*_t_self).ttime.value()._t_parse_stage1(_t_data, _t_cur, _t_trim);
1259
        // End parsing production: Unit: PNG__tIME_2 -> year_2 month_2 day_2 hour_2 minute_2 second_2;
1260
1261
12.7k
        ::hilti::rt::debug::dedent("spicy"sv);
1262
        // End parsing production: Block: switch_5_case_17 -> Resolved_33;
1263
12.7k
    }
1264
1265
280k
    else  {
1266
280k
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:35:9-35:44");
1267
280k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:35:9-35:44");
1268
1269
        // Begin parsing production: Block: switch_5_default -> _anon_6_2;
1270
280k
        ::hilti::rt::debug::indent("spicy"sv);
1271
280k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:35:14-35:44");
1272
1273
        // Begin parsing production: Skip: _anon_6_2 -> skip: _anon_6;
1274
280k
        ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{(*_t_self).length.value()};
1275
280k
        ::hilti::rt::stream::View _t_limited_ = _t_cur.limit(_t_size);
1276
280k
        ::hilti::rt::stream::View _t_ncur = _t_cur.advance(_t_size);
1277
280k
        ::hilti::rt::integer::safe<uint64_t> _t_skip = ::hilti::rt::integer::safe<uint64_t>{(*_t_self).length.value()};
1278
301k
        while ( _t_skip > ::hilti::rt::integer::safe<std::uint64_t>{0U} ) {
1279
20.7k
            ::spicy::rt::detail::waitForInput(_t_data, _t_limited_, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "not enough bytes for skipping"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:35:14-35:44"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1280
20.7k
            ::hilti::rt::integer::safe<uint64_t> _t_consume = (_t_limited_.size() <= _t_skip ? _t_limited_.size() : _t_skip);
1281
20.7k
            _t_limited_ = _t_limited_.advance(_t_consume);
1282
20.7k
            if ( _t_trim ) {
1283
19.7k
                (*_t_data).trim(_t_limited_.begin());
1284
19.7k
            }
1285
1286
20.7k
            _t_skip = _t_skip - _t_consume;
1287
20.7k
        }
1288
1289
280k
        if ( _t_limited_.offset() < _t_ncur.offset() ) {
1290
0
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:35:27-35:43");
1291
0
            throw ::spicy::rt::ParseError{::hilti::rt::fmt("&size amount not consumed: expected %lu bytes, but got %lu bytes"sv, _t_size, _t_limited_.offset() - (_t_ncur.offset() - _t_size)), "/src/spicy/spicy-png/analyzer/analyzer.spicy:35:27-35:43"};
1292
0
        }
1293
1294
        // End parsing production: Skip: _anon_6_2 -> skip: _anon_6;
1295
1296
280k
        _t_cur = _t_ncur;
1297
280k
        ::hilti::rt::debug::dedent("spicy"sv);
1298
        // End parsing production: Block: switch_5_default -> _anon_6_2;
1299
280k
    }
1300
1301
494k
    ::hilti::rt::debug::dedent("spicy"sv);
1302
494k
    return ::hilti::rt::tuple::make_from_optionals(::hilti::rt::optional::make(_t_cur), ::hilti::rt::optional::make(_t_error));
1303
494k
}
1304
1305
4.91k
auto hlt_internal_PNG_File::PNG::File::_t_parse_PNG__File_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, const ::hilti::rt::integer::safe<int64_t>& _t_lah, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::integer::safe<int64_t>, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
1306
4.91k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_5;
1307
4.91k
    auto _t_self = File::_t_self();
1308
4.91k
    ::hilti::rt::detail::checkStack();
1309
4.91k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1310
4.91k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:6:16-6:20");
1311
1312
    // Begin parsing production: Variable: signature -> bytes;
1313
4.91k
    (*_t_self).signature.valueOrInit() = ::spicy::rt::detail::extractBytes(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{8U}, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:6:5-6:83"sv, (_t_lhs_5=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
1314
4.91k
    _t_cur = _t_cur.advance(::hilti::rt::integer::safe<std::uint64_t>{8U});
1315
4.91k
    if ( _t_trim ) {
1316
4.90k
        (*_t_data).trim(_t_cur.begin());
1317
4.90k
    }
1318
1319
    // End parsing production: Variable: signature -> bytes;
1320
1321
4.91k
    ::hilti::rt::Bytes _t_dd = (*_t_self).signature.value();
1322
4.91k
    ::hilti::rt::Result<::hilti::rt::Nothing> _t_requires = ((::hilti::rt::detail::move_non_trivial(_t_dd) == "\211PNG\015\012\032\012"_b) ? ::hilti::rt::make_result(::hilti::rt::Nothing{}) : ::hilti::rt::result::Error{"&requires failed: ($$ == b\"\\x89PNG\\x0d\\x0a\\x1a\\x0a\")"});
1323
4.91k
    if ( ! (::hilti::rt::Bool{static_cast<bool>(_t_requires)}) ) {
1324
73
          ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:6:30-6:82");
1325
73
        throw ::spicy::rt::ParseError{::hilti::rt::detail::move_non_trivial(_t_requires).errorOrThrow(), "/src/spicy/spicy-png/analyzer/analyzer.spicy:6:30-6:82"};
1326
73
    }
1327
1328
4.84k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:8:5-8:25");
1329
1330
    // Begin parsing production: ForEach: _anon_2 -> foreach: Resolved_2;
1331
4.84k
    ::hilti::rt::tuple::assign(std::tie(_t_cur, _t_error), (*_t_self)._t_parse__anon_2_stage1(_t_data, _t_cur, _t_trim, _t_error));
1332
    // End parsing production: ForEach: _anon_2 -> foreach: Resolved_2;
1333
1334
4.84k
    ::hilti::rt::debug::dedent("spicy"sv);
1335
4.84k
    return ::hilti::rt::tuple::make_from_optionals(::hilti::rt::optional::make(_t_cur), ::hilti::rt::optional::make(_t_lah), ::hilti::rt::optional::make(_t_error));
1336
4.91k
}
1337
1338
4.83k
auto hlt_internal_PNG_File::PNG::File::_t_parse__anon_2_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, ::hilti::rt::Bool _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
1339
4.83k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_6;
1340
4.83k
    auto _t_self = File::_t_self();
1341
4.83k
    ::hilti::rt::detail::checkStack();
1342
4.83k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:8:5-8:25");
1343
500k
    while ( ! (::spicy::rt::detail::atEod(_t_data, _t_cur, (_t_lhs_6=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})))) ) {
1344
495k
        ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_7;
1345
495k
        ::hilti::rt::stream::SafeConstIterator _t_old_begin = _t_cur.begin();
1346
495k
        ::hilti::rt::Optional<::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::Chunk>> _t_elem;
1347
495k
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:11:14-43:1");
1348
1349
        // Begin parsing production: Unit: PNG__Chunk -> length chunk_type switch crc (field '_anon', id n/a, parser, args: (self)) (container '_anon_2');
1350
495k
        _t_elem = ::hilti::rt::Optional<::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::Chunk>>((hlt_internal_PNG_File::PNG::Chunk{::hilti::rt::struct_::tag::Parameters(), _t_self}));
1351
495k
        ::hilti::rt::tuple::assign(std::tie(_t_cur, _t_error), (*::hilti::rt::detail::move_non_trivial(_t_elem).value())._t_parse_stage1(_t_data, _t_cur, _t_trim, _t_error));
1352
        // End parsing production: Unit: PNG__Chunk -> length chunk_type switch crc (field '_anon', id n/a, parser, args: (self)) (container '_anon_2');
1353
1354
495k
        if ( (_t_cur.begin() == _t_old_begin) && (! (::spicy::rt::detail::atEod(_t_data, _t_cur, (_t_lhs_7=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{}))))) ) {
1355
0
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:8:5-8:25");
1356
0
            throw ::spicy::rt::ParseError{"loop body did not change input position, possible infinite loop"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:8:5-8:25"};
1357
0
        }
1358
495k
    }
1359
1360
4.83k
    return ::hilti::rt::tuple::make_from_optionals(::hilti::rt::optional::make(_t_cur), ::hilti::rt::optional::make(_t_error));
1361
4.83k
}
1362
1363
4.91k
auto hlt_internal_PNG_File::PNG::File::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::integer::safe<int64_t>& _t_lah, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::integer::safe<int64_t>, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
1364
4.91k
    auto _t_self = File::_t_self();
1365
4.91k
    ::hilti::rt::detail::checkStack();
1366
4.91k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1367
4.91k
    ::hilti::rt::debug::indent("spicy"sv);
1368
4.91k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1369
4.91k
    return (*_t_self)._t_parse_PNG__File_stage2(_t_data, _t_cur, _t_trim, _t_lah, _t_error);
1370
4.91k
}
1371
1372
4.91k
auto hlt_internal_PNG_File::PNG::File::parse1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View {
1373
4.91k
    ::hilti::rt::detail::checkStack();
1374
4.91k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1375
4.91k
    ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File> _t_unit = ::hilti::rt::reference::make_value<hlt_internal_PNG_File::PNG::File>((hlt_internal_PNG_File::PNG::File{}));
1376
4.91k
    ::hilti::rt::stream::View _t_ncur = (_t_cur ? _t_cur.value() : (*_t_data).view());
1377
4.91k
    ::hilti::rt::integer::safe<int64_t> _t_lahead = ::hilti::rt::integer::safe<std::int64_t>{0};
1378
4.91k
    ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error = ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>{};
1379
4.91k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1380
1381
    // Begin parsing production: Unit: PNG__File -> signature _anon_2;
1382
4.91k
    ::hilti::rt::tuple::assign(std::tie(_t_ncur, _t_lahead, _t_error), (*::hilti::rt::detail::move_non_trivial(_t_unit))._t_parse_stage1(_t_data, _t_ncur, ::hilti::rt::Bool{true}, ::hilti::rt::detail::move_non_trivial(_t_lahead), _t_error));
1383
    // End parsing production: Unit: PNG__File -> signature _anon_2;
1384
1385
4.91k
    if ( _t_error.hasValue() ) {
1386
0
        throw ::spicy::rt::ParseError{::hilti::rt::fmt("successful synchronization never confirmed: %s"sv, ::hilti::rt::exception::what(_t_error.value())), ::hilti::rt::exception::where(_t_error.value())};
1387
0
    }
1388
1389
4.91k
    return _t_ncur;
1390
4.91k
}
1391
1392
0
auto hlt_internal_PNG_File::PNG::File::parse2(::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File>& _t_unit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View {
1393
0
    ::hilti::rt::detail::checkStack();
1394
0
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1395
0
    ::hilti::rt::stream::View _t_ncur = (_t_cur ? _t_cur.value() : (*_t_data).view());
1396
0
    ::hilti::rt::integer::safe<int64_t> _t_lahead = ::hilti::rt::integer::safe<std::int64_t>{0};
1397
0
    ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error = ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>{};
1398
0
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1399
1400
    // Begin parsing production: Unit: PNG__File -> signature _anon_2;
1401
0
    ::hilti::rt::tuple::assign(std::tie(_t_ncur, _t_lahead, _t_error), (*_t_unit)._t_parse_stage1(_t_data, _t_ncur, ::hilti::rt::Bool{true}, ::hilti::rt::detail::move_non_trivial(_t_lahead), _t_error));
1402
    // End parsing production: Unit: PNG__File -> signature _anon_2;
1403
1404
0
    if ( _t_error.hasValue() ) {
1405
0
        throw ::spicy::rt::ParseError{::hilti::rt::fmt("successful synchronization never confirmed: %s"sv, ::hilti::rt::exception::what(_t_error.value())), ::hilti::rt::exception::where(_t_error.value())};
1406
0
    }
1407
1408
0
    return _t_ncur;
1409
0
}
1410
1411
0
auto hlt_internal_PNG_File::PNG::File::parse3(::hilti::rt::ValueReference<::spicy::rt::ParsedUnit>& _t_gunit, ::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::Optional<::hilti::rt::stream::View>& _t_cur, const ::hilti::rt::Optional<::spicy::rt::UnitContext>& _t_context) -> ::hilti::rt::stream::View {
1412
0
    ::hilti::rt::detail::checkStack();
1413
0
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1414
0
    ::hilti::rt::ValueReference<hlt_internal_PNG_File::PNG::File> _t_unit = ::hilti::rt::reference::make_value<hlt_internal_PNG_File::PNG::File>((hlt_internal_PNG_File::PNG::File{}));
1415
0
    ::spicy::rt::ParsedUnit::initialize((*_t_gunit), _t_unit, &type_info::_t_ti_value_ref_PNG__File__value_refx2anamex2aPNG__Filex2bx2b);
1416
0
    ::hilti::rt::stream::View _t_ncur = (_t_cur ? _t_cur.value() : (*_t_data).view());
1417
0
    ::hilti::rt::integer::safe<int64_t> _t_lahead = ::hilti::rt::integer::safe<std::int64_t>{0};
1418
0
    ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error = ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>{};
1419
0
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:5:20-9:1");
1420
1421
    // Begin parsing production: Unit: PNG__File -> signature _anon_2;
1422
0
    ::hilti::rt::tuple::assign(std::tie(_t_ncur, _t_lahead, _t_error), (*::hilti::rt::detail::move_non_trivial(_t_unit))._t_parse_stage1(_t_data, _t_ncur, ::hilti::rt::Bool{true}, ::hilti::rt::detail::move_non_trivial(_t_lahead), _t_error));
1423
    // End parsing production: Unit: PNG__File -> signature _anon_2;
1424
1425
0
    if ( _t_error.hasValue() ) {
1426
0
        throw ::spicy::rt::ParseError{::hilti::rt::fmt("successful synchronization never confirmed: %s"sv, ::hilti::rt::exception::what(_t_error.value())), ::hilti::rt::exception::where(_t_error.value())};
1427
0
    }
1428
1429
0
    return _t_ncur;
1430
0
}
1431
1432
22.0k
inline void hlt_internal_PNG_File::PNG::IHDR::_t_on_0x25_done() {
1433
22.0k
    auto _t_self = PNG::IHDR::_t_self();
1434
22.0k
    return hlt_internal_PNG_File::PNG::_t_hook_IHDR__t_on_0x25_done(_t_self);
1435
22.0k
}
1436
1437
22.2k
auto hlt_internal_PNG_File::PNG::IHDR::_t_parse_PNG__IHDR_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure> _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
1438
22.2k
    auto _t_self = IHDR::_t_self();
1439
22.2k
    ::hilti::rt::detail::checkStack();
1440
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:45:13-57:1");
1441
22.2k
    ::hilti::rt::integer::safe<uint32_t> _t_v_width;
1442
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:46:12-46:17");
1443
1444
    // Begin parsing production: Variable: width_3 -> uint<32>;
1445
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:46:12-46:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1446
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_width, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1447
22.2k
    if ( _t_trim ) {
1448
22.1k
        (*_t_data).trim(_t_cur.begin());
1449
22.1k
    }
1450
1451
    // End parsing production: Variable: width_3 -> uint<32>;
1452
1453
22.2k
    ::hilti::rt::integer::safe<uint32_t> _t_v_height;
1454
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:47:13-47:18");
1455
1456
    // Begin parsing production: Variable: height_3 -> uint<32>;
1457
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:47:13-47:18"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1458
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_height, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1459
22.2k
    if ( _t_trim ) {
1460
22.1k
        (*_t_data).trim(_t_cur.begin());
1461
22.1k
    }
1462
1463
    // End parsing production: Variable: height_3 -> uint<32>;
1464
1465
22.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_bit_depth;
1466
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:48:16-48:20");
1467
1468
    // Begin parsing production: Variable: bit_depth_3 -> uint<8>;
1469
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:48:16-48:20"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1470
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_bit_depth, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1471
22.2k
    if ( _t_trim ) {
1472
22.1k
        (*_t_data).trim(_t_cur.begin());
1473
22.1k
    }
1474
1475
    // End parsing production: Variable: bit_depth_3 -> uint<8>;
1476
1477
22.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_colour_type;
1478
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:49:18-49:22");
1479
1480
    // Begin parsing production: Variable: colour_type_3 -> uint<8>;
1481
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:49:18-49:22"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1482
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_colour_type, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1483
22.2k
    if ( _t_trim ) {
1484
22.1k
        (*_t_data).trim(_t_cur.begin());
1485
22.1k
    }
1486
1487
    // End parsing production: Variable: colour_type_3 -> uint<8>;
1488
1489
22.2k
    (*_t_self).colour_type.valueOrInit() = ::hilti::rt::detail::move_non_trivial(_t_v_colour_type);
1490
22.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_compression_method;
1491
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:50:25-50:29");
1492
1493
    // Begin parsing production: Variable: compression_method_9 -> uint<8>;
1494
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:50:25-50:29"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1495
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_compression_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1496
22.2k
    if ( _t_trim ) {
1497
22.1k
        (*_t_data).trim(_t_cur.begin());
1498
22.1k
    }
1499
1500
    // End parsing production: Variable: compression_method_9 -> uint<8>;
1501
1502
22.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_filter_method;
1503
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:51:20-51:24");
1504
1505
    // Begin parsing production: Variable: filter_method_3 -> uint<8>;
1506
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:51:20-51:24"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1507
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_filter_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1508
22.2k
    if ( _t_trim ) {
1509
22.1k
        (*_t_data).trim(_t_cur.begin());
1510
22.1k
    }
1511
1512
    // End parsing production: Variable: filter_method_3 -> uint<8>;
1513
1514
22.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_interlace_method;
1515
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:52:23-52:27");
1516
1517
    // Begin parsing production: Variable: interlace_method_3 -> uint<8>;
1518
22.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:52:23-52:27"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1519
22.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_interlace_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1520
22.2k
    if ( _t_trim ) {
1521
22.0k
        (*_t_data).trim(_t_cur.begin());
1522
22.0k
    }
1523
1524
    // End parsing production: Variable: interlace_method_3 -> uint<8>;
1525
1526
22.2k
    (*_t_self)._t_error = _t_error;
1527
22.2k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:45:13-57:1");
1528
22.2k
    (*_t_self)._t_on_0x25_done();
1529
22.2k
    _t_error = (*_t_self)._t_error;
1530
22.2k
    ::hilti::rt::debug::dedent("spicy"sv);
1531
22.2k
    return ::hilti::rt::tuple::make_from_optionals(::hilti::rt::optional::make(_t_cur), ::hilti::rt::optional::make(_t_error));
1532
22.2k
}
1533
1534
22.2k
auto hlt_internal_PNG_File::PNG::IHDR::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim, const ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>& _t_error) -> ::hilti::rt::Tuple<::hilti::rt::stream::View, ::hilti::rt::Optional<::hilti::rt::RecoverableFailure>> {
1535
22.2k
    auto _t_self = IHDR::_t_self();
1536
22.2k
    ::hilti::rt::detail::checkStack();
1537
22.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:45:13-57:1");
1538
22.2k
    ::hilti::rt::debug::indent("spicy"sv);
1539
22.2k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1540
22.2k
    return (*_t_self)._t_parse_PNG__IHDR_3_stage2(_t_data, _t_cur, _t_trim, _t_error);
1541
22.2k
}
1542
1543
6.40k
auto hlt_internal_PNG_File::PNG::PLTE::_t_parse_PNG__PLTE_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1544
6.40k
    auto _t_self = PLTE::_t_self();
1545
6.40k
    ::hilti::rt::detail::checkStack();
1546
6.40k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:60:13-62:1");
1547
6.40k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:61:5-61:36");
1548
1549
    // Begin parsing production: Counter: entries_3 -> counter(length / 3): Resolved_36;
1550
6.40k
    _t_cur = (*_t_self)._t_parse_entries_3_stage1(_t_data, _t_cur, _t_trim, (*_t_self).entries.valueOrInit());
1551
    // End parsing production: Counter: entries_3 -> counter(length / 3): Resolved_36;
1552
1553
6.40k
    ::hilti::rt::debug::dedent("spicy"sv);
1554
6.40k
    return _t_cur;
1555
6.40k
}
1556
1557
6.40k
auto hlt_internal_PNG_File::PNG::PLTE::_t_parse_entries_3_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<hlt_internal_PNG_File::PNG::PLTE_ENTRY>& _t_dst) -> ::hilti::rt::stream::View {
1558
6.40k
    auto _t_self = PLTE::_t_self();
1559
6.40k
    ::hilti::rt::detail::checkStack();
1560
6.40k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:61:5-61:36");
1561
6.40k
    ::hilti::rt::integer::safe<uint64_t> _t_repeat = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length / ::hilti::rt::integer::safe<std::uint32_t>{3U}};
1562
6.40k
    _t_dst.reserve((::hilti::rt::integer::safe<std::uint64_t>{128U} <= _t_repeat ? ::hilti::rt::integer::safe<std::uint64_t>{128U} : _t_repeat));
1563
4.63M
    for ( ::hilti::rt::integer::safe<uint64_t> _t_i = ::hilti::rt::detail::move_non_trivial(_t_repeat); ::hilti::rt::Bool{static_cast<bool>(_t_i)};  ) {
1564
4.62M
        _t_i--;
1565
4.62M
        hlt_internal_PNG_File::PNG::PLTE_ENTRY _t_elem;
1566
4.62M
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:64:19-68:1");
1567
1568
        // Begin parsing production: Unit: PNG__PLTE_ENTRY_3 -> red_5 green_5 blue_5 (container 'entries');
1569
4.62M
        _t_elem = (hlt_internal_PNG_File::PNG::PLTE_ENTRY{});
1570
4.62M
        _t_cur = _t_elem._t_parse_stage1(_t_data, _t_cur, _t_trim);
1571
        // End parsing production: Unit: PNG__PLTE_ENTRY_3 -> red_5 green_5 blue_5 (container 'entries');
1572
1573
4.62M
        _t_dst.emplace_back(::hilti::rt::detail::move_non_trivial(_t_elem));
1574
4.62M
    }
1575
1576
6.40k
    return _t_cur;
1577
6.40k
}
1578
1579
6.40k
auto hlt_internal_PNG_File::PNG::PLTE::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1580
6.40k
    auto _t_self = PLTE::_t_self();
1581
6.40k
    ::hilti::rt::detail::checkStack();
1582
6.40k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:60:13-62:1");
1583
6.40k
    ::hilti::rt::debug::indent("spicy"sv);
1584
6.40k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1585
6.40k
    return (*_t_self)._t_parse_PNG__PLTE_3_stage2(_t_data, _t_cur, _t_trim);
1586
6.40k
}
1587
1588
4.62M
auto hlt_internal_PNG_File::PNG::PLTE_ENTRY::_t_parse_PNG__PLTE_ENTRY_4_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1589
4.62M
    auto _t_self = PLTE_ENTRY::_t_self();
1590
4.62M
    ::hilti::rt::detail::checkStack();
1591
4.62M
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:64:19-68:1");
1592
4.62M
    ::hilti::rt::integer::safe<uint8_t> _t_v_red;
1593
4.62M
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:65:10-65:14");
1594
1595
    // Begin parsing production: Variable: red_6 -> uint<8>;
1596
4.62M
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:65:10-65:14"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1597
4.62M
    ::hilti::rt::tuple::assign(std::tie(_t_v_red, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1598
4.62M
    if ( _t_trim ) {
1599
4.62M
        (*_t_data).trim(_t_cur.begin());
1600
4.62M
    }
1601
1602
    // End parsing production: Variable: red_6 -> uint<8>;
1603
1604
4.62M
    ::hilti::rt::integer::safe<uint8_t> _t_v_green;
1605
4.62M
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:66:12-66:16");
1606
1607
    // Begin parsing production: Variable: green_6 -> uint<8>;
1608
4.62M
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:66:12-66:16"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1609
4.62M
    ::hilti::rt::tuple::assign(std::tie(_t_v_green, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1610
4.62M
    if ( _t_trim ) {
1611
4.62M
        (*_t_data).trim(_t_cur.begin());
1612
4.62M
    }
1613
1614
    // End parsing production: Variable: green_6 -> uint<8>;
1615
1616
4.62M
    ::hilti::rt::integer::safe<uint8_t> _t_v_blue;
1617
4.62M
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:67:11-67:15");
1618
1619
    // Begin parsing production: Variable: blue_6 -> uint<8>;
1620
4.62M
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:67:11-67:15"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1621
4.62M
    ::hilti::rt::tuple::assign(std::tie(_t_v_blue, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1622
4.62M
    if ( _t_trim ) {
1623
4.62M
        (*_t_data).trim(_t_cur.begin());
1624
4.62M
    }
1625
1626
    // End parsing production: Variable: blue_6 -> uint<8>;
1627
1628
4.62M
    ::hilti::rt::debug::dedent("spicy"sv);
1629
4.62M
    return _t_cur;
1630
4.62M
}
1631
1632
4.62M
auto hlt_internal_PNG_File::PNG::PLTE_ENTRY::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1633
4.62M
    auto _t_self = PLTE_ENTRY::_t_self();
1634
4.62M
    ::hilti::rt::detail::checkStack();
1635
4.62M
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:64:19-68:1");
1636
4.62M
    ::hilti::rt::debug::indent("spicy"sv);
1637
4.62M
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1638
4.62M
    return (*_t_self)._t_parse_PNG__PLTE_ENTRY_4_stage2(_t_data, _t_cur, _t_trim);
1639
4.62M
}
1640
1641
22.0k
extern void hlt_internal_PNG_File::PNG::_t_hook_IHDR__t_on_0x25_done_17851791508062947275(::hilti::rt::ValueReference<IHDR>& _t_self) {
1642
22.0k
    ::hilti::rt::detail::checkStack();
1643
22.0k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:55:9-55:42");
1644
22.0k
    (*_t_self->_t_p_top.derefAsValue()).colour_type = (*_t_self).colour_type.value();
1645
22.0k
}
1646
1647
1
extern void hlt_internal_PNG_File::PNG::_t_init_module() {
1648
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_Chunk();
1649
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_File();
1650
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_IHDR();
1651
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_PLTE();
1652
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_PLTE_ENTRY();
1653
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_bKGD();
1654
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_cHRM();
1655
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_gAMA();
1656
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_iCCP();
1657
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_iTXt();
1658
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_pHYs();
1659
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_sBIT();
1660
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_sRGB();
1661
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_tEXt();
1662
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_tIME();
1663
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_tRNS();
1664
1
    hlt_internal_PNG_File::PNG::_t_register_PNG_zTXt();
1665
1
}
1666
1667
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_Chunk() { ::hilti::rt::detail::checkStack(); }
1668
1669
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_File() {
1670
1
    ::hilti::rt::detail::checkStack();
1671
1
    PNG::File::_t_parser = ::spicy::rt::Parser{::hilti::rt::struct_::tag::Inits(), "PNG::File"sv, ::hilti::rt::Bool{true}, hlt_PNG_File::PNG::File::parse1, hlt_PNG_File::PNG::File::parse2, hlt_PNG_File::PNG::File::parse3, ::hilti::rt::Null{}, &type_info::_t_ti_PNG__File_namex2aPNG__Filex2b, ""_hs, ::hilti::rt::Vector<::spicy::rt::MIMEType>({}), ::hilti::rt::Vector<::spicy::rt::ParserPort>({})};
1672
1
    ::spicy::rt::detail::registerParser(PNG::File::_t_parser, hlt_internal_PNG_File_hlto_scope, ::hilti::rt::StrongReference<hlt_internal_PNG_File::PNG::File>{}, &type_info::_t_ti_strong_ref_const_PNG__File__strong_refx2anamex2aPNG__Filex2bx2b);
1673
1
}
1674
1675
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_IHDR() { ::hilti::rt::detail::checkStack(); }
1676
1677
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_PLTE() { ::hilti::rt::detail::checkStack(); }
1678
1679
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_PLTE_ENTRY() { ::hilti::rt::detail::checkStack(); }
1680
1681
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_bKGD() { ::hilti::rt::detail::checkStack(); }
1682
1683
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_cHRM() { ::hilti::rt::detail::checkStack(); }
1684
1685
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_gAMA() { ::hilti::rt::detail::checkStack(); }
1686
1687
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_iCCP() { ::hilti::rt::detail::checkStack(); }
1688
1689
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_iTXt() { ::hilti::rt::detail::checkStack(); }
1690
1691
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_pHYs() { ::hilti::rt::detail::checkStack(); }
1692
1693
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_sBIT() { ::hilti::rt::detail::checkStack(); }
1694
1695
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_sRGB() { ::hilti::rt::detail::checkStack(); }
1696
1697
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_tEXt() { ::hilti::rt::detail::checkStack(); }
1698
1699
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_tIME() { ::hilti::rt::detail::checkStack(); }
1700
1701
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_tRNS() { ::hilti::rt::detail::checkStack(); }
1702
1703
1
extern void hlt_internal_PNG_File::PNG::_t_register_PNG_zTXt() { ::hilti::rt::detail::checkStack(); }
1704
1705
2
extern void hlt_internal_PNG_File::PNG::_t_register_module() {
1706
2
    ::hilti::rt::Library::setScope(&hlt_internal_PNG_File_hlto_scope);
1707
2
    ::hilti::rt::detail::registerModule({ "PNG", hlt_internal_PNG_File_hlto_scope, &_t_init_module, nullptr, nullptr, nullptr});
1708
2
}
1709
1710
9.13k
auto hlt_internal_PNG_File::PNG::bKGD::_t_parse_PNG__bKGD_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1711
9.13k
    auto _t_self = bKGD::_t_self();
1712
9.13k
    ::hilti::rt::detail::checkStack();
1713
9.13k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:153:13-165:1");
1714
9.13k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:154:5-164:6");
1715
1716
    // Begin parsing production: Switch: switch_10 -> [0,4] -> switch_10_case_1 | [2,6] -> switch_10_case_2 | [3] -> switch_10_case_3;
1717
9.13k
    _t_cur = (*_t_self)._t_parse_switch_10_stage1(_t_data, _t_cur, _t_trim);
1718
    // End parsing production: Switch: switch_10 -> [0,4] -> switch_10_case_1 | [2,6] -> switch_10_case_2 | [3] -> switch_10_case_3;
1719
1720
9.13k
    ::hilti::rt::debug::dedent("spicy"sv);
1721
9.13k
    return _t_cur;
1722
9.13k
}
1723
1724
9.13k
auto hlt_internal_PNG_File::PNG::bKGD::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1725
9.13k
    auto _t_self = bKGD::_t_self();
1726
9.13k
    ::hilti::rt::detail::checkStack();
1727
9.13k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:153:13-165:1");
1728
9.13k
    ::hilti::rt::debug::indent("spicy"sv);
1729
9.13k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1730
9.13k
    return (*_t_self)._t_parse_PNG__bKGD_3_stage2(_t_data, _t_cur, _t_trim);
1731
9.13k
}
1732
1733
9.13k
auto hlt_internal_PNG_File::PNG::bKGD::_t_parse_switch_10_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1734
9.13k
    auto _t_self = bKGD::_t_self();
1735
9.13k
    ::hilti::rt::detail::checkStack();
1736
9.13k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:154:5-164:6");
1737
9.13k
    ::hilti::rt::debug::indent("spicy"sv);
1738
9.13k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:154:5-164:6");
1739
9.13k
    switch ( auto _t_x = _t_self->_t_p_colour_type; (_t_x).Ref() ) {
1740
1.90k
        case ::hilti::rt::integer::safe<std::uint8_t>{0U}: case ::hilti::rt::integer::safe<std::uint8_t>{4U}: {
1741
1.90k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:155:9-156:31");
1742
1.90k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:155:9-156:31");
1743
1744
            // Begin parsing production: Block: switch_10_case_1 -> greyscale_3;
1745
1.90k
            ::hilti::rt::debug::indent("spicy"sv);
1746
1.90k
            ::hilti::rt::integer::safe<uint16_t> _t_v_greyscale;
1747
1.90k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:156:25-156:30");
1748
1749
            // Begin parsing production: Variable: greyscale_3 -> uint<16>;
1750
1.90k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:156:25-156:30"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1751
1.90k
            ::hilti::rt::tuple::assign(std::tie(_t_v_greyscale, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1752
1.90k
            if ( _t_trim ) {
1753
1.86k
                (*_t_data).trim(_t_cur.begin());
1754
1.86k
            }
1755
1756
            // End parsing production: Variable: greyscale_3 -> uint<16>;
1757
1758
1.90k
            ::hilti::rt::debug::dedent("spicy"sv);
1759
            // End parsing production: Block: switch_10_case_1 -> greyscale_3;
1760
1761
1.90k
            break;
1762
804
        }
1763
1.55k
        case ::hilti::rt::integer::safe<std::uint8_t>{2U}: case ::hilti::rt::integer::safe<std::uint8_t>{6U}: {
1764
1.55k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:157:9-162:9");
1765
1.55k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:157:9-162:9");
1766
1767
            // Begin parsing production: Block: switch_10_case_2 -> red_7 green_7 blue_7;
1768
1.55k
            ::hilti::rt::debug::indent("spicy"sv);
1769
1.55k
            ::hilti::rt::integer::safe<uint16_t> _t_v_red;
1770
1.55k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:159:18-159:23");
1771
1772
            // Begin parsing production: Variable: red_7 -> uint<16>;
1773
1.55k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:159:18-159:23"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1774
1.55k
            ::hilti::rt::tuple::assign(std::tie(_t_v_red, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1775
1.55k
            if ( _t_trim ) {
1776
1.53k
                (*_t_data).trim(_t_cur.begin());
1777
1.53k
            }
1778
1779
            // End parsing production: Variable: red_7 -> uint<16>;
1780
1781
1.55k
            ::hilti::rt::integer::safe<uint16_t> _t_v_green;
1782
1.55k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:160:20-160:25");
1783
1784
            // Begin parsing production: Variable: green_7 -> uint<16>;
1785
1.55k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:160:20-160:25"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1786
1.55k
            ::hilti::rt::tuple::assign(std::tie(_t_v_green, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1787
1.55k
            if ( _t_trim ) {
1788
1.51k
                (*_t_data).trim(_t_cur.begin());
1789
1.51k
            }
1790
1791
            // End parsing production: Variable: green_7 -> uint<16>;
1792
1793
1.55k
            ::hilti::rt::integer::safe<uint16_t> _t_v_blue;
1794
1.55k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:161:19-161:24");
1795
1796
            // Begin parsing production: Variable: blue_7 -> uint<16>;
1797
1.55k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:161:19-161:24"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1798
1.55k
            ::hilti::rt::tuple::assign(std::tie(_t_v_blue, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1799
1.55k
            if ( _t_trim ) {
1800
1.50k
                (*_t_data).trim(_t_cur.begin());
1801
1.50k
            }
1802
1803
            // End parsing production: Variable: blue_7 -> uint<16>;
1804
1805
1.55k
            ::hilti::rt::debug::dedent("spicy"sv);
1806
            // End parsing production: Block: switch_10_case_2 -> red_7 green_7 blue_7;
1807
1808
1.55k
            break;
1809
1.03k
        }
1810
5.67k
        case ::hilti::rt::integer::safe<std::uint8_t>{3U}: {
1811
5.67k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:163:9-163:34");
1812
5.67k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:163:9-163:34");
1813
1814
            // Begin parsing production: Block: switch_10_case_3 -> palette_index_3;
1815
5.67k
            ::hilti::rt::debug::indent("spicy"sv);
1816
5.67k
            ::hilti::rt::integer::safe<uint8_t> _t_v_palette_index;
1817
5.67k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:163:29-163:33");
1818
1819
            // Begin parsing production: Variable: palette_index_3 -> uint<8>;
1820
5.67k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:163:29-163:33"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1821
5.67k
            ::hilti::rt::tuple::assign(std::tie(_t_v_palette_index, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1822
5.67k
            if ( _t_trim ) {
1823
5.66k
                (*_t_data).trim(_t_cur.begin());
1824
5.66k
            }
1825
1826
            // End parsing production: Variable: palette_index_3 -> uint<8>;
1827
1828
5.67k
            ::hilti::rt::debug::dedent("spicy"sv);
1829
            // End parsing production: Block: switch_10_case_3 -> palette_index_3;
1830
1831
5.67k
            break;
1832
1.03k
        }
1833
1
        default: {
1834
1
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:154:5-164:6");
1835
1
            throw ::spicy::rt::ParseError{::hilti::rt::fmt("no matching case in switch statement for value '%s'"sv, _t_self->_t_p_colour_type), "/src/spicy/spicy-png/analyzer/analyzer.spicy:154:5-164:6"};
1836
1.03k
        }
1837
9.13k
    }
1838
9.03k
    ::hilti::rt::debug::dedent("spicy"sv);
1839
9.03k
    return _t_cur;
1840
9.13k
}
1841
1842
16.4k
auto hlt_internal_PNG_File::PNG::cHRM::_t_parse_PNG__cHRM_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1843
16.4k
    auto _t_self = cHRM::_t_self();
1844
16.4k
    ::hilti::rt::detail::checkStack();
1845
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:108:13-117:1");
1846
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_white_point_x;
1847
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:109:20-109:25");
1848
1849
    // Begin parsing production: Variable: white_point_x_3 -> uint<32>;
1850
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:109:20-109:25"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1851
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_white_point_x, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1852
16.4k
    if ( _t_trim ) {
1853
16.4k
        (*_t_data).trim(_t_cur.begin());
1854
16.4k
    }
1855
1856
    // End parsing production: Variable: white_point_x_3 -> uint<32>;
1857
1858
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_white_point_y;
1859
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:110:20-110:25");
1860
1861
    // Begin parsing production: Variable: white_point_y_3 -> uint<32>;
1862
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:110:20-110:25"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1863
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_white_point_y, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1864
16.4k
    if ( _t_trim ) {
1865
16.4k
        (*_t_data).trim(_t_cur.begin());
1866
16.4k
    }
1867
1868
    // End parsing production: Variable: white_point_y_3 -> uint<32>;
1869
1870
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_red_x;
1871
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:111:12-111:17");
1872
1873
    // Begin parsing production: Variable: red_x_3 -> uint<32>;
1874
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:111:12-111:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1875
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_red_x, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1876
16.4k
    if ( _t_trim ) {
1877
16.4k
        (*_t_data).trim(_t_cur.begin());
1878
16.4k
    }
1879
1880
    // End parsing production: Variable: red_x_3 -> uint<32>;
1881
1882
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_red_y;
1883
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:112:12-112:17");
1884
1885
    // Begin parsing production: Variable: red_y_3 -> uint<32>;
1886
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:112:12-112:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1887
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_red_y, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1888
16.4k
    if ( _t_trim ) {
1889
16.4k
        (*_t_data).trim(_t_cur.begin());
1890
16.4k
    }
1891
1892
    // End parsing production: Variable: red_y_3 -> uint<32>;
1893
1894
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_green_x;
1895
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:113:14-113:19");
1896
1897
    // Begin parsing production: Variable: green_x_3 -> uint<32>;
1898
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:113:14-113:19"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1899
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_green_x, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1900
16.4k
    if ( _t_trim ) {
1901
16.3k
        (*_t_data).trim(_t_cur.begin());
1902
16.3k
    }
1903
1904
    // End parsing production: Variable: green_x_3 -> uint<32>;
1905
1906
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_green_y;
1907
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:114:14-114:19");
1908
1909
    // Begin parsing production: Variable: green_y_3 -> uint<32>;
1910
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:114:14-114:19"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1911
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_green_y, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1912
16.4k
    if ( _t_trim ) {
1913
16.3k
        (*_t_data).trim(_t_cur.begin());
1914
16.3k
    }
1915
1916
    // End parsing production: Variable: green_y_3 -> uint<32>;
1917
1918
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_blue_x;
1919
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:115:13-115:18");
1920
1921
    // Begin parsing production: Variable: blue_x_3 -> uint<32>;
1922
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:115:13-115:18"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1923
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_blue_x, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1924
16.4k
    if ( _t_trim ) {
1925
16.3k
        (*_t_data).trim(_t_cur.begin());
1926
16.3k
    }
1927
1928
    // End parsing production: Variable: blue_x_3 -> uint<32>;
1929
1930
16.4k
    ::hilti::rt::integer::safe<uint32_t> _t_v_blue_y;
1931
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:116:13-116:18");
1932
1933
    // Begin parsing production: Variable: blue_y_3 -> uint<32>;
1934
16.4k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:116:13-116:18"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1935
16.4k
    ::hilti::rt::tuple::assign(std::tie(_t_v_blue_y, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1936
16.4k
    if ( _t_trim ) {
1937
16.3k
        (*_t_data).trim(_t_cur.begin());
1938
16.3k
    }
1939
1940
    // End parsing production: Variable: blue_y_3 -> uint<32>;
1941
1942
16.4k
    ::hilti::rt::debug::dedent("spicy"sv);
1943
16.4k
    return _t_cur;
1944
16.4k
}
1945
1946
16.4k
auto hlt_internal_PNG_File::PNG::cHRM::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1947
16.4k
    auto _t_self = cHRM::_t_self();
1948
16.4k
    ::hilti::rt::detail::checkStack();
1949
16.4k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:108:13-117:1");
1950
16.4k
    ::hilti::rt::debug::indent("spicy"sv);
1951
16.4k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1952
16.4k
    return (*_t_self)._t_parse_PNG__cHRM_3_stage2(_t_data, _t_cur, _t_trim);
1953
16.4k
}
1954
1955
7.25k
auto hlt_internal_PNG_File::PNG::gAMA::_t_parse_PNG__gAMA_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1956
7.25k
    auto _t_self = gAMA::_t_self();
1957
7.25k
    ::hilti::rt::detail::checkStack();
1958
7.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:120:13-122:1");
1959
7.25k
    ::hilti::rt::integer::safe<uint32_t> _t_v_gamma;
1960
7.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:121:12-121:17");
1961
1962
    // Begin parsing production: Variable: gamma_3 -> uint<32>;
1963
7.25k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:121:12-121:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1964
7.25k
    ::hilti::rt::tuple::assign(std::tie(_t_v_gamma, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
1965
7.25k
    if ( _t_trim ) {
1966
7.21k
        (*_t_data).trim(_t_cur.begin());
1967
7.21k
    }
1968
1969
    // End parsing production: Variable: gamma_3 -> uint<32>;
1970
1971
7.25k
    ::hilti::rt::debug::dedent("spicy"sv);
1972
7.25k
    return _t_cur;
1973
7.25k
}
1974
1975
7.25k
auto hlt_internal_PNG_File::PNG::gAMA::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1976
7.25k
    auto _t_self = gAMA::_t_self();
1977
7.25k
    ::hilti::rt::detail::checkStack();
1978
7.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:120:13-122:1");
1979
7.25k
    ::hilti::rt::debug::indent("spicy"sv);
1980
7.25k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
1981
7.25k
    return (*_t_self)._t_parse_PNG__gAMA_3_stage2(_t_data, _t_cur, _t_trim);
1982
7.25k
}
1983
1984
3.66k
auto hlt_internal_PNG_File::PNG::iCCP::_t_parse_PNG__iCCP_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
1985
3.66k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_8;
1986
3.66k
    auto _t_self = iCCP::_t_self();
1987
3.66k
    ::hilti::rt::detail::checkStack();
1988
3.66k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:71:13-75:1");
1989
3.66k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:72:19-72:23");
1990
1991
    // Begin parsing production: Variable: profile_name_3 -> bytes;
1992
3.66k
    ::hilti::rt::Bytes _t_until_bytes = "\000"_b;
1993
3.66k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz = "\000"_b.size();
1994
3.66k
    (*_t_self).profile_name.valueOrInit() = ""_b;
1995
3.74k
    while ( ::hilti::rt::Bool{true} ) {
1996
3.69k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:72:32-72:38"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
1997
3.69k
        ::hilti::rt::Bool found;
1998
3.69k
        ::hilti::rt::stream::SafeConstIterator it;
1999
3.69k
        ::hilti::rt::tuple::assign(std::tie(found, it), _t_cur.find(_t_until_bytes));
2000
3.69k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it).size())} ) {
2001
1.19k
            (*_t_self).profile_name.value().append(_t_cur.sub(it));
2002
1.19k
        }
2003
2004
3.69k
        if ( found ) {
2005
3.61k
            _t_cur = _t_cur.advance(it + _t_until_bytes_sz);
2006
3.61k
            if ( _t_trim ) {
2007
3.61k
                (*_t_data).trim(_t_cur.begin());
2008
3.61k
            }
2009
2010
3.61k
            goto _t_done_67710;
2011
3.61k
        }
2012
83
        else {
2013
83
            _t_cur = _t_cur.advance(it);
2014
83
            if ( _t_trim ) {
2015
31
                (*_t_data).trim(_t_cur.begin());
2016
31
            }
2017
83
        }
2018
3.69k
    }
2019
2020
3.61k
    _t_done_67710: {}
2021
2022
3.61k
    if ( _t_trim ) {
2023
3.61k
        (*_t_data).trim(_t_cur.begin());
2024
3.61k
    }
2025
2026
    // End parsing production: Variable: profile_name_3 -> bytes;
2027
2028
3.61k
    ::hilti::rt::integer::safe<uint8_t> _t_v_compression_method;
2029
3.61k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:73:25-73:29");
2030
2031
    // Begin parsing production: Variable: compression_method_10 -> uint<8>;
2032
3.61k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:73:25-73:29"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2033
3.61k
    ::hilti::rt::tuple::assign(std::tie(_t_v_compression_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2034
3.61k
    if ( _t_trim ) {
2035
3.56k
        (*_t_data).trim(_t_cur.begin());
2036
3.56k
    }
2037
2038
    // End parsing production: Variable: compression_method_10 -> uint<8>;
2039
2040
3.61k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:74:25-74:29");
2041
2042
    // Begin parsing production: Variable: compressed_profile_3 -> bytes;
2043
3.61k
    ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length} - ((*_t_self).profile_name.value().size() + ::hilti::rt::integer::safe<std::uint64_t>{2U});
2044
3.61k
    ::spicy::rt::detail::extractBytes(_t_data, _t_cur, _t_size, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:74:5-74:71"sv, (_t_lhs_8=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
2045
3.61k
    _t_cur = _t_cur.advance(::hilti::rt::detail::move_non_trivial(_t_size));
2046
3.61k
    if ( _t_trim ) {
2047
3.44k
        (*_t_data).trim(_t_cur.begin());
2048
3.44k
    }
2049
2050
    // End parsing production: Variable: compressed_profile_3 -> bytes;
2051
2052
3.61k
    ::hilti::rt::debug::dedent("spicy"sv);
2053
3.61k
    return _t_cur;
2054
3.66k
}
2055
2056
3.66k
auto hlt_internal_PNG_File::PNG::iCCP::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2057
3.66k
    auto _t_self = iCCP::_t_self();
2058
3.66k
    ::hilti::rt::detail::checkStack();
2059
3.66k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:71:13-75:1");
2060
3.66k
    ::hilti::rt::debug::indent("spicy"sv);
2061
3.66k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2062
3.66k
    return (*_t_self)._t_parse_PNG__iCCP_3_stage2(_t_data, _t_cur, _t_trim);
2063
3.66k
}
2064
2065
19.3k
auto hlt_internal_PNG_File::PNG::iTXt::_t_parse_PNG__iTXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2066
19.3k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_9;
2067
19.3k
    auto _t_self = iTXt::_t_self();
2068
19.3k
    ::hilti::rt::detail::checkStack();
2069
19.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:85:13-92:1");
2070
19.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:86:14-86:18");
2071
2072
    // Begin parsing production: Variable: keyword_7 -> bytes;
2073
19.3k
    ::hilti::rt::Bytes _t_until_bytes = "\000"_b;
2074
19.3k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz = "\000"_b.size();
2075
19.3k
    (*_t_self).keyword.valueOrInit() = ""_b;
2076
19.4k
    while ( ::hilti::rt::Bool{true} ) {
2077
19.3k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:86:27-86:33"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2078
19.3k
        ::hilti::rt::Bool found;
2079
19.3k
        ::hilti::rt::stream::SafeConstIterator it;
2080
19.3k
        ::hilti::rt::tuple::assign(std::tie(found, it), _t_cur.find(_t_until_bytes));
2081
19.3k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it).size())} ) {
2082
1.09k
            (*_t_self).keyword.value().append(_t_cur.sub(it));
2083
1.09k
        }
2084
2085
19.3k
        if ( found ) {
2086
19.2k
            _t_cur = _t_cur.advance(it + _t_until_bytes_sz);
2087
19.2k
            if ( _t_trim ) {
2088
19.2k
                (*_t_data).trim(_t_cur.begin());
2089
19.2k
            }
2090
2091
19.2k
            goto _t_done_77950;
2092
19.2k
        }
2093
98
        else {
2094
98
            _t_cur = _t_cur.advance(it);
2095
98
            if ( _t_trim ) {
2096
33
                (*_t_data).trim(_t_cur.begin());
2097
33
            }
2098
98
        }
2099
19.3k
    }
2100
2101
19.2k
    _t_done_77950: {}
2102
2103
19.2k
    if ( _t_trim ) {
2104
19.2k
        (*_t_data).trim(_t_cur.begin());
2105
19.2k
    }
2106
2107
    // End parsing production: Variable: keyword_7 -> bytes;
2108
2109
19.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_compression_flag;
2110
19.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:87:23-87:27");
2111
2112
    // Begin parsing production: Variable: compression_flag_3 -> uint<8>;
2113
19.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:87:23-87:27"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2114
19.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_compression_flag, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2115
19.2k
    if ( _t_trim ) {
2116
19.2k
        (*_t_data).trim(_t_cur.begin());
2117
19.2k
    }
2118
2119
    // End parsing production: Variable: compression_flag_3 -> uint<8>;
2120
2121
19.2k
    ::hilti::rt::integer::safe<uint8_t> _t_v_compression_method;
2122
19.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:88:25-88:29");
2123
2124
    // Begin parsing production: Variable: compression_method_11 -> uint<8>;
2125
19.2k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:88:25-88:29"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2126
19.2k
    ::hilti::rt::tuple::assign(std::tie(_t_v_compression_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2127
19.2k
    if ( _t_trim ) {
2128
19.1k
        (*_t_data).trim(_t_cur.begin());
2129
19.1k
    }
2130
2131
    // End parsing production: Variable: compression_method_11 -> uint<8>;
2132
2133
19.2k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:89:19-89:23");
2134
2135
    // Begin parsing production: Variable: language_tag_3 -> bytes;
2136
19.2k
    ::hilti::rt::Bytes _t_until_bytes_ = "\000"_b;
2137
19.2k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz_ = "\000"_b.size();
2138
19.2k
    (*_t_self).language_tag.valueOrInit() = ""_b;
2139
19.3k
    while ( ::hilti::rt::Bool{true} ) {
2140
19.2k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz_, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:89:32-89:38"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2141
19.2k
        ::hilti::rt::Bool found_;
2142
19.2k
        ::hilti::rt::stream::SafeConstIterator it_;
2143
19.2k
        ::hilti::rt::tuple::assign(std::tie(found_, it_), _t_cur.find(_t_until_bytes_));
2144
19.2k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it_).size())} ) {
2145
932
            (*_t_self).language_tag.value().append(_t_cur.sub(it_));
2146
932
        }
2147
2148
19.2k
        if ( found_ ) {
2149
19.1k
            _t_cur = _t_cur.advance(it_ + _t_until_bytes_sz_);
2150
19.1k
            if ( _t_trim ) {
2151
19.1k
                (*_t_data).trim(_t_cur.begin());
2152
19.1k
            }
2153
2154
19.1k
            goto _t_done_79378;
2155
19.1k
        }
2156
108
        else {
2157
108
            _t_cur = _t_cur.advance(it_);
2158
108
            if ( _t_trim ) {
2159
46
                (*_t_data).trim(_t_cur.begin());
2160
46
            }
2161
108
        }
2162
19.2k
    }
2163
2164
19.1k
    _t_done_79378: {}
2165
2166
19.1k
    if ( _t_trim ) {
2167
19.1k
        (*_t_data).trim(_t_cur.begin());
2168
19.1k
    }
2169
2170
    // End parsing production: Variable: language_tag_3 -> bytes;
2171
2172
19.1k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:90:25-90:29");
2173
2174
    // Begin parsing production: Variable: translated_keyword_3 -> bytes;
2175
19.1k
    ::hilti::rt::Bytes _t_until_bytes__ = "\000"_b;
2176
19.1k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz__ = "\000"_b.size();
2177
19.1k
    (*_t_self).translated_keyword.valueOrInit() = ""_b;
2178
19.2k
    while ( ::hilti::rt::Bool{true} ) {
2179
19.1k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz__, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:90:38-90:44"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2180
19.1k
        ::hilti::rt::Bool found__;
2181
19.1k
        ::hilti::rt::stream::SafeConstIterator it__;
2182
19.1k
        ::hilti::rt::tuple::assign(std::tie(found__, it__), _t_cur.find(_t_until_bytes__));
2183
19.1k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it__).size())} ) {
2184
1.24k
            (*_t_self).translated_keyword.value().append(_t_cur.sub(it__));
2185
1.24k
        }
2186
2187
19.1k
        if ( found__ ) {
2188
19.0k
            _t_cur = _t_cur.advance(it__ + _t_until_bytes_sz__);
2189
19.0k
            if ( _t_trim ) {
2190
19.0k
                (*_t_data).trim(_t_cur.begin());
2191
19.0k
            }
2192
2193
19.0k
            goto _t_done_80000;
2194
19.0k
        }
2195
159
        else {
2196
159
            _t_cur = _t_cur.advance(it__);
2197
159
            if ( _t_trim ) {
2198
42
                (*_t_data).trim(_t_cur.begin());
2199
42
            }
2200
159
        }
2201
19.1k
    }
2202
2203
19.0k
    _t_done_80000: {}
2204
2205
19.0k
    if ( _t_trim ) {
2206
19.0k
        (*_t_data).trim(_t_cur.begin());
2207
19.0k
    }
2208
2209
    // End parsing production: Variable: translated_keyword_3 -> bytes;
2210
2211
19.0k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:91:11-91:15");
2212
2213
    // Begin parsing production: Variable: text_3 -> bytes;
2214
19.0k
    ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length} - ((*_t_self).keyword.value().size() + (*_t_self).language_tag.value().size() + (*_t_self).translated_keyword.value().size() + ::hilti::rt::integer::safe<std::uint64_t>{5U});
2215
19.0k
    ::spicy::rt::detail::extractBytes(_t_data, _t_cur, _t_size, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:91:5-91:102"sv, (_t_lhs_9=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
2216
19.0k
    _t_cur = _t_cur.advance(::hilti::rt::detail::move_non_trivial(_t_size));
2217
19.0k
    if ( _t_trim ) {
2218
18.7k
        (*_t_data).trim(_t_cur.begin());
2219
18.7k
    }
2220
2221
    // End parsing production: Variable: text_3 -> bytes;
2222
2223
19.0k
    ::hilti::rt::debug::dedent("spicy"sv);
2224
19.0k
    return _t_cur;
2225
19.1k
}
2226
2227
19.3k
auto hlt_internal_PNG_File::PNG::iTXt::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2228
19.3k
    auto _t_self = iTXt::_t_self();
2229
19.3k
    ::hilti::rt::detail::checkStack();
2230
19.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:85:13-92:1");
2231
19.3k
    ::hilti::rt::debug::indent("spicy"sv);
2232
19.3k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2233
19.3k
    return (*_t_self)._t_parse_PNG__iTXt_3_stage2(_t_data, _t_cur, _t_trim);
2234
19.3k
}
2235
2236
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::PLTE_ENTRY& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2237
2238
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::PLTE& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2239
2240
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::bKGD& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2241
2242
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::cHRM& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2243
2244
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::gAMA& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2245
2246
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::iCCP& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2247
2248
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::iTXt& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2249
2250
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::pHYs& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2251
2252
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::sBIT& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2253
2254
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::sRGB& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2255
2256
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tEXt& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2257
2258
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tIME& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2259
2260
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::tRNS& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2261
2262
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::zTXt& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2263
2264
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::IHDR& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2265
2266
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::File& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2267
2268
0
extern auto hlt_internal_PNG_File::PNG::operator<<(std::ostream& o, const hlt_internal_PNG_File::PNG::Chunk& x) -> std::ostream& { return o << ::hilti::rt::to_string(x);; }
2269
2270
6.25k
auto hlt_internal_PNG_File::PNG::pHYs::_t_parse_PNG__pHYs_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2271
6.25k
    auto _t_self = pHYs::_t_self();
2272
6.25k
    ::hilti::rt::detail::checkStack();
2273
6.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:78:13-82:1");
2274
6.25k
    ::hilti::rt::integer::safe<uint32_t> _t_v_ppux;
2275
6.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:79:11-79:16");
2276
2277
    // Begin parsing production: Variable: ppux_3 -> uint<32>;
2278
6.25k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:79:11-79:16"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2279
6.25k
    ::hilti::rt::tuple::assign(std::tie(_t_v_ppux, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2280
6.25k
    if ( _t_trim ) {
2281
6.21k
        (*_t_data).trim(_t_cur.begin());
2282
6.21k
    }
2283
2284
    // End parsing production: Variable: ppux_3 -> uint<32>;
2285
2286
6.25k
    ::hilti::rt::integer::safe<uint32_t> _t_v_ppuy;
2287
6.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:80:11-80:16");
2288
2289
    // Begin parsing production: Variable: ppuy_3 -> uint<32>;
2290
6.25k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{4U}, "expecting 4 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:80:11-80:16"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2291
6.25k
    ::hilti::rt::tuple::assign(std::tie(_t_v_ppuy, _t_cur), ::hilti::rt::integer::unpack<uint32_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2292
6.25k
    if ( _t_trim ) {
2293
6.19k
        (*_t_data).trim(_t_cur.begin());
2294
6.19k
    }
2295
2296
    // End parsing production: Variable: ppuy_3 -> uint<32>;
2297
2298
6.25k
    ::hilti::rt::integer::safe<uint8_t> _t_v_unit_specifier;
2299
6.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:81:21-81:25");
2300
2301
    // Begin parsing production: Variable: unit_specifier_3 -> uint<8>;
2302
6.25k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:81:21-81:25"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2303
6.25k
    ::hilti::rt::tuple::assign(std::tie(_t_v_unit_specifier, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2304
6.25k
    if ( _t_trim ) {
2305
6.18k
        (*_t_data).trim(_t_cur.begin());
2306
6.18k
    }
2307
2308
    // End parsing production: Variable: unit_specifier_3 -> uint<8>;
2309
2310
6.25k
    ::hilti::rt::debug::dedent("spicy"sv);
2311
6.25k
    return _t_cur;
2312
6.25k
}
2313
2314
6.25k
auto hlt_internal_PNG_File::PNG::pHYs::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2315
6.25k
    auto _t_self = pHYs::_t_self();
2316
6.25k
    ::hilti::rt::detail::checkStack();
2317
6.25k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:78:13-82:1");
2318
6.25k
    ::hilti::rt::debug::indent("spicy"sv);
2319
6.25k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2320
6.25k
    return (*_t_self)._t_parse_PNG__pHYs_3_stage2(_t_data, _t_cur, _t_trim);
2321
6.25k
}
2322
2323
21.7k
auto hlt_internal_PNG_File::PNG::sBIT::_t_parse_PNG__sBIT_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2324
21.7k
    auto _t_self = sBIT::_t_self();
2325
21.7k
    ::hilti::rt::detail::checkStack();
2326
21.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:130:13-150:1");
2327
21.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:131:5-149:6");
2328
2329
    // Begin parsing production: Switch: switch_9 -> [0] -> switch_9_case_1 | [2,3] -> switch_9_case_2 | [4] -> switch_9_case_3 | [6] -> switch_9_case_4;
2330
21.7k
    _t_cur = (*_t_self)._t_parse_switch_9_stage1(_t_data, _t_cur, _t_trim);
2331
    // End parsing production: Switch: switch_9 -> [0] -> switch_9_case_1 | [2,3] -> switch_9_case_2 | [4] -> switch_9_case_3 | [6] -> switch_9_case_4;
2332
2333
21.7k
    ::hilti::rt::debug::dedent("spicy"sv);
2334
21.7k
    return _t_cur;
2335
21.7k
}
2336
2337
21.7k
auto hlt_internal_PNG_File::PNG::sBIT::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2338
21.7k
    auto _t_self = sBIT::_t_self();
2339
21.7k
    ::hilti::rt::detail::checkStack();
2340
21.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:130:13-150:1");
2341
21.7k
    ::hilti::rt::debug::indent("spicy"sv);
2342
21.7k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2343
21.7k
    return (*_t_self)._t_parse_PNG__sBIT_3_stage2(_t_data, _t_cur, _t_trim);
2344
21.7k
}
2345
2346
21.7k
auto hlt_internal_PNG_File::PNG::sBIT::_t_parse_switch_9_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2347
21.7k
    auto _t_self = sBIT::_t_self();
2348
21.7k
    ::hilti::rt::detail::checkStack();
2349
21.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:131:5-149:6");
2350
21.7k
    ::hilti::rt::debug::indent("spicy"sv);
2351
21.7k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:131:5-149:6");
2352
21.7k
    switch ( auto _t_x = _t_self->_t_p_colour_type; (_t_x).Ref() ) {
2353
3.89k
        case ::hilti::rt::integer::safe<std::uint8_t>{0U}: {
2354
3.89k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:132:9-132:47");
2355
3.89k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:132:9-132:47");
2356
2357
            // Begin parsing production: Block: switch_9_case_1 -> significant_greyscale_bits_5;
2358
3.89k
            ::hilti::rt::debug::indent("spicy"sv);
2359
3.89k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_greyscale_bits;
2360
3.89k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:132:42-132:46");
2361
2362
            // Begin parsing production: Variable: significant_greyscale_bits_5 -> uint<8>;
2363
3.89k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:132:42-132:46"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2364
3.89k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_greyscale_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2365
3.89k
            if ( _t_trim ) {
2366
3.87k
                (*_t_data).trim(_t_cur.begin());
2367
3.87k
            }
2368
2369
            // End parsing production: Variable: significant_greyscale_bits_5 -> uint<8>;
2370
2371
3.89k
            ::hilti::rt::debug::dedent("spicy"sv);
2372
            // End parsing production: Block: switch_9_case_1 -> significant_greyscale_bits_5;
2373
2374
3.89k
            break;
2375
0
        }
2376
8.09k
        case ::hilti::rt::integer::safe<std::uint8_t>{2U}: case ::hilti::rt::integer::safe<std::uint8_t>{3U}: {
2377
8.09k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:133:9-138:9");
2378
8.09k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:133:9-138:9");
2379
2380
            // Begin parsing production: Block: switch_9_case_2 -> significant_red_bits_5 significant_green_bits_5 significant_blue_bits_5;
2381
8.09k
            ::hilti::rt::debug::indent("spicy"sv);
2382
8.09k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_red_bits;
2383
8.09k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:135:35-135:39");
2384
2385
            // Begin parsing production: Variable: significant_red_bits_5 -> uint<8>;
2386
8.09k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:135:35-135:39"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2387
8.09k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_red_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2388
8.09k
            if ( _t_trim ) {
2389
8.07k
                (*_t_data).trim(_t_cur.begin());
2390
8.07k
            }
2391
2392
            // End parsing production: Variable: significant_red_bits_5 -> uint<8>;
2393
2394
8.09k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_green_bits;
2395
8.09k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:136:37-136:41");
2396
2397
            // Begin parsing production: Variable: significant_green_bits_5 -> uint<8>;
2398
8.09k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:136:37-136:41"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2399
8.09k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_green_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2400
8.09k
            if ( _t_trim ) {
2401
8.06k
                (*_t_data).trim(_t_cur.begin());
2402
8.06k
            }
2403
2404
            // End parsing production: Variable: significant_green_bits_5 -> uint<8>;
2405
2406
8.09k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_blue_bits;
2407
8.09k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:137:36-137:40");
2408
2409
            // Begin parsing production: Variable: significant_blue_bits_5 -> uint<8>;
2410
8.09k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:137:36-137:40"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2411
8.09k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_blue_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2412
8.09k
            if ( _t_trim ) {
2413
8.05k
                (*_t_data).trim(_t_cur.begin());
2414
8.05k
            }
2415
2416
            // End parsing production: Variable: significant_blue_bits_5 -> uint<8>;
2417
2418
8.09k
            ::hilti::rt::debug::dedent("spicy"sv);
2419
            // End parsing production: Block: switch_9_case_2 -> significant_red_bits_5 significant_green_bits_5 significant_blue_bits_5;
2420
2421
8.09k
            break;
2422
1.33k
        }
2423
2.40k
        case ::hilti::rt::integer::safe<std::uint8_t>{4U}: {
2424
2.40k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:139:9-142:9");
2425
2.40k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:139:9-142:9");
2426
2427
            // Begin parsing production: Block: switch_9_case_3 -> significant_greyscale_bits_6 significant_alpha_bits_5;
2428
2.40k
            ::hilti::rt::debug::indent("spicy"sv);
2429
2.40k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_greyscale_bits;
2430
2.40k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:140:41-140:45");
2431
2432
            // Begin parsing production: Variable: significant_greyscale_bits_6 -> uint<8>;
2433
2.40k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:140:41-140:45"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2434
2.40k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_greyscale_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2435
2.40k
            if ( _t_trim ) {
2436
2.39k
                (*_t_data).trim(_t_cur.begin());
2437
2.39k
            }
2438
2439
            // End parsing production: Variable: significant_greyscale_bits_6 -> uint<8>;
2440
2441
2.40k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_alpha_bits;
2442
2.40k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:141:37-141:41");
2443
2444
            // Begin parsing production: Variable: significant_alpha_bits_5 -> uint<8>;
2445
2.40k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:141:37-141:41"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2446
2.40k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_alpha_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2447
2.40k
            if ( _t_trim ) {
2448
2.39k
                (*_t_data).trim(_t_cur.begin());
2449
2.39k
            }
2450
2451
            // End parsing production: Variable: significant_alpha_bits_5 -> uint<8>;
2452
2453
2.40k
            ::hilti::rt::debug::dedent("spicy"sv);
2454
            // End parsing production: Block: switch_9_case_3 -> significant_greyscale_bits_6 significant_alpha_bits_5;
2455
2456
2.40k
            break;
2457
1.33k
        }
2458
7.36k
        case ::hilti::rt::integer::safe<std::uint8_t>{6U}: {
2459
7.36k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:143:9-148:9");
2460
7.36k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:143:9-148:9");
2461
2462
            // Begin parsing production: Block: switch_9_case_4 -> significant_red_bits_6 significant_green_bits_6 significant_blue_bits_6 significant_alpha_bits_6;
2463
7.36k
            ::hilti::rt::debug::indent("spicy"sv);
2464
7.36k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_red_bits;
2465
7.36k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:144:35-144:39");
2466
2467
            // Begin parsing production: Variable: significant_red_bits_6 -> uint<8>;
2468
7.36k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:144:35-144:39"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2469
7.36k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_red_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2470
7.36k
            if ( _t_trim ) {
2471
7.35k
                (*_t_data).trim(_t_cur.begin());
2472
7.35k
            }
2473
2474
            // End parsing production: Variable: significant_red_bits_6 -> uint<8>;
2475
2476
7.36k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_green_bits;
2477
7.36k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:145:37-145:41");
2478
2479
            // Begin parsing production: Variable: significant_green_bits_6 -> uint<8>;
2480
7.36k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:145:37-145:41"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2481
7.36k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_green_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2482
7.36k
            if ( _t_trim ) {
2483
7.34k
                (*_t_data).trim(_t_cur.begin());
2484
7.34k
            }
2485
2486
            // End parsing production: Variable: significant_green_bits_6 -> uint<8>;
2487
2488
7.36k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_blue_bits;
2489
7.36k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:146:36-146:40");
2490
2491
            // Begin parsing production: Variable: significant_blue_bits_6 -> uint<8>;
2492
7.36k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:146:36-146:40"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2493
7.36k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_blue_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2494
7.36k
            if ( _t_trim ) {
2495
7.34k
                (*_t_data).trim(_t_cur.begin());
2496
7.34k
            }
2497
2498
            // End parsing production: Variable: significant_blue_bits_6 -> uint<8>;
2499
2500
7.36k
            ::hilti::rt::integer::safe<uint8_t> _t_v_significant_alpha_bits;
2501
7.36k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:147:37-147:41");
2502
2503
            // Begin parsing production: Variable: significant_alpha_bits_6 -> uint<8>;
2504
7.36k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:147:37-147:41"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2505
7.36k
            ::hilti::rt::tuple::assign(std::tie(_t_v_significant_alpha_bits, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2506
7.36k
            if ( _t_trim ) {
2507
7.33k
                (*_t_data).trim(_t_cur.begin());
2508
7.33k
            }
2509
2510
            // End parsing production: Variable: significant_alpha_bits_6 -> uint<8>;
2511
2512
7.36k
            ::hilti::rt::debug::dedent("spicy"sv);
2513
            // End parsing production: Block: switch_9_case_4 -> significant_red_bits_6 significant_green_bits_6 significant_blue_bits_6 significant_alpha_bits_6;
2514
2515
7.36k
            break;
2516
1.33k
        }
2517
5
        default: {
2518
5
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:131:5-149:6");
2519
5
            throw ::spicy::rt::ParseError{::hilti::rt::fmt("no matching case in switch statement for value '%s'"sv, _t_self->_t_p_colour_type), "/src/spicy/spicy-png/analyzer/analyzer.spicy:131:5-149:6"};
2520
1.33k
        }
2521
21.7k
    }
2522
21.6k
    ::hilti::rt::debug::dedent("spicy"sv);
2523
21.6k
    return _t_cur;
2524
21.7k
}
2525
2526
4.31k
auto hlt_internal_PNG_File::PNG::sRGB::_t_parse_PNG__sRGB_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2527
4.31k
    auto _t_self = sRGB::_t_self();
2528
4.31k
    ::hilti::rt::detail::checkStack();
2529
4.31k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:125:13-127:1");
2530
4.31k
    ::hilti::rt::integer::safe<uint8_t> _t_v_rendering_intent;
2531
4.31k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:126:23-126:27");
2532
2533
    // Begin parsing production: Variable: rendering_intent_3 -> uint<8>;
2534
4.31k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:126:23-126:27"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2535
4.31k
    ::hilti::rt::tuple::assign(std::tie(_t_v_rendering_intent, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2536
4.31k
    if ( _t_trim ) {
2537
4.28k
        (*_t_data).trim(_t_cur.begin());
2538
4.28k
    }
2539
2540
    // End parsing production: Variable: rendering_intent_3 -> uint<8>;
2541
2542
4.31k
    ::hilti::rt::debug::dedent("spicy"sv);
2543
4.31k
    return _t_cur;
2544
4.31k
}
2545
2546
4.31k
auto hlt_internal_PNG_File::PNG::sRGB::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2547
4.31k
    auto _t_self = sRGB::_t_self();
2548
4.31k
    ::hilti::rt::detail::checkStack();
2549
4.31k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:125:13-127:1");
2550
4.31k
    ::hilti::rt::debug::indent("spicy"sv);
2551
4.31k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2552
4.31k
    return (*_t_self)._t_parse_PNG__sRGB_3_stage2(_t_data, _t_cur, _t_trim);
2553
4.31k
}
2554
2555
31.8k
auto hlt_internal_PNG_File::PNG::tEXt::_t_parse_PNG__tEXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2556
31.8k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_10;
2557
31.8k
    auto _t_self = tEXt::_t_self();
2558
31.8k
    ::hilti::rt::detail::checkStack();
2559
31.8k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:95:13-98:1");
2560
31.8k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:96:14-96:18");
2561
2562
    // Begin parsing production: Variable: keyword_8 -> bytes;
2563
31.8k
    ::hilti::rt::Bytes _t_until_bytes = "\000"_b;
2564
31.8k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz = "\000"_b.size();
2565
31.8k
    (*_t_self).keyword.valueOrInit() = ""_b;
2566
31.9k
    while ( ::hilti::rt::Bool{true} ) {
2567
31.8k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:96:27-96:33"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2568
31.8k
        ::hilti::rt::Bool found;
2569
31.8k
        ::hilti::rt::stream::SafeConstIterator it;
2570
31.8k
        ::hilti::rt::tuple::assign(std::tie(found, it), _t_cur.find(_t_until_bytes));
2571
31.8k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it).size())} ) {
2572
3.03k
            (*_t_self).keyword.value().append(_t_cur.sub(it));
2573
3.03k
        }
2574
2575
31.8k
        if ( found ) {
2576
31.8k
            _t_cur = _t_cur.advance(it + _t_until_bytes_sz);
2577
31.8k
            if ( _t_trim ) {
2578
31.8k
                (*_t_data).trim(_t_cur.begin());
2579
31.8k
            }
2580
2581
31.8k
            goto _t_done_84599;
2582
31.8k
        }
2583
80
        else {
2584
80
            _t_cur = _t_cur.advance(it);
2585
80
            if ( _t_trim ) {
2586
29
                (*_t_data).trim(_t_cur.begin());
2587
29
            }
2588
80
        }
2589
31.8k
    }
2590
2591
31.8k
    _t_done_84599: {}
2592
2593
31.8k
    if ( _t_trim ) {
2594
31.8k
        (*_t_data).trim(_t_cur.begin());
2595
31.8k
    }
2596
2597
    // End parsing production: Variable: keyword_8 -> bytes;
2598
2599
31.8k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:97:18-97:22");
2600
2601
    // Begin parsing production: Variable: text_string_3 -> bytes;
2602
31.8k
    ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length} - ((*_t_self).keyword.value().size() + ::hilti::rt::integer::safe<std::uint64_t>{1U});
2603
31.8k
    ::spicy::rt::detail::extractBytes(_t_data, _t_cur, _t_size, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:97:5-97:59"sv, (_t_lhs_10=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
2604
31.8k
    _t_cur = _t_cur.advance(::hilti::rt::detail::move_non_trivial(_t_size));
2605
31.8k
    if ( _t_trim ) {
2606
31.6k
        (*_t_data).trim(_t_cur.begin());
2607
31.6k
    }
2608
2609
    // End parsing production: Variable: text_string_3 -> bytes;
2610
2611
31.8k
    ::hilti::rt::debug::dedent("spicy"sv);
2612
31.8k
    return _t_cur;
2613
31.8k
}
2614
2615
31.8k
auto hlt_internal_PNG_File::PNG::tEXt::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2616
31.8k
    auto _t_self = tEXt::_t_self();
2617
31.8k
    ::hilti::rt::detail::checkStack();
2618
31.8k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:95:13-98:1");
2619
31.8k
    ::hilti::rt::debug::indent("spicy"sv);
2620
31.8k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2621
31.8k
    return (*_t_self)._t_parse_PNG__tEXt_3_stage2(_t_data, _t_cur, _t_trim);
2622
31.8k
}
2623
2624
12.7k
auto hlt_internal_PNG_File::PNG::tIME::_t_parse_PNG__tIME_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2625
12.7k
    auto _t_self = tIME::_t_self();
2626
12.7k
    ::hilti::rt::detail::checkStack();
2627
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:181:13-188:1");
2628
12.7k
    ::hilti::rt::integer::safe<uint16_t> _t_v_year;
2629
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:182:11-182:16");
2630
2631
    // Begin parsing production: Variable: year_3 -> uint<16>;
2632
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:182:11-182:16"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2633
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_year, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2634
12.7k
    if ( _t_trim ) {
2635
12.7k
        (*_t_data).trim(_t_cur.begin());
2636
12.7k
    }
2637
2638
    // End parsing production: Variable: year_3 -> uint<16>;
2639
2640
12.7k
    ::hilti::rt::integer::safe<uint8_t> _t_v_month;
2641
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:183:12-183:16");
2642
2643
    // Begin parsing production: Variable: month_3 -> uint<8>;
2644
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:183:12-183:16"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2645
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_month, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2646
12.7k
    if ( _t_trim ) {
2647
12.7k
        (*_t_data).trim(_t_cur.begin());
2648
12.7k
    }
2649
2650
    // End parsing production: Variable: month_3 -> uint<8>;
2651
2652
12.7k
    ::hilti::rt::integer::safe<uint8_t> _t_v_day;
2653
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:184:10-184:14");
2654
2655
    // Begin parsing production: Variable: day_3 -> uint<8>;
2656
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:184:10-184:14"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2657
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_day, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2658
12.7k
    if ( _t_trim ) {
2659
12.7k
        (*_t_data).trim(_t_cur.begin());
2660
12.7k
    }
2661
2662
    // End parsing production: Variable: day_3 -> uint<8>;
2663
2664
12.7k
    ::hilti::rt::integer::safe<uint8_t> _t_v_hour;
2665
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:185:11-185:15");
2666
2667
    // Begin parsing production: Variable: hour_3 -> uint<8>;
2668
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:185:11-185:15"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2669
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_hour, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2670
12.7k
    if ( _t_trim ) {
2671
12.7k
        (*_t_data).trim(_t_cur.begin());
2672
12.7k
    }
2673
2674
    // End parsing production: Variable: hour_3 -> uint<8>;
2675
2676
12.7k
    ::hilti::rt::integer::safe<uint8_t> _t_v_minute;
2677
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:186:13-186:17");
2678
2679
    // Begin parsing production: Variable: minute_3 -> uint<8>;
2680
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:186:13-186:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2681
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_minute, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2682
12.7k
    if ( _t_trim ) {
2683
12.6k
        (*_t_data).trim(_t_cur.begin());
2684
12.6k
    }
2685
2686
    // End parsing production: Variable: minute_3 -> uint<8>;
2687
2688
12.7k
    ::hilti::rt::integer::safe<uint8_t> _t_v_second;
2689
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:187:13-187:17");
2690
2691
    // Begin parsing production: Variable: second_3 -> uint<8>;
2692
12.7k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:187:13-187:17"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2693
12.7k
    ::hilti::rt::tuple::assign(std::tie(_t_v_second, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2694
12.7k
    if ( _t_trim ) {
2695
12.6k
        (*_t_data).trim(_t_cur.begin());
2696
12.6k
    }
2697
2698
    // End parsing production: Variable: second_3 -> uint<8>;
2699
2700
12.7k
    ::hilti::rt::debug::dedent("spicy"sv);
2701
12.7k
    return _t_cur;
2702
12.7k
}
2703
2704
12.7k
auto hlt_internal_PNG_File::PNG::tIME::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2705
12.7k
    auto _t_self = tIME::_t_self();
2706
12.7k
    ::hilti::rt::detail::checkStack();
2707
12.7k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:181:13-188:1");
2708
12.7k
    ::hilti::rt::debug::indent("spicy"sv);
2709
12.7k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2710
12.7k
    return (*_t_self)._t_parse_PNG__tIME_3_stage2(_t_data, _t_cur, _t_trim);
2711
12.7k
}
2712
2713
37.0k
auto hlt_internal_PNG_File::PNG::tRNS::_t_parse_PNG__tRNS_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2714
37.0k
    auto _t_self = tRNS::_t_self();
2715
37.0k
    ::hilti::rt::detail::checkStack();
2716
37.0k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:168:13-178:1");
2717
37.0k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:169:5-177:6");
2718
2719
    // Begin parsing production: Switch: switch_11 -> [0] -> switch_11_case_1 | [2] -> switch_11_case_2 | [3] -> switch_11_case_3;
2720
37.0k
    _t_cur = (*_t_self)._t_parse_switch_11_stage1(_t_data, _t_cur, _t_trim);
2721
    // End parsing production: Switch: switch_11 -> [0] -> switch_11_case_1 | [2] -> switch_11_case_2 | [3] -> switch_11_case_3;
2722
2723
37.0k
    ::hilti::rt::debug::dedent("spicy"sv);
2724
37.0k
    return _t_cur;
2725
37.0k
}
2726
2727
31.1k
auto hlt_internal_PNG_File::PNG::tRNS::_t_parse_alpha_3_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim, ::hilti::rt::Vector<::hilti::rt::integer::safe<uint8_t>>& _t_dst) -> ::hilti::rt::stream::View {
2728
31.1k
    auto _t_self = tRNS::_t_self();
2729
31.1k
    ::hilti::rt::detail::checkStack();
2730
31.1k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:176:14-176:34");
2731
31.1k
    ::hilti::rt::integer::safe<uint64_t> _t_repeat = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length};
2732
31.1k
    _t_dst.reserve((::hilti::rt::integer::safe<std::uint64_t>{128U} <= _t_repeat ? ::hilti::rt::integer::safe<std::uint64_t>{128U} : _t_repeat));
2733
5.40M
    for ( ::hilti::rt::integer::safe<uint64_t> _t_i = ::hilti::rt::detail::move_non_trivial(_t_repeat); ::hilti::rt::Bool{static_cast<bool>(_t_i)};  ) {
2734
5.37M
        _t_i--;
2735
5.37M
        ::hilti::rt::integer::safe<uint8_t> _t_elem;
2736
5.37M
        ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:176:21-176:25");
2737
2738
        // Begin parsing production: Variable: _anon_8_3 -> uint<8> (container 'alpha');
2739
5.37M
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:176:21-176:25"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2740
5.37M
        ::hilti::rt::tuple::assign(std::tie(_t_elem, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2741
5.37M
        if ( _t_trim ) {
2742
5.37M
            (*_t_data).trim(_t_cur.begin());
2743
5.37M
        }
2744
2745
        // End parsing production: Variable: _anon_8_3 -> uint<8> (container 'alpha');
2746
2747
5.37M
        _t_dst.emplace_back(_t_elem);
2748
5.37M
    }
2749
2750
31.1k
    return _t_cur;
2751
31.1k
}
2752
2753
37.0k
auto hlt_internal_PNG_File::PNG::tRNS::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2754
37.0k
    auto _t_self = tRNS::_t_self();
2755
37.0k
    ::hilti::rt::detail::checkStack();
2756
37.0k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:168:13-178:1");
2757
37.0k
    ::hilti::rt::debug::indent("spicy"sv);
2758
37.0k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2759
37.0k
    return (*_t_self)._t_parse_PNG__tRNS_3_stage2(_t_data, _t_cur, _t_trim);
2760
37.0k
}
2761
2762
37.0k
auto hlt_internal_PNG_File::PNG::tRNS::_t_parse_switch_11_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2763
37.0k
    auto _t_self = tRNS::_t_self();
2764
37.0k
    ::hilti::rt::detail::checkStack();
2765
37.0k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:169:5-177:6");
2766
37.0k
    ::hilti::rt::debug::indent("spicy"sv);
2767
37.0k
      ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:169:5-177:6");
2768
37.0k
    switch ( auto _t_x = _t_self->_t_p_colour_type; (_t_x).Ref() ) {
2769
1.47k
        case ::hilti::rt::integer::safe<std::uint8_t>{0U}: {
2770
1.47k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:170:9-170:39");
2771
1.47k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:170:9-170:39");
2772
2773
            // Begin parsing production: Block: switch_11_case_1 -> grey_sample_value_3;
2774
1.47k
            ::hilti::rt::debug::indent("spicy"sv);
2775
1.47k
            ::hilti::rt::integer::safe<uint16_t> _t_v_grey_sample_value;
2776
1.47k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:170:33-170:38");
2777
2778
            // Begin parsing production: Variable: grey_sample_value_3 -> uint<16>;
2779
1.47k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:170:33-170:38"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2780
1.47k
            ::hilti::rt::tuple::assign(std::tie(_t_v_grey_sample_value, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2781
1.47k
            if ( _t_trim ) {
2782
1.44k
                (*_t_data).trim(_t_cur.begin());
2783
1.44k
            }
2784
2785
            // End parsing production: Variable: grey_sample_value_3 -> uint<16>;
2786
2787
1.47k
            ::hilti::rt::debug::dedent("spicy"sv);
2788
            // End parsing production: Block: switch_11_case_1 -> grey_sample_value_3;
2789
2790
1.47k
            break;
2791
0
        }
2792
4.41k
        case ::hilti::rt::integer::safe<std::uint8_t>{2U}: {
2793
4.41k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:171:9-175:9");
2794
4.41k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:171:9-175:9");
2795
2796
            // Begin parsing production: Block: switch_11_case_2 -> red_sample_value_3 green_sample_value_3 blue_sample_value_3;
2797
4.41k
            ::hilti::rt::debug::indent("spicy"sv);
2798
4.41k
            ::hilti::rt::integer::safe<uint16_t> _t_v_red_sample_value;
2799
4.41k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:172:31-172:36");
2800
2801
            // Begin parsing production: Variable: red_sample_value_3 -> uint<16>;
2802
4.41k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:172:31-172:36"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2803
4.41k
            ::hilti::rt::tuple::assign(std::tie(_t_v_red_sample_value, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2804
4.41k
            if ( _t_trim ) {
2805
4.40k
                (*_t_data).trim(_t_cur.begin());
2806
4.40k
            }
2807
2808
            // End parsing production: Variable: red_sample_value_3 -> uint<16>;
2809
2810
4.41k
            ::hilti::rt::integer::safe<uint16_t> _t_v_green_sample_value;
2811
4.41k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:173:33-173:38");
2812
2813
            // Begin parsing production: Variable: green_sample_value_3 -> uint<16>;
2814
4.41k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:173:33-173:38"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2815
4.41k
            ::hilti::rt::tuple::assign(std::tie(_t_v_green_sample_value, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2816
4.41k
            if ( _t_trim ) {
2817
4.38k
                (*_t_data).trim(_t_cur.begin());
2818
4.38k
            }
2819
2820
            // End parsing production: Variable: green_sample_value_3 -> uint<16>;
2821
2822
4.41k
            ::hilti::rt::integer::safe<uint16_t> _t_v_blue_sample_value;
2823
4.41k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:174:32-174:37");
2824
2825
            // Begin parsing production: Variable: blue_sample_value_3 -> uint<16>;
2826
4.41k
            ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{2U}, "expecting 2 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:174:32-174:37"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2827
4.41k
            ::hilti::rt::tuple::assign(std::tie(_t_v_blue_sample_value, _t_cur), ::hilti::rt::integer::unpack<uint16_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2828
4.41k
            if ( _t_trim ) {
2829
4.37k
                (*_t_data).trim(_t_cur.begin());
2830
4.37k
            }
2831
2832
            // End parsing production: Variable: blue_sample_value_3 -> uint<16>;
2833
2834
4.41k
            ::hilti::rt::debug::dedent("spicy"sv);
2835
            // End parsing production: Block: switch_11_case_2 -> red_sample_value_3 green_sample_value_3 blue_sample_value_3;
2836
2837
4.41k
            break;
2838
0
        }
2839
31.1k
        case ::hilti::rt::integer::safe<std::uint8_t>{3U}: {
2840
31.1k
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:176:9-176:34");
2841
31.1k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:176:9-176:34");
2842
2843
            // Begin parsing production: Block: switch_11_case_3 -> alpha_3;
2844
31.1k
            ::hilti::rt::debug::indent("spicy"sv);
2845
31.1k
            ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:176:14-176:34");
2846
2847
            // Begin parsing production: Counter: alpha_3 -> counter(length): _anon_8_3;
2848
31.1k
            _t_cur = (*_t_self)._t_parse_alpha_3_stage1(_t_data, _t_cur, _t_trim, (*_t_self).alpha.valueOrInit());
2849
            // End parsing production: Counter: alpha_3 -> counter(length): _anon_8_3;
2850
2851
31.1k
            ::hilti::rt::debug::dedent("spicy"sv);
2852
            // End parsing production: Block: switch_11_case_3 -> alpha_3;
2853
2854
31.1k
            break;
2855
0
        }
2856
3
        default: {
2857
3
              ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:169:5-177:6");
2858
3
            throw ::spicy::rt::ParseError{::hilti::rt::fmt("no matching case in switch statement for value '%s'"sv, _t_self->_t_p_colour_type), "/src/spicy/spicy-png/analyzer/analyzer.spicy:169:5-177:6"};
2859
0
        }
2860
37.0k
    }
2861
36.8k
    ::hilti::rt::debug::dedent("spicy"sv);
2862
36.8k
    return _t_cur;
2863
37.0k
}
2864
2865
11.3k
auto hlt_internal_PNG_File::PNG::zTXt::_t_parse_PNG__zTXt_3_stage2(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, ::hilti::rt::stream::View _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2866
11.3k
    ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters> _t_lhs_11;
2867
11.3k
    auto _t_self = zTXt::_t_self();
2868
11.3k
    ::hilti::rt::detail::checkStack();
2869
11.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:101:13-105:1");
2870
11.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:102:14-102:18");
2871
2872
    // Begin parsing production: Variable: keyword_9 -> bytes;
2873
11.3k
    ::hilti::rt::Bytes _t_until_bytes = "\000"_b;
2874
11.3k
    ::hilti::rt::integer::safe<uint64_t> _t_until_bytes_sz = "\000"_b.size();
2875
11.3k
    (*_t_self).keyword.valueOrInit() = ""_b;
2876
11.5k
    while ( ::hilti::rt::Bool{true} ) {
2877
11.4k
        ::spicy::rt::detail::waitForInput(_t_data, _t_cur, _t_until_bytes_sz, "end-of-data reached before &until expression found"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:102:27-102:33"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2878
11.4k
        ::hilti::rt::Bool found;
2879
11.4k
        ::hilti::rt::stream::SafeConstIterator it;
2880
11.4k
        ::hilti::rt::tuple::assign(std::tie(found, it), _t_cur.find(_t_until_bytes));
2881
11.4k
        if ( ::hilti::rt::Bool{static_cast<bool>(_t_cur.sub(it).size())} ) {
2882
955
            (*_t_self).keyword.value().append(_t_cur.sub(it));
2883
955
        }
2884
2885
11.4k
        if ( found ) {
2886
11.3k
            _t_cur = _t_cur.advance(it + _t_until_bytes_sz);
2887
11.3k
            if ( _t_trim ) {
2888
11.3k
                (*_t_data).trim(_t_cur.begin());
2889
11.3k
            }
2890
2891
11.3k
            goto _t_done_89047;
2892
11.3k
        }
2893
108
        else {
2894
108
            _t_cur = _t_cur.advance(it);
2895
108
            if ( _t_trim ) {
2896
41
                (*_t_data).trim(_t_cur.begin());
2897
41
            }
2898
108
        }
2899
11.4k
    }
2900
2901
11.3k
    _t_done_89047: {}
2902
2903
11.3k
    if ( _t_trim ) {
2904
11.3k
        (*_t_data).trim(_t_cur.begin());
2905
11.3k
    }
2906
2907
    // End parsing production: Variable: keyword_9 -> bytes;
2908
2909
11.3k
    ::hilti::rt::integer::safe<uint8_t> _t_v_compression_method;
2910
11.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:103:25-103:29");
2911
2912
    // Begin parsing production: Variable: compression_method_12 -> uint<8>;
2913
11.3k
    ::spicy::rt::detail::waitForInput(_t_data, _t_cur, ::hilti::rt::integer::safe<std::uint64_t>{1U}, "expecting 1 bytes for unpacking value"sv, "/src/spicy/spicy-png/analyzer/analyzer.spicy:103:25-103:29"sv, ::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{});
2914
11.3k
    ::hilti::rt::tuple::assign(std::tie(_t_v_compression_method, _t_cur), ::hilti::rt::integer::unpack<uint8_t>(_t_cur, ::hilti::rt::ByteOrder{::hilti::rt::ByteOrder::Network}).valueOrThrow());
2915
11.3k
    if ( _t_trim ) {
2916
11.2k
        (*_t_data).trim(_t_cur.begin());
2917
11.2k
    }
2918
2919
    // End parsing production: Variable: compression_method_12 -> uint<8>;
2920
2921
11.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:104:22-104:26");
2922
2923
    // Begin parsing production: Variable: compressed_text_3 -> bytes;
2924
11.3k
    ::hilti::rt::integer::safe<uint64_t> _t_size = ::hilti::rt::integer::safe<uint64_t>{_t_self->_t_p_length} - ((*_t_self).keyword.value().size() + ::hilti::rt::integer::safe<std::uint64_t>{2U});
2925
11.3k
    ::spicy::rt::detail::extractBytes(_t_data, _t_cur, _t_size, ::hilti::rt::Bool{false}, "/src/spicy/spicy-png/analyzer/analyzer.spicy:104:5-104:63"sv, (_t_lhs_11=(::hilti::rt::StrongReference<::spicy::rt::filter::detail::Filters>{})));
2926
11.3k
    _t_cur = _t_cur.advance(::hilti::rt::detail::move_non_trivial(_t_size));
2927
11.3k
    if ( _t_trim ) {
2928
11.1k
        (*_t_data).trim(_t_cur.begin());
2929
11.1k
    }
2930
2931
    // End parsing production: Variable: compressed_text_3 -> bytes;
2932
2933
11.3k
    ::hilti::rt::debug::dedent("spicy"sv);
2934
11.3k
    return _t_cur;
2935
11.3k
}
2936
2937
11.3k
auto hlt_internal_PNG_File::PNG::zTXt::_t_parse_stage1(::hilti::rt::ValueReference<::hilti::rt::Stream>& _t_data, const ::hilti::rt::stream::View& _t_cur, const ::hilti::rt::Bool& _t_trim) -> ::hilti::rt::stream::View {
2938
11.3k
    auto _t_self = zTXt::_t_self();
2939
11.3k
    ::hilti::rt::detail::checkStack();
2940
11.3k
    ::hilti::rt::location("/src/spicy/spicy-png/analyzer/analyzer.spicy:101:13-105:1");
2941
11.3k
    ::hilti::rt::debug::indent("spicy"sv);
2942
11.3k
    ::hilti::rt::stream::SafeConstIterator _t_begin_ = _t_cur.begin();
2943
11.3k
    return (*_t_self)._t_parse_PNG__zTXt_3_stage2(_t_data, _t_cur, _t_trim);
2944
11.3k
}
2945