• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
2 
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6 
7     http://www.apache.org/licenses/LICENSE-2.0
8 
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15 // automatically generated by the FlatBuffers compiler, do not modify
16 
17 
18 #ifndef FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
19 #define FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
20 
21 #include "flatbuffers/flatbuffers.h"
22 
23 namespace tflite {
24 
25 struct CustomQuantization;
26 struct CustomQuantizationT;
27 
28 struct QuantizationParameters;
29 struct QuantizationParametersT;
30 
31 struct Tensor;
32 struct TensorT;
33 
34 struct Conv2DOptions;
35 struct Conv2DOptionsT;
36 
37 struct Pool2DOptions;
38 struct Pool2DOptionsT;
39 
40 struct DepthwiseConv2DOptions;
41 struct DepthwiseConv2DOptionsT;
42 
43 struct ConcatEmbeddingsOptions;
44 struct ConcatEmbeddingsOptionsT;
45 
46 struct LSHProjectionOptions;
47 struct LSHProjectionOptionsT;
48 
49 struct SVDFOptions;
50 struct SVDFOptionsT;
51 
52 struct RNNOptions;
53 struct RNNOptionsT;
54 
55 struct SequenceRNNOptions;
56 struct SequenceRNNOptionsT;
57 
58 struct BidirectionalSequenceRNNOptions;
59 struct BidirectionalSequenceRNNOptionsT;
60 
61 struct FullyConnectedOptions;
62 struct FullyConnectedOptionsT;
63 
64 struct SoftmaxOptions;
65 struct SoftmaxOptionsT;
66 
67 struct ConcatenationOptions;
68 struct ConcatenationOptionsT;
69 
70 struct AddOptions;
71 struct AddOptionsT;
72 
73 struct MulOptions;
74 struct MulOptionsT;
75 
76 struct L2NormOptions;
77 struct L2NormOptionsT;
78 
79 struct LocalResponseNormalizationOptions;
80 struct LocalResponseNormalizationOptionsT;
81 
82 struct LSTMOptions;
83 struct LSTMOptionsT;
84 
85 struct UnidirectionalSequenceLSTMOptions;
86 struct UnidirectionalSequenceLSTMOptionsT;
87 
88 struct BidirectionalSequenceLSTMOptions;
89 struct BidirectionalSequenceLSTMOptionsT;
90 
91 struct ResizeBilinearOptions;
92 struct ResizeBilinearOptionsT;
93 
94 struct ResizeNearestNeighborOptions;
95 struct ResizeNearestNeighborOptionsT;
96 
97 struct CallOptions;
98 struct CallOptionsT;
99 
100 struct PadOptions;
101 struct PadOptionsT;
102 
103 struct PadV2Options;
104 struct PadV2OptionsT;
105 
106 struct ReshapeOptions;
107 struct ReshapeOptionsT;
108 
109 struct SpaceToBatchNDOptions;
110 struct SpaceToBatchNDOptionsT;
111 
112 struct BatchToSpaceNDOptions;
113 struct BatchToSpaceNDOptionsT;
114 
115 struct SkipGramOptions;
116 struct SkipGramOptionsT;
117 
118 struct SpaceToDepthOptions;
119 struct SpaceToDepthOptionsT;
120 
121 struct SubOptions;
122 struct SubOptionsT;
123 
124 struct DivOptions;
125 struct DivOptionsT;
126 
127 struct TopKV2Options;
128 struct TopKV2OptionsT;
129 
130 struct EmbeddingLookupSparseOptions;
131 struct EmbeddingLookupSparseOptionsT;
132 
133 struct GatherOptions;
134 struct GatherOptionsT;
135 
136 struct TransposeOptions;
137 struct TransposeOptionsT;
138 
139 struct ExpOptions;
140 struct ExpOptionsT;
141 
142 struct CosOptions;
143 struct CosOptionsT;
144 
145 struct ReducerOptions;
146 struct ReducerOptionsT;
147 
148 struct SqueezeOptions;
149 struct SqueezeOptionsT;
150 
151 struct SplitOptions;
152 struct SplitOptionsT;
153 
154 struct SplitVOptions;
155 struct SplitVOptionsT;
156 
157 struct StridedSliceOptions;
158 struct StridedSliceOptionsT;
159 
160 struct LogSoftmaxOptions;
161 struct LogSoftmaxOptionsT;
162 
163 struct CastOptions;
164 struct CastOptionsT;
165 
166 struct DequantizeOptions;
167 struct DequantizeOptionsT;
168 
169 struct MaximumMinimumOptions;
170 struct MaximumMinimumOptionsT;
171 
172 struct TileOptions;
173 struct TileOptionsT;
174 
175 struct ArgMaxOptions;
176 struct ArgMaxOptionsT;
177 
178 struct ArgMinOptions;
179 struct ArgMinOptionsT;
180 
181 struct GreaterOptions;
182 struct GreaterOptionsT;
183 
184 struct GreaterEqualOptions;
185 struct GreaterEqualOptionsT;
186 
187 struct LessOptions;
188 struct LessOptionsT;
189 
190 struct LessEqualOptions;
191 struct LessEqualOptionsT;
192 
193 struct NegOptions;
194 struct NegOptionsT;
195 
196 struct SelectOptions;
197 struct SelectOptionsT;
198 
199 struct SliceOptions;
200 struct SliceOptionsT;
201 
202 struct TransposeConvOptions;
203 struct TransposeConvOptionsT;
204 
205 struct ExpandDimsOptions;
206 struct ExpandDimsOptionsT;
207 
208 struct SparseToDenseOptions;
209 struct SparseToDenseOptionsT;
210 
211 struct EqualOptions;
212 struct EqualOptionsT;
213 
214 struct NotEqualOptions;
215 struct NotEqualOptionsT;
216 
217 struct ShapeOptions;
218 struct ShapeOptionsT;
219 
220 struct RankOptions;
221 struct RankOptionsT;
222 
223 struct PowOptions;
224 struct PowOptionsT;
225 
226 struct FakeQuantOptions;
227 struct FakeQuantOptionsT;
228 
229 struct PackOptions;
230 struct PackOptionsT;
231 
232 struct LogicalOrOptions;
233 struct LogicalOrOptionsT;
234 
235 struct OneHotOptions;
236 struct OneHotOptionsT;
237 
238 struct AbsOptions;
239 struct AbsOptionsT;
240 
241 struct LogicalAndOptions;
242 struct LogicalAndOptionsT;
243 
244 struct LogicalNotOptions;
245 struct LogicalNotOptionsT;
246 
247 struct UnpackOptions;
248 struct UnpackOptionsT;
249 
250 struct FloorDivOptions;
251 struct FloorDivOptionsT;
252 
253 struct SquareOptions;
254 struct SquareOptionsT;
255 
256 struct ZerosLikeOptions;
257 struct ZerosLikeOptionsT;
258 
259 struct FillOptions;
260 struct FillOptionsT;
261 
262 struct FloorModOptions;
263 struct FloorModOptionsT;
264 
265 struct RangeOptions;
266 struct RangeOptionsT;
267 
268 struct LeakyReluOptions;
269 struct LeakyReluOptionsT;
270 
271 struct SquaredDifferenceOptions;
272 struct SquaredDifferenceOptionsT;
273 
274 struct MirrorPadOptions;
275 struct MirrorPadOptionsT;
276 
277 struct UniqueOptions;
278 struct UniqueOptionsT;
279 
280 struct ReverseV2Options;
281 struct ReverseV2OptionsT;
282 
283 struct AddNOptions;
284 struct AddNOptionsT;
285 
286 struct GatherNdOptions;
287 struct GatherNdOptionsT;
288 
289 struct WhereOptions;
290 struct WhereOptionsT;
291 
292 struct ReverseSequenceOptions;
293 struct ReverseSequenceOptionsT;
294 
295 struct OperatorCode;
296 struct OperatorCodeT;
297 
298 struct Operator;
299 struct OperatorT;
300 
301 struct SubGraph;
302 struct SubGraphT;
303 
304 struct Buffer;
305 struct BufferT;
306 
307 struct Model;
308 struct ModelT;
309 
310 enum TensorType {
311   TensorType_FLOAT32 = 0,
312   TensorType_FLOAT16 = 1,
313   TensorType_INT32 = 2,
314   TensorType_UINT8 = 3,
315   TensorType_INT64 = 4,
316   TensorType_STRING = 5,
317   TensorType_BOOL = 6,
318   TensorType_INT16 = 7,
319   TensorType_COMPLEX64 = 8,
320   TensorType_INT8 = 9,
321   TensorType_MIN = TensorType_FLOAT32,
322   TensorType_MAX = TensorType_INT8
323 };
324 
EnumValuesTensorType()325 inline const TensorType (&EnumValuesTensorType())[10] {
326   static const TensorType values[] = {
327     TensorType_FLOAT32,
328     TensorType_FLOAT16,
329     TensorType_INT32,
330     TensorType_UINT8,
331     TensorType_INT64,
332     TensorType_STRING,
333     TensorType_BOOL,
334     TensorType_INT16,
335     TensorType_COMPLEX64,
336     TensorType_INT8
337   };
338   return values;
339 }
340 
EnumNamesTensorType()341 inline const char * const *EnumNamesTensorType() {
342   static const char * const names[] = {
343     "FLOAT32",
344     "FLOAT16",
345     "INT32",
346     "UINT8",
347     "INT64",
348     "STRING",
349     "BOOL",
350     "INT16",
351     "COMPLEX64",
352     "INT8",
353     nullptr
354   };
355   return names;
356 }
357 
EnumNameTensorType(TensorType e)358 inline const char *EnumNameTensorType(TensorType e) {
359   const size_t index = static_cast<int>(e);
360   return EnumNamesTensorType()[index];
361 }
362 
363 enum QuantizationDetails {
364   QuantizationDetails_NONE = 0,
365   QuantizationDetails_CustomQuantization = 1,
366   QuantizationDetails_MIN = QuantizationDetails_NONE,
367   QuantizationDetails_MAX = QuantizationDetails_CustomQuantization
368 };
369 
EnumValuesQuantizationDetails()370 inline const QuantizationDetails (&EnumValuesQuantizationDetails())[2] {
371   static const QuantizationDetails values[] = {
372     QuantizationDetails_NONE,
373     QuantizationDetails_CustomQuantization
374   };
375   return values;
376 }
377 
EnumNamesQuantizationDetails()378 inline const char * const *EnumNamesQuantizationDetails() {
379   static const char * const names[] = {
380     "NONE",
381     "CustomQuantization",
382     nullptr
383   };
384   return names;
385 }
386 
EnumNameQuantizationDetails(QuantizationDetails e)387 inline const char *EnumNameQuantizationDetails(QuantizationDetails e) {
388   const size_t index = static_cast<int>(e);
389   return EnumNamesQuantizationDetails()[index];
390 }
391 
392 template<typename T> struct QuantizationDetailsTraits {
393   static const QuantizationDetails enum_value = QuantizationDetails_NONE;
394 };
395 
396 template<> struct QuantizationDetailsTraits<CustomQuantization> {
397   static const QuantizationDetails enum_value = QuantizationDetails_CustomQuantization;
398 };
399 
400 struct QuantizationDetailsUnion {
401   QuantizationDetails type;
402   void *value;
403 
404   QuantizationDetailsUnion() : type(QuantizationDetails_NONE), value(nullptr) {}
405   QuantizationDetailsUnion(QuantizationDetailsUnion&& u) FLATBUFFERS_NOEXCEPT :
406     type(QuantizationDetails_NONE), value(nullptr)
407     { std::swap(type, u.type); std::swap(value, u.value); }
408   QuantizationDetailsUnion(const QuantizationDetailsUnion &) FLATBUFFERS_NOEXCEPT;
409   QuantizationDetailsUnion &operator=(const QuantizationDetailsUnion &u) FLATBUFFERS_NOEXCEPT
410     { QuantizationDetailsUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
411   QuantizationDetailsUnion &operator=(QuantizationDetailsUnion &&u) FLATBUFFERS_NOEXCEPT
412     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
413   ~QuantizationDetailsUnion() { Reset(); }
414 
415   void Reset();
416 
417 #ifndef FLATBUFFERS_CPP98_STL
418   template <typename T>
419   void Set(T&& val) {
420     Reset();
421     type = QuantizationDetailsTraits<typename T::TableType>::enum_value;
422     if (type != QuantizationDetails_NONE) {
423       value = new T(std::forward<T>(val));
424     }
425   }
426 #endif  // FLATBUFFERS_CPP98_STL
427 
428   static void *UnPack(const void *obj, QuantizationDetails type, const flatbuffers::resolver_function_t *resolver);
429   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
430 
431   CustomQuantizationT *AsCustomQuantization() {
432     return type == QuantizationDetails_CustomQuantization ?
433       reinterpret_cast<CustomQuantizationT *>(value) : nullptr;
434   }
435   const CustomQuantizationT *AsCustomQuantization() const {
436     return type == QuantizationDetails_CustomQuantization ?
437       reinterpret_cast<const CustomQuantizationT *>(value) : nullptr;
438   }
439 };
440 
441 bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type);
442 bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
443 
444 enum BuiltinOperator {
445   BuiltinOperator_ADD = 0,
446   BuiltinOperator_AVERAGE_POOL_2D = 1,
447   BuiltinOperator_CONCATENATION = 2,
448   BuiltinOperator_CONV_2D = 3,
449   BuiltinOperator_DEPTHWISE_CONV_2D = 4,
450   BuiltinOperator_DEQUANTIZE = 6,
451   BuiltinOperator_EMBEDDING_LOOKUP = 7,
452   BuiltinOperator_FLOOR = 8,
453   BuiltinOperator_FULLY_CONNECTED = 9,
454   BuiltinOperator_HASHTABLE_LOOKUP = 10,
455   BuiltinOperator_L2_NORMALIZATION = 11,
456   BuiltinOperator_L2_POOL_2D = 12,
457   BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION = 13,
458   BuiltinOperator_LOGISTIC = 14,
459   BuiltinOperator_LSH_PROJECTION = 15,
460   BuiltinOperator_LSTM = 16,
461   BuiltinOperator_MAX_POOL_2D = 17,
462   BuiltinOperator_MUL = 18,
463   BuiltinOperator_RELU = 19,
464   BuiltinOperator_RELU_N1_TO_1 = 20,
465   BuiltinOperator_RELU6 = 21,
466   BuiltinOperator_RESHAPE = 22,
467   BuiltinOperator_RESIZE_BILINEAR = 23,
468   BuiltinOperator_RNN = 24,
469   BuiltinOperator_SOFTMAX = 25,
470   BuiltinOperator_SPACE_TO_DEPTH = 26,
471   BuiltinOperator_SVDF = 27,
472   BuiltinOperator_TANH = 28,
473   BuiltinOperator_CONCAT_EMBEDDINGS = 29,
474   BuiltinOperator_SKIP_GRAM = 30,
475   BuiltinOperator_CALL = 31,
476   BuiltinOperator_CUSTOM = 32,
477   BuiltinOperator_EMBEDDING_LOOKUP_SPARSE = 33,
478   BuiltinOperator_PAD = 34,
479   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN = 35,
480   BuiltinOperator_GATHER = 36,
481   BuiltinOperator_BATCH_TO_SPACE_ND = 37,
482   BuiltinOperator_SPACE_TO_BATCH_ND = 38,
483   BuiltinOperator_TRANSPOSE = 39,
484   BuiltinOperator_MEAN = 40,
485   BuiltinOperator_SUB = 41,
486   BuiltinOperator_DIV = 42,
487   BuiltinOperator_SQUEEZE = 43,
488   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM = 44,
489   BuiltinOperator_STRIDED_SLICE = 45,
490   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN = 46,
491   BuiltinOperator_EXP = 47,
492   BuiltinOperator_TOPK_V2 = 48,
493   BuiltinOperator_SPLIT = 49,
494   BuiltinOperator_LOG_SOFTMAX = 50,
495   BuiltinOperator_DELEGATE = 51,
496   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM = 52,
497   BuiltinOperator_CAST = 53,
498   BuiltinOperator_PRELU = 54,
499   BuiltinOperator_MAXIMUM = 55,
500   BuiltinOperator_ARG_MAX = 56,
501   BuiltinOperator_MINIMUM = 57,
502   BuiltinOperator_LESS = 58,
503   BuiltinOperator_NEG = 59,
504   BuiltinOperator_PADV2 = 60,
505   BuiltinOperator_GREATER = 61,
506   BuiltinOperator_GREATER_EQUAL = 62,
507   BuiltinOperator_LESS_EQUAL = 63,
508   BuiltinOperator_SELECT = 64,
509   BuiltinOperator_SLICE = 65,
510   BuiltinOperator_SIN = 66,
511   BuiltinOperator_TRANSPOSE_CONV = 67,
512   BuiltinOperator_SPARSE_TO_DENSE = 68,
513   BuiltinOperator_TILE = 69,
514   BuiltinOperator_EXPAND_DIMS = 70,
515   BuiltinOperator_EQUAL = 71,
516   BuiltinOperator_NOT_EQUAL = 72,
517   BuiltinOperator_LOG = 73,
518   BuiltinOperator_SUM = 74,
519   BuiltinOperator_SQRT = 75,
520   BuiltinOperator_RSQRT = 76,
521   BuiltinOperator_SHAPE = 77,
522   BuiltinOperator_POW = 78,
523   BuiltinOperator_ARG_MIN = 79,
524   BuiltinOperator_FAKE_QUANT = 80,
525   BuiltinOperator_REDUCE_PROD = 81,
526   BuiltinOperator_REDUCE_MAX = 82,
527   BuiltinOperator_PACK = 83,
528   BuiltinOperator_LOGICAL_OR = 84,
529   BuiltinOperator_ONE_HOT = 85,
530   BuiltinOperator_LOGICAL_AND = 86,
531   BuiltinOperator_LOGICAL_NOT = 87,
532   BuiltinOperator_UNPACK = 88,
533   BuiltinOperator_REDUCE_MIN = 89,
534   BuiltinOperator_FLOOR_DIV = 90,
535   BuiltinOperator_REDUCE_ANY = 91,
536   BuiltinOperator_SQUARE = 92,
537   BuiltinOperator_ZEROS_LIKE = 93,
538   BuiltinOperator_FILL = 94,
539   BuiltinOperator_FLOOR_MOD = 95,
540   BuiltinOperator_RANGE = 96,
541   BuiltinOperator_RESIZE_NEAREST_NEIGHBOR = 97,
542   BuiltinOperator_LEAKY_RELU = 98,
543   BuiltinOperator_SQUARED_DIFFERENCE = 99,
544   BuiltinOperator_MIRROR_PAD = 100,
545   BuiltinOperator_ABS = 101,
546   BuiltinOperator_SPLIT_V = 102,
547   BuiltinOperator_UNIQUE = 103,
548   BuiltinOperator_CEIL = 104,
549   BuiltinOperator_REVERSE_V2 = 105,
550   BuiltinOperator_ADD_N = 106,
551   BuiltinOperator_GATHER_ND = 107,
552   BuiltinOperator_COS = 108,
553   BuiltinOperator_WHERE = 109,
554   BuiltinOperator_RANK = 110,
555   BuiltinOperator_ELU = 111,
556   BuiltinOperator_REVERSE_SEQUENCE = 112,
557   BuiltinOperator_MIN = BuiltinOperator_ADD,
558   BuiltinOperator_MAX = BuiltinOperator_REVERSE_SEQUENCE
559 };
560 
561 inline const BuiltinOperator (&EnumValuesBuiltinOperator())[112] {
562   static const BuiltinOperator values[] = {
563     BuiltinOperator_ADD,
564     BuiltinOperator_AVERAGE_POOL_2D,
565     BuiltinOperator_CONCATENATION,
566     BuiltinOperator_CONV_2D,
567     BuiltinOperator_DEPTHWISE_CONV_2D,
568     BuiltinOperator_DEQUANTIZE,
569     BuiltinOperator_EMBEDDING_LOOKUP,
570     BuiltinOperator_FLOOR,
571     BuiltinOperator_FULLY_CONNECTED,
572     BuiltinOperator_HASHTABLE_LOOKUP,
573     BuiltinOperator_L2_NORMALIZATION,
574     BuiltinOperator_L2_POOL_2D,
575     BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION,
576     BuiltinOperator_LOGISTIC,
577     BuiltinOperator_LSH_PROJECTION,
578     BuiltinOperator_LSTM,
579     BuiltinOperator_MAX_POOL_2D,
580     BuiltinOperator_MUL,
581     BuiltinOperator_RELU,
582     BuiltinOperator_RELU_N1_TO_1,
583     BuiltinOperator_RELU6,
584     BuiltinOperator_RESHAPE,
585     BuiltinOperator_RESIZE_BILINEAR,
586     BuiltinOperator_RNN,
587     BuiltinOperator_SOFTMAX,
588     BuiltinOperator_SPACE_TO_DEPTH,
589     BuiltinOperator_SVDF,
590     BuiltinOperator_TANH,
591     BuiltinOperator_CONCAT_EMBEDDINGS,
592     BuiltinOperator_SKIP_GRAM,
593     BuiltinOperator_CALL,
594     BuiltinOperator_CUSTOM,
595     BuiltinOperator_EMBEDDING_LOOKUP_SPARSE,
596     BuiltinOperator_PAD,
597     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN,
598     BuiltinOperator_GATHER,
599     BuiltinOperator_BATCH_TO_SPACE_ND,
600     BuiltinOperator_SPACE_TO_BATCH_ND,
601     BuiltinOperator_TRANSPOSE,
602     BuiltinOperator_MEAN,
603     BuiltinOperator_SUB,
604     BuiltinOperator_DIV,
605     BuiltinOperator_SQUEEZE,
606     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM,
607     BuiltinOperator_STRIDED_SLICE,
608     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN,
609     BuiltinOperator_EXP,
610     BuiltinOperator_TOPK_V2,
611     BuiltinOperator_SPLIT,
612     BuiltinOperator_LOG_SOFTMAX,
613     BuiltinOperator_DELEGATE,
614     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM,
615     BuiltinOperator_CAST,
616     BuiltinOperator_PRELU,
617     BuiltinOperator_MAXIMUM,
618     BuiltinOperator_ARG_MAX,
619     BuiltinOperator_MINIMUM,
620     BuiltinOperator_LESS,
621     BuiltinOperator_NEG,
622     BuiltinOperator_PADV2,
623     BuiltinOperator_GREATER,
624     BuiltinOperator_GREATER_EQUAL,
625     BuiltinOperator_LESS_EQUAL,
626     BuiltinOperator_SELECT,
627     BuiltinOperator_SLICE,
628     BuiltinOperator_SIN,
629     BuiltinOperator_TRANSPOSE_CONV,
630     BuiltinOperator_SPARSE_TO_DENSE,
631     BuiltinOperator_TILE,
632     BuiltinOperator_EXPAND_DIMS,
633     BuiltinOperator_EQUAL,
634     BuiltinOperator_NOT_EQUAL,
635     BuiltinOperator_LOG,
636     BuiltinOperator_SUM,
637     BuiltinOperator_SQRT,
638     BuiltinOperator_RSQRT,
639     BuiltinOperator_SHAPE,
640     BuiltinOperator_POW,
641     BuiltinOperator_ARG_MIN,
642     BuiltinOperator_FAKE_QUANT,
643     BuiltinOperator_REDUCE_PROD,
644     BuiltinOperator_REDUCE_MAX,
645     BuiltinOperator_PACK,
646     BuiltinOperator_LOGICAL_OR,
647     BuiltinOperator_ONE_HOT,
648     BuiltinOperator_LOGICAL_AND,
649     BuiltinOperator_LOGICAL_NOT,
650     BuiltinOperator_UNPACK,
651     BuiltinOperator_REDUCE_MIN,
652     BuiltinOperator_FLOOR_DIV,
653     BuiltinOperator_REDUCE_ANY,
654     BuiltinOperator_SQUARE,
655     BuiltinOperator_ZEROS_LIKE,
656     BuiltinOperator_FILL,
657     BuiltinOperator_FLOOR_MOD,
658     BuiltinOperator_RANGE,
659     BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
660     BuiltinOperator_LEAKY_RELU,
661     BuiltinOperator_SQUARED_DIFFERENCE,
662     BuiltinOperator_MIRROR_PAD,
663     BuiltinOperator_ABS,
664     BuiltinOperator_SPLIT_V,
665     BuiltinOperator_UNIQUE,
666     BuiltinOperator_CEIL,
667     BuiltinOperator_REVERSE_V2,
668     BuiltinOperator_ADD_N,
669     BuiltinOperator_GATHER_ND,
670     BuiltinOperator_COS,
671     BuiltinOperator_WHERE,
672     BuiltinOperator_RANK,
673     BuiltinOperator_ELU,
674     BuiltinOperator_REVERSE_SEQUENCE
675   };
676   return values;
677 }
678 
679 inline const char * const *EnumNamesBuiltinOperator() {
680   static const char * const names[] = {
681     "ADD",
682     "AVERAGE_POOL_2D",
683     "CONCATENATION",
684     "CONV_2D",
685     "DEPTHWISE_CONV_2D",
686     "",
687     "DEQUANTIZE",
688     "EMBEDDING_LOOKUP",
689     "FLOOR",
690     "FULLY_CONNECTED",
691     "HASHTABLE_LOOKUP",
692     "L2_NORMALIZATION",
693     "L2_POOL_2D",
694     "LOCAL_RESPONSE_NORMALIZATION",
695     "LOGISTIC",
696     "LSH_PROJECTION",
697     "LSTM",
698     "MAX_POOL_2D",
699     "MUL",
700     "RELU",
701     "RELU_N1_TO_1",
702     "RELU6",
703     "RESHAPE",
704     "RESIZE_BILINEAR",
705     "RNN",
706     "SOFTMAX",
707     "SPACE_TO_DEPTH",
708     "SVDF",
709     "TANH",
710     "CONCAT_EMBEDDINGS",
711     "SKIP_GRAM",
712     "CALL",
713     "CUSTOM",
714     "EMBEDDING_LOOKUP_SPARSE",
715     "PAD",
716     "UNIDIRECTIONAL_SEQUENCE_RNN",
717     "GATHER",
718     "BATCH_TO_SPACE_ND",
719     "SPACE_TO_BATCH_ND",
720     "TRANSPOSE",
721     "MEAN",
722     "SUB",
723     "DIV",
724     "SQUEEZE",
725     "UNIDIRECTIONAL_SEQUENCE_LSTM",
726     "STRIDED_SLICE",
727     "BIDIRECTIONAL_SEQUENCE_RNN",
728     "EXP",
729     "TOPK_V2",
730     "SPLIT",
731     "LOG_SOFTMAX",
732     "DELEGATE",
733     "BIDIRECTIONAL_SEQUENCE_LSTM",
734     "CAST",
735     "PRELU",
736     "MAXIMUM",
737     "ARG_MAX",
738     "MINIMUM",
739     "LESS",
740     "NEG",
741     "PADV2",
742     "GREATER",
743     "GREATER_EQUAL",
744     "LESS_EQUAL",
745     "SELECT",
746     "SLICE",
747     "SIN",
748     "TRANSPOSE_CONV",
749     "SPARSE_TO_DENSE",
750     "TILE",
751     "EXPAND_DIMS",
752     "EQUAL",
753     "NOT_EQUAL",
754     "LOG",
755     "SUM",
756     "SQRT",
757     "RSQRT",
758     "SHAPE",
759     "POW",
760     "ARG_MIN",
761     "FAKE_QUANT",
762     "REDUCE_PROD",
763     "REDUCE_MAX",
764     "PACK",
765     "LOGICAL_OR",
766     "ONE_HOT",
767     "LOGICAL_AND",
768     "LOGICAL_NOT",
769     "UNPACK",
770     "REDUCE_MIN",
771     "FLOOR_DIV",
772     "REDUCE_ANY",
773     "SQUARE",
774     "ZEROS_LIKE",
775     "FILL",
776     "FLOOR_MOD",
777     "RANGE",
778     "RESIZE_NEAREST_NEIGHBOR",
779     "LEAKY_RELU",
780     "SQUARED_DIFFERENCE",
781     "MIRROR_PAD",
782     "ABS",
783     "SPLIT_V",
784     "UNIQUE",
785     "CEIL",
786     "REVERSE_V2",
787     "ADD_N",
788     "GATHER_ND",
789     "COS",
790     "WHERE",
791     "RANK",
792     "ELU",
793     "REVERSE_SEQUENCE",
794     nullptr
795   };
796   return names;
797 }
798 
799 inline const char *EnumNameBuiltinOperator(BuiltinOperator e) {
800   const size_t index = static_cast<int>(e);
801   return EnumNamesBuiltinOperator()[index];
802 }
803 
804 enum BuiltinOptions {
805   BuiltinOptions_NONE = 0,
806   BuiltinOptions_Conv2DOptions = 1,
807   BuiltinOptions_DepthwiseConv2DOptions = 2,
808   BuiltinOptions_ConcatEmbeddingsOptions = 3,
809   BuiltinOptions_LSHProjectionOptions = 4,
810   BuiltinOptions_Pool2DOptions = 5,
811   BuiltinOptions_SVDFOptions = 6,
812   BuiltinOptions_RNNOptions = 7,
813   BuiltinOptions_FullyConnectedOptions = 8,
814   BuiltinOptions_SoftmaxOptions = 9,
815   BuiltinOptions_ConcatenationOptions = 10,
816   BuiltinOptions_AddOptions = 11,
817   BuiltinOptions_L2NormOptions = 12,
818   BuiltinOptions_LocalResponseNormalizationOptions = 13,
819   BuiltinOptions_LSTMOptions = 14,
820   BuiltinOptions_ResizeBilinearOptions = 15,
821   BuiltinOptions_CallOptions = 16,
822   BuiltinOptions_ReshapeOptions = 17,
823   BuiltinOptions_SkipGramOptions = 18,
824   BuiltinOptions_SpaceToDepthOptions = 19,
825   BuiltinOptions_EmbeddingLookupSparseOptions = 20,
826   BuiltinOptions_MulOptions = 21,
827   BuiltinOptions_PadOptions = 22,
828   BuiltinOptions_GatherOptions = 23,
829   BuiltinOptions_BatchToSpaceNDOptions = 24,
830   BuiltinOptions_SpaceToBatchNDOptions = 25,
831   BuiltinOptions_TransposeOptions = 26,
832   BuiltinOptions_ReducerOptions = 27,
833   BuiltinOptions_SubOptions = 28,
834   BuiltinOptions_DivOptions = 29,
835   BuiltinOptions_SqueezeOptions = 30,
836   BuiltinOptions_SequenceRNNOptions = 31,
837   BuiltinOptions_StridedSliceOptions = 32,
838   BuiltinOptions_ExpOptions = 33,
839   BuiltinOptions_TopKV2Options = 34,
840   BuiltinOptions_SplitOptions = 35,
841   BuiltinOptions_LogSoftmaxOptions = 36,
842   BuiltinOptions_CastOptions = 37,
843   BuiltinOptions_DequantizeOptions = 38,
844   BuiltinOptions_MaximumMinimumOptions = 39,
845   BuiltinOptions_ArgMaxOptions = 40,
846   BuiltinOptions_LessOptions = 41,
847   BuiltinOptions_NegOptions = 42,
848   BuiltinOptions_PadV2Options = 43,
849   BuiltinOptions_GreaterOptions = 44,
850   BuiltinOptions_GreaterEqualOptions = 45,
851   BuiltinOptions_LessEqualOptions = 46,
852   BuiltinOptions_SelectOptions = 47,
853   BuiltinOptions_SliceOptions = 48,
854   BuiltinOptions_TransposeConvOptions = 49,
855   BuiltinOptions_SparseToDenseOptions = 50,
856   BuiltinOptions_TileOptions = 51,
857   BuiltinOptions_ExpandDimsOptions = 52,
858   BuiltinOptions_EqualOptions = 53,
859   BuiltinOptions_NotEqualOptions = 54,
860   BuiltinOptions_ShapeOptions = 55,
861   BuiltinOptions_PowOptions = 56,
862   BuiltinOptions_ArgMinOptions = 57,
863   BuiltinOptions_FakeQuantOptions = 58,
864   BuiltinOptions_PackOptions = 59,
865   BuiltinOptions_LogicalOrOptions = 60,
866   BuiltinOptions_OneHotOptions = 61,
867   BuiltinOptions_LogicalAndOptions = 62,
868   BuiltinOptions_LogicalNotOptions = 63,
869   BuiltinOptions_UnpackOptions = 64,
870   BuiltinOptions_FloorDivOptions = 65,
871   BuiltinOptions_SquareOptions = 66,
872   BuiltinOptions_ZerosLikeOptions = 67,
873   BuiltinOptions_FillOptions = 68,
874   BuiltinOptions_BidirectionalSequenceLSTMOptions = 69,
875   BuiltinOptions_BidirectionalSequenceRNNOptions = 70,
876   BuiltinOptions_UnidirectionalSequenceLSTMOptions = 71,
877   BuiltinOptions_FloorModOptions = 72,
878   BuiltinOptions_RangeOptions = 73,
879   BuiltinOptions_ResizeNearestNeighborOptions = 74,
880   BuiltinOptions_LeakyReluOptions = 75,
881   BuiltinOptions_SquaredDifferenceOptions = 76,
882   BuiltinOptions_MirrorPadOptions = 77,
883   BuiltinOptions_AbsOptions = 78,
884   BuiltinOptions_SplitVOptions = 79,
885   BuiltinOptions_UniqueOptions = 80,
886   BuiltinOptions_ReverseV2Options = 81,
887   BuiltinOptions_AddNOptions = 82,
888   BuiltinOptions_GatherNdOptions = 83,
889   BuiltinOptions_CosOptions = 84,
890   BuiltinOptions_WhereOptions = 85,
891   BuiltinOptions_RankOptions = 86,
892   BuiltinOptions_ReverseSequenceOptions = 87,
893   BuiltinOptions_MIN = BuiltinOptions_NONE,
894   BuiltinOptions_MAX = BuiltinOptions_ReverseSequenceOptions
895 };
896 
897 inline const BuiltinOptions (&EnumValuesBuiltinOptions())[88] {
898   static const BuiltinOptions values[] = {
899     BuiltinOptions_NONE,
900     BuiltinOptions_Conv2DOptions,
901     BuiltinOptions_DepthwiseConv2DOptions,
902     BuiltinOptions_ConcatEmbeddingsOptions,
903     BuiltinOptions_LSHProjectionOptions,
904     BuiltinOptions_Pool2DOptions,
905     BuiltinOptions_SVDFOptions,
906     BuiltinOptions_RNNOptions,
907     BuiltinOptions_FullyConnectedOptions,
908     BuiltinOptions_SoftmaxOptions,
909     BuiltinOptions_ConcatenationOptions,
910     BuiltinOptions_AddOptions,
911     BuiltinOptions_L2NormOptions,
912     BuiltinOptions_LocalResponseNormalizationOptions,
913     BuiltinOptions_LSTMOptions,
914     BuiltinOptions_ResizeBilinearOptions,
915     BuiltinOptions_CallOptions,
916     BuiltinOptions_ReshapeOptions,
917     BuiltinOptions_SkipGramOptions,
918     BuiltinOptions_SpaceToDepthOptions,
919     BuiltinOptions_EmbeddingLookupSparseOptions,
920     BuiltinOptions_MulOptions,
921     BuiltinOptions_PadOptions,
922     BuiltinOptions_GatherOptions,
923     BuiltinOptions_BatchToSpaceNDOptions,
924     BuiltinOptions_SpaceToBatchNDOptions,
925     BuiltinOptions_TransposeOptions,
926     BuiltinOptions_ReducerOptions,
927     BuiltinOptions_SubOptions,
928     BuiltinOptions_DivOptions,
929     BuiltinOptions_SqueezeOptions,
930     BuiltinOptions_SequenceRNNOptions,
931     BuiltinOptions_StridedSliceOptions,
932     BuiltinOptions_ExpOptions,
933     BuiltinOptions_TopKV2Options,
934     BuiltinOptions_SplitOptions,
935     BuiltinOptions_LogSoftmaxOptions,
936     BuiltinOptions_CastOptions,
937     BuiltinOptions_DequantizeOptions,
938     BuiltinOptions_MaximumMinimumOptions,
939     BuiltinOptions_ArgMaxOptions,
940     BuiltinOptions_LessOptions,
941     BuiltinOptions_NegOptions,
942     BuiltinOptions_PadV2Options,
943     BuiltinOptions_GreaterOptions,
944     BuiltinOptions_GreaterEqualOptions,
945     BuiltinOptions_LessEqualOptions,
946     BuiltinOptions_SelectOptions,
947     BuiltinOptions_SliceOptions,
948     BuiltinOptions_TransposeConvOptions,
949     BuiltinOptions_SparseToDenseOptions,
950     BuiltinOptions_TileOptions,
951     BuiltinOptions_ExpandDimsOptions,
952     BuiltinOptions_EqualOptions,
953     BuiltinOptions_NotEqualOptions,
954     BuiltinOptions_ShapeOptions,
955     BuiltinOptions_PowOptions,
956     BuiltinOptions_ArgMinOptions,
957     BuiltinOptions_FakeQuantOptions,
958     BuiltinOptions_PackOptions,
959     BuiltinOptions_LogicalOrOptions,
960     BuiltinOptions_OneHotOptions,
961     BuiltinOptions_LogicalAndOptions,
962     BuiltinOptions_LogicalNotOptions,
963     BuiltinOptions_UnpackOptions,
964     BuiltinOptions_FloorDivOptions,
965     BuiltinOptions_SquareOptions,
966     BuiltinOptions_ZerosLikeOptions,
967     BuiltinOptions_FillOptions,
968     BuiltinOptions_BidirectionalSequenceLSTMOptions,
969     BuiltinOptions_BidirectionalSequenceRNNOptions,
970     BuiltinOptions_UnidirectionalSequenceLSTMOptions,
971     BuiltinOptions_FloorModOptions,
972     BuiltinOptions_RangeOptions,
973     BuiltinOptions_ResizeNearestNeighborOptions,
974     BuiltinOptions_LeakyReluOptions,
975     BuiltinOptions_SquaredDifferenceOptions,
976     BuiltinOptions_MirrorPadOptions,
977     BuiltinOptions_AbsOptions,
978     BuiltinOptions_SplitVOptions,
979     BuiltinOptions_UniqueOptions,
980     BuiltinOptions_ReverseV2Options,
981     BuiltinOptions_AddNOptions,
982     BuiltinOptions_GatherNdOptions,
983     BuiltinOptions_CosOptions,
984     BuiltinOptions_WhereOptions,
985     BuiltinOptions_RankOptions,
986     BuiltinOptions_ReverseSequenceOptions
987   };
988   return values;
989 }
990 
991 inline const char * const *EnumNamesBuiltinOptions() {
992   static const char * const names[] = {
993     "NONE",
994     "Conv2DOptions",
995     "DepthwiseConv2DOptions",
996     "ConcatEmbeddingsOptions",
997     "LSHProjectionOptions",
998     "Pool2DOptions",
999     "SVDFOptions",
1000     "RNNOptions",
1001     "FullyConnectedOptions",
1002     "SoftmaxOptions",
1003     "ConcatenationOptions",
1004     "AddOptions",
1005     "L2NormOptions",
1006     "LocalResponseNormalizationOptions",
1007     "LSTMOptions",
1008     "ResizeBilinearOptions",
1009     "CallOptions",
1010     "ReshapeOptions",
1011     "SkipGramOptions",
1012     "SpaceToDepthOptions",
1013     "EmbeddingLookupSparseOptions",
1014     "MulOptions",
1015     "PadOptions",
1016     "GatherOptions",
1017     "BatchToSpaceNDOptions",
1018     "SpaceToBatchNDOptions",
1019     "TransposeOptions",
1020     "ReducerOptions",
1021     "SubOptions",
1022     "DivOptions",
1023     "SqueezeOptions",
1024     "SequenceRNNOptions",
1025     "StridedSliceOptions",
1026     "ExpOptions",
1027     "TopKV2Options",
1028     "SplitOptions",
1029     "LogSoftmaxOptions",
1030     "CastOptions",
1031     "DequantizeOptions",
1032     "MaximumMinimumOptions",
1033     "ArgMaxOptions",
1034     "LessOptions",
1035     "NegOptions",
1036     "PadV2Options",
1037     "GreaterOptions",
1038     "GreaterEqualOptions",
1039     "LessEqualOptions",
1040     "SelectOptions",
1041     "SliceOptions",
1042     "TransposeConvOptions",
1043     "SparseToDenseOptions",
1044     "TileOptions",
1045     "ExpandDimsOptions",
1046     "EqualOptions",
1047     "NotEqualOptions",
1048     "ShapeOptions",
1049     "PowOptions",
1050     "ArgMinOptions",
1051     "FakeQuantOptions",
1052     "PackOptions",
1053     "LogicalOrOptions",
1054     "OneHotOptions",
1055     "LogicalAndOptions",
1056     "LogicalNotOptions",
1057     "UnpackOptions",
1058     "FloorDivOptions",
1059     "SquareOptions",
1060     "ZerosLikeOptions",
1061     "FillOptions",
1062     "BidirectionalSequenceLSTMOptions",
1063     "BidirectionalSequenceRNNOptions",
1064     "UnidirectionalSequenceLSTMOptions",
1065     "FloorModOptions",
1066     "RangeOptions",
1067     "ResizeNearestNeighborOptions",
1068     "LeakyReluOptions",
1069     "SquaredDifferenceOptions",
1070     "MirrorPadOptions",
1071     "AbsOptions",
1072     "SplitVOptions",
1073     "UniqueOptions",
1074     "ReverseV2Options",
1075     "AddNOptions",
1076     "GatherNdOptions",
1077     "CosOptions",
1078     "WhereOptions",
1079     "RankOptions",
1080     "ReverseSequenceOptions",
1081     nullptr
1082   };
1083   return names;
1084 }
1085 
1086 inline const char *EnumNameBuiltinOptions(BuiltinOptions e) {
1087   const size_t index = static_cast<int>(e);
1088   return EnumNamesBuiltinOptions()[index];
1089 }
1090 
1091 template<typename T> struct BuiltinOptionsTraits {
1092   static const BuiltinOptions enum_value = BuiltinOptions_NONE;
1093 };
1094 
1095 template<> struct BuiltinOptionsTraits<Conv2DOptions> {
1096   static const BuiltinOptions enum_value = BuiltinOptions_Conv2DOptions;
1097 };
1098 
1099 template<> struct BuiltinOptionsTraits<DepthwiseConv2DOptions> {
1100   static const BuiltinOptions enum_value = BuiltinOptions_DepthwiseConv2DOptions;
1101 };
1102 
1103 template<> struct BuiltinOptionsTraits<ConcatEmbeddingsOptions> {
1104   static const BuiltinOptions enum_value = BuiltinOptions_ConcatEmbeddingsOptions;
1105 };
1106 
1107 template<> struct BuiltinOptionsTraits<LSHProjectionOptions> {
1108   static const BuiltinOptions enum_value = BuiltinOptions_LSHProjectionOptions;
1109 };
1110 
1111 template<> struct BuiltinOptionsTraits<Pool2DOptions> {
1112   static const BuiltinOptions enum_value = BuiltinOptions_Pool2DOptions;
1113 };
1114 
1115 template<> struct BuiltinOptionsTraits<SVDFOptions> {
1116   static const BuiltinOptions enum_value = BuiltinOptions_SVDFOptions;
1117 };
1118 
1119 template<> struct BuiltinOptionsTraits<RNNOptions> {
1120   static const BuiltinOptions enum_value = BuiltinOptions_RNNOptions;
1121 };
1122 
1123 template<> struct BuiltinOptionsTraits<FullyConnectedOptions> {
1124   static const BuiltinOptions enum_value = BuiltinOptions_FullyConnectedOptions;
1125 };
1126 
1127 template<> struct BuiltinOptionsTraits<SoftmaxOptions> {
1128   static const BuiltinOptions enum_value = BuiltinOptions_SoftmaxOptions;
1129 };
1130 
1131 template<> struct BuiltinOptionsTraits<ConcatenationOptions> {
1132   static const BuiltinOptions enum_value = BuiltinOptions_ConcatenationOptions;
1133 };
1134 
1135 template<> struct BuiltinOptionsTraits<AddOptions> {
1136   static const BuiltinOptions enum_value = BuiltinOptions_AddOptions;
1137 };
1138 
1139 template<> struct BuiltinOptionsTraits<L2NormOptions> {
1140   static const BuiltinOptions enum_value = BuiltinOptions_L2NormOptions;
1141 };
1142 
1143 template<> struct BuiltinOptionsTraits<LocalResponseNormalizationOptions> {
1144   static const BuiltinOptions enum_value = BuiltinOptions_LocalResponseNormalizationOptions;
1145 };
1146 
1147 template<> struct BuiltinOptionsTraits<LSTMOptions> {
1148   static const BuiltinOptions enum_value = BuiltinOptions_LSTMOptions;
1149 };
1150 
1151 template<> struct BuiltinOptionsTraits<ResizeBilinearOptions> {
1152   static const BuiltinOptions enum_value = BuiltinOptions_ResizeBilinearOptions;
1153 };
1154 
1155 template<> struct BuiltinOptionsTraits<CallOptions> {
1156   static const BuiltinOptions enum_value = BuiltinOptions_CallOptions;
1157 };
1158 
1159 template<> struct BuiltinOptionsTraits<ReshapeOptions> {
1160   static const BuiltinOptions enum_value = BuiltinOptions_ReshapeOptions;
1161 };
1162 
1163 template<> struct BuiltinOptionsTraits<SkipGramOptions> {
1164   static const BuiltinOptions enum_value = BuiltinOptions_SkipGramOptions;
1165 };
1166 
1167 template<> struct BuiltinOptionsTraits<SpaceToDepthOptions> {
1168   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToDepthOptions;
1169 };
1170 
1171 template<> struct BuiltinOptionsTraits<EmbeddingLookupSparseOptions> {
1172   static const BuiltinOptions enum_value = BuiltinOptions_EmbeddingLookupSparseOptions;
1173 };
1174 
1175 template<> struct BuiltinOptionsTraits<MulOptions> {
1176   static const BuiltinOptions enum_value = BuiltinOptions_MulOptions;
1177 };
1178 
1179 template<> struct BuiltinOptionsTraits<PadOptions> {
1180   static const BuiltinOptions enum_value = BuiltinOptions_PadOptions;
1181 };
1182 
1183 template<> struct BuiltinOptionsTraits<GatherOptions> {
1184   static const BuiltinOptions enum_value = BuiltinOptions_GatherOptions;
1185 };
1186 
1187 template<> struct BuiltinOptionsTraits<BatchToSpaceNDOptions> {
1188   static const BuiltinOptions enum_value = BuiltinOptions_BatchToSpaceNDOptions;
1189 };
1190 
1191 template<> struct BuiltinOptionsTraits<SpaceToBatchNDOptions> {
1192   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToBatchNDOptions;
1193 };
1194 
1195 template<> struct BuiltinOptionsTraits<TransposeOptions> {
1196   static const BuiltinOptions enum_value = BuiltinOptions_TransposeOptions;
1197 };
1198 
1199 template<> struct BuiltinOptionsTraits<ReducerOptions> {
1200   static const BuiltinOptions enum_value = BuiltinOptions_ReducerOptions;
1201 };
1202 
1203 template<> struct BuiltinOptionsTraits<SubOptions> {
1204   static const BuiltinOptions enum_value = BuiltinOptions_SubOptions;
1205 };
1206 
1207 template<> struct BuiltinOptionsTraits<DivOptions> {
1208   static const BuiltinOptions enum_value = BuiltinOptions_DivOptions;
1209 };
1210 
1211 template<> struct BuiltinOptionsTraits<SqueezeOptions> {
1212   static const BuiltinOptions enum_value = BuiltinOptions_SqueezeOptions;
1213 };
1214 
1215 template<> struct BuiltinOptionsTraits<SequenceRNNOptions> {
1216   static const BuiltinOptions enum_value = BuiltinOptions_SequenceRNNOptions;
1217 };
1218 
1219 template<> struct BuiltinOptionsTraits<StridedSliceOptions> {
1220   static const BuiltinOptions enum_value = BuiltinOptions_StridedSliceOptions;
1221 };
1222 
1223 template<> struct BuiltinOptionsTraits<ExpOptions> {
1224   static const BuiltinOptions enum_value = BuiltinOptions_ExpOptions;
1225 };
1226 
1227 template<> struct BuiltinOptionsTraits<TopKV2Options> {
1228   static const BuiltinOptions enum_value = BuiltinOptions_TopKV2Options;
1229 };
1230 
1231 template<> struct BuiltinOptionsTraits<SplitOptions> {
1232   static const BuiltinOptions enum_value = BuiltinOptions_SplitOptions;
1233 };
1234 
1235 template<> struct BuiltinOptionsTraits<LogSoftmaxOptions> {
1236   static const BuiltinOptions enum_value = BuiltinOptions_LogSoftmaxOptions;
1237 };
1238 
1239 template<> struct BuiltinOptionsTraits<CastOptions> {
1240   static const BuiltinOptions enum_value = BuiltinOptions_CastOptions;
1241 };
1242 
1243 template<> struct BuiltinOptionsTraits<DequantizeOptions> {
1244   static const BuiltinOptions enum_value = BuiltinOptions_DequantizeOptions;
1245 };
1246 
1247 template<> struct BuiltinOptionsTraits<MaximumMinimumOptions> {
1248   static const BuiltinOptions enum_value = BuiltinOptions_MaximumMinimumOptions;
1249 };
1250 
1251 template<> struct BuiltinOptionsTraits<ArgMaxOptions> {
1252   static const BuiltinOptions enum_value = BuiltinOptions_ArgMaxOptions;
1253 };
1254 
1255 template<> struct BuiltinOptionsTraits<LessOptions> {
1256   static const BuiltinOptions enum_value = BuiltinOptions_LessOptions;
1257 };
1258 
1259 template<> struct BuiltinOptionsTraits<NegOptions> {
1260   static const BuiltinOptions enum_value = BuiltinOptions_NegOptions;
1261 };
1262 
1263 template<> struct BuiltinOptionsTraits<PadV2Options> {
1264   static const BuiltinOptions enum_value = BuiltinOptions_PadV2Options;
1265 };
1266 
1267 template<> struct BuiltinOptionsTraits<GreaterOptions> {
1268   static const BuiltinOptions enum_value = BuiltinOptions_GreaterOptions;
1269 };
1270 
1271 template<> struct BuiltinOptionsTraits<GreaterEqualOptions> {
1272   static const BuiltinOptions enum_value = BuiltinOptions_GreaterEqualOptions;
1273 };
1274 
1275 template<> struct BuiltinOptionsTraits<LessEqualOptions> {
1276   static const BuiltinOptions enum_value = BuiltinOptions_LessEqualOptions;
1277 };
1278 
1279 template<> struct BuiltinOptionsTraits<SelectOptions> {
1280   static const BuiltinOptions enum_value = BuiltinOptions_SelectOptions;
1281 };
1282 
1283 template<> struct BuiltinOptionsTraits<SliceOptions> {
1284   static const BuiltinOptions enum_value = BuiltinOptions_SliceOptions;
1285 };
1286 
1287 template<> struct BuiltinOptionsTraits<TransposeConvOptions> {
1288   static const BuiltinOptions enum_value = BuiltinOptions_TransposeConvOptions;
1289 };
1290 
1291 template<> struct BuiltinOptionsTraits<SparseToDenseOptions> {
1292   static const BuiltinOptions enum_value = BuiltinOptions_SparseToDenseOptions;
1293 };
1294 
1295 template<> struct BuiltinOptionsTraits<TileOptions> {
1296   static const BuiltinOptions enum_value = BuiltinOptions_TileOptions;
1297 };
1298 
1299 template<> struct BuiltinOptionsTraits<ExpandDimsOptions> {
1300   static const BuiltinOptions enum_value = BuiltinOptions_ExpandDimsOptions;
1301 };
1302 
1303 template<> struct BuiltinOptionsTraits<EqualOptions> {
1304   static const BuiltinOptions enum_value = BuiltinOptions_EqualOptions;
1305 };
1306 
1307 template<> struct BuiltinOptionsTraits<NotEqualOptions> {
1308   static const BuiltinOptions enum_value = BuiltinOptions_NotEqualOptions;
1309 };
1310 
1311 template<> struct BuiltinOptionsTraits<ShapeOptions> {
1312   static const BuiltinOptions enum_value = BuiltinOptions_ShapeOptions;
1313 };
1314 
1315 template<> struct BuiltinOptionsTraits<PowOptions> {
1316   static const BuiltinOptions enum_value = BuiltinOptions_PowOptions;
1317 };
1318 
1319 template<> struct BuiltinOptionsTraits<ArgMinOptions> {
1320   static const BuiltinOptions enum_value = BuiltinOptions_ArgMinOptions;
1321 };
1322 
1323 template<> struct BuiltinOptionsTraits<FakeQuantOptions> {
1324   static const BuiltinOptions enum_value = BuiltinOptions_FakeQuantOptions;
1325 };
1326 
1327 template<> struct BuiltinOptionsTraits<PackOptions> {
1328   static const BuiltinOptions enum_value = BuiltinOptions_PackOptions;
1329 };
1330 
1331 template<> struct BuiltinOptionsTraits<LogicalOrOptions> {
1332   static const BuiltinOptions enum_value = BuiltinOptions_LogicalOrOptions;
1333 };
1334 
1335 template<> struct BuiltinOptionsTraits<OneHotOptions> {
1336   static const BuiltinOptions enum_value = BuiltinOptions_OneHotOptions;
1337 };
1338 
1339 template<> struct BuiltinOptionsTraits<LogicalAndOptions> {
1340   static const BuiltinOptions enum_value = BuiltinOptions_LogicalAndOptions;
1341 };
1342 
1343 template<> struct BuiltinOptionsTraits<LogicalNotOptions> {
1344   static const BuiltinOptions enum_value = BuiltinOptions_LogicalNotOptions;
1345 };
1346 
1347 template<> struct BuiltinOptionsTraits<UnpackOptions> {
1348   static const BuiltinOptions enum_value = BuiltinOptions_UnpackOptions;
1349 };
1350 
1351 template<> struct BuiltinOptionsTraits<FloorDivOptions> {
1352   static const BuiltinOptions enum_value = BuiltinOptions_FloorDivOptions;
1353 };
1354 
1355 template<> struct BuiltinOptionsTraits<SquareOptions> {
1356   static const BuiltinOptions enum_value = BuiltinOptions_SquareOptions;
1357 };
1358 
1359 template<> struct BuiltinOptionsTraits<ZerosLikeOptions> {
1360   static const BuiltinOptions enum_value = BuiltinOptions_ZerosLikeOptions;
1361 };
1362 
1363 template<> struct BuiltinOptionsTraits<FillOptions> {
1364   static const BuiltinOptions enum_value = BuiltinOptions_FillOptions;
1365 };
1366 
1367 template<> struct BuiltinOptionsTraits<BidirectionalSequenceLSTMOptions> {
1368   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceLSTMOptions;
1369 };
1370 
1371 template<> struct BuiltinOptionsTraits<BidirectionalSequenceRNNOptions> {
1372   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceRNNOptions;
1373 };
1374 
1375 template<> struct BuiltinOptionsTraits<UnidirectionalSequenceLSTMOptions> {
1376   static const BuiltinOptions enum_value = BuiltinOptions_UnidirectionalSequenceLSTMOptions;
1377 };
1378 
1379 template<> struct BuiltinOptionsTraits<FloorModOptions> {
1380   static const BuiltinOptions enum_value = BuiltinOptions_FloorModOptions;
1381 };
1382 
1383 template<> struct BuiltinOptionsTraits<RangeOptions> {
1384   static const BuiltinOptions enum_value = BuiltinOptions_RangeOptions;
1385 };
1386 
1387 template<> struct BuiltinOptionsTraits<ResizeNearestNeighborOptions> {
1388   static const BuiltinOptions enum_value = BuiltinOptions_ResizeNearestNeighborOptions;
1389 };
1390 
1391 template<> struct BuiltinOptionsTraits<LeakyReluOptions> {
1392   static const BuiltinOptions enum_value = BuiltinOptions_LeakyReluOptions;
1393 };
1394 
1395 template<> struct BuiltinOptionsTraits<SquaredDifferenceOptions> {
1396   static const BuiltinOptions enum_value = BuiltinOptions_SquaredDifferenceOptions;
1397 };
1398 
1399 template<> struct BuiltinOptionsTraits<MirrorPadOptions> {
1400   static const BuiltinOptions enum_value = BuiltinOptions_MirrorPadOptions;
1401 };
1402 
1403 template<> struct BuiltinOptionsTraits<AbsOptions> {
1404   static const BuiltinOptions enum_value = BuiltinOptions_AbsOptions;
1405 };
1406 
1407 template<> struct BuiltinOptionsTraits<SplitVOptions> {
1408   static const BuiltinOptions enum_value = BuiltinOptions_SplitVOptions;
1409 };
1410 
1411 template<> struct BuiltinOptionsTraits<UniqueOptions> {
1412   static const BuiltinOptions enum_value = BuiltinOptions_UniqueOptions;
1413 };
1414 
1415 template<> struct BuiltinOptionsTraits<ReverseV2Options> {
1416   static const BuiltinOptions enum_value = BuiltinOptions_ReverseV2Options;
1417 };
1418 
1419 template<> struct BuiltinOptionsTraits<AddNOptions> {
1420   static const BuiltinOptions enum_value = BuiltinOptions_AddNOptions;
1421 };
1422 
1423 template<> struct BuiltinOptionsTraits<GatherNdOptions> {
1424   static const BuiltinOptions enum_value = BuiltinOptions_GatherNdOptions;
1425 };
1426 
1427 template<> struct BuiltinOptionsTraits<CosOptions> {
1428   static const BuiltinOptions enum_value = BuiltinOptions_CosOptions;
1429 };
1430 
1431 template<> struct BuiltinOptionsTraits<WhereOptions> {
1432   static const BuiltinOptions enum_value = BuiltinOptions_WhereOptions;
1433 };
1434 
1435 template<> struct BuiltinOptionsTraits<RankOptions> {
1436   static const BuiltinOptions enum_value = BuiltinOptions_RankOptions;
1437 };
1438 
1439 template<> struct BuiltinOptionsTraits<ReverseSequenceOptions> {
1440   static const BuiltinOptions enum_value = BuiltinOptions_ReverseSequenceOptions;
1441 };
1442 
1443 struct BuiltinOptionsUnion {
1444   BuiltinOptions type;
1445   void *value;
1446 
1447   BuiltinOptionsUnion() : type(BuiltinOptions_NONE), value(nullptr) {}
1448   BuiltinOptionsUnion(BuiltinOptionsUnion&& u) FLATBUFFERS_NOEXCEPT :
1449     type(BuiltinOptions_NONE), value(nullptr)
1450     { std::swap(type, u.type); std::swap(value, u.value); }
1451   BuiltinOptionsUnion(const BuiltinOptionsUnion &) FLATBUFFERS_NOEXCEPT;
1452   BuiltinOptionsUnion &operator=(const BuiltinOptionsUnion &u) FLATBUFFERS_NOEXCEPT
1453     { BuiltinOptionsUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
1454   BuiltinOptionsUnion &operator=(BuiltinOptionsUnion &&u) FLATBUFFERS_NOEXCEPT
1455     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
1456   ~BuiltinOptionsUnion() { Reset(); }
1457 
1458   void Reset();
1459 
1460 #ifndef FLATBUFFERS_CPP98_STL
1461   template <typename T>
1462   void Set(T&& val) {
1463     Reset();
1464     type = BuiltinOptionsTraits<typename T::TableType>::enum_value;
1465     if (type != BuiltinOptions_NONE) {
1466       value = new T(std::forward<T>(val));
1467     }
1468   }
1469 #endif  // FLATBUFFERS_CPP98_STL
1470 
1471   static void *UnPack(const void *obj, BuiltinOptions type, const flatbuffers::resolver_function_t *resolver);
1472   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
1473 
1474   Conv2DOptionsT *AsConv2DOptions() {
1475     return type == BuiltinOptions_Conv2DOptions ?
1476       reinterpret_cast<Conv2DOptionsT *>(value) : nullptr;
1477   }
1478   const Conv2DOptionsT *AsConv2DOptions() const {
1479     return type == BuiltinOptions_Conv2DOptions ?
1480       reinterpret_cast<const Conv2DOptionsT *>(value) : nullptr;
1481   }
1482   DepthwiseConv2DOptionsT *AsDepthwiseConv2DOptions() {
1483     return type == BuiltinOptions_DepthwiseConv2DOptions ?
1484       reinterpret_cast<DepthwiseConv2DOptionsT *>(value) : nullptr;
1485   }
1486   const DepthwiseConv2DOptionsT *AsDepthwiseConv2DOptions() const {
1487     return type == BuiltinOptions_DepthwiseConv2DOptions ?
1488       reinterpret_cast<const DepthwiseConv2DOptionsT *>(value) : nullptr;
1489   }
1490   ConcatEmbeddingsOptionsT *AsConcatEmbeddingsOptions() {
1491     return type == BuiltinOptions_ConcatEmbeddingsOptions ?
1492       reinterpret_cast<ConcatEmbeddingsOptionsT *>(value) : nullptr;
1493   }
1494   const ConcatEmbeddingsOptionsT *AsConcatEmbeddingsOptions() const {
1495     return type == BuiltinOptions_ConcatEmbeddingsOptions ?
1496       reinterpret_cast<const ConcatEmbeddingsOptionsT *>(value) : nullptr;
1497   }
1498   LSHProjectionOptionsT *AsLSHProjectionOptions() {
1499     return type == BuiltinOptions_LSHProjectionOptions ?
1500       reinterpret_cast<LSHProjectionOptionsT *>(value) : nullptr;
1501   }
1502   const LSHProjectionOptionsT *AsLSHProjectionOptions() const {
1503     return type == BuiltinOptions_LSHProjectionOptions ?
1504       reinterpret_cast<const LSHProjectionOptionsT *>(value) : nullptr;
1505   }
1506   Pool2DOptionsT *AsPool2DOptions() {
1507     return type == BuiltinOptions_Pool2DOptions ?
1508       reinterpret_cast<Pool2DOptionsT *>(value) : nullptr;
1509   }
1510   const Pool2DOptionsT *AsPool2DOptions() const {
1511     return type == BuiltinOptions_Pool2DOptions ?
1512       reinterpret_cast<const Pool2DOptionsT *>(value) : nullptr;
1513   }
1514   SVDFOptionsT *AsSVDFOptions() {
1515     return type == BuiltinOptions_SVDFOptions ?
1516       reinterpret_cast<SVDFOptionsT *>(value) : nullptr;
1517   }
1518   const SVDFOptionsT *AsSVDFOptions() const {
1519     return type == BuiltinOptions_SVDFOptions ?
1520       reinterpret_cast<const SVDFOptionsT *>(value) : nullptr;
1521   }
1522   RNNOptionsT *AsRNNOptions() {
1523     return type == BuiltinOptions_RNNOptions ?
1524       reinterpret_cast<RNNOptionsT *>(value) : nullptr;
1525   }
1526   const RNNOptionsT *AsRNNOptions() const {
1527     return type == BuiltinOptions_RNNOptions ?
1528       reinterpret_cast<const RNNOptionsT *>(value) : nullptr;
1529   }
1530   FullyConnectedOptionsT *AsFullyConnectedOptions() {
1531     return type == BuiltinOptions_FullyConnectedOptions ?
1532       reinterpret_cast<FullyConnectedOptionsT *>(value) : nullptr;
1533   }
1534   const FullyConnectedOptionsT *AsFullyConnectedOptions() const {
1535     return type == BuiltinOptions_FullyConnectedOptions ?
1536       reinterpret_cast<const FullyConnectedOptionsT *>(value) : nullptr;
1537   }
1538   SoftmaxOptionsT *AsSoftmaxOptions() {
1539     return type == BuiltinOptions_SoftmaxOptions ?
1540       reinterpret_cast<SoftmaxOptionsT *>(value) : nullptr;
1541   }
1542   const SoftmaxOptionsT *AsSoftmaxOptions() const {
1543     return type == BuiltinOptions_SoftmaxOptions ?
1544       reinterpret_cast<const SoftmaxOptionsT *>(value) : nullptr;
1545   }
1546   ConcatenationOptionsT *AsConcatenationOptions() {
1547     return type == BuiltinOptions_ConcatenationOptions ?
1548       reinterpret_cast<ConcatenationOptionsT *>(value) : nullptr;
1549   }
1550   const ConcatenationOptionsT *AsConcatenationOptions() const {
1551     return type == BuiltinOptions_ConcatenationOptions ?
1552       reinterpret_cast<const ConcatenationOptionsT *>(value) : nullptr;
1553   }
1554   AddOptionsT *AsAddOptions() {
1555     return type == BuiltinOptions_AddOptions ?
1556       reinterpret_cast<AddOptionsT *>(value) : nullptr;
1557   }
1558   const AddOptionsT *AsAddOptions() const {
1559     return type == BuiltinOptions_AddOptions ?
1560       reinterpret_cast<const AddOptionsT *>(value) : nullptr;
1561   }
1562   L2NormOptionsT *AsL2NormOptions() {
1563     return type == BuiltinOptions_L2NormOptions ?
1564       reinterpret_cast<L2NormOptionsT *>(value) : nullptr;
1565   }
1566   const L2NormOptionsT *AsL2NormOptions() const {
1567     return type == BuiltinOptions_L2NormOptions ?
1568       reinterpret_cast<const L2NormOptionsT *>(value) : nullptr;
1569   }
1570   LocalResponseNormalizationOptionsT *AsLocalResponseNormalizationOptions() {
1571     return type == BuiltinOptions_LocalResponseNormalizationOptions ?
1572       reinterpret_cast<LocalResponseNormalizationOptionsT *>(value) : nullptr;
1573   }
1574   const LocalResponseNormalizationOptionsT *AsLocalResponseNormalizationOptions() const {
1575     return type == BuiltinOptions_LocalResponseNormalizationOptions ?
1576       reinterpret_cast<const LocalResponseNormalizationOptionsT *>(value) : nullptr;
1577   }
1578   LSTMOptionsT *AsLSTMOptions() {
1579     return type == BuiltinOptions_LSTMOptions ?
1580       reinterpret_cast<LSTMOptionsT *>(value) : nullptr;
1581   }
1582   const LSTMOptionsT *AsLSTMOptions() const {
1583     return type == BuiltinOptions_LSTMOptions ?
1584       reinterpret_cast<const LSTMOptionsT *>(value) : nullptr;
1585   }
1586   ResizeBilinearOptionsT *AsResizeBilinearOptions() {
1587     return type == BuiltinOptions_ResizeBilinearOptions ?
1588       reinterpret_cast<ResizeBilinearOptionsT *>(value) : nullptr;
1589   }
1590   const ResizeBilinearOptionsT *AsResizeBilinearOptions() const {
1591     return type == BuiltinOptions_ResizeBilinearOptions ?
1592       reinterpret_cast<const ResizeBilinearOptionsT *>(value) : nullptr;
1593   }
1594   CallOptionsT *AsCallOptions() {
1595     return type == BuiltinOptions_CallOptions ?
1596       reinterpret_cast<CallOptionsT *>(value) : nullptr;
1597   }
1598   const CallOptionsT *AsCallOptions() const {
1599     return type == BuiltinOptions_CallOptions ?
1600       reinterpret_cast<const CallOptionsT *>(value) : nullptr;
1601   }
1602   ReshapeOptionsT *AsReshapeOptions() {
1603     return type == BuiltinOptions_ReshapeOptions ?
1604       reinterpret_cast<ReshapeOptionsT *>(value) : nullptr;
1605   }
1606   const ReshapeOptionsT *AsReshapeOptions() const {
1607     return type == BuiltinOptions_ReshapeOptions ?
1608       reinterpret_cast<const ReshapeOptionsT *>(value) : nullptr;
1609   }
1610   SkipGramOptionsT *AsSkipGramOptions() {
1611     return type == BuiltinOptions_SkipGramOptions ?
1612       reinterpret_cast<SkipGramOptionsT *>(value) : nullptr;
1613   }
1614   const SkipGramOptionsT *AsSkipGramOptions() const {
1615     return type == BuiltinOptions_SkipGramOptions ?
1616       reinterpret_cast<const SkipGramOptionsT *>(value) : nullptr;
1617   }
1618   SpaceToDepthOptionsT *AsSpaceToDepthOptions() {
1619     return type == BuiltinOptions_SpaceToDepthOptions ?
1620       reinterpret_cast<SpaceToDepthOptionsT *>(value) : nullptr;
1621   }
1622   const SpaceToDepthOptionsT *AsSpaceToDepthOptions() const {
1623     return type == BuiltinOptions_SpaceToDepthOptions ?
1624       reinterpret_cast<const SpaceToDepthOptionsT *>(value) : nullptr;
1625   }
1626   EmbeddingLookupSparseOptionsT *AsEmbeddingLookupSparseOptions() {
1627     return type == BuiltinOptions_EmbeddingLookupSparseOptions ?
1628       reinterpret_cast<EmbeddingLookupSparseOptionsT *>(value) : nullptr;
1629   }
1630   const EmbeddingLookupSparseOptionsT *AsEmbeddingLookupSparseOptions() const {
1631     return type == BuiltinOptions_EmbeddingLookupSparseOptions ?
1632       reinterpret_cast<const EmbeddingLookupSparseOptionsT *>(value) : nullptr;
1633   }
1634   MulOptionsT *AsMulOptions() {
1635     return type == BuiltinOptions_MulOptions ?
1636       reinterpret_cast<MulOptionsT *>(value) : nullptr;
1637   }
1638   const MulOptionsT *AsMulOptions() const {
1639     return type == BuiltinOptions_MulOptions ?
1640       reinterpret_cast<const MulOptionsT *>(value) : nullptr;
1641   }
1642   PadOptionsT *AsPadOptions() {
1643     return type == BuiltinOptions_PadOptions ?
1644       reinterpret_cast<PadOptionsT *>(value) : nullptr;
1645   }
1646   const PadOptionsT *AsPadOptions() const {
1647     return type == BuiltinOptions_PadOptions ?
1648       reinterpret_cast<const PadOptionsT *>(value) : nullptr;
1649   }
1650   GatherOptionsT *AsGatherOptions() {
1651     return type == BuiltinOptions_GatherOptions ?
1652       reinterpret_cast<GatherOptionsT *>(value) : nullptr;
1653   }
1654   const GatherOptionsT *AsGatherOptions() const {
1655     return type == BuiltinOptions_GatherOptions ?
1656       reinterpret_cast<const GatherOptionsT *>(value) : nullptr;
1657   }
1658   BatchToSpaceNDOptionsT *AsBatchToSpaceNDOptions() {
1659     return type == BuiltinOptions_BatchToSpaceNDOptions ?
1660       reinterpret_cast<BatchToSpaceNDOptionsT *>(value) : nullptr;
1661   }
1662   const BatchToSpaceNDOptionsT *AsBatchToSpaceNDOptions() const {
1663     return type == BuiltinOptions_BatchToSpaceNDOptions ?
1664       reinterpret_cast<const BatchToSpaceNDOptionsT *>(value) : nullptr;
1665   }
1666   SpaceToBatchNDOptionsT *AsSpaceToBatchNDOptions() {
1667     return type == BuiltinOptions_SpaceToBatchNDOptions ?
1668       reinterpret_cast<SpaceToBatchNDOptionsT *>(value) : nullptr;
1669   }
1670   const SpaceToBatchNDOptionsT *AsSpaceToBatchNDOptions() const {
1671     return type == BuiltinOptions_SpaceToBatchNDOptions ?
1672       reinterpret_cast<const SpaceToBatchNDOptionsT *>(value) : nullptr;
1673   }
1674   TransposeOptionsT *AsTransposeOptions() {
1675     return type == BuiltinOptions_TransposeOptions ?
1676       reinterpret_cast<TransposeOptionsT *>(value) : nullptr;
1677   }
1678   const TransposeOptionsT *AsTransposeOptions() const {
1679     return type == BuiltinOptions_TransposeOptions ?
1680       reinterpret_cast<const TransposeOptionsT *>(value) : nullptr;
1681   }
1682   ReducerOptionsT *AsReducerOptions() {
1683     return type == BuiltinOptions_ReducerOptions ?
1684       reinterpret_cast<ReducerOptionsT *>(value) : nullptr;
1685   }
1686   const ReducerOptionsT *AsReducerOptions() const {
1687     return type == BuiltinOptions_ReducerOptions ?
1688       reinterpret_cast<const ReducerOptionsT *>(value) : nullptr;
1689   }
1690   SubOptionsT *AsSubOptions() {
1691     return type == BuiltinOptions_SubOptions ?
1692       reinterpret_cast<SubOptionsT *>(value) : nullptr;
1693   }
1694   const SubOptionsT *AsSubOptions() const {
1695     return type == BuiltinOptions_SubOptions ?
1696       reinterpret_cast<const SubOptionsT *>(value) : nullptr;
1697   }
1698   DivOptionsT *AsDivOptions() {
1699     return type == BuiltinOptions_DivOptions ?
1700       reinterpret_cast<DivOptionsT *>(value) : nullptr;
1701   }
1702   const DivOptionsT *AsDivOptions() const {
1703     return type == BuiltinOptions_DivOptions ?
1704       reinterpret_cast<const DivOptionsT *>(value) : nullptr;
1705   }
1706   SqueezeOptionsT *AsSqueezeOptions() {
1707     return type == BuiltinOptions_SqueezeOptions ?
1708       reinterpret_cast<SqueezeOptionsT *>(value) : nullptr;
1709   }
1710   const SqueezeOptionsT *AsSqueezeOptions() const {
1711     return type == BuiltinOptions_SqueezeOptions ?
1712       reinterpret_cast<const SqueezeOptionsT *>(value) : nullptr;
1713   }
1714   SequenceRNNOptionsT *AsSequenceRNNOptions() {
1715     return type == BuiltinOptions_SequenceRNNOptions ?
1716       reinterpret_cast<SequenceRNNOptionsT *>(value) : nullptr;
1717   }
1718   const SequenceRNNOptionsT *AsSequenceRNNOptions() const {
1719     return type == BuiltinOptions_SequenceRNNOptions ?
1720       reinterpret_cast<const SequenceRNNOptionsT *>(value) : nullptr;
1721   }
1722   StridedSliceOptionsT *AsStridedSliceOptions() {
1723     return type == BuiltinOptions_StridedSliceOptions ?
1724       reinterpret_cast<StridedSliceOptionsT *>(value) : nullptr;
1725   }
1726   const StridedSliceOptionsT *AsStridedSliceOptions() const {
1727     return type == BuiltinOptions_StridedSliceOptions ?
1728       reinterpret_cast<const StridedSliceOptionsT *>(value) : nullptr;
1729   }
1730   ExpOptionsT *AsExpOptions() {
1731     return type == BuiltinOptions_ExpOptions ?
1732       reinterpret_cast<ExpOptionsT *>(value) : nullptr;
1733   }
1734   const ExpOptionsT *AsExpOptions() const {
1735     return type == BuiltinOptions_ExpOptions ?
1736       reinterpret_cast<const ExpOptionsT *>(value) : nullptr;
1737   }
1738   TopKV2OptionsT *AsTopKV2Options() {
1739     return type == BuiltinOptions_TopKV2Options ?
1740       reinterpret_cast<TopKV2OptionsT *>(value) : nullptr;
1741   }
1742   const TopKV2OptionsT *AsTopKV2Options() const {
1743     return type == BuiltinOptions_TopKV2Options ?
1744       reinterpret_cast<const TopKV2OptionsT *>(value) : nullptr;
1745   }
1746   SplitOptionsT *AsSplitOptions() {
1747     return type == BuiltinOptions_SplitOptions ?
1748       reinterpret_cast<SplitOptionsT *>(value) : nullptr;
1749   }
1750   const SplitOptionsT *AsSplitOptions() const {
1751     return type == BuiltinOptions_SplitOptions ?
1752       reinterpret_cast<const SplitOptionsT *>(value) : nullptr;
1753   }
1754   LogSoftmaxOptionsT *AsLogSoftmaxOptions() {
1755     return type == BuiltinOptions_LogSoftmaxOptions ?
1756       reinterpret_cast<LogSoftmaxOptionsT *>(value) : nullptr;
1757   }
1758   const LogSoftmaxOptionsT *AsLogSoftmaxOptions() const {
1759     return type == BuiltinOptions_LogSoftmaxOptions ?
1760       reinterpret_cast<const LogSoftmaxOptionsT *>(value) : nullptr;
1761   }
1762   CastOptionsT *AsCastOptions() {
1763     return type == BuiltinOptions_CastOptions ?
1764       reinterpret_cast<CastOptionsT *>(value) : nullptr;
1765   }
1766   const CastOptionsT *AsCastOptions() const {
1767     return type == BuiltinOptions_CastOptions ?
1768       reinterpret_cast<const CastOptionsT *>(value) : nullptr;
1769   }
1770   DequantizeOptionsT *AsDequantizeOptions() {
1771     return type == BuiltinOptions_DequantizeOptions ?
1772       reinterpret_cast<DequantizeOptionsT *>(value) : nullptr;
1773   }
1774   const DequantizeOptionsT *AsDequantizeOptions() const {
1775     return type == BuiltinOptions_DequantizeOptions ?
1776       reinterpret_cast<const DequantizeOptionsT *>(value) : nullptr;
1777   }
1778   MaximumMinimumOptionsT *AsMaximumMinimumOptions() {
1779     return type == BuiltinOptions_MaximumMinimumOptions ?
1780       reinterpret_cast<MaximumMinimumOptionsT *>(value) : nullptr;
1781   }
1782   const MaximumMinimumOptionsT *AsMaximumMinimumOptions() const {
1783     return type == BuiltinOptions_MaximumMinimumOptions ?
1784       reinterpret_cast<const MaximumMinimumOptionsT *>(value) : nullptr;
1785   }
1786   ArgMaxOptionsT *AsArgMaxOptions() {
1787     return type == BuiltinOptions_ArgMaxOptions ?
1788       reinterpret_cast<ArgMaxOptionsT *>(value) : nullptr;
1789   }
1790   const ArgMaxOptionsT *AsArgMaxOptions() const {
1791     return type == BuiltinOptions_ArgMaxOptions ?
1792       reinterpret_cast<const ArgMaxOptionsT *>(value) : nullptr;
1793   }
1794   LessOptionsT *AsLessOptions() {
1795     return type == BuiltinOptions_LessOptions ?
1796       reinterpret_cast<LessOptionsT *>(value) : nullptr;
1797   }
1798   const LessOptionsT *AsLessOptions() const {
1799     return type == BuiltinOptions_LessOptions ?
1800       reinterpret_cast<const LessOptionsT *>(value) : nullptr;
1801   }
1802   NegOptionsT *AsNegOptions() {
1803     return type == BuiltinOptions_NegOptions ?
1804       reinterpret_cast<NegOptionsT *>(value) : nullptr;
1805   }
1806   const NegOptionsT *AsNegOptions() const {
1807     return type == BuiltinOptions_NegOptions ?
1808       reinterpret_cast<const NegOptionsT *>(value) : nullptr;
1809   }
1810   PadV2OptionsT *AsPadV2Options() {
1811     return type == BuiltinOptions_PadV2Options ?
1812       reinterpret_cast<PadV2OptionsT *>(value) : nullptr;
1813   }
1814   const PadV2OptionsT *AsPadV2Options() const {
1815     return type == BuiltinOptions_PadV2Options ?
1816       reinterpret_cast<const PadV2OptionsT *>(value) : nullptr;
1817   }
1818   GreaterOptionsT *AsGreaterOptions() {
1819     return type == BuiltinOptions_GreaterOptions ?
1820       reinterpret_cast<GreaterOptionsT *>(value) : nullptr;
1821   }
1822   const GreaterOptionsT *AsGreaterOptions() const {
1823     return type == BuiltinOptions_GreaterOptions ?
1824       reinterpret_cast<const GreaterOptionsT *>(value) : nullptr;
1825   }
1826   GreaterEqualOptionsT *AsGreaterEqualOptions() {
1827     return type == BuiltinOptions_GreaterEqualOptions ?
1828       reinterpret_cast<GreaterEqualOptionsT *>(value) : nullptr;
1829   }
1830   const GreaterEqualOptionsT *AsGreaterEqualOptions() const {
1831     return type == BuiltinOptions_GreaterEqualOptions ?
1832       reinterpret_cast<const GreaterEqualOptionsT *>(value) : nullptr;
1833   }
1834   LessEqualOptionsT *AsLessEqualOptions() {
1835     return type == BuiltinOptions_LessEqualOptions ?
1836       reinterpret_cast<LessEqualOptionsT *>(value) : nullptr;
1837   }
1838   const LessEqualOptionsT *AsLessEqualOptions() const {
1839     return type == BuiltinOptions_LessEqualOptions ?
1840       reinterpret_cast<const LessEqualOptionsT *>(value) : nullptr;
1841   }
1842   SelectOptionsT *AsSelectOptions() {
1843     return type == BuiltinOptions_SelectOptions ?
1844       reinterpret_cast<SelectOptionsT *>(value) : nullptr;
1845   }
1846   const SelectOptionsT *AsSelectOptions() const {
1847     return type == BuiltinOptions_SelectOptions ?
1848       reinterpret_cast<const SelectOptionsT *>(value) : nullptr;
1849   }
1850   SliceOptionsT *AsSliceOptions() {
1851     return type == BuiltinOptions_SliceOptions ?
1852       reinterpret_cast<SliceOptionsT *>(value) : nullptr;
1853   }
1854   const SliceOptionsT *AsSliceOptions() const {
1855     return type == BuiltinOptions_SliceOptions ?
1856       reinterpret_cast<const SliceOptionsT *>(value) : nullptr;
1857   }
1858   TransposeConvOptionsT *AsTransposeConvOptions() {
1859     return type == BuiltinOptions_TransposeConvOptions ?
1860       reinterpret_cast<TransposeConvOptionsT *>(value) : nullptr;
1861   }
1862   const TransposeConvOptionsT *AsTransposeConvOptions() const {
1863     return type == BuiltinOptions_TransposeConvOptions ?
1864       reinterpret_cast<const TransposeConvOptionsT *>(value) : nullptr;
1865   }
1866   SparseToDenseOptionsT *AsSparseToDenseOptions() {
1867     return type == BuiltinOptions_SparseToDenseOptions ?
1868       reinterpret_cast<SparseToDenseOptionsT *>(value) : nullptr;
1869   }
1870   const SparseToDenseOptionsT *AsSparseToDenseOptions() const {
1871     return type == BuiltinOptions_SparseToDenseOptions ?
1872       reinterpret_cast<const SparseToDenseOptionsT *>(value) : nullptr;
1873   }
1874   TileOptionsT *AsTileOptions() {
1875     return type == BuiltinOptions_TileOptions ?
1876       reinterpret_cast<TileOptionsT *>(value) : nullptr;
1877   }
1878   const TileOptionsT *AsTileOptions() const {
1879     return type == BuiltinOptions_TileOptions ?
1880       reinterpret_cast<const TileOptionsT *>(value) : nullptr;
1881   }
1882   ExpandDimsOptionsT *AsExpandDimsOptions() {
1883     return type == BuiltinOptions_ExpandDimsOptions ?
1884       reinterpret_cast<ExpandDimsOptionsT *>(value) : nullptr;
1885   }
1886   const ExpandDimsOptionsT *AsExpandDimsOptions() const {
1887     return type == BuiltinOptions_ExpandDimsOptions ?
1888       reinterpret_cast<const ExpandDimsOptionsT *>(value) : nullptr;
1889   }
1890   EqualOptionsT *AsEqualOptions() {
1891     return type == BuiltinOptions_EqualOptions ?
1892       reinterpret_cast<EqualOptionsT *>(value) : nullptr;
1893   }
1894   const EqualOptionsT *AsEqualOptions() const {
1895     return type == BuiltinOptions_EqualOptions ?
1896       reinterpret_cast<const EqualOptionsT *>(value) : nullptr;
1897   }
1898   NotEqualOptionsT *AsNotEqualOptions() {
1899     return type == BuiltinOptions_NotEqualOptions ?
1900       reinterpret_cast<NotEqualOptionsT *>(value) : nullptr;
1901   }
1902   const NotEqualOptionsT *AsNotEqualOptions() const {
1903     return type == BuiltinOptions_NotEqualOptions ?
1904       reinterpret_cast<const NotEqualOptionsT *>(value) : nullptr;
1905   }
1906   ShapeOptionsT *AsShapeOptions() {
1907     return type == BuiltinOptions_ShapeOptions ?
1908       reinterpret_cast<ShapeOptionsT *>(value) : nullptr;
1909   }
1910   const ShapeOptionsT *AsShapeOptions() const {
1911     return type == BuiltinOptions_ShapeOptions ?
1912       reinterpret_cast<const ShapeOptionsT *>(value) : nullptr;
1913   }
1914   PowOptionsT *AsPowOptions() {
1915     return type == BuiltinOptions_PowOptions ?
1916       reinterpret_cast<PowOptionsT *>(value) : nullptr;
1917   }
1918   const PowOptionsT *AsPowOptions() const {
1919     return type == BuiltinOptions_PowOptions ?
1920       reinterpret_cast<const PowOptionsT *>(value) : nullptr;
1921   }
1922   ArgMinOptionsT *AsArgMinOptions() {
1923     return type == BuiltinOptions_ArgMinOptions ?
1924       reinterpret_cast<ArgMinOptionsT *>(value) : nullptr;
1925   }
1926   const ArgMinOptionsT *AsArgMinOptions() const {
1927     return type == BuiltinOptions_ArgMinOptions ?
1928       reinterpret_cast<const ArgMinOptionsT *>(value) : nullptr;
1929   }
1930   FakeQuantOptionsT *AsFakeQuantOptions() {
1931     return type == BuiltinOptions_FakeQuantOptions ?
1932       reinterpret_cast<FakeQuantOptionsT *>(value) : nullptr;
1933   }
1934   const FakeQuantOptionsT *AsFakeQuantOptions() const {
1935     return type == BuiltinOptions_FakeQuantOptions ?
1936       reinterpret_cast<const FakeQuantOptionsT *>(value) : nullptr;
1937   }
1938   PackOptionsT *AsPackOptions() {
1939     return type == BuiltinOptions_PackOptions ?
1940       reinterpret_cast<PackOptionsT *>(value) : nullptr;
1941   }
1942   const PackOptionsT *AsPackOptions() const {
1943     return type == BuiltinOptions_PackOptions ?
1944       reinterpret_cast<const PackOptionsT *>(value) : nullptr;
1945   }
1946   LogicalOrOptionsT *AsLogicalOrOptions() {
1947     return type == BuiltinOptions_LogicalOrOptions ?
1948       reinterpret_cast<LogicalOrOptionsT *>(value) : nullptr;
1949   }
1950   const LogicalOrOptionsT *AsLogicalOrOptions() const {
1951     return type == BuiltinOptions_LogicalOrOptions ?
1952       reinterpret_cast<const LogicalOrOptionsT *>(value) : nullptr;
1953   }
1954   OneHotOptionsT *AsOneHotOptions() {
1955     return type == BuiltinOptions_OneHotOptions ?
1956       reinterpret_cast<OneHotOptionsT *>(value) : nullptr;
1957   }
1958   const OneHotOptionsT *AsOneHotOptions() const {
1959     return type == BuiltinOptions_OneHotOptions ?
1960       reinterpret_cast<const OneHotOptionsT *>(value) : nullptr;
1961   }
1962   LogicalAndOptionsT *AsLogicalAndOptions() {
1963     return type == BuiltinOptions_LogicalAndOptions ?
1964       reinterpret_cast<LogicalAndOptionsT *>(value) : nullptr;
1965   }
1966   const LogicalAndOptionsT *AsLogicalAndOptions() const {
1967     return type == BuiltinOptions_LogicalAndOptions ?
1968       reinterpret_cast<const LogicalAndOptionsT *>(value) : nullptr;
1969   }
1970   LogicalNotOptionsT *AsLogicalNotOptions() {
1971     return type == BuiltinOptions_LogicalNotOptions ?
1972       reinterpret_cast<LogicalNotOptionsT *>(value) : nullptr;
1973   }
1974   const LogicalNotOptionsT *AsLogicalNotOptions() const {
1975     return type == BuiltinOptions_LogicalNotOptions ?
1976       reinterpret_cast<const LogicalNotOptionsT *>(value) : nullptr;
1977   }
1978   UnpackOptionsT *AsUnpackOptions() {
1979     return type == BuiltinOptions_UnpackOptions ?
1980       reinterpret_cast<UnpackOptionsT *>(value) : nullptr;
1981   }
1982   const UnpackOptionsT *AsUnpackOptions() const {
1983     return type == BuiltinOptions_UnpackOptions ?
1984       reinterpret_cast<const UnpackOptionsT *>(value) : nullptr;
1985   }
1986   FloorDivOptionsT *AsFloorDivOptions() {
1987     return type == BuiltinOptions_FloorDivOptions ?
1988       reinterpret_cast<FloorDivOptionsT *>(value) : nullptr;
1989   }
1990   const FloorDivOptionsT *AsFloorDivOptions() const {
1991     return type == BuiltinOptions_FloorDivOptions ?
1992       reinterpret_cast<const FloorDivOptionsT *>(value) : nullptr;
1993   }
1994   SquareOptionsT *AsSquareOptions() {
1995     return type == BuiltinOptions_SquareOptions ?
1996       reinterpret_cast<SquareOptionsT *>(value) : nullptr;
1997   }
1998   const SquareOptionsT *AsSquareOptions() const {
1999     return type == BuiltinOptions_SquareOptions ?
2000       reinterpret_cast<const SquareOptionsT *>(value) : nullptr;
2001   }
2002   ZerosLikeOptionsT *AsZerosLikeOptions() {
2003     return type == BuiltinOptions_ZerosLikeOptions ?
2004       reinterpret_cast<ZerosLikeOptionsT *>(value) : nullptr;
2005   }
2006   const ZerosLikeOptionsT *AsZerosLikeOptions() const {
2007     return type == BuiltinOptions_ZerosLikeOptions ?
2008       reinterpret_cast<const ZerosLikeOptionsT *>(value) : nullptr;
2009   }
2010   FillOptionsT *AsFillOptions() {
2011     return type == BuiltinOptions_FillOptions ?
2012       reinterpret_cast<FillOptionsT *>(value) : nullptr;
2013   }
2014   const FillOptionsT *AsFillOptions() const {
2015     return type == BuiltinOptions_FillOptions ?
2016       reinterpret_cast<const FillOptionsT *>(value) : nullptr;
2017   }
2018   BidirectionalSequenceLSTMOptionsT *AsBidirectionalSequenceLSTMOptions() {
2019     return type == BuiltinOptions_BidirectionalSequenceLSTMOptions ?
2020       reinterpret_cast<BidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
2021   }
2022   const BidirectionalSequenceLSTMOptionsT *AsBidirectionalSequenceLSTMOptions() const {
2023     return type == BuiltinOptions_BidirectionalSequenceLSTMOptions ?
2024       reinterpret_cast<const BidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
2025   }
2026   BidirectionalSequenceRNNOptionsT *AsBidirectionalSequenceRNNOptions() {
2027     return type == BuiltinOptions_BidirectionalSequenceRNNOptions ?
2028       reinterpret_cast<BidirectionalSequenceRNNOptionsT *>(value) : nullptr;
2029   }
2030   const BidirectionalSequenceRNNOptionsT *AsBidirectionalSequenceRNNOptions() const {
2031     return type == BuiltinOptions_BidirectionalSequenceRNNOptions ?
2032       reinterpret_cast<const BidirectionalSequenceRNNOptionsT *>(value) : nullptr;
2033   }
2034   UnidirectionalSequenceLSTMOptionsT *AsUnidirectionalSequenceLSTMOptions() {
2035     return type == BuiltinOptions_UnidirectionalSequenceLSTMOptions ?
2036       reinterpret_cast<UnidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
2037   }
2038   const UnidirectionalSequenceLSTMOptionsT *AsUnidirectionalSequenceLSTMOptions() const {
2039     return type == BuiltinOptions_UnidirectionalSequenceLSTMOptions ?
2040       reinterpret_cast<const UnidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
2041   }
2042   FloorModOptionsT *AsFloorModOptions() {
2043     return type == BuiltinOptions_FloorModOptions ?
2044       reinterpret_cast<FloorModOptionsT *>(value) : nullptr;
2045   }
2046   const FloorModOptionsT *AsFloorModOptions() const {
2047     return type == BuiltinOptions_FloorModOptions ?
2048       reinterpret_cast<const FloorModOptionsT *>(value) : nullptr;
2049   }
2050   RangeOptionsT *AsRangeOptions() {
2051     return type == BuiltinOptions_RangeOptions ?
2052       reinterpret_cast<RangeOptionsT *>(value) : nullptr;
2053   }
2054   const RangeOptionsT *AsRangeOptions() const {
2055     return type == BuiltinOptions_RangeOptions ?
2056       reinterpret_cast<const RangeOptionsT *>(value) : nullptr;
2057   }
2058   ResizeNearestNeighborOptionsT *AsResizeNearestNeighborOptions() {
2059     return type == BuiltinOptions_ResizeNearestNeighborOptions ?
2060       reinterpret_cast<ResizeNearestNeighborOptionsT *>(value) : nullptr;
2061   }
2062   const ResizeNearestNeighborOptionsT *AsResizeNearestNeighborOptions() const {
2063     return type == BuiltinOptions_ResizeNearestNeighborOptions ?
2064       reinterpret_cast<const ResizeNearestNeighborOptionsT *>(value) : nullptr;
2065   }
2066   LeakyReluOptionsT *AsLeakyReluOptions() {
2067     return type == BuiltinOptions_LeakyReluOptions ?
2068       reinterpret_cast<LeakyReluOptionsT *>(value) : nullptr;
2069   }
2070   const LeakyReluOptionsT *AsLeakyReluOptions() const {
2071     return type == BuiltinOptions_LeakyReluOptions ?
2072       reinterpret_cast<const LeakyReluOptionsT *>(value) : nullptr;
2073   }
2074   SquaredDifferenceOptionsT *AsSquaredDifferenceOptions() {
2075     return type == BuiltinOptions_SquaredDifferenceOptions ?
2076       reinterpret_cast<SquaredDifferenceOptionsT *>(value) : nullptr;
2077   }
2078   const SquaredDifferenceOptionsT *AsSquaredDifferenceOptions() const {
2079     return type == BuiltinOptions_SquaredDifferenceOptions ?
2080       reinterpret_cast<const SquaredDifferenceOptionsT *>(value) : nullptr;
2081   }
2082   MirrorPadOptionsT *AsMirrorPadOptions() {
2083     return type == BuiltinOptions_MirrorPadOptions ?
2084       reinterpret_cast<MirrorPadOptionsT *>(value) : nullptr;
2085   }
2086   const MirrorPadOptionsT *AsMirrorPadOptions() const {
2087     return type == BuiltinOptions_MirrorPadOptions ?
2088       reinterpret_cast<const MirrorPadOptionsT *>(value) : nullptr;
2089   }
2090   AbsOptionsT *AsAbsOptions() {
2091     return type == BuiltinOptions_AbsOptions ?
2092       reinterpret_cast<AbsOptionsT *>(value) : nullptr;
2093   }
2094   const AbsOptionsT *AsAbsOptions() const {
2095     return type == BuiltinOptions_AbsOptions ?
2096       reinterpret_cast<const AbsOptionsT *>(value) : nullptr;
2097   }
2098   SplitVOptionsT *AsSplitVOptions() {
2099     return type == BuiltinOptions_SplitVOptions ?
2100       reinterpret_cast<SplitVOptionsT *>(value) : nullptr;
2101   }
2102   const SplitVOptionsT *AsSplitVOptions() const {
2103     return type == BuiltinOptions_SplitVOptions ?
2104       reinterpret_cast<const SplitVOptionsT *>(value) : nullptr;
2105   }
2106   UniqueOptionsT *AsUniqueOptions() {
2107     return type == BuiltinOptions_UniqueOptions ?
2108       reinterpret_cast<UniqueOptionsT *>(value) : nullptr;
2109   }
2110   const UniqueOptionsT *AsUniqueOptions() const {
2111     return type == BuiltinOptions_UniqueOptions ?
2112       reinterpret_cast<const UniqueOptionsT *>(value) : nullptr;
2113   }
2114   ReverseV2OptionsT *AsReverseV2Options() {
2115     return type == BuiltinOptions_ReverseV2Options ?
2116       reinterpret_cast<ReverseV2OptionsT *>(value) : nullptr;
2117   }
2118   const ReverseV2OptionsT *AsReverseV2Options() const {
2119     return type == BuiltinOptions_ReverseV2Options ?
2120       reinterpret_cast<const ReverseV2OptionsT *>(value) : nullptr;
2121   }
2122   AddNOptionsT *AsAddNOptions() {
2123     return type == BuiltinOptions_AddNOptions ?
2124       reinterpret_cast<AddNOptionsT *>(value) : nullptr;
2125   }
2126   const AddNOptionsT *AsAddNOptions() const {
2127     return type == BuiltinOptions_AddNOptions ?
2128       reinterpret_cast<const AddNOptionsT *>(value) : nullptr;
2129   }
2130   GatherNdOptionsT *AsGatherNdOptions() {
2131     return type == BuiltinOptions_GatherNdOptions ?
2132       reinterpret_cast<GatherNdOptionsT *>(value) : nullptr;
2133   }
2134   const GatherNdOptionsT *AsGatherNdOptions() const {
2135     return type == BuiltinOptions_GatherNdOptions ?
2136       reinterpret_cast<const GatherNdOptionsT *>(value) : nullptr;
2137   }
2138   CosOptionsT *AsCosOptions() {
2139     return type == BuiltinOptions_CosOptions ?
2140       reinterpret_cast<CosOptionsT *>(value) : nullptr;
2141   }
2142   const CosOptionsT *AsCosOptions() const {
2143     return type == BuiltinOptions_CosOptions ?
2144       reinterpret_cast<const CosOptionsT *>(value) : nullptr;
2145   }
2146   WhereOptionsT *AsWhereOptions() {
2147     return type == BuiltinOptions_WhereOptions ?
2148       reinterpret_cast<WhereOptionsT *>(value) : nullptr;
2149   }
2150   const WhereOptionsT *AsWhereOptions() const {
2151     return type == BuiltinOptions_WhereOptions ?
2152       reinterpret_cast<const WhereOptionsT *>(value) : nullptr;
2153   }
2154   RankOptionsT *AsRankOptions() {
2155     return type == BuiltinOptions_RankOptions ?
2156       reinterpret_cast<RankOptionsT *>(value) : nullptr;
2157   }
2158   const RankOptionsT *AsRankOptions() const {
2159     return type == BuiltinOptions_RankOptions ?
2160       reinterpret_cast<const RankOptionsT *>(value) : nullptr;
2161   }
2162   ReverseSequenceOptionsT *AsReverseSequenceOptions() {
2163     return type == BuiltinOptions_ReverseSequenceOptions ?
2164       reinterpret_cast<ReverseSequenceOptionsT *>(value) : nullptr;
2165   }
2166   const ReverseSequenceOptionsT *AsReverseSequenceOptions() const {
2167     return type == BuiltinOptions_ReverseSequenceOptions ?
2168       reinterpret_cast<const ReverseSequenceOptionsT *>(value) : nullptr;
2169   }
2170 };
2171 
2172 bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type);
2173 bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
2174 
2175 enum Padding {
2176   Padding_SAME = 0,
2177   Padding_VALID = 1,
2178   Padding_MIN = Padding_SAME,
2179   Padding_MAX = Padding_VALID
2180 };
2181 
2182 inline const Padding (&EnumValuesPadding())[2] {
2183   static const Padding values[] = {
2184     Padding_SAME,
2185     Padding_VALID
2186   };
2187   return values;
2188 }
2189 
2190 inline const char * const *EnumNamesPadding() {
2191   static const char * const names[] = {
2192     "SAME",
2193     "VALID",
2194     nullptr
2195   };
2196   return names;
2197 }
2198 
2199 inline const char *EnumNamePadding(Padding e) {
2200   const size_t index = static_cast<int>(e);
2201   return EnumNamesPadding()[index];
2202 }
2203 
2204 enum ActivationFunctionType {
2205   ActivationFunctionType_NONE = 0,
2206   ActivationFunctionType_RELU = 1,
2207   ActivationFunctionType_RELU_N1_TO_1 = 2,
2208   ActivationFunctionType_RELU6 = 3,
2209   ActivationFunctionType_TANH = 4,
2210   ActivationFunctionType_SIGN_BIT = 5,
2211   ActivationFunctionType_MIN = ActivationFunctionType_NONE,
2212   ActivationFunctionType_MAX = ActivationFunctionType_SIGN_BIT
2213 };
2214 
2215 inline const ActivationFunctionType (&EnumValuesActivationFunctionType())[6] {
2216   static const ActivationFunctionType values[] = {
2217     ActivationFunctionType_NONE,
2218     ActivationFunctionType_RELU,
2219     ActivationFunctionType_RELU_N1_TO_1,
2220     ActivationFunctionType_RELU6,
2221     ActivationFunctionType_TANH,
2222     ActivationFunctionType_SIGN_BIT
2223   };
2224   return values;
2225 }
2226 
2227 inline const char * const *EnumNamesActivationFunctionType() {
2228   static const char * const names[] = {
2229     "NONE",
2230     "RELU",
2231     "RELU_N1_TO_1",
2232     "RELU6",
2233     "TANH",
2234     "SIGN_BIT",
2235     nullptr
2236   };
2237   return names;
2238 }
2239 
2240 inline const char *EnumNameActivationFunctionType(ActivationFunctionType e) {
2241   const size_t index = static_cast<int>(e);
2242   return EnumNamesActivationFunctionType()[index];
2243 }
2244 
2245 enum LSHProjectionType {
2246   LSHProjectionType_UNKNOWN = 0,
2247   LSHProjectionType_SPARSE = 1,
2248   LSHProjectionType_DENSE = 2,
2249   LSHProjectionType_MIN = LSHProjectionType_UNKNOWN,
2250   LSHProjectionType_MAX = LSHProjectionType_DENSE
2251 };
2252 
2253 inline const LSHProjectionType (&EnumValuesLSHProjectionType())[3] {
2254   static const LSHProjectionType values[] = {
2255     LSHProjectionType_UNKNOWN,
2256     LSHProjectionType_SPARSE,
2257     LSHProjectionType_DENSE
2258   };
2259   return values;
2260 }
2261 
2262 inline const char * const *EnumNamesLSHProjectionType() {
2263   static const char * const names[] = {
2264     "UNKNOWN",
2265     "SPARSE",
2266     "DENSE",
2267     nullptr
2268   };
2269   return names;
2270 }
2271 
2272 inline const char *EnumNameLSHProjectionType(LSHProjectionType e) {
2273   const size_t index = static_cast<int>(e);
2274   return EnumNamesLSHProjectionType()[index];
2275 }
2276 
2277 enum FullyConnectedOptionsWeightsFormat {
2278   FullyConnectedOptionsWeightsFormat_DEFAULT = 0,
2279   FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8 = 1,
2280   FullyConnectedOptionsWeightsFormat_MIN = FullyConnectedOptionsWeightsFormat_DEFAULT,
2281   FullyConnectedOptionsWeightsFormat_MAX = FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
2282 };
2283 
2284 inline const FullyConnectedOptionsWeightsFormat (&EnumValuesFullyConnectedOptionsWeightsFormat())[2] {
2285   static const FullyConnectedOptionsWeightsFormat values[] = {
2286     FullyConnectedOptionsWeightsFormat_DEFAULT,
2287     FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
2288   };
2289   return values;
2290 }
2291 
2292 inline const char * const *EnumNamesFullyConnectedOptionsWeightsFormat() {
2293   static const char * const names[] = {
2294     "DEFAULT",
2295     "SHUFFLED4x16INT8",
2296     nullptr
2297   };
2298   return names;
2299 }
2300 
2301 inline const char *EnumNameFullyConnectedOptionsWeightsFormat(FullyConnectedOptionsWeightsFormat e) {
2302   const size_t index = static_cast<int>(e);
2303   return EnumNamesFullyConnectedOptionsWeightsFormat()[index];
2304 }
2305 
2306 enum LSTMKernelType {
2307   LSTMKernelType_FULL = 0,
2308   LSTMKernelType_BASIC = 1,
2309   LSTMKernelType_MIN = LSTMKernelType_FULL,
2310   LSTMKernelType_MAX = LSTMKernelType_BASIC
2311 };
2312 
2313 inline const LSTMKernelType (&EnumValuesLSTMKernelType())[2] {
2314   static const LSTMKernelType values[] = {
2315     LSTMKernelType_FULL,
2316     LSTMKernelType_BASIC
2317   };
2318   return values;
2319 }
2320 
2321 inline const char * const *EnumNamesLSTMKernelType() {
2322   static const char * const names[] = {
2323     "FULL",
2324     "BASIC",
2325     nullptr
2326   };
2327   return names;
2328 }
2329 
2330 inline const char *EnumNameLSTMKernelType(LSTMKernelType e) {
2331   const size_t index = static_cast<int>(e);
2332   return EnumNamesLSTMKernelType()[index];
2333 }
2334 
2335 enum CombinerType {
2336   CombinerType_SUM = 0,
2337   CombinerType_MEAN = 1,
2338   CombinerType_SQRTN = 2,
2339   CombinerType_MIN = CombinerType_SUM,
2340   CombinerType_MAX = CombinerType_SQRTN
2341 };
2342 
2343 inline const CombinerType (&EnumValuesCombinerType())[3] {
2344   static const CombinerType values[] = {
2345     CombinerType_SUM,
2346     CombinerType_MEAN,
2347     CombinerType_SQRTN
2348   };
2349   return values;
2350 }
2351 
2352 inline const char * const *EnumNamesCombinerType() {
2353   static const char * const names[] = {
2354     "SUM",
2355     "MEAN",
2356     "SQRTN",
2357     nullptr
2358   };
2359   return names;
2360 }
2361 
2362 inline const char *EnumNameCombinerType(CombinerType e) {
2363   const size_t index = static_cast<int>(e);
2364   return EnumNamesCombinerType()[index];
2365 }
2366 
2367 enum MirrorPadMode {
2368   MirrorPadMode_REFLECT = 0,
2369   MirrorPadMode_SYMMETRIC = 1,
2370   MirrorPadMode_MIN = MirrorPadMode_REFLECT,
2371   MirrorPadMode_MAX = MirrorPadMode_SYMMETRIC
2372 };
2373 
2374 inline const MirrorPadMode (&EnumValuesMirrorPadMode())[2] {
2375   static const MirrorPadMode values[] = {
2376     MirrorPadMode_REFLECT,
2377     MirrorPadMode_SYMMETRIC
2378   };
2379   return values;
2380 }
2381 
2382 inline const char * const *EnumNamesMirrorPadMode() {
2383   static const char * const names[] = {
2384     "REFLECT",
2385     "SYMMETRIC",
2386     nullptr
2387   };
2388   return names;
2389 }
2390 
2391 inline const char *EnumNameMirrorPadMode(MirrorPadMode e) {
2392   const size_t index = static_cast<int>(e);
2393   return EnumNamesMirrorPadMode()[index];
2394 }
2395 
2396 enum CustomOptionsFormat {
2397   CustomOptionsFormat_FLEXBUFFERS = 0,
2398   CustomOptionsFormat_MIN = CustomOptionsFormat_FLEXBUFFERS,
2399   CustomOptionsFormat_MAX = CustomOptionsFormat_FLEXBUFFERS
2400 };
2401 
2402 inline const CustomOptionsFormat (&EnumValuesCustomOptionsFormat())[1] {
2403   static const CustomOptionsFormat values[] = {
2404     CustomOptionsFormat_FLEXBUFFERS
2405   };
2406   return values;
2407 }
2408 
2409 inline const char * const *EnumNamesCustomOptionsFormat() {
2410   static const char * const names[] = {
2411     "FLEXBUFFERS",
2412     nullptr
2413   };
2414   return names;
2415 }
2416 
2417 inline const char *EnumNameCustomOptionsFormat(CustomOptionsFormat e) {
2418   const size_t index = static_cast<int>(e);
2419   return EnumNamesCustomOptionsFormat()[index];
2420 }
2421 
2422 struct CustomQuantizationT : public flatbuffers::NativeTable {
2423   typedef CustomQuantization TableType;
2424   std::vector<uint8_t> custom;
2425   CustomQuantizationT() {
2426   }
2427 };
2428 
2429 struct CustomQuantization FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2430   typedef CustomQuantizationT NativeTableType;
2431   enum {
2432     VT_CUSTOM = 4
2433   };
2434   const flatbuffers::Vector<uint8_t> *custom() const {
2435     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM);
2436   }
2437   bool Verify(flatbuffers::Verifier &verifier) const {
2438     return VerifyTableStart(verifier) &&
2439            VerifyOffset(verifier, VT_CUSTOM) &&
2440            verifier.VerifyVector(custom()) &&
2441            verifier.EndTable();
2442   }
2443   CustomQuantizationT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2444   void UnPackTo(CustomQuantizationT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2445   static flatbuffers::Offset<CustomQuantization> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2446 };
2447 
2448 struct CustomQuantizationBuilder {
2449   flatbuffers::FlatBufferBuilder &fbb_;
2450   flatbuffers::uoffset_t start_;
2451   void add_custom(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom) {
2452     fbb_.AddOffset(CustomQuantization::VT_CUSTOM, custom);
2453   }
2454   explicit CustomQuantizationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2455         : fbb_(_fbb) {
2456     start_ = fbb_.StartTable();
2457   }
2458   CustomQuantizationBuilder &operator=(const CustomQuantizationBuilder &);
2459   flatbuffers::Offset<CustomQuantization> Finish() {
2460     const auto end = fbb_.EndTable(start_);
2461     auto o = flatbuffers::Offset<CustomQuantization>(end);
2462     return o;
2463   }
2464 };
2465 
2466 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(
2467     flatbuffers::FlatBufferBuilder &_fbb,
2468     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom = 0) {
2469   CustomQuantizationBuilder builder_(_fbb);
2470   builder_.add_custom(custom);
2471   return builder_.Finish();
2472 }
2473 
2474 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantizationDirect(
2475     flatbuffers::FlatBufferBuilder &_fbb,
2476     const std::vector<uint8_t> *custom = nullptr) {
2477   return tflite::CreateCustomQuantization(
2478       _fbb,
2479       custom ? _fbb.CreateVector<uint8_t>(*custom) : 0);
2480 }
2481 
2482 flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2483 
2484 struct QuantizationParametersT : public flatbuffers::NativeTable {
2485   typedef QuantizationParameters TableType;
2486   std::vector<float> min;
2487   std::vector<float> max;
2488   std::vector<float> scale;
2489   std::vector<int64_t> zero_point;
2490   QuantizationDetailsUnion details;
2491   int32_t quantized_dimension;
2492   QuantizationParametersT()
2493       : quantized_dimension(0) {
2494   }
2495 };
2496 
2497 struct QuantizationParameters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2498   typedef QuantizationParametersT NativeTableType;
2499   enum {
2500     VT_MIN = 4,
2501     VT_MAX = 6,
2502     VT_SCALE = 8,
2503     VT_ZERO_POINT = 10,
2504     VT_DETAILS_TYPE = 12,
2505     VT_DETAILS = 14,
2506     VT_QUANTIZED_DIMENSION = 16
2507   };
2508   const flatbuffers::Vector<float> *min() const {
2509     return GetPointer<const flatbuffers::Vector<float> *>(VT_MIN);
2510   }
2511   const flatbuffers::Vector<float> *max() const {
2512     return GetPointer<const flatbuffers::Vector<float> *>(VT_MAX);
2513   }
2514   const flatbuffers::Vector<float> *scale() const {
2515     return GetPointer<const flatbuffers::Vector<float> *>(VT_SCALE);
2516   }
2517   const flatbuffers::Vector<int64_t> *zero_point() const {
2518     return GetPointer<const flatbuffers::Vector<int64_t> *>(VT_ZERO_POINT);
2519   }
2520   QuantizationDetails details_type() const {
2521     return static_cast<QuantizationDetails>(GetField<uint8_t>(VT_DETAILS_TYPE, 0));
2522   }
2523   const void *details() const {
2524     return GetPointer<const void *>(VT_DETAILS);
2525   }
2526   template<typename T> const T *details_as() const;
2527   const CustomQuantization *details_as_CustomQuantization() const {
2528     return details_type() == QuantizationDetails_CustomQuantization ? static_cast<const CustomQuantization *>(details()) : nullptr;
2529   }
2530   int32_t quantized_dimension() const {
2531     return GetField<int32_t>(VT_QUANTIZED_DIMENSION, 0);
2532   }
2533   bool Verify(flatbuffers::Verifier &verifier) const {
2534     return VerifyTableStart(verifier) &&
2535            VerifyOffset(verifier, VT_MIN) &&
2536            verifier.VerifyVector(min()) &&
2537            VerifyOffset(verifier, VT_MAX) &&
2538            verifier.VerifyVector(max()) &&
2539            VerifyOffset(verifier, VT_SCALE) &&
2540            verifier.VerifyVector(scale()) &&
2541            VerifyOffset(verifier, VT_ZERO_POINT) &&
2542            verifier.VerifyVector(zero_point()) &&
2543            VerifyField<uint8_t>(verifier, VT_DETAILS_TYPE) &&
2544            VerifyOffset(verifier, VT_DETAILS) &&
2545            VerifyQuantizationDetails(verifier, details(), details_type()) &&
2546            VerifyField<int32_t>(verifier, VT_QUANTIZED_DIMENSION) &&
2547            verifier.EndTable();
2548   }
2549   QuantizationParametersT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2550   void UnPackTo(QuantizationParametersT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2551   static flatbuffers::Offset<QuantizationParameters> Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2552 };
2553 
2554 template<> inline const CustomQuantization *QuantizationParameters::details_as<CustomQuantization>() const {
2555   return details_as_CustomQuantization();
2556 }
2557 
2558 struct QuantizationParametersBuilder {
2559   flatbuffers::FlatBufferBuilder &fbb_;
2560   flatbuffers::uoffset_t start_;
2561   void add_min(flatbuffers::Offset<flatbuffers::Vector<float>> min) {
2562     fbb_.AddOffset(QuantizationParameters::VT_MIN, min);
2563   }
2564   void add_max(flatbuffers::Offset<flatbuffers::Vector<float>> max) {
2565     fbb_.AddOffset(QuantizationParameters::VT_MAX, max);
2566   }
2567   void add_scale(flatbuffers::Offset<flatbuffers::Vector<float>> scale) {
2568     fbb_.AddOffset(QuantizationParameters::VT_SCALE, scale);
2569   }
2570   void add_zero_point(flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point) {
2571     fbb_.AddOffset(QuantizationParameters::VT_ZERO_POINT, zero_point);
2572   }
2573   void add_details_type(QuantizationDetails details_type) {
2574     fbb_.AddElement<uint8_t>(QuantizationParameters::VT_DETAILS_TYPE, static_cast<uint8_t>(details_type), 0);
2575   }
2576   void add_details(flatbuffers::Offset<void> details) {
2577     fbb_.AddOffset(QuantizationParameters::VT_DETAILS, details);
2578   }
2579   void add_quantized_dimension(int32_t quantized_dimension) {
2580     fbb_.AddElement<int32_t>(QuantizationParameters::VT_QUANTIZED_DIMENSION, quantized_dimension, 0);
2581   }
2582   explicit QuantizationParametersBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2583         : fbb_(_fbb) {
2584     start_ = fbb_.StartTable();
2585   }
2586   QuantizationParametersBuilder &operator=(const QuantizationParametersBuilder &);
2587   flatbuffers::Offset<QuantizationParameters> Finish() {
2588     const auto end = fbb_.EndTable(start_);
2589     auto o = flatbuffers::Offset<QuantizationParameters>(end);
2590     return o;
2591   }
2592 };
2593 
2594 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(
2595     flatbuffers::FlatBufferBuilder &_fbb,
2596     flatbuffers::Offset<flatbuffers::Vector<float>> min = 0,
2597     flatbuffers::Offset<flatbuffers::Vector<float>> max = 0,
2598     flatbuffers::Offset<flatbuffers::Vector<float>> scale = 0,
2599     flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point = 0,
2600     QuantizationDetails details_type = QuantizationDetails_NONE,
2601     flatbuffers::Offset<void> details = 0,
2602     int32_t quantized_dimension = 0) {
2603   QuantizationParametersBuilder builder_(_fbb);
2604   builder_.add_quantized_dimension(quantized_dimension);
2605   builder_.add_details(details);
2606   builder_.add_zero_point(zero_point);
2607   builder_.add_scale(scale);
2608   builder_.add_max(max);
2609   builder_.add_min(min);
2610   builder_.add_details_type(details_type);
2611   return builder_.Finish();
2612 }
2613 
2614 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParametersDirect(
2615     flatbuffers::FlatBufferBuilder &_fbb,
2616     const std::vector<float> *min = nullptr,
2617     const std::vector<float> *max = nullptr,
2618     const std::vector<float> *scale = nullptr,
2619     const std::vector<int64_t> *zero_point = nullptr,
2620     QuantizationDetails details_type = QuantizationDetails_NONE,
2621     flatbuffers::Offset<void> details = 0,
2622     int32_t quantized_dimension = 0) {
2623   return tflite::CreateQuantizationParameters(
2624       _fbb,
2625       min ? _fbb.CreateVector<float>(*min) : 0,
2626       max ? _fbb.CreateVector<float>(*max) : 0,
2627       scale ? _fbb.CreateVector<float>(*scale) : 0,
2628       zero_point ? _fbb.CreateVector<int64_t>(*zero_point) : 0,
2629       details_type,
2630       details,
2631       quantized_dimension);
2632 }
2633 
2634 flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2635 
2636 struct TensorT : public flatbuffers::NativeTable {
2637   typedef Tensor TableType;
2638   std::vector<int32_t> shape;
2639   TensorType type;
2640   uint32_t buffer;
2641   std::string name;
2642   std::unique_ptr<QuantizationParametersT> quantization;
2643   bool is_variable;
2644   TensorT()
2645       : type(TensorType_FLOAT32),
2646         buffer(0),
2647         is_variable(false) {
2648   }
2649 };
2650 
2651 struct Tensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2652   typedef TensorT NativeTableType;
2653   enum {
2654     VT_SHAPE = 4,
2655     VT_TYPE = 6,
2656     VT_BUFFER = 8,
2657     VT_NAME = 10,
2658     VT_QUANTIZATION = 12,
2659     VT_IS_VARIABLE = 14
2660   };
2661   const flatbuffers::Vector<int32_t> *shape() const {
2662     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
2663   }
2664   TensorType type() const {
2665     return static_cast<TensorType>(GetField<int8_t>(VT_TYPE, 0));
2666   }
2667   uint32_t buffer() const {
2668     return GetField<uint32_t>(VT_BUFFER, 0);
2669   }
2670   const flatbuffers::String *name() const {
2671     return GetPointer<const flatbuffers::String *>(VT_NAME);
2672   }
2673   const QuantizationParameters *quantization() const {
2674     return GetPointer<const QuantizationParameters *>(VT_QUANTIZATION);
2675   }
2676   bool is_variable() const {
2677     return GetField<uint8_t>(VT_IS_VARIABLE, 0) != 0;
2678   }
2679   bool Verify(flatbuffers::Verifier &verifier) const {
2680     return VerifyTableStart(verifier) &&
2681            VerifyOffset(verifier, VT_SHAPE) &&
2682            verifier.VerifyVector(shape()) &&
2683            VerifyField<int8_t>(verifier, VT_TYPE) &&
2684            VerifyField<uint32_t>(verifier, VT_BUFFER) &&
2685            VerifyOffset(verifier, VT_NAME) &&
2686            verifier.VerifyString(name()) &&
2687            VerifyOffset(verifier, VT_QUANTIZATION) &&
2688            verifier.VerifyTable(quantization()) &&
2689            VerifyField<uint8_t>(verifier, VT_IS_VARIABLE) &&
2690            verifier.EndTable();
2691   }
2692   TensorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2693   void UnPackTo(TensorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2694   static flatbuffers::Offset<Tensor> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2695 };
2696 
2697 struct TensorBuilder {
2698   flatbuffers::FlatBufferBuilder &fbb_;
2699   flatbuffers::uoffset_t start_;
2700   void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
2701     fbb_.AddOffset(Tensor::VT_SHAPE, shape);
2702   }
2703   void add_type(TensorType type) {
2704     fbb_.AddElement<int8_t>(Tensor::VT_TYPE, static_cast<int8_t>(type), 0);
2705   }
2706   void add_buffer(uint32_t buffer) {
2707     fbb_.AddElement<uint32_t>(Tensor::VT_BUFFER, buffer, 0);
2708   }
2709   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
2710     fbb_.AddOffset(Tensor::VT_NAME, name);
2711   }
2712   void add_quantization(flatbuffers::Offset<QuantizationParameters> quantization) {
2713     fbb_.AddOffset(Tensor::VT_QUANTIZATION, quantization);
2714   }
2715   void add_is_variable(bool is_variable) {
2716     fbb_.AddElement<uint8_t>(Tensor::VT_IS_VARIABLE, static_cast<uint8_t>(is_variable), 0);
2717   }
2718   explicit TensorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2719         : fbb_(_fbb) {
2720     start_ = fbb_.StartTable();
2721   }
2722   TensorBuilder &operator=(const TensorBuilder &);
2723   flatbuffers::Offset<Tensor> Finish() {
2724     const auto end = fbb_.EndTable(start_);
2725     auto o = flatbuffers::Offset<Tensor>(end);
2726     return o;
2727   }
2728 };
2729 
2730 inline flatbuffers::Offset<Tensor> CreateTensor(
2731     flatbuffers::FlatBufferBuilder &_fbb,
2732     flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
2733     TensorType type = TensorType_FLOAT32,
2734     uint32_t buffer = 0,
2735     flatbuffers::Offset<flatbuffers::String> name = 0,
2736     flatbuffers::Offset<QuantizationParameters> quantization = 0,
2737     bool is_variable = false) {
2738   TensorBuilder builder_(_fbb);
2739   builder_.add_quantization(quantization);
2740   builder_.add_name(name);
2741   builder_.add_buffer(buffer);
2742   builder_.add_shape(shape);
2743   builder_.add_is_variable(is_variable);
2744   builder_.add_type(type);
2745   return builder_.Finish();
2746 }
2747 
2748 inline flatbuffers::Offset<Tensor> CreateTensorDirect(
2749     flatbuffers::FlatBufferBuilder &_fbb,
2750     const std::vector<int32_t> *shape = nullptr,
2751     TensorType type = TensorType_FLOAT32,
2752     uint32_t buffer = 0,
2753     const char *name = nullptr,
2754     flatbuffers::Offset<QuantizationParameters> quantization = 0,
2755     bool is_variable = false) {
2756   return tflite::CreateTensor(
2757       _fbb,
2758       shape ? _fbb.CreateVector<int32_t>(*shape) : 0,
2759       type,
2760       buffer,
2761       name ? _fbb.CreateString(name) : 0,
2762       quantization,
2763       is_variable);
2764 }
2765 
2766 flatbuffers::Offset<Tensor> CreateTensor(flatbuffers::FlatBufferBuilder &_fbb, const TensorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2767 
2768 struct Conv2DOptionsT : public flatbuffers::NativeTable {
2769   typedef Conv2DOptions TableType;
2770   Padding padding;
2771   int32_t stride_w;
2772   int32_t stride_h;
2773   ActivationFunctionType fused_activation_function;
2774   int32_t dilation_w_factor;
2775   int32_t dilation_h_factor;
2776   Conv2DOptionsT()
2777       : padding(Padding_SAME),
2778         stride_w(0),
2779         stride_h(0),
2780         fused_activation_function(ActivationFunctionType_NONE),
2781         dilation_w_factor(1),
2782         dilation_h_factor(1) {
2783   }
2784 };
2785 
2786 struct Conv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2787   typedef Conv2DOptionsT NativeTableType;
2788   enum {
2789     VT_PADDING = 4,
2790     VT_STRIDE_W = 6,
2791     VT_STRIDE_H = 8,
2792     VT_FUSED_ACTIVATION_FUNCTION = 10,
2793     VT_DILATION_W_FACTOR = 12,
2794     VT_DILATION_H_FACTOR = 14
2795   };
2796   Padding padding() const {
2797     return static_cast<Padding>(GetField<int8_t>(VT_PADDING, 0));
2798   }
2799   int32_t stride_w() const {
2800     return GetField<int32_t>(VT_STRIDE_W, 0);
2801   }
2802   int32_t stride_h() const {
2803     return GetField<int32_t>(VT_STRIDE_H, 0);
2804   }
2805   ActivationFunctionType fused_activation_function() const {
2806     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2807   }
2808   int32_t dilation_w_factor() const {
2809     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
2810   }
2811   int32_t dilation_h_factor() const {
2812     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
2813   }
2814   bool Verify(flatbuffers::Verifier &verifier) const {
2815     return VerifyTableStart(verifier) &&
2816            VerifyField<int8_t>(verifier, VT_PADDING) &&
2817            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
2818            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
2819            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2820            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR) &&
2821            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR) &&
2822            verifier.EndTable();
2823   }
2824   Conv2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2825   void UnPackTo(Conv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2826   static flatbuffers::Offset<Conv2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2827 };
2828 
2829 struct Conv2DOptionsBuilder {
2830   flatbuffers::FlatBufferBuilder &fbb_;
2831   flatbuffers::uoffset_t start_;
2832   void add_padding(Padding padding) {
2833     fbb_.AddElement<int8_t>(Conv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
2834   }
2835   void add_stride_w(int32_t stride_w) {
2836     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_W, stride_w, 0);
2837   }
2838   void add_stride_h(int32_t stride_h) {
2839     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_H, stride_h, 0);
2840   }
2841   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
2842     fbb_.AddElement<int8_t>(Conv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2843   }
2844   void add_dilation_w_factor(int32_t dilation_w_factor) {
2845     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
2846   }
2847   void add_dilation_h_factor(int32_t dilation_h_factor) {
2848     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
2849   }
2850   explicit Conv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2851         : fbb_(_fbb) {
2852     start_ = fbb_.StartTable();
2853   }
2854   Conv2DOptionsBuilder &operator=(const Conv2DOptionsBuilder &);
2855   flatbuffers::Offset<Conv2DOptions> Finish() {
2856     const auto end = fbb_.EndTable(start_);
2857     auto o = flatbuffers::Offset<Conv2DOptions>(end);
2858     return o;
2859   }
2860 };
2861 
2862 inline flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(
2863     flatbuffers::FlatBufferBuilder &_fbb,
2864     Padding padding = Padding_SAME,
2865     int32_t stride_w = 0,
2866     int32_t stride_h = 0,
2867     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
2868     int32_t dilation_w_factor = 1,
2869     int32_t dilation_h_factor = 1) {
2870   Conv2DOptionsBuilder builder_(_fbb);
2871   builder_.add_dilation_h_factor(dilation_h_factor);
2872   builder_.add_dilation_w_factor(dilation_w_factor);
2873   builder_.add_stride_h(stride_h);
2874   builder_.add_stride_w(stride_w);
2875   builder_.add_fused_activation_function(fused_activation_function);
2876   builder_.add_padding(padding);
2877   return builder_.Finish();
2878 }
2879 
2880 flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2881 
2882 struct Pool2DOptionsT : public flatbuffers::NativeTable {
2883   typedef Pool2DOptions TableType;
2884   Padding padding;
2885   int32_t stride_w;
2886   int32_t stride_h;
2887   int32_t filter_width;
2888   int32_t filter_height;
2889   ActivationFunctionType fused_activation_function;
2890   Pool2DOptionsT()
2891       : padding(Padding_SAME),
2892         stride_w(0),
2893         stride_h(0),
2894         filter_width(0),
2895         filter_height(0),
2896         fused_activation_function(ActivationFunctionType_NONE) {
2897   }
2898 };
2899 
2900 struct Pool2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2901   typedef Pool2DOptionsT NativeTableType;
2902   enum {
2903     VT_PADDING = 4,
2904     VT_STRIDE_W = 6,
2905     VT_STRIDE_H = 8,
2906     VT_FILTER_WIDTH = 10,
2907     VT_FILTER_HEIGHT = 12,
2908     VT_FUSED_ACTIVATION_FUNCTION = 14
2909   };
2910   Padding padding() const {
2911     return static_cast<Padding>(GetField<int8_t>(VT_PADDING, 0));
2912   }
2913   int32_t stride_w() const {
2914     return GetField<int32_t>(VT_STRIDE_W, 0);
2915   }
2916   int32_t stride_h() const {
2917     return GetField<int32_t>(VT_STRIDE_H, 0);
2918   }
2919   int32_t filter_width() const {
2920     return GetField<int32_t>(VT_FILTER_WIDTH, 0);
2921   }
2922   int32_t filter_height() const {
2923     return GetField<int32_t>(VT_FILTER_HEIGHT, 0);
2924   }
2925   ActivationFunctionType fused_activation_function() const {
2926     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2927   }
2928   bool Verify(flatbuffers::Verifier &verifier) const {
2929     return VerifyTableStart(verifier) &&
2930            VerifyField<int8_t>(verifier, VT_PADDING) &&
2931            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
2932            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
2933            VerifyField<int32_t>(verifier, VT_FILTER_WIDTH) &&
2934            VerifyField<int32_t>(verifier, VT_FILTER_HEIGHT) &&
2935            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2936            verifier.EndTable();
2937   }
2938   Pool2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2939   void UnPackTo(Pool2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2940   static flatbuffers::Offset<Pool2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2941 };
2942 
2943 struct Pool2DOptionsBuilder {
2944   flatbuffers::FlatBufferBuilder &fbb_;
2945   flatbuffers::uoffset_t start_;
2946   void add_padding(Padding padding) {
2947     fbb_.AddElement<int8_t>(Pool2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
2948   }
2949   void add_stride_w(int32_t stride_w) {
2950     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_W, stride_w, 0);
2951   }
2952   void add_stride_h(int32_t stride_h) {
2953     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_H, stride_h, 0);
2954   }
2955   void add_filter_width(int32_t filter_width) {
2956     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_WIDTH, filter_width, 0);
2957   }
2958   void add_filter_height(int32_t filter_height) {
2959     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_HEIGHT, filter_height, 0);
2960   }
2961   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
2962     fbb_.AddElement<int8_t>(Pool2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2963   }
2964   explicit Pool2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2965         : fbb_(_fbb) {
2966     start_ = fbb_.StartTable();
2967   }
2968   Pool2DOptionsBuilder &operator=(const Pool2DOptionsBuilder &);
2969   flatbuffers::Offset<Pool2DOptions> Finish() {
2970     const auto end = fbb_.EndTable(start_);
2971     auto o = flatbuffers::Offset<Pool2DOptions>(end);
2972     return o;
2973   }
2974 };
2975 
2976 inline flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(
2977     flatbuffers::FlatBufferBuilder &_fbb,
2978     Padding padding = Padding_SAME,
2979     int32_t stride_w = 0,
2980     int32_t stride_h = 0,
2981     int32_t filter_width = 0,
2982     int32_t filter_height = 0,
2983     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
2984   Pool2DOptionsBuilder builder_(_fbb);
2985   builder_.add_filter_height(filter_height);
2986   builder_.add_filter_width(filter_width);
2987   builder_.add_stride_h(stride_h);
2988   builder_.add_stride_w(stride_w);
2989   builder_.add_fused_activation_function(fused_activation_function);
2990   builder_.add_padding(padding);
2991   return builder_.Finish();
2992 }
2993 
2994 flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2995 
2996 struct DepthwiseConv2DOptionsT : public flatbuffers::NativeTable {
2997   typedef DepthwiseConv2DOptions TableType;
2998   Padding padding;
2999   int32_t stride_w;
3000   int32_t stride_h;
3001   int32_t depth_multiplier;
3002   ActivationFunctionType fused_activation_function;
3003   int32_t dilation_w_factor;
3004   int32_t dilation_h_factor;
3005   DepthwiseConv2DOptionsT()
3006       : padding(Padding_SAME),
3007         stride_w(0),
3008         stride_h(0),
3009         depth_multiplier(0),
3010         fused_activation_function(ActivationFunctionType_NONE),
3011         dilation_w_factor(1),
3012         dilation_h_factor(1) {
3013   }
3014 };
3015 
3016 struct DepthwiseConv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3017   typedef DepthwiseConv2DOptionsT NativeTableType;
3018   enum {
3019     VT_PADDING = 4,
3020     VT_STRIDE_W = 6,
3021     VT_STRIDE_H = 8,
3022     VT_DEPTH_MULTIPLIER = 10,
3023     VT_FUSED_ACTIVATION_FUNCTION = 12,
3024     VT_DILATION_W_FACTOR = 14,
3025     VT_DILATION_H_FACTOR = 16
3026   };
3027   Padding padding() const {
3028     return static_cast<Padding>(GetField<int8_t>(VT_PADDING, 0));
3029   }
3030   int32_t stride_w() const {
3031     return GetField<int32_t>(VT_STRIDE_W, 0);
3032   }
3033   int32_t stride_h() const {
3034     return GetField<int32_t>(VT_STRIDE_H, 0);
3035   }
3036   int32_t depth_multiplier() const {
3037     return GetField<int32_t>(VT_DEPTH_MULTIPLIER, 0);
3038   }
3039   ActivationFunctionType fused_activation_function() const {
3040     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3041   }
3042   int32_t dilation_w_factor() const {
3043     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
3044   }
3045   int32_t dilation_h_factor() const {
3046     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
3047   }
3048   bool Verify(flatbuffers::Verifier &verifier) const {
3049     return VerifyTableStart(verifier) &&
3050            VerifyField<int8_t>(verifier, VT_PADDING) &&
3051            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
3052            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
3053            VerifyField<int32_t>(verifier, VT_DEPTH_MULTIPLIER) &&
3054            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3055            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR) &&
3056            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR) &&
3057            verifier.EndTable();
3058   }
3059   DepthwiseConv2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3060   void UnPackTo(DepthwiseConv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3061   static flatbuffers::Offset<DepthwiseConv2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3062 };
3063 
3064 struct DepthwiseConv2DOptionsBuilder {
3065   flatbuffers::FlatBufferBuilder &fbb_;
3066   flatbuffers::uoffset_t start_;
3067   void add_padding(Padding padding) {
3068     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
3069   }
3070   void add_stride_w(int32_t stride_w) {
3071     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_W, stride_w, 0);
3072   }
3073   void add_stride_h(int32_t stride_h) {
3074     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_H, stride_h, 0);
3075   }
3076   void add_depth_multiplier(int32_t depth_multiplier) {
3077     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DEPTH_MULTIPLIER, depth_multiplier, 0);
3078   }
3079   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3080     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3081   }
3082   void add_dilation_w_factor(int32_t dilation_w_factor) {
3083     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
3084   }
3085   void add_dilation_h_factor(int32_t dilation_h_factor) {
3086     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
3087   }
3088   explicit DepthwiseConv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3089         : fbb_(_fbb) {
3090     start_ = fbb_.StartTable();
3091   }
3092   DepthwiseConv2DOptionsBuilder &operator=(const DepthwiseConv2DOptionsBuilder &);
3093   flatbuffers::Offset<DepthwiseConv2DOptions> Finish() {
3094     const auto end = fbb_.EndTable(start_);
3095     auto o = flatbuffers::Offset<DepthwiseConv2DOptions>(end);
3096     return o;
3097   }
3098 };
3099 
3100 inline flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(
3101     flatbuffers::FlatBufferBuilder &_fbb,
3102     Padding padding = Padding_SAME,
3103     int32_t stride_w = 0,
3104     int32_t stride_h = 0,
3105     int32_t depth_multiplier = 0,
3106     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
3107     int32_t dilation_w_factor = 1,
3108     int32_t dilation_h_factor = 1) {
3109   DepthwiseConv2DOptionsBuilder builder_(_fbb);
3110   builder_.add_dilation_h_factor(dilation_h_factor);
3111   builder_.add_dilation_w_factor(dilation_w_factor);
3112   builder_.add_depth_multiplier(depth_multiplier);
3113   builder_.add_stride_h(stride_h);
3114   builder_.add_stride_w(stride_w);
3115   builder_.add_fused_activation_function(fused_activation_function);
3116   builder_.add_padding(padding);
3117   return builder_.Finish();
3118 }
3119 
3120 flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3121 
3122 struct ConcatEmbeddingsOptionsT : public flatbuffers::NativeTable {
3123   typedef ConcatEmbeddingsOptions TableType;
3124   int32_t num_channels;
3125   std::vector<int32_t> num_columns_per_channel;
3126   std::vector<int32_t> embedding_dim_per_channel;
3127   ConcatEmbeddingsOptionsT()
3128       : num_channels(0) {
3129   }
3130 };
3131 
3132 struct ConcatEmbeddingsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3133   typedef ConcatEmbeddingsOptionsT NativeTableType;
3134   enum {
3135     VT_NUM_CHANNELS = 4,
3136     VT_NUM_COLUMNS_PER_CHANNEL = 6,
3137     VT_EMBEDDING_DIM_PER_CHANNEL = 8
3138   };
3139   int32_t num_channels() const {
3140     return GetField<int32_t>(VT_NUM_CHANNELS, 0);
3141   }
3142   const flatbuffers::Vector<int32_t> *num_columns_per_channel() const {
3143     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NUM_COLUMNS_PER_CHANNEL);
3144   }
3145   const flatbuffers::Vector<int32_t> *embedding_dim_per_channel() const {
3146     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_EMBEDDING_DIM_PER_CHANNEL);
3147   }
3148   bool Verify(flatbuffers::Verifier &verifier) const {
3149     return VerifyTableStart(verifier) &&
3150            VerifyField<int32_t>(verifier, VT_NUM_CHANNELS) &&
3151            VerifyOffset(verifier, VT_NUM_COLUMNS_PER_CHANNEL) &&
3152            verifier.VerifyVector(num_columns_per_channel()) &&
3153            VerifyOffset(verifier, VT_EMBEDDING_DIM_PER_CHANNEL) &&
3154            verifier.VerifyVector(embedding_dim_per_channel()) &&
3155            verifier.EndTable();
3156   }
3157   ConcatEmbeddingsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3158   void UnPackTo(ConcatEmbeddingsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3159   static flatbuffers::Offset<ConcatEmbeddingsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3160 };
3161 
3162 struct ConcatEmbeddingsOptionsBuilder {
3163   flatbuffers::FlatBufferBuilder &fbb_;
3164   flatbuffers::uoffset_t start_;
3165   void add_num_channels(int32_t num_channels) {
3166     fbb_.AddElement<int32_t>(ConcatEmbeddingsOptions::VT_NUM_CHANNELS, num_channels, 0);
3167   }
3168   void add_num_columns_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel) {
3169     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_NUM_COLUMNS_PER_CHANNEL, num_columns_per_channel);
3170   }
3171   void add_embedding_dim_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel) {
3172     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_EMBEDDING_DIM_PER_CHANNEL, embedding_dim_per_channel);
3173   }
3174   explicit ConcatEmbeddingsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3175         : fbb_(_fbb) {
3176     start_ = fbb_.StartTable();
3177   }
3178   ConcatEmbeddingsOptionsBuilder &operator=(const ConcatEmbeddingsOptionsBuilder &);
3179   flatbuffers::Offset<ConcatEmbeddingsOptions> Finish() {
3180     const auto end = fbb_.EndTable(start_);
3181     auto o = flatbuffers::Offset<ConcatEmbeddingsOptions>(end);
3182     return o;
3183   }
3184 };
3185 
3186 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(
3187     flatbuffers::FlatBufferBuilder &_fbb,
3188     int32_t num_channels = 0,
3189     flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel = 0,
3190     flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel = 0) {
3191   ConcatEmbeddingsOptionsBuilder builder_(_fbb);
3192   builder_.add_embedding_dim_per_channel(embedding_dim_per_channel);
3193   builder_.add_num_columns_per_channel(num_columns_per_channel);
3194   builder_.add_num_channels(num_channels);
3195   return builder_.Finish();
3196 }
3197 
3198 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptionsDirect(
3199     flatbuffers::FlatBufferBuilder &_fbb,
3200     int32_t num_channels = 0,
3201     const std::vector<int32_t> *num_columns_per_channel = nullptr,
3202     const std::vector<int32_t> *embedding_dim_per_channel = nullptr) {
3203   return tflite::CreateConcatEmbeddingsOptions(
3204       _fbb,
3205       num_channels,
3206       num_columns_per_channel ? _fbb.CreateVector<int32_t>(*num_columns_per_channel) : 0,
3207       embedding_dim_per_channel ? _fbb.CreateVector<int32_t>(*embedding_dim_per_channel) : 0);
3208 }
3209 
3210 flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3211 
3212 struct LSHProjectionOptionsT : public flatbuffers::NativeTable {
3213   typedef LSHProjectionOptions TableType;
3214   LSHProjectionType type;
3215   LSHProjectionOptionsT()
3216       : type(LSHProjectionType_UNKNOWN) {
3217   }
3218 };
3219 
3220 struct LSHProjectionOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3221   typedef LSHProjectionOptionsT NativeTableType;
3222   enum {
3223     VT_TYPE = 4
3224   };
3225   LSHProjectionType type() const {
3226     return static_cast<LSHProjectionType>(GetField<int8_t>(VT_TYPE, 0));
3227   }
3228   bool Verify(flatbuffers::Verifier &verifier) const {
3229     return VerifyTableStart(verifier) &&
3230            VerifyField<int8_t>(verifier, VT_TYPE) &&
3231            verifier.EndTable();
3232   }
3233   LSHProjectionOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3234   void UnPackTo(LSHProjectionOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3235   static flatbuffers::Offset<LSHProjectionOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3236 };
3237 
3238 struct LSHProjectionOptionsBuilder {
3239   flatbuffers::FlatBufferBuilder &fbb_;
3240   flatbuffers::uoffset_t start_;
3241   void add_type(LSHProjectionType type) {
3242     fbb_.AddElement<int8_t>(LSHProjectionOptions::VT_TYPE, static_cast<int8_t>(type), 0);
3243   }
3244   explicit LSHProjectionOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3245         : fbb_(_fbb) {
3246     start_ = fbb_.StartTable();
3247   }
3248   LSHProjectionOptionsBuilder &operator=(const LSHProjectionOptionsBuilder &);
3249   flatbuffers::Offset<LSHProjectionOptions> Finish() {
3250     const auto end = fbb_.EndTable(start_);
3251     auto o = flatbuffers::Offset<LSHProjectionOptions>(end);
3252     return o;
3253   }
3254 };
3255 
3256 inline flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(
3257     flatbuffers::FlatBufferBuilder &_fbb,
3258     LSHProjectionType type = LSHProjectionType_UNKNOWN) {
3259   LSHProjectionOptionsBuilder builder_(_fbb);
3260   builder_.add_type(type);
3261   return builder_.Finish();
3262 }
3263 
3264 flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3265 
3266 struct SVDFOptionsT : public flatbuffers::NativeTable {
3267   typedef SVDFOptions TableType;
3268   int32_t rank;
3269   ActivationFunctionType fused_activation_function;
3270   SVDFOptionsT()
3271       : rank(0),
3272         fused_activation_function(ActivationFunctionType_NONE) {
3273   }
3274 };
3275 
3276 struct SVDFOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3277   typedef SVDFOptionsT NativeTableType;
3278   enum {
3279     VT_RANK = 4,
3280     VT_FUSED_ACTIVATION_FUNCTION = 6
3281   };
3282   int32_t rank() const {
3283     return GetField<int32_t>(VT_RANK, 0);
3284   }
3285   ActivationFunctionType fused_activation_function() const {
3286     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3287   }
3288   bool Verify(flatbuffers::Verifier &verifier) const {
3289     return VerifyTableStart(verifier) &&
3290            VerifyField<int32_t>(verifier, VT_RANK) &&
3291            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3292            verifier.EndTable();
3293   }
3294   SVDFOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3295   void UnPackTo(SVDFOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3296   static flatbuffers::Offset<SVDFOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3297 };
3298 
3299 struct SVDFOptionsBuilder {
3300   flatbuffers::FlatBufferBuilder &fbb_;
3301   flatbuffers::uoffset_t start_;
3302   void add_rank(int32_t rank) {
3303     fbb_.AddElement<int32_t>(SVDFOptions::VT_RANK, rank, 0);
3304   }
3305   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3306     fbb_.AddElement<int8_t>(SVDFOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3307   }
3308   explicit SVDFOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3309         : fbb_(_fbb) {
3310     start_ = fbb_.StartTable();
3311   }
3312   SVDFOptionsBuilder &operator=(const SVDFOptionsBuilder &);
3313   flatbuffers::Offset<SVDFOptions> Finish() {
3314     const auto end = fbb_.EndTable(start_);
3315     auto o = flatbuffers::Offset<SVDFOptions>(end);
3316     return o;
3317   }
3318 };
3319 
3320 inline flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(
3321     flatbuffers::FlatBufferBuilder &_fbb,
3322     int32_t rank = 0,
3323     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3324   SVDFOptionsBuilder builder_(_fbb);
3325   builder_.add_rank(rank);
3326   builder_.add_fused_activation_function(fused_activation_function);
3327   return builder_.Finish();
3328 }
3329 
3330 flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3331 
3332 struct RNNOptionsT : public flatbuffers::NativeTable {
3333   typedef RNNOptions TableType;
3334   ActivationFunctionType fused_activation_function;
3335   RNNOptionsT()
3336       : fused_activation_function(ActivationFunctionType_NONE) {
3337   }
3338 };
3339 
3340 struct RNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3341   typedef RNNOptionsT NativeTableType;
3342   enum {
3343     VT_FUSED_ACTIVATION_FUNCTION = 4
3344   };
3345   ActivationFunctionType fused_activation_function() const {
3346     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3347   }
3348   bool Verify(flatbuffers::Verifier &verifier) const {
3349     return VerifyTableStart(verifier) &&
3350            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3351            verifier.EndTable();
3352   }
3353   RNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3354   void UnPackTo(RNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3355   static flatbuffers::Offset<RNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3356 };
3357 
3358 struct RNNOptionsBuilder {
3359   flatbuffers::FlatBufferBuilder &fbb_;
3360   flatbuffers::uoffset_t start_;
3361   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3362     fbb_.AddElement<int8_t>(RNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3363   }
3364   explicit RNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3365         : fbb_(_fbb) {
3366     start_ = fbb_.StartTable();
3367   }
3368   RNNOptionsBuilder &operator=(const RNNOptionsBuilder &);
3369   flatbuffers::Offset<RNNOptions> Finish() {
3370     const auto end = fbb_.EndTable(start_);
3371     auto o = flatbuffers::Offset<RNNOptions>(end);
3372     return o;
3373   }
3374 };
3375 
3376 inline flatbuffers::Offset<RNNOptions> CreateRNNOptions(
3377     flatbuffers::FlatBufferBuilder &_fbb,
3378     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3379   RNNOptionsBuilder builder_(_fbb);
3380   builder_.add_fused_activation_function(fused_activation_function);
3381   return builder_.Finish();
3382 }
3383 
3384 flatbuffers::Offset<RNNOptions> CreateRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3385 
3386 struct SequenceRNNOptionsT : public flatbuffers::NativeTable {
3387   typedef SequenceRNNOptions TableType;
3388   bool time_major;
3389   ActivationFunctionType fused_activation_function;
3390   SequenceRNNOptionsT()
3391       : time_major(false),
3392         fused_activation_function(ActivationFunctionType_NONE) {
3393   }
3394 };
3395 
3396 struct SequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3397   typedef SequenceRNNOptionsT NativeTableType;
3398   enum {
3399     VT_TIME_MAJOR = 4,
3400     VT_FUSED_ACTIVATION_FUNCTION = 6
3401   };
3402   bool time_major() const {
3403     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
3404   }
3405   ActivationFunctionType fused_activation_function() const {
3406     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3407   }
3408   bool Verify(flatbuffers::Verifier &verifier) const {
3409     return VerifyTableStart(verifier) &&
3410            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
3411            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3412            verifier.EndTable();
3413   }
3414   SequenceRNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3415   void UnPackTo(SequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3416   static flatbuffers::Offset<SequenceRNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3417 };
3418 
3419 struct SequenceRNNOptionsBuilder {
3420   flatbuffers::FlatBufferBuilder &fbb_;
3421   flatbuffers::uoffset_t start_;
3422   void add_time_major(bool time_major) {
3423     fbb_.AddElement<uint8_t>(SequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
3424   }
3425   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3426     fbb_.AddElement<int8_t>(SequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3427   }
3428   explicit SequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3429         : fbb_(_fbb) {
3430     start_ = fbb_.StartTable();
3431   }
3432   SequenceRNNOptionsBuilder &operator=(const SequenceRNNOptionsBuilder &);
3433   flatbuffers::Offset<SequenceRNNOptions> Finish() {
3434     const auto end = fbb_.EndTable(start_);
3435     auto o = flatbuffers::Offset<SequenceRNNOptions>(end);
3436     return o;
3437   }
3438 };
3439 
3440 inline flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(
3441     flatbuffers::FlatBufferBuilder &_fbb,
3442     bool time_major = false,
3443     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3444   SequenceRNNOptionsBuilder builder_(_fbb);
3445   builder_.add_fused_activation_function(fused_activation_function);
3446   builder_.add_time_major(time_major);
3447   return builder_.Finish();
3448 }
3449 
3450 flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3451 
3452 struct BidirectionalSequenceRNNOptionsT : public flatbuffers::NativeTable {
3453   typedef BidirectionalSequenceRNNOptions TableType;
3454   bool time_major;
3455   ActivationFunctionType fused_activation_function;
3456   bool merge_outputs;
3457   BidirectionalSequenceRNNOptionsT()
3458       : time_major(false),
3459         fused_activation_function(ActivationFunctionType_NONE),
3460         merge_outputs(false) {
3461   }
3462 };
3463 
3464 struct BidirectionalSequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3465   typedef BidirectionalSequenceRNNOptionsT NativeTableType;
3466   enum {
3467     VT_TIME_MAJOR = 4,
3468     VT_FUSED_ACTIVATION_FUNCTION = 6,
3469     VT_MERGE_OUTPUTS = 8
3470   };
3471   bool time_major() const {
3472     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
3473   }
3474   ActivationFunctionType fused_activation_function() const {
3475     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3476   }
3477   bool merge_outputs() const {
3478     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
3479   }
3480   bool Verify(flatbuffers::Verifier &verifier) const {
3481     return VerifyTableStart(verifier) &&
3482            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
3483            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3484            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS) &&
3485            verifier.EndTable();
3486   }
3487   BidirectionalSequenceRNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3488   void UnPackTo(BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3489   static flatbuffers::Offset<BidirectionalSequenceRNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3490 };
3491 
3492 struct BidirectionalSequenceRNNOptionsBuilder {
3493   flatbuffers::FlatBufferBuilder &fbb_;
3494   flatbuffers::uoffset_t start_;
3495   void add_time_major(bool time_major) {
3496     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
3497   }
3498   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3499     fbb_.AddElement<int8_t>(BidirectionalSequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3500   }
3501   void add_merge_outputs(bool merge_outputs) {
3502     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
3503   }
3504   explicit BidirectionalSequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3505         : fbb_(_fbb) {
3506     start_ = fbb_.StartTable();
3507   }
3508   BidirectionalSequenceRNNOptionsBuilder &operator=(const BidirectionalSequenceRNNOptionsBuilder &);
3509   flatbuffers::Offset<BidirectionalSequenceRNNOptions> Finish() {
3510     const auto end = fbb_.EndTable(start_);
3511     auto o = flatbuffers::Offset<BidirectionalSequenceRNNOptions>(end);
3512     return o;
3513   }
3514 };
3515 
3516 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(
3517     flatbuffers::FlatBufferBuilder &_fbb,
3518     bool time_major = false,
3519     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
3520     bool merge_outputs = false) {
3521   BidirectionalSequenceRNNOptionsBuilder builder_(_fbb);
3522   builder_.add_merge_outputs(merge_outputs);
3523   builder_.add_fused_activation_function(fused_activation_function);
3524   builder_.add_time_major(time_major);
3525   return builder_.Finish();
3526 }
3527 
3528 flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3529 
3530 struct FullyConnectedOptionsT : public flatbuffers::NativeTable {
3531   typedef FullyConnectedOptions TableType;
3532   ActivationFunctionType fused_activation_function;
3533   FullyConnectedOptionsWeightsFormat weights_format;
3534   FullyConnectedOptionsT()
3535       : fused_activation_function(ActivationFunctionType_NONE),
3536         weights_format(FullyConnectedOptionsWeightsFormat_DEFAULT) {
3537   }
3538 };
3539 
3540 struct FullyConnectedOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3541   typedef FullyConnectedOptionsT NativeTableType;
3542   enum {
3543     VT_FUSED_ACTIVATION_FUNCTION = 4,
3544     VT_WEIGHTS_FORMAT = 6
3545   };
3546   ActivationFunctionType fused_activation_function() const {
3547     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3548   }
3549   FullyConnectedOptionsWeightsFormat weights_format() const {
3550     return static_cast<FullyConnectedOptionsWeightsFormat>(GetField<int8_t>(VT_WEIGHTS_FORMAT, 0));
3551   }
3552   bool Verify(flatbuffers::Verifier &verifier) const {
3553     return VerifyTableStart(verifier) &&
3554            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3555            VerifyField<int8_t>(verifier, VT_WEIGHTS_FORMAT) &&
3556            verifier.EndTable();
3557   }
3558   FullyConnectedOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3559   void UnPackTo(FullyConnectedOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3560   static flatbuffers::Offset<FullyConnectedOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3561 };
3562 
3563 struct FullyConnectedOptionsBuilder {
3564   flatbuffers::FlatBufferBuilder &fbb_;
3565   flatbuffers::uoffset_t start_;
3566   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3567     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3568   }
3569   void add_weights_format(FullyConnectedOptionsWeightsFormat weights_format) {
3570     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_WEIGHTS_FORMAT, static_cast<int8_t>(weights_format), 0);
3571   }
3572   explicit FullyConnectedOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3573         : fbb_(_fbb) {
3574     start_ = fbb_.StartTable();
3575   }
3576   FullyConnectedOptionsBuilder &operator=(const FullyConnectedOptionsBuilder &);
3577   flatbuffers::Offset<FullyConnectedOptions> Finish() {
3578     const auto end = fbb_.EndTable(start_);
3579     auto o = flatbuffers::Offset<FullyConnectedOptions>(end);
3580     return o;
3581   }
3582 };
3583 
3584 inline flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(
3585     flatbuffers::FlatBufferBuilder &_fbb,
3586     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
3587     FullyConnectedOptionsWeightsFormat weights_format = FullyConnectedOptionsWeightsFormat_DEFAULT) {
3588   FullyConnectedOptionsBuilder builder_(_fbb);
3589   builder_.add_weights_format(weights_format);
3590   builder_.add_fused_activation_function(fused_activation_function);
3591   return builder_.Finish();
3592 }
3593 
3594 flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3595 
3596 struct SoftmaxOptionsT : public flatbuffers::NativeTable {
3597   typedef SoftmaxOptions TableType;
3598   float beta;
3599   SoftmaxOptionsT()
3600       : beta(0.0f) {
3601   }
3602 };
3603 
3604 struct SoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3605   typedef SoftmaxOptionsT NativeTableType;
3606   enum {
3607     VT_BETA = 4
3608   };
3609   float beta() const {
3610     return GetField<float>(VT_BETA, 0.0f);
3611   }
3612   bool Verify(flatbuffers::Verifier &verifier) const {
3613     return VerifyTableStart(verifier) &&
3614            VerifyField<float>(verifier, VT_BETA) &&
3615            verifier.EndTable();
3616   }
3617   SoftmaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3618   void UnPackTo(SoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3619   static flatbuffers::Offset<SoftmaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3620 };
3621 
3622 struct SoftmaxOptionsBuilder {
3623   flatbuffers::FlatBufferBuilder &fbb_;
3624   flatbuffers::uoffset_t start_;
3625   void add_beta(float beta) {
3626     fbb_.AddElement<float>(SoftmaxOptions::VT_BETA, beta, 0.0f);
3627   }
3628   explicit SoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3629         : fbb_(_fbb) {
3630     start_ = fbb_.StartTable();
3631   }
3632   SoftmaxOptionsBuilder &operator=(const SoftmaxOptionsBuilder &);
3633   flatbuffers::Offset<SoftmaxOptions> Finish() {
3634     const auto end = fbb_.EndTable(start_);
3635     auto o = flatbuffers::Offset<SoftmaxOptions>(end);
3636     return o;
3637   }
3638 };
3639 
3640 inline flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(
3641     flatbuffers::FlatBufferBuilder &_fbb,
3642     float beta = 0.0f) {
3643   SoftmaxOptionsBuilder builder_(_fbb);
3644   builder_.add_beta(beta);
3645   return builder_.Finish();
3646 }
3647 
3648 flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3649 
3650 struct ConcatenationOptionsT : public flatbuffers::NativeTable {
3651   typedef ConcatenationOptions TableType;
3652   int32_t axis;
3653   ActivationFunctionType fused_activation_function;
3654   ConcatenationOptionsT()
3655       : axis(0),
3656         fused_activation_function(ActivationFunctionType_NONE) {
3657   }
3658 };
3659 
3660 struct ConcatenationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3661   typedef ConcatenationOptionsT NativeTableType;
3662   enum {
3663     VT_AXIS = 4,
3664     VT_FUSED_ACTIVATION_FUNCTION = 6
3665   };
3666   int32_t axis() const {
3667     return GetField<int32_t>(VT_AXIS, 0);
3668   }
3669   ActivationFunctionType fused_activation_function() const {
3670     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3671   }
3672   bool Verify(flatbuffers::Verifier &verifier) const {
3673     return VerifyTableStart(verifier) &&
3674            VerifyField<int32_t>(verifier, VT_AXIS) &&
3675            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3676            verifier.EndTable();
3677   }
3678   ConcatenationOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3679   void UnPackTo(ConcatenationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3680   static flatbuffers::Offset<ConcatenationOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3681 };
3682 
3683 struct ConcatenationOptionsBuilder {
3684   flatbuffers::FlatBufferBuilder &fbb_;
3685   flatbuffers::uoffset_t start_;
3686   void add_axis(int32_t axis) {
3687     fbb_.AddElement<int32_t>(ConcatenationOptions::VT_AXIS, axis, 0);
3688   }
3689   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3690     fbb_.AddElement<int8_t>(ConcatenationOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3691   }
3692   explicit ConcatenationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3693         : fbb_(_fbb) {
3694     start_ = fbb_.StartTable();
3695   }
3696   ConcatenationOptionsBuilder &operator=(const ConcatenationOptionsBuilder &);
3697   flatbuffers::Offset<ConcatenationOptions> Finish() {
3698     const auto end = fbb_.EndTable(start_);
3699     auto o = flatbuffers::Offset<ConcatenationOptions>(end);
3700     return o;
3701   }
3702 };
3703 
3704 inline flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(
3705     flatbuffers::FlatBufferBuilder &_fbb,
3706     int32_t axis = 0,
3707     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3708   ConcatenationOptionsBuilder builder_(_fbb);
3709   builder_.add_axis(axis);
3710   builder_.add_fused_activation_function(fused_activation_function);
3711   return builder_.Finish();
3712 }
3713 
3714 flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3715 
3716 struct AddOptionsT : public flatbuffers::NativeTable {
3717   typedef AddOptions TableType;
3718   ActivationFunctionType fused_activation_function;
3719   AddOptionsT()
3720       : fused_activation_function(ActivationFunctionType_NONE) {
3721   }
3722 };
3723 
3724 struct AddOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3725   typedef AddOptionsT NativeTableType;
3726   enum {
3727     VT_FUSED_ACTIVATION_FUNCTION = 4
3728   };
3729   ActivationFunctionType fused_activation_function() const {
3730     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3731   }
3732   bool Verify(flatbuffers::Verifier &verifier) const {
3733     return VerifyTableStart(verifier) &&
3734            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3735            verifier.EndTable();
3736   }
3737   AddOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3738   void UnPackTo(AddOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3739   static flatbuffers::Offset<AddOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3740 };
3741 
3742 struct AddOptionsBuilder {
3743   flatbuffers::FlatBufferBuilder &fbb_;
3744   flatbuffers::uoffset_t start_;
3745   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3746     fbb_.AddElement<int8_t>(AddOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3747   }
3748   explicit AddOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3749         : fbb_(_fbb) {
3750     start_ = fbb_.StartTable();
3751   }
3752   AddOptionsBuilder &operator=(const AddOptionsBuilder &);
3753   flatbuffers::Offset<AddOptions> Finish() {
3754     const auto end = fbb_.EndTable(start_);
3755     auto o = flatbuffers::Offset<AddOptions>(end);
3756     return o;
3757   }
3758 };
3759 
3760 inline flatbuffers::Offset<AddOptions> CreateAddOptions(
3761     flatbuffers::FlatBufferBuilder &_fbb,
3762     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3763   AddOptionsBuilder builder_(_fbb);
3764   builder_.add_fused_activation_function(fused_activation_function);
3765   return builder_.Finish();
3766 }
3767 
3768 flatbuffers::Offset<AddOptions> CreateAddOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3769 
3770 struct MulOptionsT : public flatbuffers::NativeTable {
3771   typedef MulOptions TableType;
3772   ActivationFunctionType fused_activation_function;
3773   MulOptionsT()
3774       : fused_activation_function(ActivationFunctionType_NONE) {
3775   }
3776 };
3777 
3778 struct MulOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3779   typedef MulOptionsT NativeTableType;
3780   enum {
3781     VT_FUSED_ACTIVATION_FUNCTION = 4
3782   };
3783   ActivationFunctionType fused_activation_function() const {
3784     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3785   }
3786   bool Verify(flatbuffers::Verifier &verifier) const {
3787     return VerifyTableStart(verifier) &&
3788            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3789            verifier.EndTable();
3790   }
3791   MulOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3792   void UnPackTo(MulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3793   static flatbuffers::Offset<MulOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3794 };
3795 
3796 struct MulOptionsBuilder {
3797   flatbuffers::FlatBufferBuilder &fbb_;
3798   flatbuffers::uoffset_t start_;
3799   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3800     fbb_.AddElement<int8_t>(MulOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3801   }
3802   explicit MulOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3803         : fbb_(_fbb) {
3804     start_ = fbb_.StartTable();
3805   }
3806   MulOptionsBuilder &operator=(const MulOptionsBuilder &);
3807   flatbuffers::Offset<MulOptions> Finish() {
3808     const auto end = fbb_.EndTable(start_);
3809     auto o = flatbuffers::Offset<MulOptions>(end);
3810     return o;
3811   }
3812 };
3813 
3814 inline flatbuffers::Offset<MulOptions> CreateMulOptions(
3815     flatbuffers::FlatBufferBuilder &_fbb,
3816     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3817   MulOptionsBuilder builder_(_fbb);
3818   builder_.add_fused_activation_function(fused_activation_function);
3819   return builder_.Finish();
3820 }
3821 
3822 flatbuffers::Offset<MulOptions> CreateMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3823 
3824 struct L2NormOptionsT : public flatbuffers::NativeTable {
3825   typedef L2NormOptions TableType;
3826   ActivationFunctionType fused_activation_function;
3827   L2NormOptionsT()
3828       : fused_activation_function(ActivationFunctionType_NONE) {
3829   }
3830 };
3831 
3832 struct L2NormOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3833   typedef L2NormOptionsT NativeTableType;
3834   enum {
3835     VT_FUSED_ACTIVATION_FUNCTION = 4
3836   };
3837   ActivationFunctionType fused_activation_function() const {
3838     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3839   }
3840   bool Verify(flatbuffers::Verifier &verifier) const {
3841     return VerifyTableStart(verifier) &&
3842            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3843            verifier.EndTable();
3844   }
3845   L2NormOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3846   void UnPackTo(L2NormOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3847   static flatbuffers::Offset<L2NormOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3848 };
3849 
3850 struct L2NormOptionsBuilder {
3851   flatbuffers::FlatBufferBuilder &fbb_;
3852   flatbuffers::uoffset_t start_;
3853   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
3854     fbb_.AddElement<int8_t>(L2NormOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3855   }
3856   explicit L2NormOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3857         : fbb_(_fbb) {
3858     start_ = fbb_.StartTable();
3859   }
3860   L2NormOptionsBuilder &operator=(const L2NormOptionsBuilder &);
3861   flatbuffers::Offset<L2NormOptions> Finish() {
3862     const auto end = fbb_.EndTable(start_);
3863     auto o = flatbuffers::Offset<L2NormOptions>(end);
3864     return o;
3865   }
3866 };
3867 
3868 inline flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(
3869     flatbuffers::FlatBufferBuilder &_fbb,
3870     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
3871   L2NormOptionsBuilder builder_(_fbb);
3872   builder_.add_fused_activation_function(fused_activation_function);
3873   return builder_.Finish();
3874 }
3875 
3876 flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3877 
3878 struct LocalResponseNormalizationOptionsT : public flatbuffers::NativeTable {
3879   typedef LocalResponseNormalizationOptions TableType;
3880   int32_t radius;
3881   float bias;
3882   float alpha;
3883   float beta;
3884   LocalResponseNormalizationOptionsT()
3885       : radius(0),
3886         bias(0.0f),
3887         alpha(0.0f),
3888         beta(0.0f) {
3889   }
3890 };
3891 
3892 struct LocalResponseNormalizationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3893   typedef LocalResponseNormalizationOptionsT NativeTableType;
3894   enum {
3895     VT_RADIUS = 4,
3896     VT_BIAS = 6,
3897     VT_ALPHA = 8,
3898     VT_BETA = 10
3899   };
3900   int32_t radius() const {
3901     return GetField<int32_t>(VT_RADIUS, 0);
3902   }
3903   float bias() const {
3904     return GetField<float>(VT_BIAS, 0.0f);
3905   }
3906   float alpha() const {
3907     return GetField<float>(VT_ALPHA, 0.0f);
3908   }
3909   float beta() const {
3910     return GetField<float>(VT_BETA, 0.0f);
3911   }
3912   bool Verify(flatbuffers::Verifier &verifier) const {
3913     return VerifyTableStart(verifier) &&
3914            VerifyField<int32_t>(verifier, VT_RADIUS) &&
3915            VerifyField<float>(verifier, VT_BIAS) &&
3916            VerifyField<float>(verifier, VT_ALPHA) &&
3917            VerifyField<float>(verifier, VT_BETA) &&
3918            verifier.EndTable();
3919   }
3920   LocalResponseNormalizationOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3921   void UnPackTo(LocalResponseNormalizationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3922   static flatbuffers::Offset<LocalResponseNormalizationOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3923 };
3924 
3925 struct LocalResponseNormalizationOptionsBuilder {
3926   flatbuffers::FlatBufferBuilder &fbb_;
3927   flatbuffers::uoffset_t start_;
3928   void add_radius(int32_t radius) {
3929     fbb_.AddElement<int32_t>(LocalResponseNormalizationOptions::VT_RADIUS, radius, 0);
3930   }
3931   void add_bias(float bias) {
3932     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BIAS, bias, 0.0f);
3933   }
3934   void add_alpha(float alpha) {
3935     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_ALPHA, alpha, 0.0f);
3936   }
3937   void add_beta(float beta) {
3938     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BETA, beta, 0.0f);
3939   }
3940   explicit LocalResponseNormalizationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3941         : fbb_(_fbb) {
3942     start_ = fbb_.StartTable();
3943   }
3944   LocalResponseNormalizationOptionsBuilder &operator=(const LocalResponseNormalizationOptionsBuilder &);
3945   flatbuffers::Offset<LocalResponseNormalizationOptions> Finish() {
3946     const auto end = fbb_.EndTable(start_);
3947     auto o = flatbuffers::Offset<LocalResponseNormalizationOptions>(end);
3948     return o;
3949   }
3950 };
3951 
3952 inline flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(
3953     flatbuffers::FlatBufferBuilder &_fbb,
3954     int32_t radius = 0,
3955     float bias = 0.0f,
3956     float alpha = 0.0f,
3957     float beta = 0.0f) {
3958   LocalResponseNormalizationOptionsBuilder builder_(_fbb);
3959   builder_.add_beta(beta);
3960   builder_.add_alpha(alpha);
3961   builder_.add_bias(bias);
3962   builder_.add_radius(radius);
3963   return builder_.Finish();
3964 }
3965 
3966 flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3967 
3968 struct LSTMOptionsT : public flatbuffers::NativeTable {
3969   typedef LSTMOptions TableType;
3970   ActivationFunctionType fused_activation_function;
3971   float cell_clip;
3972   float proj_clip;
3973   LSTMKernelType kernel_type;
3974   LSTMOptionsT()
3975       : fused_activation_function(ActivationFunctionType_NONE),
3976         cell_clip(0.0f),
3977         proj_clip(0.0f),
3978         kernel_type(LSTMKernelType_FULL) {
3979   }
3980 };
3981 
3982 struct LSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3983   typedef LSTMOptionsT NativeTableType;
3984   enum {
3985     VT_FUSED_ACTIVATION_FUNCTION = 4,
3986     VT_CELL_CLIP = 6,
3987     VT_PROJ_CLIP = 8,
3988     VT_KERNEL_TYPE = 10
3989   };
3990   ActivationFunctionType fused_activation_function() const {
3991     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3992   }
3993   float cell_clip() const {
3994     return GetField<float>(VT_CELL_CLIP, 0.0f);
3995   }
3996   float proj_clip() const {
3997     return GetField<float>(VT_PROJ_CLIP, 0.0f);
3998   }
3999   LSTMKernelType kernel_type() const {
4000     return static_cast<LSTMKernelType>(GetField<int8_t>(VT_KERNEL_TYPE, 0));
4001   }
4002   bool Verify(flatbuffers::Verifier &verifier) const {
4003     return VerifyTableStart(verifier) &&
4004            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
4005            VerifyField<float>(verifier, VT_CELL_CLIP) &&
4006            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
4007            VerifyField<int8_t>(verifier, VT_KERNEL_TYPE) &&
4008            verifier.EndTable();
4009   }
4010   LSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4011   void UnPackTo(LSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4012   static flatbuffers::Offset<LSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4013 };
4014 
4015 struct LSTMOptionsBuilder {
4016   flatbuffers::FlatBufferBuilder &fbb_;
4017   flatbuffers::uoffset_t start_;
4018   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
4019     fbb_.AddElement<int8_t>(LSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
4020   }
4021   void add_cell_clip(float cell_clip) {
4022     fbb_.AddElement<float>(LSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
4023   }
4024   void add_proj_clip(float proj_clip) {
4025     fbb_.AddElement<float>(LSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
4026   }
4027   void add_kernel_type(LSTMKernelType kernel_type) {
4028     fbb_.AddElement<int8_t>(LSTMOptions::VT_KERNEL_TYPE, static_cast<int8_t>(kernel_type), 0);
4029   }
4030   explicit LSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4031         : fbb_(_fbb) {
4032     start_ = fbb_.StartTable();
4033   }
4034   LSTMOptionsBuilder &operator=(const LSTMOptionsBuilder &);
4035   flatbuffers::Offset<LSTMOptions> Finish() {
4036     const auto end = fbb_.EndTable(start_);
4037     auto o = flatbuffers::Offset<LSTMOptions>(end);
4038     return o;
4039   }
4040 };
4041 
4042 inline flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(
4043     flatbuffers::FlatBufferBuilder &_fbb,
4044     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
4045     float cell_clip = 0.0f,
4046     float proj_clip = 0.0f,
4047     LSTMKernelType kernel_type = LSTMKernelType_FULL) {
4048   LSTMOptionsBuilder builder_(_fbb);
4049   builder_.add_proj_clip(proj_clip);
4050   builder_.add_cell_clip(cell_clip);
4051   builder_.add_kernel_type(kernel_type);
4052   builder_.add_fused_activation_function(fused_activation_function);
4053   return builder_.Finish();
4054 }
4055 
4056 flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4057 
4058 struct UnidirectionalSequenceLSTMOptionsT : public flatbuffers::NativeTable {
4059   typedef UnidirectionalSequenceLSTMOptions TableType;
4060   ActivationFunctionType fused_activation_function;
4061   float cell_clip;
4062   float proj_clip;
4063   bool time_major;
4064   UnidirectionalSequenceLSTMOptionsT()
4065       : fused_activation_function(ActivationFunctionType_NONE),
4066         cell_clip(0.0f),
4067         proj_clip(0.0f),
4068         time_major(false) {
4069   }
4070 };
4071 
4072 struct UnidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4073   typedef UnidirectionalSequenceLSTMOptionsT NativeTableType;
4074   enum {
4075     VT_FUSED_ACTIVATION_FUNCTION = 4,
4076     VT_CELL_CLIP = 6,
4077     VT_PROJ_CLIP = 8,
4078     VT_TIME_MAJOR = 10
4079   };
4080   ActivationFunctionType fused_activation_function() const {
4081     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
4082   }
4083   float cell_clip() const {
4084     return GetField<float>(VT_CELL_CLIP, 0.0f);
4085   }
4086   float proj_clip() const {
4087     return GetField<float>(VT_PROJ_CLIP, 0.0f);
4088   }
4089   bool time_major() const {
4090     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
4091   }
4092   bool Verify(flatbuffers::Verifier &verifier) const {
4093     return VerifyTableStart(verifier) &&
4094            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
4095            VerifyField<float>(verifier, VT_CELL_CLIP) &&
4096            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
4097            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
4098            verifier.EndTable();
4099   }
4100   UnidirectionalSequenceLSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4101   void UnPackTo(UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4102   static flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4103 };
4104 
4105 struct UnidirectionalSequenceLSTMOptionsBuilder {
4106   flatbuffers::FlatBufferBuilder &fbb_;
4107   flatbuffers::uoffset_t start_;
4108   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
4109     fbb_.AddElement<int8_t>(UnidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
4110   }
4111   void add_cell_clip(float cell_clip) {
4112     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
4113   }
4114   void add_proj_clip(float proj_clip) {
4115     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
4116   }
4117   void add_time_major(bool time_major) {
4118     fbb_.AddElement<uint8_t>(UnidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
4119   }
4120   explicit UnidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4121         : fbb_(_fbb) {
4122     start_ = fbb_.StartTable();
4123   }
4124   UnidirectionalSequenceLSTMOptionsBuilder &operator=(const UnidirectionalSequenceLSTMOptionsBuilder &);
4125   flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> Finish() {
4126     const auto end = fbb_.EndTable(start_);
4127     auto o = flatbuffers::Offset<UnidirectionalSequenceLSTMOptions>(end);
4128     return o;
4129   }
4130 };
4131 
4132 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(
4133     flatbuffers::FlatBufferBuilder &_fbb,
4134     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
4135     float cell_clip = 0.0f,
4136     float proj_clip = 0.0f,
4137     bool time_major = false) {
4138   UnidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
4139   builder_.add_proj_clip(proj_clip);
4140   builder_.add_cell_clip(cell_clip);
4141   builder_.add_time_major(time_major);
4142   builder_.add_fused_activation_function(fused_activation_function);
4143   return builder_.Finish();
4144 }
4145 
4146 flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4147 
4148 struct BidirectionalSequenceLSTMOptionsT : public flatbuffers::NativeTable {
4149   typedef BidirectionalSequenceLSTMOptions TableType;
4150   ActivationFunctionType fused_activation_function;
4151   float cell_clip;
4152   float proj_clip;
4153   bool merge_outputs;
4154   bool time_major;
4155   BidirectionalSequenceLSTMOptionsT()
4156       : fused_activation_function(ActivationFunctionType_NONE),
4157         cell_clip(0.0f),
4158         proj_clip(0.0f),
4159         merge_outputs(false),
4160         time_major(true) {
4161   }
4162 };
4163 
4164 struct BidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4165   typedef BidirectionalSequenceLSTMOptionsT NativeTableType;
4166   enum {
4167     VT_FUSED_ACTIVATION_FUNCTION = 4,
4168     VT_CELL_CLIP = 6,
4169     VT_PROJ_CLIP = 8,
4170     VT_MERGE_OUTPUTS = 10,
4171     VT_TIME_MAJOR = 12
4172   };
4173   ActivationFunctionType fused_activation_function() const {
4174     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
4175   }
4176   float cell_clip() const {
4177     return GetField<float>(VT_CELL_CLIP, 0.0f);
4178   }
4179   float proj_clip() const {
4180     return GetField<float>(VT_PROJ_CLIP, 0.0f);
4181   }
4182   bool merge_outputs() const {
4183     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
4184   }
4185   bool time_major() const {
4186     return GetField<uint8_t>(VT_TIME_MAJOR, 1) != 0;
4187   }
4188   bool Verify(flatbuffers::Verifier &verifier) const {
4189     return VerifyTableStart(verifier) &&
4190            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
4191            VerifyField<float>(verifier, VT_CELL_CLIP) &&
4192            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
4193            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS) &&
4194            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
4195            verifier.EndTable();
4196   }
4197   BidirectionalSequenceLSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4198   void UnPackTo(BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4199   static flatbuffers::Offset<BidirectionalSequenceLSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4200 };
4201 
4202 struct BidirectionalSequenceLSTMOptionsBuilder {
4203   flatbuffers::FlatBufferBuilder &fbb_;
4204   flatbuffers::uoffset_t start_;
4205   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
4206     fbb_.AddElement<int8_t>(BidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
4207   }
4208   void add_cell_clip(float cell_clip) {
4209     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
4210   }
4211   void add_proj_clip(float proj_clip) {
4212     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
4213   }
4214   void add_merge_outputs(bool merge_outputs) {
4215     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
4216   }
4217   void add_time_major(bool time_major) {
4218     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 1);
4219   }
4220   explicit BidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4221         : fbb_(_fbb) {
4222     start_ = fbb_.StartTable();
4223   }
4224   BidirectionalSequenceLSTMOptionsBuilder &operator=(const BidirectionalSequenceLSTMOptionsBuilder &);
4225   flatbuffers::Offset<BidirectionalSequenceLSTMOptions> Finish() {
4226     const auto end = fbb_.EndTable(start_);
4227     auto o = flatbuffers::Offset<BidirectionalSequenceLSTMOptions>(end);
4228     return o;
4229   }
4230 };
4231 
4232 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(
4233     flatbuffers::FlatBufferBuilder &_fbb,
4234     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE,
4235     float cell_clip = 0.0f,
4236     float proj_clip = 0.0f,
4237     bool merge_outputs = false,
4238     bool time_major = true) {
4239   BidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
4240   builder_.add_proj_clip(proj_clip);
4241   builder_.add_cell_clip(cell_clip);
4242   builder_.add_time_major(time_major);
4243   builder_.add_merge_outputs(merge_outputs);
4244   builder_.add_fused_activation_function(fused_activation_function);
4245   return builder_.Finish();
4246 }
4247 
4248 flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4249 
4250 struct ResizeBilinearOptionsT : public flatbuffers::NativeTable {
4251   typedef ResizeBilinearOptions TableType;
4252   bool align_corners;
4253   ResizeBilinearOptionsT()
4254       : align_corners(false) {
4255   }
4256 };
4257 
4258 struct ResizeBilinearOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4259   typedef ResizeBilinearOptionsT NativeTableType;
4260   enum {
4261     VT_ALIGN_CORNERS = 8
4262   };
4263   bool align_corners() const {
4264     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
4265   }
4266   bool Verify(flatbuffers::Verifier &verifier) const {
4267     return VerifyTableStart(verifier) &&
4268            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS) &&
4269            verifier.EndTable();
4270   }
4271   ResizeBilinearOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4272   void UnPackTo(ResizeBilinearOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4273   static flatbuffers::Offset<ResizeBilinearOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4274 };
4275 
4276 struct ResizeBilinearOptionsBuilder {
4277   flatbuffers::FlatBufferBuilder &fbb_;
4278   flatbuffers::uoffset_t start_;
4279   void add_align_corners(bool align_corners) {
4280     fbb_.AddElement<uint8_t>(ResizeBilinearOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
4281   }
4282   explicit ResizeBilinearOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4283         : fbb_(_fbb) {
4284     start_ = fbb_.StartTable();
4285   }
4286   ResizeBilinearOptionsBuilder &operator=(const ResizeBilinearOptionsBuilder &);
4287   flatbuffers::Offset<ResizeBilinearOptions> Finish() {
4288     const auto end = fbb_.EndTable(start_);
4289     auto o = flatbuffers::Offset<ResizeBilinearOptions>(end);
4290     return o;
4291   }
4292 };
4293 
4294 inline flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(
4295     flatbuffers::FlatBufferBuilder &_fbb,
4296     bool align_corners = false) {
4297   ResizeBilinearOptionsBuilder builder_(_fbb);
4298   builder_.add_align_corners(align_corners);
4299   return builder_.Finish();
4300 }
4301 
4302 flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4303 
4304 struct ResizeNearestNeighborOptionsT : public flatbuffers::NativeTable {
4305   typedef ResizeNearestNeighborOptions TableType;
4306   bool align_corners;
4307   ResizeNearestNeighborOptionsT()
4308       : align_corners(false) {
4309   }
4310 };
4311 
4312 struct ResizeNearestNeighborOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4313   typedef ResizeNearestNeighborOptionsT NativeTableType;
4314   enum {
4315     VT_ALIGN_CORNERS = 4
4316   };
4317   bool align_corners() const {
4318     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
4319   }
4320   bool Verify(flatbuffers::Verifier &verifier) const {
4321     return VerifyTableStart(verifier) &&
4322            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS) &&
4323            verifier.EndTable();
4324   }
4325   ResizeNearestNeighborOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4326   void UnPackTo(ResizeNearestNeighborOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4327   static flatbuffers::Offset<ResizeNearestNeighborOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4328 };
4329 
4330 struct ResizeNearestNeighborOptionsBuilder {
4331   flatbuffers::FlatBufferBuilder &fbb_;
4332   flatbuffers::uoffset_t start_;
4333   void add_align_corners(bool align_corners) {
4334     fbb_.AddElement<uint8_t>(ResizeNearestNeighborOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
4335   }
4336   explicit ResizeNearestNeighborOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4337         : fbb_(_fbb) {
4338     start_ = fbb_.StartTable();
4339   }
4340   ResizeNearestNeighborOptionsBuilder &operator=(const ResizeNearestNeighborOptionsBuilder &);
4341   flatbuffers::Offset<ResizeNearestNeighborOptions> Finish() {
4342     const auto end = fbb_.EndTable(start_);
4343     auto o = flatbuffers::Offset<ResizeNearestNeighborOptions>(end);
4344     return o;
4345   }
4346 };
4347 
4348 inline flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(
4349     flatbuffers::FlatBufferBuilder &_fbb,
4350     bool align_corners = false) {
4351   ResizeNearestNeighborOptionsBuilder builder_(_fbb);
4352   builder_.add_align_corners(align_corners);
4353   return builder_.Finish();
4354 }
4355 
4356 flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4357 
4358 struct CallOptionsT : public flatbuffers::NativeTable {
4359   typedef CallOptions TableType;
4360   uint32_t subgraph;
4361   CallOptionsT()
4362       : subgraph(0) {
4363   }
4364 };
4365 
4366 struct CallOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4367   typedef CallOptionsT NativeTableType;
4368   enum {
4369     VT_SUBGRAPH = 4
4370   };
4371   uint32_t subgraph() const {
4372     return GetField<uint32_t>(VT_SUBGRAPH, 0);
4373   }
4374   bool Verify(flatbuffers::Verifier &verifier) const {
4375     return VerifyTableStart(verifier) &&
4376            VerifyField<uint32_t>(verifier, VT_SUBGRAPH) &&
4377            verifier.EndTable();
4378   }
4379   CallOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4380   void UnPackTo(CallOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4381   static flatbuffers::Offset<CallOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4382 };
4383 
4384 struct CallOptionsBuilder {
4385   flatbuffers::FlatBufferBuilder &fbb_;
4386   flatbuffers::uoffset_t start_;
4387   void add_subgraph(uint32_t subgraph) {
4388     fbb_.AddElement<uint32_t>(CallOptions::VT_SUBGRAPH, subgraph, 0);
4389   }
4390   explicit CallOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4391         : fbb_(_fbb) {
4392     start_ = fbb_.StartTable();
4393   }
4394   CallOptionsBuilder &operator=(const CallOptionsBuilder &);
4395   flatbuffers::Offset<CallOptions> Finish() {
4396     const auto end = fbb_.EndTable(start_);
4397     auto o = flatbuffers::Offset<CallOptions>(end);
4398     return o;
4399   }
4400 };
4401 
4402 inline flatbuffers::Offset<CallOptions> CreateCallOptions(
4403     flatbuffers::FlatBufferBuilder &_fbb,
4404     uint32_t subgraph = 0) {
4405   CallOptionsBuilder builder_(_fbb);
4406   builder_.add_subgraph(subgraph);
4407   return builder_.Finish();
4408 }
4409 
4410 flatbuffers::Offset<CallOptions> CreateCallOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4411 
4412 struct PadOptionsT : public flatbuffers::NativeTable {
4413   typedef PadOptions TableType;
4414   PadOptionsT() {
4415   }
4416 };
4417 
4418 struct PadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4419   typedef PadOptionsT NativeTableType;
4420   bool Verify(flatbuffers::Verifier &verifier) const {
4421     return VerifyTableStart(verifier) &&
4422            verifier.EndTable();
4423   }
4424   PadOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4425   void UnPackTo(PadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4426   static flatbuffers::Offset<PadOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4427 };
4428 
4429 struct PadOptionsBuilder {
4430   flatbuffers::FlatBufferBuilder &fbb_;
4431   flatbuffers::uoffset_t start_;
4432   explicit PadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4433         : fbb_(_fbb) {
4434     start_ = fbb_.StartTable();
4435   }
4436   PadOptionsBuilder &operator=(const PadOptionsBuilder &);
4437   flatbuffers::Offset<PadOptions> Finish() {
4438     const auto end = fbb_.EndTable(start_);
4439     auto o = flatbuffers::Offset<PadOptions>(end);
4440     return o;
4441   }
4442 };
4443 
4444 inline flatbuffers::Offset<PadOptions> CreatePadOptions(
4445     flatbuffers::FlatBufferBuilder &_fbb) {
4446   PadOptionsBuilder builder_(_fbb);
4447   return builder_.Finish();
4448 }
4449 
4450 flatbuffers::Offset<PadOptions> CreatePadOptions(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4451 
4452 struct PadV2OptionsT : public flatbuffers::NativeTable {
4453   typedef PadV2Options TableType;
4454   PadV2OptionsT() {
4455   }
4456 };
4457 
4458 struct PadV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4459   typedef PadV2OptionsT NativeTableType;
4460   bool Verify(flatbuffers::Verifier &verifier) const {
4461     return VerifyTableStart(verifier) &&
4462            verifier.EndTable();
4463   }
4464   PadV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4465   void UnPackTo(PadV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4466   static flatbuffers::Offset<PadV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4467 };
4468 
4469 struct PadV2OptionsBuilder {
4470   flatbuffers::FlatBufferBuilder &fbb_;
4471   flatbuffers::uoffset_t start_;
4472   explicit PadV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4473         : fbb_(_fbb) {
4474     start_ = fbb_.StartTable();
4475   }
4476   PadV2OptionsBuilder &operator=(const PadV2OptionsBuilder &);
4477   flatbuffers::Offset<PadV2Options> Finish() {
4478     const auto end = fbb_.EndTable(start_);
4479     auto o = flatbuffers::Offset<PadV2Options>(end);
4480     return o;
4481   }
4482 };
4483 
4484 inline flatbuffers::Offset<PadV2Options> CreatePadV2Options(
4485     flatbuffers::FlatBufferBuilder &_fbb) {
4486   PadV2OptionsBuilder builder_(_fbb);
4487   return builder_.Finish();
4488 }
4489 
4490 flatbuffers::Offset<PadV2Options> CreatePadV2Options(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4491 
4492 struct ReshapeOptionsT : public flatbuffers::NativeTable {
4493   typedef ReshapeOptions TableType;
4494   std::vector<int32_t> new_shape;
4495   ReshapeOptionsT() {
4496   }
4497 };
4498 
4499 struct ReshapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4500   typedef ReshapeOptionsT NativeTableType;
4501   enum {
4502     VT_NEW_SHAPE = 4
4503   };
4504   const flatbuffers::Vector<int32_t> *new_shape() const {
4505     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NEW_SHAPE);
4506   }
4507   bool Verify(flatbuffers::Verifier &verifier) const {
4508     return VerifyTableStart(verifier) &&
4509            VerifyOffset(verifier, VT_NEW_SHAPE) &&
4510            verifier.VerifyVector(new_shape()) &&
4511            verifier.EndTable();
4512   }
4513   ReshapeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4514   void UnPackTo(ReshapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4515   static flatbuffers::Offset<ReshapeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4516 };
4517 
4518 struct ReshapeOptionsBuilder {
4519   flatbuffers::FlatBufferBuilder &fbb_;
4520   flatbuffers::uoffset_t start_;
4521   void add_new_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape) {
4522     fbb_.AddOffset(ReshapeOptions::VT_NEW_SHAPE, new_shape);
4523   }
4524   explicit ReshapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4525         : fbb_(_fbb) {
4526     start_ = fbb_.StartTable();
4527   }
4528   ReshapeOptionsBuilder &operator=(const ReshapeOptionsBuilder &);
4529   flatbuffers::Offset<ReshapeOptions> Finish() {
4530     const auto end = fbb_.EndTable(start_);
4531     auto o = flatbuffers::Offset<ReshapeOptions>(end);
4532     return o;
4533   }
4534 };
4535 
4536 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(
4537     flatbuffers::FlatBufferBuilder &_fbb,
4538     flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape = 0) {
4539   ReshapeOptionsBuilder builder_(_fbb);
4540   builder_.add_new_shape(new_shape);
4541   return builder_.Finish();
4542 }
4543 
4544 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptionsDirect(
4545     flatbuffers::FlatBufferBuilder &_fbb,
4546     const std::vector<int32_t> *new_shape = nullptr) {
4547   return tflite::CreateReshapeOptions(
4548       _fbb,
4549       new_shape ? _fbb.CreateVector<int32_t>(*new_shape) : 0);
4550 }
4551 
4552 flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4553 
4554 struct SpaceToBatchNDOptionsT : public flatbuffers::NativeTable {
4555   typedef SpaceToBatchNDOptions TableType;
4556   SpaceToBatchNDOptionsT() {
4557   }
4558 };
4559 
4560 struct SpaceToBatchNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4561   typedef SpaceToBatchNDOptionsT NativeTableType;
4562   bool Verify(flatbuffers::Verifier &verifier) const {
4563     return VerifyTableStart(verifier) &&
4564            verifier.EndTable();
4565   }
4566   SpaceToBatchNDOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4567   void UnPackTo(SpaceToBatchNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4568   static flatbuffers::Offset<SpaceToBatchNDOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4569 };
4570 
4571 struct SpaceToBatchNDOptionsBuilder {
4572   flatbuffers::FlatBufferBuilder &fbb_;
4573   flatbuffers::uoffset_t start_;
4574   explicit SpaceToBatchNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4575         : fbb_(_fbb) {
4576     start_ = fbb_.StartTable();
4577   }
4578   SpaceToBatchNDOptionsBuilder &operator=(const SpaceToBatchNDOptionsBuilder &);
4579   flatbuffers::Offset<SpaceToBatchNDOptions> Finish() {
4580     const auto end = fbb_.EndTable(start_);
4581     auto o = flatbuffers::Offset<SpaceToBatchNDOptions>(end);
4582     return o;
4583   }
4584 };
4585 
4586 inline flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(
4587     flatbuffers::FlatBufferBuilder &_fbb) {
4588   SpaceToBatchNDOptionsBuilder builder_(_fbb);
4589   return builder_.Finish();
4590 }
4591 
4592 flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4593 
4594 struct BatchToSpaceNDOptionsT : public flatbuffers::NativeTable {
4595   typedef BatchToSpaceNDOptions TableType;
4596   BatchToSpaceNDOptionsT() {
4597   }
4598 };
4599 
4600 struct BatchToSpaceNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4601   typedef BatchToSpaceNDOptionsT NativeTableType;
4602   bool Verify(flatbuffers::Verifier &verifier) const {
4603     return VerifyTableStart(verifier) &&
4604            verifier.EndTable();
4605   }
4606   BatchToSpaceNDOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4607   void UnPackTo(BatchToSpaceNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4608   static flatbuffers::Offset<BatchToSpaceNDOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4609 };
4610 
4611 struct BatchToSpaceNDOptionsBuilder {
4612   flatbuffers::FlatBufferBuilder &fbb_;
4613   flatbuffers::uoffset_t start_;
4614   explicit BatchToSpaceNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4615         : fbb_(_fbb) {
4616     start_ = fbb_.StartTable();
4617   }
4618   BatchToSpaceNDOptionsBuilder &operator=(const BatchToSpaceNDOptionsBuilder &);
4619   flatbuffers::Offset<BatchToSpaceNDOptions> Finish() {
4620     const auto end = fbb_.EndTable(start_);
4621     auto o = flatbuffers::Offset<BatchToSpaceNDOptions>(end);
4622     return o;
4623   }
4624 };
4625 
4626 inline flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(
4627     flatbuffers::FlatBufferBuilder &_fbb) {
4628   BatchToSpaceNDOptionsBuilder builder_(_fbb);
4629   return builder_.Finish();
4630 }
4631 
4632 flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4633 
4634 struct SkipGramOptionsT : public flatbuffers::NativeTable {
4635   typedef SkipGramOptions TableType;
4636   int32_t ngram_size;
4637   int32_t max_skip_size;
4638   bool include_all_ngrams;
4639   SkipGramOptionsT()
4640       : ngram_size(0),
4641         max_skip_size(0),
4642         include_all_ngrams(false) {
4643   }
4644 };
4645 
4646 struct SkipGramOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4647   typedef SkipGramOptionsT NativeTableType;
4648   enum {
4649     VT_NGRAM_SIZE = 4,
4650     VT_MAX_SKIP_SIZE = 6,
4651     VT_INCLUDE_ALL_NGRAMS = 8
4652   };
4653   int32_t ngram_size() const {
4654     return GetField<int32_t>(VT_NGRAM_SIZE, 0);
4655   }
4656   int32_t max_skip_size() const {
4657     return GetField<int32_t>(VT_MAX_SKIP_SIZE, 0);
4658   }
4659   bool include_all_ngrams() const {
4660     return GetField<uint8_t>(VT_INCLUDE_ALL_NGRAMS, 0) != 0;
4661   }
4662   bool Verify(flatbuffers::Verifier &verifier) const {
4663     return VerifyTableStart(verifier) &&
4664            VerifyField<int32_t>(verifier, VT_NGRAM_SIZE) &&
4665            VerifyField<int32_t>(verifier, VT_MAX_SKIP_SIZE) &&
4666            VerifyField<uint8_t>(verifier, VT_INCLUDE_ALL_NGRAMS) &&
4667            verifier.EndTable();
4668   }
4669   SkipGramOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4670   void UnPackTo(SkipGramOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4671   static flatbuffers::Offset<SkipGramOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4672 };
4673 
4674 struct SkipGramOptionsBuilder {
4675   flatbuffers::FlatBufferBuilder &fbb_;
4676   flatbuffers::uoffset_t start_;
4677   void add_ngram_size(int32_t ngram_size) {
4678     fbb_.AddElement<int32_t>(SkipGramOptions::VT_NGRAM_SIZE, ngram_size, 0);
4679   }
4680   void add_max_skip_size(int32_t max_skip_size) {
4681     fbb_.AddElement<int32_t>(SkipGramOptions::VT_MAX_SKIP_SIZE, max_skip_size, 0);
4682   }
4683   void add_include_all_ngrams(bool include_all_ngrams) {
4684     fbb_.AddElement<uint8_t>(SkipGramOptions::VT_INCLUDE_ALL_NGRAMS, static_cast<uint8_t>(include_all_ngrams), 0);
4685   }
4686   explicit SkipGramOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4687         : fbb_(_fbb) {
4688     start_ = fbb_.StartTable();
4689   }
4690   SkipGramOptionsBuilder &operator=(const SkipGramOptionsBuilder &);
4691   flatbuffers::Offset<SkipGramOptions> Finish() {
4692     const auto end = fbb_.EndTable(start_);
4693     auto o = flatbuffers::Offset<SkipGramOptions>(end);
4694     return o;
4695   }
4696 };
4697 
4698 inline flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(
4699     flatbuffers::FlatBufferBuilder &_fbb,
4700     int32_t ngram_size = 0,
4701     int32_t max_skip_size = 0,
4702     bool include_all_ngrams = false) {
4703   SkipGramOptionsBuilder builder_(_fbb);
4704   builder_.add_max_skip_size(max_skip_size);
4705   builder_.add_ngram_size(ngram_size);
4706   builder_.add_include_all_ngrams(include_all_ngrams);
4707   return builder_.Finish();
4708 }
4709 
4710 flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4711 
4712 struct SpaceToDepthOptionsT : public flatbuffers::NativeTable {
4713   typedef SpaceToDepthOptions TableType;
4714   int32_t block_size;
4715   SpaceToDepthOptionsT()
4716       : block_size(0) {
4717   }
4718 };
4719 
4720 struct SpaceToDepthOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4721   typedef SpaceToDepthOptionsT NativeTableType;
4722   enum {
4723     VT_BLOCK_SIZE = 4
4724   };
4725   int32_t block_size() const {
4726     return GetField<int32_t>(VT_BLOCK_SIZE, 0);
4727   }
4728   bool Verify(flatbuffers::Verifier &verifier) const {
4729     return VerifyTableStart(verifier) &&
4730            VerifyField<int32_t>(verifier, VT_BLOCK_SIZE) &&
4731            verifier.EndTable();
4732   }
4733   SpaceToDepthOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4734   void UnPackTo(SpaceToDepthOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4735   static flatbuffers::Offset<SpaceToDepthOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4736 };
4737 
4738 struct SpaceToDepthOptionsBuilder {
4739   flatbuffers::FlatBufferBuilder &fbb_;
4740   flatbuffers::uoffset_t start_;
4741   void add_block_size(int32_t block_size) {
4742     fbb_.AddElement<int32_t>(SpaceToDepthOptions::VT_BLOCK_SIZE, block_size, 0);
4743   }
4744   explicit SpaceToDepthOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4745         : fbb_(_fbb) {
4746     start_ = fbb_.StartTable();
4747   }
4748   SpaceToDepthOptionsBuilder &operator=(const SpaceToDepthOptionsBuilder &);
4749   flatbuffers::Offset<SpaceToDepthOptions> Finish() {
4750     const auto end = fbb_.EndTable(start_);
4751     auto o = flatbuffers::Offset<SpaceToDepthOptions>(end);
4752     return o;
4753   }
4754 };
4755 
4756 inline flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(
4757     flatbuffers::FlatBufferBuilder &_fbb,
4758     int32_t block_size = 0) {
4759   SpaceToDepthOptionsBuilder builder_(_fbb);
4760   builder_.add_block_size(block_size);
4761   return builder_.Finish();
4762 }
4763 
4764 flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4765 
4766 struct SubOptionsT : public flatbuffers::NativeTable {
4767   typedef SubOptions TableType;
4768   ActivationFunctionType fused_activation_function;
4769   SubOptionsT()
4770       : fused_activation_function(ActivationFunctionType_NONE) {
4771   }
4772 };
4773 
4774 struct SubOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4775   typedef SubOptionsT NativeTableType;
4776   enum {
4777     VT_FUSED_ACTIVATION_FUNCTION = 4
4778   };
4779   ActivationFunctionType fused_activation_function() const {
4780     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
4781   }
4782   bool Verify(flatbuffers::Verifier &verifier) const {
4783     return VerifyTableStart(verifier) &&
4784            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
4785            verifier.EndTable();
4786   }
4787   SubOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4788   void UnPackTo(SubOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4789   static flatbuffers::Offset<SubOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4790 };
4791 
4792 struct SubOptionsBuilder {
4793   flatbuffers::FlatBufferBuilder &fbb_;
4794   flatbuffers::uoffset_t start_;
4795   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
4796     fbb_.AddElement<int8_t>(SubOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
4797   }
4798   explicit SubOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4799         : fbb_(_fbb) {
4800     start_ = fbb_.StartTable();
4801   }
4802   SubOptionsBuilder &operator=(const SubOptionsBuilder &);
4803   flatbuffers::Offset<SubOptions> Finish() {
4804     const auto end = fbb_.EndTable(start_);
4805     auto o = flatbuffers::Offset<SubOptions>(end);
4806     return o;
4807   }
4808 };
4809 
4810 inline flatbuffers::Offset<SubOptions> CreateSubOptions(
4811     flatbuffers::FlatBufferBuilder &_fbb,
4812     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
4813   SubOptionsBuilder builder_(_fbb);
4814   builder_.add_fused_activation_function(fused_activation_function);
4815   return builder_.Finish();
4816 }
4817 
4818 flatbuffers::Offset<SubOptions> CreateSubOptions(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4819 
4820 struct DivOptionsT : public flatbuffers::NativeTable {
4821   typedef DivOptions TableType;
4822   ActivationFunctionType fused_activation_function;
4823   DivOptionsT()
4824       : fused_activation_function(ActivationFunctionType_NONE) {
4825   }
4826 };
4827 
4828 struct DivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4829   typedef DivOptionsT NativeTableType;
4830   enum {
4831     VT_FUSED_ACTIVATION_FUNCTION = 4
4832   };
4833   ActivationFunctionType fused_activation_function() const {
4834     return static_cast<ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
4835   }
4836   bool Verify(flatbuffers::Verifier &verifier) const {
4837     return VerifyTableStart(verifier) &&
4838            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
4839            verifier.EndTable();
4840   }
4841   DivOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4842   void UnPackTo(DivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4843   static flatbuffers::Offset<DivOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4844 };
4845 
4846 struct DivOptionsBuilder {
4847   flatbuffers::FlatBufferBuilder &fbb_;
4848   flatbuffers::uoffset_t start_;
4849   void add_fused_activation_function(ActivationFunctionType fused_activation_function) {
4850     fbb_.AddElement<int8_t>(DivOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
4851   }
4852   explicit DivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4853         : fbb_(_fbb) {
4854     start_ = fbb_.StartTable();
4855   }
4856   DivOptionsBuilder &operator=(const DivOptionsBuilder &);
4857   flatbuffers::Offset<DivOptions> Finish() {
4858     const auto end = fbb_.EndTable(start_);
4859     auto o = flatbuffers::Offset<DivOptions>(end);
4860     return o;
4861   }
4862 };
4863 
4864 inline flatbuffers::Offset<DivOptions> CreateDivOptions(
4865     flatbuffers::FlatBufferBuilder &_fbb,
4866     ActivationFunctionType fused_activation_function = ActivationFunctionType_NONE) {
4867   DivOptionsBuilder builder_(_fbb);
4868   builder_.add_fused_activation_function(fused_activation_function);
4869   return builder_.Finish();
4870 }
4871 
4872 flatbuffers::Offset<DivOptions> CreateDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4873 
4874 struct TopKV2OptionsT : public flatbuffers::NativeTable {
4875   typedef TopKV2Options TableType;
4876   TopKV2OptionsT() {
4877   }
4878 };
4879 
4880 struct TopKV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4881   typedef TopKV2OptionsT NativeTableType;
4882   bool Verify(flatbuffers::Verifier &verifier) const {
4883     return VerifyTableStart(verifier) &&
4884            verifier.EndTable();
4885   }
4886   TopKV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4887   void UnPackTo(TopKV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4888   static flatbuffers::Offset<TopKV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4889 };
4890 
4891 struct TopKV2OptionsBuilder {
4892   flatbuffers::FlatBufferBuilder &fbb_;
4893   flatbuffers::uoffset_t start_;
4894   explicit TopKV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4895         : fbb_(_fbb) {
4896     start_ = fbb_.StartTable();
4897   }
4898   TopKV2OptionsBuilder &operator=(const TopKV2OptionsBuilder &);
4899   flatbuffers::Offset<TopKV2Options> Finish() {
4900     const auto end = fbb_.EndTable(start_);
4901     auto o = flatbuffers::Offset<TopKV2Options>(end);
4902     return o;
4903   }
4904 };
4905 
4906 inline flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(
4907     flatbuffers::FlatBufferBuilder &_fbb) {
4908   TopKV2OptionsBuilder builder_(_fbb);
4909   return builder_.Finish();
4910 }
4911 
4912 flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4913 
4914 struct EmbeddingLookupSparseOptionsT : public flatbuffers::NativeTable {
4915   typedef EmbeddingLookupSparseOptions TableType;
4916   CombinerType combiner;
4917   EmbeddingLookupSparseOptionsT()
4918       : combiner(CombinerType_SUM) {
4919   }
4920 };
4921 
4922 struct EmbeddingLookupSparseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4923   typedef EmbeddingLookupSparseOptionsT NativeTableType;
4924   enum {
4925     VT_COMBINER = 4
4926   };
4927   CombinerType combiner() const {
4928     return static_cast<CombinerType>(GetField<int8_t>(VT_COMBINER, 0));
4929   }
4930   bool Verify(flatbuffers::Verifier &verifier) const {
4931     return VerifyTableStart(verifier) &&
4932            VerifyField<int8_t>(verifier, VT_COMBINER) &&
4933            verifier.EndTable();
4934   }
4935   EmbeddingLookupSparseOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4936   void UnPackTo(EmbeddingLookupSparseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4937   static flatbuffers::Offset<EmbeddingLookupSparseOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4938 };
4939 
4940 struct EmbeddingLookupSparseOptionsBuilder {
4941   flatbuffers::FlatBufferBuilder &fbb_;
4942   flatbuffers::uoffset_t start_;
4943   void add_combiner(CombinerType combiner) {
4944     fbb_.AddElement<int8_t>(EmbeddingLookupSparseOptions::VT_COMBINER, static_cast<int8_t>(combiner), 0);
4945   }
4946   explicit EmbeddingLookupSparseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4947         : fbb_(_fbb) {
4948     start_ = fbb_.StartTable();
4949   }
4950   EmbeddingLookupSparseOptionsBuilder &operator=(const EmbeddingLookupSparseOptionsBuilder &);
4951   flatbuffers::Offset<EmbeddingLookupSparseOptions> Finish() {
4952     const auto end = fbb_.EndTable(start_);
4953     auto o = flatbuffers::Offset<EmbeddingLookupSparseOptions>(end);
4954     return o;
4955   }
4956 };
4957 
4958 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(
4959     flatbuffers::FlatBufferBuilder &_fbb,
4960     CombinerType combiner = CombinerType_SUM) {
4961   EmbeddingLookupSparseOptionsBuilder builder_(_fbb);
4962   builder_.add_combiner(combiner);
4963   return builder_.Finish();
4964 }
4965 
4966 flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4967 
4968 struct GatherOptionsT : public flatbuffers::NativeTable {
4969   typedef GatherOptions TableType;
4970   int32_t axis;
4971   GatherOptionsT()
4972       : axis(0) {
4973   }
4974 };
4975 
4976 struct GatherOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4977   typedef GatherOptionsT NativeTableType;
4978   enum {
4979     VT_AXIS = 4
4980   };
4981   int32_t axis() const {
4982     return GetField<int32_t>(VT_AXIS, 0);
4983   }
4984   bool Verify(flatbuffers::Verifier &verifier) const {
4985     return VerifyTableStart(verifier) &&
4986            VerifyField<int32_t>(verifier, VT_AXIS) &&
4987            verifier.EndTable();
4988   }
4989   GatherOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4990   void UnPackTo(GatherOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4991   static flatbuffers::Offset<GatherOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4992 };
4993 
4994 struct GatherOptionsBuilder {
4995   flatbuffers::FlatBufferBuilder &fbb_;
4996   flatbuffers::uoffset_t start_;
4997   void add_axis(int32_t axis) {
4998     fbb_.AddElement<int32_t>(GatherOptions::VT_AXIS, axis, 0);
4999   }
5000   explicit GatherOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5001         : fbb_(_fbb) {
5002     start_ = fbb_.StartTable();
5003   }
5004   GatherOptionsBuilder &operator=(const GatherOptionsBuilder &);
5005   flatbuffers::Offset<GatherOptions> Finish() {
5006     const auto end = fbb_.EndTable(start_);
5007     auto o = flatbuffers::Offset<GatherOptions>(end);
5008     return o;
5009   }
5010 };
5011 
5012 inline flatbuffers::Offset<GatherOptions> CreateGatherOptions(
5013     flatbuffers::FlatBufferBuilder &_fbb,
5014     int32_t axis = 0) {
5015   GatherOptionsBuilder builder_(_fbb);
5016   builder_.add_axis(axis);
5017   return builder_.Finish();
5018 }
5019 
5020 flatbuffers::Offset<GatherOptions> CreateGatherOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5021 
5022 struct TransposeOptionsT : public flatbuffers::NativeTable {
5023   typedef TransposeOptions TableType;
5024   TransposeOptionsT() {
5025   }
5026 };
5027 
5028 struct TransposeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5029   typedef TransposeOptionsT NativeTableType;
5030   bool Verify(flatbuffers::Verifier &verifier) const {
5031     return VerifyTableStart(verifier) &&
5032            verifier.EndTable();
5033   }
5034   TransposeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5035   void UnPackTo(TransposeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5036   static flatbuffers::Offset<TransposeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5037 };
5038 
5039 struct TransposeOptionsBuilder {
5040   flatbuffers::FlatBufferBuilder &fbb_;
5041   flatbuffers::uoffset_t start_;
5042   explicit TransposeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5043         : fbb_(_fbb) {
5044     start_ = fbb_.StartTable();
5045   }
5046   TransposeOptionsBuilder &operator=(const TransposeOptionsBuilder &);
5047   flatbuffers::Offset<TransposeOptions> Finish() {
5048     const auto end = fbb_.EndTable(start_);
5049     auto o = flatbuffers::Offset<TransposeOptions>(end);
5050     return o;
5051   }
5052 };
5053 
5054 inline flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(
5055     flatbuffers::FlatBufferBuilder &_fbb) {
5056   TransposeOptionsBuilder builder_(_fbb);
5057   return builder_.Finish();
5058 }
5059 
5060 flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5061 
5062 struct ExpOptionsT : public flatbuffers::NativeTable {
5063   typedef ExpOptions TableType;
5064   ExpOptionsT() {
5065   }
5066 };
5067 
5068 struct ExpOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5069   typedef ExpOptionsT NativeTableType;
5070   bool Verify(flatbuffers::Verifier &verifier) const {
5071     return VerifyTableStart(verifier) &&
5072            verifier.EndTable();
5073   }
5074   ExpOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5075   void UnPackTo(ExpOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5076   static flatbuffers::Offset<ExpOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5077 };
5078 
5079 struct ExpOptionsBuilder {
5080   flatbuffers::FlatBufferBuilder &fbb_;
5081   flatbuffers::uoffset_t start_;
5082   explicit ExpOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5083         : fbb_(_fbb) {
5084     start_ = fbb_.StartTable();
5085   }
5086   ExpOptionsBuilder &operator=(const ExpOptionsBuilder &);
5087   flatbuffers::Offset<ExpOptions> Finish() {
5088     const auto end = fbb_.EndTable(start_);
5089     auto o = flatbuffers::Offset<ExpOptions>(end);
5090     return o;
5091   }
5092 };
5093 
5094 inline flatbuffers::Offset<ExpOptions> CreateExpOptions(
5095     flatbuffers::FlatBufferBuilder &_fbb) {
5096   ExpOptionsBuilder builder_(_fbb);
5097   return builder_.Finish();
5098 }
5099 
5100 flatbuffers::Offset<ExpOptions> CreateExpOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5101 
5102 struct CosOptionsT : public flatbuffers::NativeTable {
5103   typedef CosOptions TableType;
5104   CosOptionsT() {
5105   }
5106 };
5107 
5108 struct CosOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5109   typedef CosOptionsT NativeTableType;
5110   bool Verify(flatbuffers::Verifier &verifier) const {
5111     return VerifyTableStart(verifier) &&
5112            verifier.EndTable();
5113   }
5114   CosOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5115   void UnPackTo(CosOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5116   static flatbuffers::Offset<CosOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5117 };
5118 
5119 struct CosOptionsBuilder {
5120   flatbuffers::FlatBufferBuilder &fbb_;
5121   flatbuffers::uoffset_t start_;
5122   explicit CosOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5123         : fbb_(_fbb) {
5124     start_ = fbb_.StartTable();
5125   }
5126   CosOptionsBuilder &operator=(const CosOptionsBuilder &);
5127   flatbuffers::Offset<CosOptions> Finish() {
5128     const auto end = fbb_.EndTable(start_);
5129     auto o = flatbuffers::Offset<CosOptions>(end);
5130     return o;
5131   }
5132 };
5133 
5134 inline flatbuffers::Offset<CosOptions> CreateCosOptions(
5135     flatbuffers::FlatBufferBuilder &_fbb) {
5136   CosOptionsBuilder builder_(_fbb);
5137   return builder_.Finish();
5138 }
5139 
5140 flatbuffers::Offset<CosOptions> CreateCosOptions(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5141 
5142 struct ReducerOptionsT : public flatbuffers::NativeTable {
5143   typedef ReducerOptions TableType;
5144   bool keep_dims;
5145   ReducerOptionsT()
5146       : keep_dims(false) {
5147   }
5148 };
5149 
5150 struct ReducerOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5151   typedef ReducerOptionsT NativeTableType;
5152   enum {
5153     VT_KEEP_DIMS = 4
5154   };
5155   bool keep_dims() const {
5156     return GetField<uint8_t>(VT_KEEP_DIMS, 0) != 0;
5157   }
5158   bool Verify(flatbuffers::Verifier &verifier) const {
5159     return VerifyTableStart(verifier) &&
5160            VerifyField<uint8_t>(verifier, VT_KEEP_DIMS) &&
5161            verifier.EndTable();
5162   }
5163   ReducerOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5164   void UnPackTo(ReducerOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5165   static flatbuffers::Offset<ReducerOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5166 };
5167 
5168 struct ReducerOptionsBuilder {
5169   flatbuffers::FlatBufferBuilder &fbb_;
5170   flatbuffers::uoffset_t start_;
5171   void add_keep_dims(bool keep_dims) {
5172     fbb_.AddElement<uint8_t>(ReducerOptions::VT_KEEP_DIMS, static_cast<uint8_t>(keep_dims), 0);
5173   }
5174   explicit ReducerOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5175         : fbb_(_fbb) {
5176     start_ = fbb_.StartTable();
5177   }
5178   ReducerOptionsBuilder &operator=(const ReducerOptionsBuilder &);
5179   flatbuffers::Offset<ReducerOptions> Finish() {
5180     const auto end = fbb_.EndTable(start_);
5181     auto o = flatbuffers::Offset<ReducerOptions>(end);
5182     return o;
5183   }
5184 };
5185 
5186 inline flatbuffers::Offset<ReducerOptions> CreateReducerOptions(
5187     flatbuffers::FlatBufferBuilder &_fbb,
5188     bool keep_dims = false) {
5189   ReducerOptionsBuilder builder_(_fbb);
5190   builder_.add_keep_dims(keep_dims);
5191   return builder_.Finish();
5192 }
5193 
5194 flatbuffers::Offset<ReducerOptions> CreateReducerOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5195 
5196 struct SqueezeOptionsT : public flatbuffers::NativeTable {
5197   typedef SqueezeOptions TableType;
5198   std::vector<int32_t> squeeze_dims;
5199   SqueezeOptionsT() {
5200   }
5201 };
5202 
5203 struct SqueezeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5204   typedef SqueezeOptionsT NativeTableType;
5205   enum {
5206     VT_SQUEEZE_DIMS = 4
5207   };
5208   const flatbuffers::Vector<int32_t> *squeeze_dims() const {
5209     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SQUEEZE_DIMS);
5210   }
5211   bool Verify(flatbuffers::Verifier &verifier) const {
5212     return VerifyTableStart(verifier) &&
5213            VerifyOffset(verifier, VT_SQUEEZE_DIMS) &&
5214            verifier.VerifyVector(squeeze_dims()) &&
5215            verifier.EndTable();
5216   }
5217   SqueezeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5218   void UnPackTo(SqueezeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5219   static flatbuffers::Offset<SqueezeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5220 };
5221 
5222 struct SqueezeOptionsBuilder {
5223   flatbuffers::FlatBufferBuilder &fbb_;
5224   flatbuffers::uoffset_t start_;
5225   void add_squeeze_dims(flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims) {
5226     fbb_.AddOffset(SqueezeOptions::VT_SQUEEZE_DIMS, squeeze_dims);
5227   }
5228   explicit SqueezeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5229         : fbb_(_fbb) {
5230     start_ = fbb_.StartTable();
5231   }
5232   SqueezeOptionsBuilder &operator=(const SqueezeOptionsBuilder &);
5233   flatbuffers::Offset<SqueezeOptions> Finish() {
5234     const auto end = fbb_.EndTable(start_);
5235     auto o = flatbuffers::Offset<SqueezeOptions>(end);
5236     return o;
5237   }
5238 };
5239 
5240 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(
5241     flatbuffers::FlatBufferBuilder &_fbb,
5242     flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims = 0) {
5243   SqueezeOptionsBuilder builder_(_fbb);
5244   builder_.add_squeeze_dims(squeeze_dims);
5245   return builder_.Finish();
5246 }
5247 
5248 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptionsDirect(
5249     flatbuffers::FlatBufferBuilder &_fbb,
5250     const std::vector<int32_t> *squeeze_dims = nullptr) {
5251   return tflite::CreateSqueezeOptions(
5252       _fbb,
5253       squeeze_dims ? _fbb.CreateVector<int32_t>(*squeeze_dims) : 0);
5254 }
5255 
5256 flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5257 
5258 struct SplitOptionsT : public flatbuffers::NativeTable {
5259   typedef SplitOptions TableType;
5260   int32_t num_splits;
5261   SplitOptionsT()
5262       : num_splits(0) {
5263   }
5264 };
5265 
5266 struct SplitOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5267   typedef SplitOptionsT NativeTableType;
5268   enum {
5269     VT_NUM_SPLITS = 4
5270   };
5271   int32_t num_splits() const {
5272     return GetField<int32_t>(VT_NUM_SPLITS, 0);
5273   }
5274   bool Verify(flatbuffers::Verifier &verifier) const {
5275     return VerifyTableStart(verifier) &&
5276            VerifyField<int32_t>(verifier, VT_NUM_SPLITS) &&
5277            verifier.EndTable();
5278   }
5279   SplitOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5280   void UnPackTo(SplitOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5281   static flatbuffers::Offset<SplitOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5282 };
5283 
5284 struct SplitOptionsBuilder {
5285   flatbuffers::FlatBufferBuilder &fbb_;
5286   flatbuffers::uoffset_t start_;
5287   void add_num_splits(int32_t num_splits) {
5288     fbb_.AddElement<int32_t>(SplitOptions::VT_NUM_SPLITS, num_splits, 0);
5289   }
5290   explicit SplitOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5291         : fbb_(_fbb) {
5292     start_ = fbb_.StartTable();
5293   }
5294   SplitOptionsBuilder &operator=(const SplitOptionsBuilder &);
5295   flatbuffers::Offset<SplitOptions> Finish() {
5296     const auto end = fbb_.EndTable(start_);
5297     auto o = flatbuffers::Offset<SplitOptions>(end);
5298     return o;
5299   }
5300 };
5301 
5302 inline flatbuffers::Offset<SplitOptions> CreateSplitOptions(
5303     flatbuffers::FlatBufferBuilder &_fbb,
5304     int32_t num_splits = 0) {
5305   SplitOptionsBuilder builder_(_fbb);
5306   builder_.add_num_splits(num_splits);
5307   return builder_.Finish();
5308 }
5309 
5310 flatbuffers::Offset<SplitOptions> CreateSplitOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5311 
5312 struct SplitVOptionsT : public flatbuffers::NativeTable {
5313   typedef SplitVOptions TableType;
5314   int32_t num_splits;
5315   SplitVOptionsT()
5316       : num_splits(0) {
5317   }
5318 };
5319 
5320 struct SplitVOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5321   typedef SplitVOptionsT NativeTableType;
5322   enum {
5323     VT_NUM_SPLITS = 4
5324   };
5325   int32_t num_splits() const {
5326     return GetField<int32_t>(VT_NUM_SPLITS, 0);
5327   }
5328   bool Verify(flatbuffers::Verifier &verifier) const {
5329     return VerifyTableStart(verifier) &&
5330            VerifyField<int32_t>(verifier, VT_NUM_SPLITS) &&
5331            verifier.EndTable();
5332   }
5333   SplitVOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5334   void UnPackTo(SplitVOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5335   static flatbuffers::Offset<SplitVOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5336 };
5337 
5338 struct SplitVOptionsBuilder {
5339   flatbuffers::FlatBufferBuilder &fbb_;
5340   flatbuffers::uoffset_t start_;
5341   void add_num_splits(int32_t num_splits) {
5342     fbb_.AddElement<int32_t>(SplitVOptions::VT_NUM_SPLITS, num_splits, 0);
5343   }
5344   explicit SplitVOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5345         : fbb_(_fbb) {
5346     start_ = fbb_.StartTable();
5347   }
5348   SplitVOptionsBuilder &operator=(const SplitVOptionsBuilder &);
5349   flatbuffers::Offset<SplitVOptions> Finish() {
5350     const auto end = fbb_.EndTable(start_);
5351     auto o = flatbuffers::Offset<SplitVOptions>(end);
5352     return o;
5353   }
5354 };
5355 
5356 inline flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(
5357     flatbuffers::FlatBufferBuilder &_fbb,
5358     int32_t num_splits = 0) {
5359   SplitVOptionsBuilder builder_(_fbb);
5360   builder_.add_num_splits(num_splits);
5361   return builder_.Finish();
5362 }
5363 
5364 flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5365 
5366 struct StridedSliceOptionsT : public flatbuffers::NativeTable {
5367   typedef StridedSliceOptions TableType;
5368   int32_t begin_mask;
5369   int32_t end_mask;
5370   int32_t ellipsis_mask;
5371   int32_t new_axis_mask;
5372   int32_t shrink_axis_mask;
5373   StridedSliceOptionsT()
5374       : begin_mask(0),
5375         end_mask(0),
5376         ellipsis_mask(0),
5377         new_axis_mask(0),
5378         shrink_axis_mask(0) {
5379   }
5380 };
5381 
5382 struct StridedSliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5383   typedef StridedSliceOptionsT NativeTableType;
5384   enum {
5385     VT_BEGIN_MASK = 4,
5386     VT_END_MASK = 6,
5387     VT_ELLIPSIS_MASK = 8,
5388     VT_NEW_AXIS_MASK = 10,
5389     VT_SHRINK_AXIS_MASK = 12
5390   };
5391   int32_t begin_mask() const {
5392     return GetField<int32_t>(VT_BEGIN_MASK, 0);
5393   }
5394   int32_t end_mask() const {
5395     return GetField<int32_t>(VT_END_MASK, 0);
5396   }
5397   int32_t ellipsis_mask() const {
5398     return GetField<int32_t>(VT_ELLIPSIS_MASK, 0);
5399   }
5400   int32_t new_axis_mask() const {
5401     return GetField<int32_t>(VT_NEW_AXIS_MASK, 0);
5402   }
5403   int32_t shrink_axis_mask() const {
5404     return GetField<int32_t>(VT_SHRINK_AXIS_MASK, 0);
5405   }
5406   bool Verify(flatbuffers::Verifier &verifier) const {
5407     return VerifyTableStart(verifier) &&
5408            VerifyField<int32_t>(verifier, VT_BEGIN_MASK) &&
5409            VerifyField<int32_t>(verifier, VT_END_MASK) &&
5410            VerifyField<int32_t>(verifier, VT_ELLIPSIS_MASK) &&
5411            VerifyField<int32_t>(verifier, VT_NEW_AXIS_MASK) &&
5412            VerifyField<int32_t>(verifier, VT_SHRINK_AXIS_MASK) &&
5413            verifier.EndTable();
5414   }
5415   StridedSliceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5416   void UnPackTo(StridedSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5417   static flatbuffers::Offset<StridedSliceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5418 };
5419 
5420 struct StridedSliceOptionsBuilder {
5421   flatbuffers::FlatBufferBuilder &fbb_;
5422   flatbuffers::uoffset_t start_;
5423   void add_begin_mask(int32_t begin_mask) {
5424     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_BEGIN_MASK, begin_mask, 0);
5425   }
5426   void add_end_mask(int32_t end_mask) {
5427     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_END_MASK, end_mask, 0);
5428   }
5429   void add_ellipsis_mask(int32_t ellipsis_mask) {
5430     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_ELLIPSIS_MASK, ellipsis_mask, 0);
5431   }
5432   void add_new_axis_mask(int32_t new_axis_mask) {
5433     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_NEW_AXIS_MASK, new_axis_mask, 0);
5434   }
5435   void add_shrink_axis_mask(int32_t shrink_axis_mask) {
5436     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_SHRINK_AXIS_MASK, shrink_axis_mask, 0);
5437   }
5438   explicit StridedSliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5439         : fbb_(_fbb) {
5440     start_ = fbb_.StartTable();
5441   }
5442   StridedSliceOptionsBuilder &operator=(const StridedSliceOptionsBuilder &);
5443   flatbuffers::Offset<StridedSliceOptions> Finish() {
5444     const auto end = fbb_.EndTable(start_);
5445     auto o = flatbuffers::Offset<StridedSliceOptions>(end);
5446     return o;
5447   }
5448 };
5449 
5450 inline flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(
5451     flatbuffers::FlatBufferBuilder &_fbb,
5452     int32_t begin_mask = 0,
5453     int32_t end_mask = 0,
5454     int32_t ellipsis_mask = 0,
5455     int32_t new_axis_mask = 0,
5456     int32_t shrink_axis_mask = 0) {
5457   StridedSliceOptionsBuilder builder_(_fbb);
5458   builder_.add_shrink_axis_mask(shrink_axis_mask);
5459   builder_.add_new_axis_mask(new_axis_mask);
5460   builder_.add_ellipsis_mask(ellipsis_mask);
5461   builder_.add_end_mask(end_mask);
5462   builder_.add_begin_mask(begin_mask);
5463   return builder_.Finish();
5464 }
5465 
5466 flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5467 
5468 struct LogSoftmaxOptionsT : public flatbuffers::NativeTable {
5469   typedef LogSoftmaxOptions TableType;
5470   LogSoftmaxOptionsT() {
5471   }
5472 };
5473 
5474 struct LogSoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5475   typedef LogSoftmaxOptionsT NativeTableType;
5476   bool Verify(flatbuffers::Verifier &verifier) const {
5477     return VerifyTableStart(verifier) &&
5478            verifier.EndTable();
5479   }
5480   LogSoftmaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5481   void UnPackTo(LogSoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5482   static flatbuffers::Offset<LogSoftmaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5483 };
5484 
5485 struct LogSoftmaxOptionsBuilder {
5486   flatbuffers::FlatBufferBuilder &fbb_;
5487   flatbuffers::uoffset_t start_;
5488   explicit LogSoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5489         : fbb_(_fbb) {
5490     start_ = fbb_.StartTable();
5491   }
5492   LogSoftmaxOptionsBuilder &operator=(const LogSoftmaxOptionsBuilder &);
5493   flatbuffers::Offset<LogSoftmaxOptions> Finish() {
5494     const auto end = fbb_.EndTable(start_);
5495     auto o = flatbuffers::Offset<LogSoftmaxOptions>(end);
5496     return o;
5497   }
5498 };
5499 
5500 inline flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(
5501     flatbuffers::FlatBufferBuilder &_fbb) {
5502   LogSoftmaxOptionsBuilder builder_(_fbb);
5503   return builder_.Finish();
5504 }
5505 
5506 flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5507 
5508 struct CastOptionsT : public flatbuffers::NativeTable {
5509   typedef CastOptions TableType;
5510   TensorType in_data_type;
5511   TensorType out_data_type;
5512   CastOptionsT()
5513       : in_data_type(TensorType_FLOAT32),
5514         out_data_type(TensorType_FLOAT32) {
5515   }
5516 };
5517 
5518 struct CastOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5519   typedef CastOptionsT NativeTableType;
5520   enum {
5521     VT_IN_DATA_TYPE = 4,
5522     VT_OUT_DATA_TYPE = 6
5523   };
5524   TensorType in_data_type() const {
5525     return static_cast<TensorType>(GetField<int8_t>(VT_IN_DATA_TYPE, 0));
5526   }
5527   TensorType out_data_type() const {
5528     return static_cast<TensorType>(GetField<int8_t>(VT_OUT_DATA_TYPE, 0));
5529   }
5530   bool Verify(flatbuffers::Verifier &verifier) const {
5531     return VerifyTableStart(verifier) &&
5532            VerifyField<int8_t>(verifier, VT_IN_DATA_TYPE) &&
5533            VerifyField<int8_t>(verifier, VT_OUT_DATA_TYPE) &&
5534            verifier.EndTable();
5535   }
5536   CastOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5537   void UnPackTo(CastOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5538   static flatbuffers::Offset<CastOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5539 };
5540 
5541 struct CastOptionsBuilder {
5542   flatbuffers::FlatBufferBuilder &fbb_;
5543   flatbuffers::uoffset_t start_;
5544   void add_in_data_type(TensorType in_data_type) {
5545     fbb_.AddElement<int8_t>(CastOptions::VT_IN_DATA_TYPE, static_cast<int8_t>(in_data_type), 0);
5546   }
5547   void add_out_data_type(TensorType out_data_type) {
5548     fbb_.AddElement<int8_t>(CastOptions::VT_OUT_DATA_TYPE, static_cast<int8_t>(out_data_type), 0);
5549   }
5550   explicit CastOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5551         : fbb_(_fbb) {
5552     start_ = fbb_.StartTable();
5553   }
5554   CastOptionsBuilder &operator=(const CastOptionsBuilder &);
5555   flatbuffers::Offset<CastOptions> Finish() {
5556     const auto end = fbb_.EndTable(start_);
5557     auto o = flatbuffers::Offset<CastOptions>(end);
5558     return o;
5559   }
5560 };
5561 
5562 inline flatbuffers::Offset<CastOptions> CreateCastOptions(
5563     flatbuffers::FlatBufferBuilder &_fbb,
5564     TensorType in_data_type = TensorType_FLOAT32,
5565     TensorType out_data_type = TensorType_FLOAT32) {
5566   CastOptionsBuilder builder_(_fbb);
5567   builder_.add_out_data_type(out_data_type);
5568   builder_.add_in_data_type(in_data_type);
5569   return builder_.Finish();
5570 }
5571 
5572 flatbuffers::Offset<CastOptions> CreateCastOptions(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5573 
5574 struct DequantizeOptionsT : public flatbuffers::NativeTable {
5575   typedef DequantizeOptions TableType;
5576   DequantizeOptionsT() {
5577   }
5578 };
5579 
5580 struct DequantizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5581   typedef DequantizeOptionsT NativeTableType;
5582   bool Verify(flatbuffers::Verifier &verifier) const {
5583     return VerifyTableStart(verifier) &&
5584            verifier.EndTable();
5585   }
5586   DequantizeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5587   void UnPackTo(DequantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5588   static flatbuffers::Offset<DequantizeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5589 };
5590 
5591 struct DequantizeOptionsBuilder {
5592   flatbuffers::FlatBufferBuilder &fbb_;
5593   flatbuffers::uoffset_t start_;
5594   explicit DequantizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5595         : fbb_(_fbb) {
5596     start_ = fbb_.StartTable();
5597   }
5598   DequantizeOptionsBuilder &operator=(const DequantizeOptionsBuilder &);
5599   flatbuffers::Offset<DequantizeOptions> Finish() {
5600     const auto end = fbb_.EndTable(start_);
5601     auto o = flatbuffers::Offset<DequantizeOptions>(end);
5602     return o;
5603   }
5604 };
5605 
5606 inline flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(
5607     flatbuffers::FlatBufferBuilder &_fbb) {
5608   DequantizeOptionsBuilder builder_(_fbb);
5609   return builder_.Finish();
5610 }
5611 
5612 flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5613 
5614 struct MaximumMinimumOptionsT : public flatbuffers::NativeTable {
5615   typedef MaximumMinimumOptions TableType;
5616   MaximumMinimumOptionsT() {
5617   }
5618 };
5619 
5620 struct MaximumMinimumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5621   typedef MaximumMinimumOptionsT NativeTableType;
5622   bool Verify(flatbuffers::Verifier &verifier) const {
5623     return VerifyTableStart(verifier) &&
5624            verifier.EndTable();
5625   }
5626   MaximumMinimumOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5627   void UnPackTo(MaximumMinimumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5628   static flatbuffers::Offset<MaximumMinimumOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5629 };
5630 
5631 struct MaximumMinimumOptionsBuilder {
5632   flatbuffers::FlatBufferBuilder &fbb_;
5633   flatbuffers::uoffset_t start_;
5634   explicit MaximumMinimumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5635         : fbb_(_fbb) {
5636     start_ = fbb_.StartTable();
5637   }
5638   MaximumMinimumOptionsBuilder &operator=(const MaximumMinimumOptionsBuilder &);
5639   flatbuffers::Offset<MaximumMinimumOptions> Finish() {
5640     const auto end = fbb_.EndTable(start_);
5641     auto o = flatbuffers::Offset<MaximumMinimumOptions>(end);
5642     return o;
5643   }
5644 };
5645 
5646 inline flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(
5647     flatbuffers::FlatBufferBuilder &_fbb) {
5648   MaximumMinimumOptionsBuilder builder_(_fbb);
5649   return builder_.Finish();
5650 }
5651 
5652 flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5653 
5654 struct TileOptionsT : public flatbuffers::NativeTable {
5655   typedef TileOptions TableType;
5656   TileOptionsT() {
5657   }
5658 };
5659 
5660 struct TileOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5661   typedef TileOptionsT NativeTableType;
5662   bool Verify(flatbuffers::Verifier &verifier) const {
5663     return VerifyTableStart(verifier) &&
5664            verifier.EndTable();
5665   }
5666   TileOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5667   void UnPackTo(TileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5668   static flatbuffers::Offset<TileOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5669 };
5670 
5671 struct TileOptionsBuilder {
5672   flatbuffers::FlatBufferBuilder &fbb_;
5673   flatbuffers::uoffset_t start_;
5674   explicit TileOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5675         : fbb_(_fbb) {
5676     start_ = fbb_.StartTable();
5677   }
5678   TileOptionsBuilder &operator=(const TileOptionsBuilder &);
5679   flatbuffers::Offset<TileOptions> Finish() {
5680     const auto end = fbb_.EndTable(start_);
5681     auto o = flatbuffers::Offset<TileOptions>(end);
5682     return o;
5683   }
5684 };
5685 
5686 inline flatbuffers::Offset<TileOptions> CreateTileOptions(
5687     flatbuffers::FlatBufferBuilder &_fbb) {
5688   TileOptionsBuilder builder_(_fbb);
5689   return builder_.Finish();
5690 }
5691 
5692 flatbuffers::Offset<TileOptions> CreateTileOptions(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5693 
5694 struct ArgMaxOptionsT : public flatbuffers::NativeTable {
5695   typedef ArgMaxOptions TableType;
5696   TensorType output_type;
5697   ArgMaxOptionsT()
5698       : output_type(TensorType_FLOAT32) {
5699   }
5700 };
5701 
5702 struct ArgMaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5703   typedef ArgMaxOptionsT NativeTableType;
5704   enum {
5705     VT_OUTPUT_TYPE = 4
5706   };
5707   TensorType output_type() const {
5708     return static_cast<TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
5709   }
5710   bool Verify(flatbuffers::Verifier &verifier) const {
5711     return VerifyTableStart(verifier) &&
5712            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE) &&
5713            verifier.EndTable();
5714   }
5715   ArgMaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5716   void UnPackTo(ArgMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5717   static flatbuffers::Offset<ArgMaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5718 };
5719 
5720 struct ArgMaxOptionsBuilder {
5721   flatbuffers::FlatBufferBuilder &fbb_;
5722   flatbuffers::uoffset_t start_;
5723   void add_output_type(TensorType output_type) {
5724     fbb_.AddElement<int8_t>(ArgMaxOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
5725   }
5726   explicit ArgMaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5727         : fbb_(_fbb) {
5728     start_ = fbb_.StartTable();
5729   }
5730   ArgMaxOptionsBuilder &operator=(const ArgMaxOptionsBuilder &);
5731   flatbuffers::Offset<ArgMaxOptions> Finish() {
5732     const auto end = fbb_.EndTable(start_);
5733     auto o = flatbuffers::Offset<ArgMaxOptions>(end);
5734     return o;
5735   }
5736 };
5737 
5738 inline flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(
5739     flatbuffers::FlatBufferBuilder &_fbb,
5740     TensorType output_type = TensorType_FLOAT32) {
5741   ArgMaxOptionsBuilder builder_(_fbb);
5742   builder_.add_output_type(output_type);
5743   return builder_.Finish();
5744 }
5745 
5746 flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5747 
5748 struct ArgMinOptionsT : public flatbuffers::NativeTable {
5749   typedef ArgMinOptions TableType;
5750   TensorType output_type;
5751   ArgMinOptionsT()
5752       : output_type(TensorType_FLOAT32) {
5753   }
5754 };
5755 
5756 struct ArgMinOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5757   typedef ArgMinOptionsT NativeTableType;
5758   enum {
5759     VT_OUTPUT_TYPE = 4
5760   };
5761   TensorType output_type() const {
5762     return static_cast<TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
5763   }
5764   bool Verify(flatbuffers::Verifier &verifier) const {
5765     return VerifyTableStart(verifier) &&
5766            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE) &&
5767            verifier.EndTable();
5768   }
5769   ArgMinOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5770   void UnPackTo(ArgMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5771   static flatbuffers::Offset<ArgMinOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5772 };
5773 
5774 struct ArgMinOptionsBuilder {
5775   flatbuffers::FlatBufferBuilder &fbb_;
5776   flatbuffers::uoffset_t start_;
5777   void add_output_type(TensorType output_type) {
5778     fbb_.AddElement<int8_t>(ArgMinOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
5779   }
5780   explicit ArgMinOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5781         : fbb_(_fbb) {
5782     start_ = fbb_.StartTable();
5783   }
5784   ArgMinOptionsBuilder &operator=(const ArgMinOptionsBuilder &);
5785   flatbuffers::Offset<ArgMinOptions> Finish() {
5786     const auto end = fbb_.EndTable(start_);
5787     auto o = flatbuffers::Offset<ArgMinOptions>(end);
5788     return o;
5789   }
5790 };
5791 
5792 inline flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(
5793     flatbuffers::FlatBufferBuilder &_fbb,
5794     TensorType output_type = TensorType_FLOAT32) {
5795   ArgMinOptionsBuilder builder_(_fbb);
5796   builder_.add_output_type(output_type);
5797   return builder_.Finish();
5798 }
5799 
5800 flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5801 
5802 struct GreaterOptionsT : public flatbuffers::NativeTable {
5803   typedef GreaterOptions TableType;
5804   GreaterOptionsT() {
5805   }
5806 };
5807 
5808 struct GreaterOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5809   typedef GreaterOptionsT NativeTableType;
5810   bool Verify(flatbuffers::Verifier &verifier) const {
5811     return VerifyTableStart(verifier) &&
5812            verifier.EndTable();
5813   }
5814   GreaterOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5815   void UnPackTo(GreaterOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5816   static flatbuffers::Offset<GreaterOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5817 };
5818 
5819 struct GreaterOptionsBuilder {
5820   flatbuffers::FlatBufferBuilder &fbb_;
5821   flatbuffers::uoffset_t start_;
5822   explicit GreaterOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5823         : fbb_(_fbb) {
5824     start_ = fbb_.StartTable();
5825   }
5826   GreaterOptionsBuilder &operator=(const GreaterOptionsBuilder &);
5827   flatbuffers::Offset<GreaterOptions> Finish() {
5828     const auto end = fbb_.EndTable(start_);
5829     auto o = flatbuffers::Offset<GreaterOptions>(end);
5830     return o;
5831   }
5832 };
5833 
5834 inline flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(
5835     flatbuffers::FlatBufferBuilder &_fbb) {
5836   GreaterOptionsBuilder builder_(_fbb);
5837   return builder_.Finish();
5838 }
5839 
5840 flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5841 
5842 struct GreaterEqualOptionsT : public flatbuffers::NativeTable {
5843   typedef GreaterEqualOptions TableType;
5844   GreaterEqualOptionsT() {
5845   }
5846 };
5847 
5848 struct GreaterEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5849   typedef GreaterEqualOptionsT NativeTableType;
5850   bool Verify(flatbuffers::Verifier &verifier) const {
5851     return VerifyTableStart(verifier) &&
5852            verifier.EndTable();
5853   }
5854   GreaterEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5855   void UnPackTo(GreaterEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5856   static flatbuffers::Offset<GreaterEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5857 };
5858 
5859 struct GreaterEqualOptionsBuilder {
5860   flatbuffers::FlatBufferBuilder &fbb_;
5861   flatbuffers::uoffset_t start_;
5862   explicit GreaterEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5863         : fbb_(_fbb) {
5864     start_ = fbb_.StartTable();
5865   }
5866   GreaterEqualOptionsBuilder &operator=(const GreaterEqualOptionsBuilder &);
5867   flatbuffers::Offset<GreaterEqualOptions> Finish() {
5868     const auto end = fbb_.EndTable(start_);
5869     auto o = flatbuffers::Offset<GreaterEqualOptions>(end);
5870     return o;
5871   }
5872 };
5873 
5874 inline flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(
5875     flatbuffers::FlatBufferBuilder &_fbb) {
5876   GreaterEqualOptionsBuilder builder_(_fbb);
5877   return builder_.Finish();
5878 }
5879 
5880 flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5881 
5882 struct LessOptionsT : public flatbuffers::NativeTable {
5883   typedef LessOptions TableType;
5884   LessOptionsT() {
5885   }
5886 };
5887 
5888 struct LessOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5889   typedef LessOptionsT NativeTableType;
5890   bool Verify(flatbuffers::Verifier &verifier) const {
5891     return VerifyTableStart(verifier) &&
5892            verifier.EndTable();
5893   }
5894   LessOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5895   void UnPackTo(LessOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5896   static flatbuffers::Offset<LessOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5897 };
5898 
5899 struct LessOptionsBuilder {
5900   flatbuffers::FlatBufferBuilder &fbb_;
5901   flatbuffers::uoffset_t start_;
5902   explicit LessOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5903         : fbb_(_fbb) {
5904     start_ = fbb_.StartTable();
5905   }
5906   LessOptionsBuilder &operator=(const LessOptionsBuilder &);
5907   flatbuffers::Offset<LessOptions> Finish() {
5908     const auto end = fbb_.EndTable(start_);
5909     auto o = flatbuffers::Offset<LessOptions>(end);
5910     return o;
5911   }
5912 };
5913 
5914 inline flatbuffers::Offset<LessOptions> CreateLessOptions(
5915     flatbuffers::FlatBufferBuilder &_fbb) {
5916   LessOptionsBuilder builder_(_fbb);
5917   return builder_.Finish();
5918 }
5919 
5920 flatbuffers::Offset<LessOptions> CreateLessOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5921 
5922 struct LessEqualOptionsT : public flatbuffers::NativeTable {
5923   typedef LessEqualOptions TableType;
5924   LessEqualOptionsT() {
5925   }
5926 };
5927 
5928 struct LessEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5929   typedef LessEqualOptionsT NativeTableType;
5930   bool Verify(flatbuffers::Verifier &verifier) const {
5931     return VerifyTableStart(verifier) &&
5932            verifier.EndTable();
5933   }
5934   LessEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5935   void UnPackTo(LessEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5936   static flatbuffers::Offset<LessEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5937 };
5938 
5939 struct LessEqualOptionsBuilder {
5940   flatbuffers::FlatBufferBuilder &fbb_;
5941   flatbuffers::uoffset_t start_;
5942   explicit LessEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5943         : fbb_(_fbb) {
5944     start_ = fbb_.StartTable();
5945   }
5946   LessEqualOptionsBuilder &operator=(const LessEqualOptionsBuilder &);
5947   flatbuffers::Offset<LessEqualOptions> Finish() {
5948     const auto end = fbb_.EndTable(start_);
5949     auto o = flatbuffers::Offset<LessEqualOptions>(end);
5950     return o;
5951   }
5952 };
5953 
5954 inline flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(
5955     flatbuffers::FlatBufferBuilder &_fbb) {
5956   LessEqualOptionsBuilder builder_(_fbb);
5957   return builder_.Finish();
5958 }
5959 
5960 flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5961 
5962 struct NegOptionsT : public flatbuffers::NativeTable {
5963   typedef NegOptions TableType;
5964   NegOptionsT() {
5965   }
5966 };
5967 
5968 struct NegOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5969   typedef NegOptionsT NativeTableType;
5970   bool Verify(flatbuffers::Verifier &verifier) const {
5971     return VerifyTableStart(verifier) &&
5972            verifier.EndTable();
5973   }
5974   NegOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5975   void UnPackTo(NegOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5976   static flatbuffers::Offset<NegOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5977 };
5978 
5979 struct NegOptionsBuilder {
5980   flatbuffers::FlatBufferBuilder &fbb_;
5981   flatbuffers::uoffset_t start_;
5982   explicit NegOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5983         : fbb_(_fbb) {
5984     start_ = fbb_.StartTable();
5985   }
5986   NegOptionsBuilder &operator=(const NegOptionsBuilder &);
5987   flatbuffers::Offset<NegOptions> Finish() {
5988     const auto end = fbb_.EndTable(start_);
5989     auto o = flatbuffers::Offset<NegOptions>(end);
5990     return o;
5991   }
5992 };
5993 
5994 inline flatbuffers::Offset<NegOptions> CreateNegOptions(
5995     flatbuffers::FlatBufferBuilder &_fbb) {
5996   NegOptionsBuilder builder_(_fbb);
5997   return builder_.Finish();
5998 }
5999 
6000 flatbuffers::Offset<NegOptions> CreateNegOptions(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6001 
6002 struct SelectOptionsT : public flatbuffers::NativeTable {
6003   typedef SelectOptions TableType;
6004   SelectOptionsT() {
6005   }
6006 };
6007 
6008 struct SelectOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6009   typedef SelectOptionsT NativeTableType;
6010   bool Verify(flatbuffers::Verifier &verifier) const {
6011     return VerifyTableStart(verifier) &&
6012            verifier.EndTable();
6013   }
6014   SelectOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6015   void UnPackTo(SelectOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6016   static flatbuffers::Offset<SelectOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6017 };
6018 
6019 struct SelectOptionsBuilder {
6020   flatbuffers::FlatBufferBuilder &fbb_;
6021   flatbuffers::uoffset_t start_;
6022   explicit SelectOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6023         : fbb_(_fbb) {
6024     start_ = fbb_.StartTable();
6025   }
6026   SelectOptionsBuilder &operator=(const SelectOptionsBuilder &);
6027   flatbuffers::Offset<SelectOptions> Finish() {
6028     const auto end = fbb_.EndTable(start_);
6029     auto o = flatbuffers::Offset<SelectOptions>(end);
6030     return o;
6031   }
6032 };
6033 
6034 inline flatbuffers::Offset<SelectOptions> CreateSelectOptions(
6035     flatbuffers::FlatBufferBuilder &_fbb) {
6036   SelectOptionsBuilder builder_(_fbb);
6037   return builder_.Finish();
6038 }
6039 
6040 flatbuffers::Offset<SelectOptions> CreateSelectOptions(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6041 
6042 struct SliceOptionsT : public flatbuffers::NativeTable {
6043   typedef SliceOptions TableType;
6044   SliceOptionsT() {
6045   }
6046 };
6047 
6048 struct SliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6049   typedef SliceOptionsT NativeTableType;
6050   bool Verify(flatbuffers::Verifier &verifier) const {
6051     return VerifyTableStart(verifier) &&
6052            verifier.EndTable();
6053   }
6054   SliceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6055   void UnPackTo(SliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6056   static flatbuffers::Offset<SliceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6057 };
6058 
6059 struct SliceOptionsBuilder {
6060   flatbuffers::FlatBufferBuilder &fbb_;
6061   flatbuffers::uoffset_t start_;
6062   explicit SliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6063         : fbb_(_fbb) {
6064     start_ = fbb_.StartTable();
6065   }
6066   SliceOptionsBuilder &operator=(const SliceOptionsBuilder &);
6067   flatbuffers::Offset<SliceOptions> Finish() {
6068     const auto end = fbb_.EndTable(start_);
6069     auto o = flatbuffers::Offset<SliceOptions>(end);
6070     return o;
6071   }
6072 };
6073 
6074 inline flatbuffers::Offset<SliceOptions> CreateSliceOptions(
6075     flatbuffers::FlatBufferBuilder &_fbb) {
6076   SliceOptionsBuilder builder_(_fbb);
6077   return builder_.Finish();
6078 }
6079 
6080 flatbuffers::Offset<SliceOptions> CreateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6081 
6082 struct TransposeConvOptionsT : public flatbuffers::NativeTable {
6083   typedef TransposeConvOptions TableType;
6084   Padding padding;
6085   int32_t stride_w;
6086   int32_t stride_h;
6087   TransposeConvOptionsT()
6088       : padding(Padding_SAME),
6089         stride_w(0),
6090         stride_h(0) {
6091   }
6092 };
6093 
6094 struct TransposeConvOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6095   typedef TransposeConvOptionsT NativeTableType;
6096   enum {
6097     VT_PADDING = 4,
6098     VT_STRIDE_W = 6,
6099     VT_STRIDE_H = 8
6100   };
6101   Padding padding() const {
6102     return static_cast<Padding>(GetField<int8_t>(VT_PADDING, 0));
6103   }
6104   int32_t stride_w() const {
6105     return GetField<int32_t>(VT_STRIDE_W, 0);
6106   }
6107   int32_t stride_h() const {
6108     return GetField<int32_t>(VT_STRIDE_H, 0);
6109   }
6110   bool Verify(flatbuffers::Verifier &verifier) const {
6111     return VerifyTableStart(verifier) &&
6112            VerifyField<int8_t>(verifier, VT_PADDING) &&
6113            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
6114            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
6115            verifier.EndTable();
6116   }
6117   TransposeConvOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6118   void UnPackTo(TransposeConvOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6119   static flatbuffers::Offset<TransposeConvOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6120 };
6121 
6122 struct TransposeConvOptionsBuilder {
6123   flatbuffers::FlatBufferBuilder &fbb_;
6124   flatbuffers::uoffset_t start_;
6125   void add_padding(Padding padding) {
6126     fbb_.AddElement<int8_t>(TransposeConvOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
6127   }
6128   void add_stride_w(int32_t stride_w) {
6129     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_W, stride_w, 0);
6130   }
6131   void add_stride_h(int32_t stride_h) {
6132     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_H, stride_h, 0);
6133   }
6134   explicit TransposeConvOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6135         : fbb_(_fbb) {
6136     start_ = fbb_.StartTable();
6137   }
6138   TransposeConvOptionsBuilder &operator=(const TransposeConvOptionsBuilder &);
6139   flatbuffers::Offset<TransposeConvOptions> Finish() {
6140     const auto end = fbb_.EndTable(start_);
6141     auto o = flatbuffers::Offset<TransposeConvOptions>(end);
6142     return o;
6143   }
6144 };
6145 
6146 inline flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(
6147     flatbuffers::FlatBufferBuilder &_fbb,
6148     Padding padding = Padding_SAME,
6149     int32_t stride_w = 0,
6150     int32_t stride_h = 0) {
6151   TransposeConvOptionsBuilder builder_(_fbb);
6152   builder_.add_stride_h(stride_h);
6153   builder_.add_stride_w(stride_w);
6154   builder_.add_padding(padding);
6155   return builder_.Finish();
6156 }
6157 
6158 flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6159 
6160 struct ExpandDimsOptionsT : public flatbuffers::NativeTable {
6161   typedef ExpandDimsOptions TableType;
6162   ExpandDimsOptionsT() {
6163   }
6164 };
6165 
6166 struct ExpandDimsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6167   typedef ExpandDimsOptionsT NativeTableType;
6168   bool Verify(flatbuffers::Verifier &verifier) const {
6169     return VerifyTableStart(verifier) &&
6170            verifier.EndTable();
6171   }
6172   ExpandDimsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6173   void UnPackTo(ExpandDimsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6174   static flatbuffers::Offset<ExpandDimsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6175 };
6176 
6177 struct ExpandDimsOptionsBuilder {
6178   flatbuffers::FlatBufferBuilder &fbb_;
6179   flatbuffers::uoffset_t start_;
6180   explicit ExpandDimsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6181         : fbb_(_fbb) {
6182     start_ = fbb_.StartTable();
6183   }
6184   ExpandDimsOptionsBuilder &operator=(const ExpandDimsOptionsBuilder &);
6185   flatbuffers::Offset<ExpandDimsOptions> Finish() {
6186     const auto end = fbb_.EndTable(start_);
6187     auto o = flatbuffers::Offset<ExpandDimsOptions>(end);
6188     return o;
6189   }
6190 };
6191 
6192 inline flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(
6193     flatbuffers::FlatBufferBuilder &_fbb) {
6194   ExpandDimsOptionsBuilder builder_(_fbb);
6195   return builder_.Finish();
6196 }
6197 
6198 flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6199 
6200 struct SparseToDenseOptionsT : public flatbuffers::NativeTable {
6201   typedef SparseToDenseOptions TableType;
6202   bool validate_indices;
6203   SparseToDenseOptionsT()
6204       : validate_indices(false) {
6205   }
6206 };
6207 
6208 struct SparseToDenseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6209   typedef SparseToDenseOptionsT NativeTableType;
6210   enum {
6211     VT_VALIDATE_INDICES = 4
6212   };
6213   bool validate_indices() const {
6214     return GetField<uint8_t>(VT_VALIDATE_INDICES, 0) != 0;
6215   }
6216   bool Verify(flatbuffers::Verifier &verifier) const {
6217     return VerifyTableStart(verifier) &&
6218            VerifyField<uint8_t>(verifier, VT_VALIDATE_INDICES) &&
6219            verifier.EndTable();
6220   }
6221   SparseToDenseOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6222   void UnPackTo(SparseToDenseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6223   static flatbuffers::Offset<SparseToDenseOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6224 };
6225 
6226 struct SparseToDenseOptionsBuilder {
6227   flatbuffers::FlatBufferBuilder &fbb_;
6228   flatbuffers::uoffset_t start_;
6229   void add_validate_indices(bool validate_indices) {
6230     fbb_.AddElement<uint8_t>(SparseToDenseOptions::VT_VALIDATE_INDICES, static_cast<uint8_t>(validate_indices), 0);
6231   }
6232   explicit SparseToDenseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6233         : fbb_(_fbb) {
6234     start_ = fbb_.StartTable();
6235   }
6236   SparseToDenseOptionsBuilder &operator=(const SparseToDenseOptionsBuilder &);
6237   flatbuffers::Offset<SparseToDenseOptions> Finish() {
6238     const auto end = fbb_.EndTable(start_);
6239     auto o = flatbuffers::Offset<SparseToDenseOptions>(end);
6240     return o;
6241   }
6242 };
6243 
6244 inline flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(
6245     flatbuffers::FlatBufferBuilder &_fbb,
6246     bool validate_indices = false) {
6247   SparseToDenseOptionsBuilder builder_(_fbb);
6248   builder_.add_validate_indices(validate_indices);
6249   return builder_.Finish();
6250 }
6251 
6252 flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6253 
6254 struct EqualOptionsT : public flatbuffers::NativeTable {
6255   typedef EqualOptions TableType;
6256   EqualOptionsT() {
6257   }
6258 };
6259 
6260 struct EqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6261   typedef EqualOptionsT NativeTableType;
6262   bool Verify(flatbuffers::Verifier &verifier) const {
6263     return VerifyTableStart(verifier) &&
6264            verifier.EndTable();
6265   }
6266   EqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6267   void UnPackTo(EqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6268   static flatbuffers::Offset<EqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6269 };
6270 
6271 struct EqualOptionsBuilder {
6272   flatbuffers::FlatBufferBuilder &fbb_;
6273   flatbuffers::uoffset_t start_;
6274   explicit EqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6275         : fbb_(_fbb) {
6276     start_ = fbb_.StartTable();
6277   }
6278   EqualOptionsBuilder &operator=(const EqualOptionsBuilder &);
6279   flatbuffers::Offset<EqualOptions> Finish() {
6280     const auto end = fbb_.EndTable(start_);
6281     auto o = flatbuffers::Offset<EqualOptions>(end);
6282     return o;
6283   }
6284 };
6285 
6286 inline flatbuffers::Offset<EqualOptions> CreateEqualOptions(
6287     flatbuffers::FlatBufferBuilder &_fbb) {
6288   EqualOptionsBuilder builder_(_fbb);
6289   return builder_.Finish();
6290 }
6291 
6292 flatbuffers::Offset<EqualOptions> CreateEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6293 
6294 struct NotEqualOptionsT : public flatbuffers::NativeTable {
6295   typedef NotEqualOptions TableType;
6296   NotEqualOptionsT() {
6297   }
6298 };
6299 
6300 struct NotEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6301   typedef NotEqualOptionsT NativeTableType;
6302   bool Verify(flatbuffers::Verifier &verifier) const {
6303     return VerifyTableStart(verifier) &&
6304            verifier.EndTable();
6305   }
6306   NotEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6307   void UnPackTo(NotEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6308   static flatbuffers::Offset<NotEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6309 };
6310 
6311 struct NotEqualOptionsBuilder {
6312   flatbuffers::FlatBufferBuilder &fbb_;
6313   flatbuffers::uoffset_t start_;
6314   explicit NotEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6315         : fbb_(_fbb) {
6316     start_ = fbb_.StartTable();
6317   }
6318   NotEqualOptionsBuilder &operator=(const NotEqualOptionsBuilder &);
6319   flatbuffers::Offset<NotEqualOptions> Finish() {
6320     const auto end = fbb_.EndTable(start_);
6321     auto o = flatbuffers::Offset<NotEqualOptions>(end);
6322     return o;
6323   }
6324 };
6325 
6326 inline flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(
6327     flatbuffers::FlatBufferBuilder &_fbb) {
6328   NotEqualOptionsBuilder builder_(_fbb);
6329   return builder_.Finish();
6330 }
6331 
6332 flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6333 
6334 struct ShapeOptionsT : public flatbuffers::NativeTable {
6335   typedef ShapeOptions TableType;
6336   TensorType out_type;
6337   ShapeOptionsT()
6338       : out_type(TensorType_FLOAT32) {
6339   }
6340 };
6341 
6342 struct ShapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6343   typedef ShapeOptionsT NativeTableType;
6344   enum {
6345     VT_OUT_TYPE = 4
6346   };
6347   TensorType out_type() const {
6348     return static_cast<TensorType>(GetField<int8_t>(VT_OUT_TYPE, 0));
6349   }
6350   bool Verify(flatbuffers::Verifier &verifier) const {
6351     return VerifyTableStart(verifier) &&
6352            VerifyField<int8_t>(verifier, VT_OUT_TYPE) &&
6353            verifier.EndTable();
6354   }
6355   ShapeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6356   void UnPackTo(ShapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6357   static flatbuffers::Offset<ShapeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6358 };
6359 
6360 struct ShapeOptionsBuilder {
6361   flatbuffers::FlatBufferBuilder &fbb_;
6362   flatbuffers::uoffset_t start_;
6363   void add_out_type(TensorType out_type) {
6364     fbb_.AddElement<int8_t>(ShapeOptions::VT_OUT_TYPE, static_cast<int8_t>(out_type), 0);
6365   }
6366   explicit ShapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6367         : fbb_(_fbb) {
6368     start_ = fbb_.StartTable();
6369   }
6370   ShapeOptionsBuilder &operator=(const ShapeOptionsBuilder &);
6371   flatbuffers::Offset<ShapeOptions> Finish() {
6372     const auto end = fbb_.EndTable(start_);
6373     auto o = flatbuffers::Offset<ShapeOptions>(end);
6374     return o;
6375   }
6376 };
6377 
6378 inline flatbuffers::Offset<ShapeOptions> CreateShapeOptions(
6379     flatbuffers::FlatBufferBuilder &_fbb,
6380     TensorType out_type = TensorType_FLOAT32) {
6381   ShapeOptionsBuilder builder_(_fbb);
6382   builder_.add_out_type(out_type);
6383   return builder_.Finish();
6384 }
6385 
6386 flatbuffers::Offset<ShapeOptions> CreateShapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6387 
6388 struct RankOptionsT : public flatbuffers::NativeTable {
6389   typedef RankOptions TableType;
6390   RankOptionsT() {
6391   }
6392 };
6393 
6394 struct RankOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6395   typedef RankOptionsT NativeTableType;
6396   bool Verify(flatbuffers::Verifier &verifier) const {
6397     return VerifyTableStart(verifier) &&
6398            verifier.EndTable();
6399   }
6400   RankOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6401   void UnPackTo(RankOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6402   static flatbuffers::Offset<RankOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6403 };
6404 
6405 struct RankOptionsBuilder {
6406   flatbuffers::FlatBufferBuilder &fbb_;
6407   flatbuffers::uoffset_t start_;
6408   explicit RankOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6409         : fbb_(_fbb) {
6410     start_ = fbb_.StartTable();
6411   }
6412   RankOptionsBuilder &operator=(const RankOptionsBuilder &);
6413   flatbuffers::Offset<RankOptions> Finish() {
6414     const auto end = fbb_.EndTable(start_);
6415     auto o = flatbuffers::Offset<RankOptions>(end);
6416     return o;
6417   }
6418 };
6419 
6420 inline flatbuffers::Offset<RankOptions> CreateRankOptions(
6421     flatbuffers::FlatBufferBuilder &_fbb) {
6422   RankOptionsBuilder builder_(_fbb);
6423   return builder_.Finish();
6424 }
6425 
6426 flatbuffers::Offset<RankOptions> CreateRankOptions(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6427 
6428 struct PowOptionsT : public flatbuffers::NativeTable {
6429   typedef PowOptions TableType;
6430   PowOptionsT() {
6431   }
6432 };
6433 
6434 struct PowOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6435   typedef PowOptionsT NativeTableType;
6436   bool Verify(flatbuffers::Verifier &verifier) const {
6437     return VerifyTableStart(verifier) &&
6438            verifier.EndTable();
6439   }
6440   PowOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6441   void UnPackTo(PowOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6442   static flatbuffers::Offset<PowOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6443 };
6444 
6445 struct PowOptionsBuilder {
6446   flatbuffers::FlatBufferBuilder &fbb_;
6447   flatbuffers::uoffset_t start_;
6448   explicit PowOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6449         : fbb_(_fbb) {
6450     start_ = fbb_.StartTable();
6451   }
6452   PowOptionsBuilder &operator=(const PowOptionsBuilder &);
6453   flatbuffers::Offset<PowOptions> Finish() {
6454     const auto end = fbb_.EndTable(start_);
6455     auto o = flatbuffers::Offset<PowOptions>(end);
6456     return o;
6457   }
6458 };
6459 
6460 inline flatbuffers::Offset<PowOptions> CreatePowOptions(
6461     flatbuffers::FlatBufferBuilder &_fbb) {
6462   PowOptionsBuilder builder_(_fbb);
6463   return builder_.Finish();
6464 }
6465 
6466 flatbuffers::Offset<PowOptions> CreatePowOptions(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6467 
6468 struct FakeQuantOptionsT : public flatbuffers::NativeTable {
6469   typedef FakeQuantOptions TableType;
6470   float min;
6471   float max;
6472   int32_t num_bits;
6473   bool narrow_range;
6474   FakeQuantOptionsT()
6475       : min(0.0f),
6476         max(0.0f),
6477         num_bits(0),
6478         narrow_range(false) {
6479   }
6480 };
6481 
6482 struct FakeQuantOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6483   typedef FakeQuantOptionsT NativeTableType;
6484   enum {
6485     VT_MIN = 4,
6486     VT_MAX = 6,
6487     VT_NUM_BITS = 8,
6488     VT_NARROW_RANGE = 10
6489   };
6490   float min() const {
6491     return GetField<float>(VT_MIN, 0.0f);
6492   }
6493   float max() const {
6494     return GetField<float>(VT_MAX, 0.0f);
6495   }
6496   int32_t num_bits() const {
6497     return GetField<int32_t>(VT_NUM_BITS, 0);
6498   }
6499   bool narrow_range() const {
6500     return GetField<uint8_t>(VT_NARROW_RANGE, 0) != 0;
6501   }
6502   bool Verify(flatbuffers::Verifier &verifier) const {
6503     return VerifyTableStart(verifier) &&
6504            VerifyField<float>(verifier, VT_MIN) &&
6505            VerifyField<float>(verifier, VT_MAX) &&
6506            VerifyField<int32_t>(verifier, VT_NUM_BITS) &&
6507            VerifyField<uint8_t>(verifier, VT_NARROW_RANGE) &&
6508            verifier.EndTable();
6509   }
6510   FakeQuantOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6511   void UnPackTo(FakeQuantOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6512   static flatbuffers::Offset<FakeQuantOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6513 };
6514 
6515 struct FakeQuantOptionsBuilder {
6516   flatbuffers::FlatBufferBuilder &fbb_;
6517   flatbuffers::uoffset_t start_;
6518   void add_min(float min) {
6519     fbb_.AddElement<float>(FakeQuantOptions::VT_MIN, min, 0.0f);
6520   }
6521   void add_max(float max) {
6522     fbb_.AddElement<float>(FakeQuantOptions::VT_MAX, max, 0.0f);
6523   }
6524   void add_num_bits(int32_t num_bits) {
6525     fbb_.AddElement<int32_t>(FakeQuantOptions::VT_NUM_BITS, num_bits, 0);
6526   }
6527   void add_narrow_range(bool narrow_range) {
6528     fbb_.AddElement<uint8_t>(FakeQuantOptions::VT_NARROW_RANGE, static_cast<uint8_t>(narrow_range), 0);
6529   }
6530   explicit FakeQuantOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6531         : fbb_(_fbb) {
6532     start_ = fbb_.StartTable();
6533   }
6534   FakeQuantOptionsBuilder &operator=(const FakeQuantOptionsBuilder &);
6535   flatbuffers::Offset<FakeQuantOptions> Finish() {
6536     const auto end = fbb_.EndTable(start_);
6537     auto o = flatbuffers::Offset<FakeQuantOptions>(end);
6538     return o;
6539   }
6540 };
6541 
6542 inline flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(
6543     flatbuffers::FlatBufferBuilder &_fbb,
6544     float min = 0.0f,
6545     float max = 0.0f,
6546     int32_t num_bits = 0,
6547     bool narrow_range = false) {
6548   FakeQuantOptionsBuilder builder_(_fbb);
6549   builder_.add_num_bits(num_bits);
6550   builder_.add_max(max);
6551   builder_.add_min(min);
6552   builder_.add_narrow_range(narrow_range);
6553   return builder_.Finish();
6554 }
6555 
6556 flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6557 
6558 struct PackOptionsT : public flatbuffers::NativeTable {
6559   typedef PackOptions TableType;
6560   int32_t values_count;
6561   int32_t axis;
6562   PackOptionsT()
6563       : values_count(0),
6564         axis(0) {
6565   }
6566 };
6567 
6568 struct PackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6569   typedef PackOptionsT NativeTableType;
6570   enum {
6571     VT_VALUES_COUNT = 4,
6572     VT_AXIS = 6
6573   };
6574   int32_t values_count() const {
6575     return GetField<int32_t>(VT_VALUES_COUNT, 0);
6576   }
6577   int32_t axis() const {
6578     return GetField<int32_t>(VT_AXIS, 0);
6579   }
6580   bool Verify(flatbuffers::Verifier &verifier) const {
6581     return VerifyTableStart(verifier) &&
6582            VerifyField<int32_t>(verifier, VT_VALUES_COUNT) &&
6583            VerifyField<int32_t>(verifier, VT_AXIS) &&
6584            verifier.EndTable();
6585   }
6586   PackOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6587   void UnPackTo(PackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6588   static flatbuffers::Offset<PackOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6589 };
6590 
6591 struct PackOptionsBuilder {
6592   flatbuffers::FlatBufferBuilder &fbb_;
6593   flatbuffers::uoffset_t start_;
6594   void add_values_count(int32_t values_count) {
6595     fbb_.AddElement<int32_t>(PackOptions::VT_VALUES_COUNT, values_count, 0);
6596   }
6597   void add_axis(int32_t axis) {
6598     fbb_.AddElement<int32_t>(PackOptions::VT_AXIS, axis, 0);
6599   }
6600   explicit PackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6601         : fbb_(_fbb) {
6602     start_ = fbb_.StartTable();
6603   }
6604   PackOptionsBuilder &operator=(const PackOptionsBuilder &);
6605   flatbuffers::Offset<PackOptions> Finish() {
6606     const auto end = fbb_.EndTable(start_);
6607     auto o = flatbuffers::Offset<PackOptions>(end);
6608     return o;
6609   }
6610 };
6611 
6612 inline flatbuffers::Offset<PackOptions> CreatePackOptions(
6613     flatbuffers::FlatBufferBuilder &_fbb,
6614     int32_t values_count = 0,
6615     int32_t axis = 0) {
6616   PackOptionsBuilder builder_(_fbb);
6617   builder_.add_axis(axis);
6618   builder_.add_values_count(values_count);
6619   return builder_.Finish();
6620 }
6621 
6622 flatbuffers::Offset<PackOptions> CreatePackOptions(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6623 
6624 struct LogicalOrOptionsT : public flatbuffers::NativeTable {
6625   typedef LogicalOrOptions TableType;
6626   LogicalOrOptionsT() {
6627   }
6628 };
6629 
6630 struct LogicalOrOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6631   typedef LogicalOrOptionsT NativeTableType;
6632   bool Verify(flatbuffers::Verifier &verifier) const {
6633     return VerifyTableStart(verifier) &&
6634            verifier.EndTable();
6635   }
6636   LogicalOrOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6637   void UnPackTo(LogicalOrOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6638   static flatbuffers::Offset<LogicalOrOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6639 };
6640 
6641 struct LogicalOrOptionsBuilder {
6642   flatbuffers::FlatBufferBuilder &fbb_;
6643   flatbuffers::uoffset_t start_;
6644   explicit LogicalOrOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6645         : fbb_(_fbb) {
6646     start_ = fbb_.StartTable();
6647   }
6648   LogicalOrOptionsBuilder &operator=(const LogicalOrOptionsBuilder &);
6649   flatbuffers::Offset<LogicalOrOptions> Finish() {
6650     const auto end = fbb_.EndTable(start_);
6651     auto o = flatbuffers::Offset<LogicalOrOptions>(end);
6652     return o;
6653   }
6654 };
6655 
6656 inline flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(
6657     flatbuffers::FlatBufferBuilder &_fbb) {
6658   LogicalOrOptionsBuilder builder_(_fbb);
6659   return builder_.Finish();
6660 }
6661 
6662 flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6663 
6664 struct OneHotOptionsT : public flatbuffers::NativeTable {
6665   typedef OneHotOptions TableType;
6666   int32_t axis;
6667   OneHotOptionsT()
6668       : axis(0) {
6669   }
6670 };
6671 
6672 struct OneHotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6673   typedef OneHotOptionsT NativeTableType;
6674   enum {
6675     VT_AXIS = 4
6676   };
6677   int32_t axis() const {
6678     return GetField<int32_t>(VT_AXIS, 0);
6679   }
6680   bool Verify(flatbuffers::Verifier &verifier) const {
6681     return VerifyTableStart(verifier) &&
6682            VerifyField<int32_t>(verifier, VT_AXIS) &&
6683            verifier.EndTable();
6684   }
6685   OneHotOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6686   void UnPackTo(OneHotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6687   static flatbuffers::Offset<OneHotOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6688 };
6689 
6690 struct OneHotOptionsBuilder {
6691   flatbuffers::FlatBufferBuilder &fbb_;
6692   flatbuffers::uoffset_t start_;
6693   void add_axis(int32_t axis) {
6694     fbb_.AddElement<int32_t>(OneHotOptions::VT_AXIS, axis, 0);
6695   }
6696   explicit OneHotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6697         : fbb_(_fbb) {
6698     start_ = fbb_.StartTable();
6699   }
6700   OneHotOptionsBuilder &operator=(const OneHotOptionsBuilder &);
6701   flatbuffers::Offset<OneHotOptions> Finish() {
6702     const auto end = fbb_.EndTable(start_);
6703     auto o = flatbuffers::Offset<OneHotOptions>(end);
6704     return o;
6705   }
6706 };
6707 
6708 inline flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(
6709     flatbuffers::FlatBufferBuilder &_fbb,
6710     int32_t axis = 0) {
6711   OneHotOptionsBuilder builder_(_fbb);
6712   builder_.add_axis(axis);
6713   return builder_.Finish();
6714 }
6715 
6716 flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6717 
6718 struct AbsOptionsT : public flatbuffers::NativeTable {
6719   typedef AbsOptions TableType;
6720   AbsOptionsT() {
6721   }
6722 };
6723 
6724 struct AbsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6725   typedef AbsOptionsT NativeTableType;
6726   bool Verify(flatbuffers::Verifier &verifier) const {
6727     return VerifyTableStart(verifier) &&
6728            verifier.EndTable();
6729   }
6730   AbsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6731   void UnPackTo(AbsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6732   static flatbuffers::Offset<AbsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6733 };
6734 
6735 struct AbsOptionsBuilder {
6736   flatbuffers::FlatBufferBuilder &fbb_;
6737   flatbuffers::uoffset_t start_;
6738   explicit AbsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6739         : fbb_(_fbb) {
6740     start_ = fbb_.StartTable();
6741   }
6742   AbsOptionsBuilder &operator=(const AbsOptionsBuilder &);
6743   flatbuffers::Offset<AbsOptions> Finish() {
6744     const auto end = fbb_.EndTable(start_);
6745     auto o = flatbuffers::Offset<AbsOptions>(end);
6746     return o;
6747   }
6748 };
6749 
6750 inline flatbuffers::Offset<AbsOptions> CreateAbsOptions(
6751     flatbuffers::FlatBufferBuilder &_fbb) {
6752   AbsOptionsBuilder builder_(_fbb);
6753   return builder_.Finish();
6754 }
6755 
6756 flatbuffers::Offset<AbsOptions> CreateAbsOptions(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6757 
6758 struct LogicalAndOptionsT : public flatbuffers::NativeTable {
6759   typedef LogicalAndOptions TableType;
6760   LogicalAndOptionsT() {
6761   }
6762 };
6763 
6764 struct LogicalAndOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6765   typedef LogicalAndOptionsT NativeTableType;
6766   bool Verify(flatbuffers::Verifier &verifier) const {
6767     return VerifyTableStart(verifier) &&
6768            verifier.EndTable();
6769   }
6770   LogicalAndOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6771   void UnPackTo(LogicalAndOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6772   static flatbuffers::Offset<LogicalAndOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6773 };
6774 
6775 struct LogicalAndOptionsBuilder {
6776   flatbuffers::FlatBufferBuilder &fbb_;
6777   flatbuffers::uoffset_t start_;
6778   explicit LogicalAndOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6779         : fbb_(_fbb) {
6780     start_ = fbb_.StartTable();
6781   }
6782   LogicalAndOptionsBuilder &operator=(const LogicalAndOptionsBuilder &);
6783   flatbuffers::Offset<LogicalAndOptions> Finish() {
6784     const auto end = fbb_.EndTable(start_);
6785     auto o = flatbuffers::Offset<LogicalAndOptions>(end);
6786     return o;
6787   }
6788 };
6789 
6790 inline flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(
6791     flatbuffers::FlatBufferBuilder &_fbb) {
6792   LogicalAndOptionsBuilder builder_(_fbb);
6793   return builder_.Finish();
6794 }
6795 
6796 flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6797 
6798 struct LogicalNotOptionsT : public flatbuffers::NativeTable {
6799   typedef LogicalNotOptions TableType;
6800   LogicalNotOptionsT() {
6801   }
6802 };
6803 
6804 struct LogicalNotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6805   typedef LogicalNotOptionsT NativeTableType;
6806   bool Verify(flatbuffers::Verifier &verifier) const {
6807     return VerifyTableStart(verifier) &&
6808            verifier.EndTable();
6809   }
6810   LogicalNotOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6811   void UnPackTo(LogicalNotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6812   static flatbuffers::Offset<LogicalNotOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6813 };
6814 
6815 struct LogicalNotOptionsBuilder {
6816   flatbuffers::FlatBufferBuilder &fbb_;
6817   flatbuffers::uoffset_t start_;
6818   explicit LogicalNotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6819         : fbb_(_fbb) {
6820     start_ = fbb_.StartTable();
6821   }
6822   LogicalNotOptionsBuilder &operator=(const LogicalNotOptionsBuilder &);
6823   flatbuffers::Offset<LogicalNotOptions> Finish() {
6824     const auto end = fbb_.EndTable(start_);
6825     auto o = flatbuffers::Offset<LogicalNotOptions>(end);
6826     return o;
6827   }
6828 };
6829 
6830 inline flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(
6831     flatbuffers::FlatBufferBuilder &_fbb) {
6832   LogicalNotOptionsBuilder builder_(_fbb);
6833   return builder_.Finish();
6834 }
6835 
6836 flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6837 
6838 struct UnpackOptionsT : public flatbuffers::NativeTable {
6839   typedef UnpackOptions TableType;
6840   int32_t num;
6841   int32_t axis;
6842   UnpackOptionsT()
6843       : num(0),
6844         axis(0) {
6845   }
6846 };
6847 
6848 struct UnpackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6849   typedef UnpackOptionsT NativeTableType;
6850   enum {
6851     VT_NUM = 4,
6852     VT_AXIS = 6
6853   };
6854   int32_t num() const {
6855     return GetField<int32_t>(VT_NUM, 0);
6856   }
6857   int32_t axis() const {
6858     return GetField<int32_t>(VT_AXIS, 0);
6859   }
6860   bool Verify(flatbuffers::Verifier &verifier) const {
6861     return VerifyTableStart(verifier) &&
6862            VerifyField<int32_t>(verifier, VT_NUM) &&
6863            VerifyField<int32_t>(verifier, VT_AXIS) &&
6864            verifier.EndTable();
6865   }
6866   UnpackOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6867   void UnPackTo(UnpackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6868   static flatbuffers::Offset<UnpackOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6869 };
6870 
6871 struct UnpackOptionsBuilder {
6872   flatbuffers::FlatBufferBuilder &fbb_;
6873   flatbuffers::uoffset_t start_;
6874   void add_num(int32_t num) {
6875     fbb_.AddElement<int32_t>(UnpackOptions::VT_NUM, num, 0);
6876   }
6877   void add_axis(int32_t axis) {
6878     fbb_.AddElement<int32_t>(UnpackOptions::VT_AXIS, axis, 0);
6879   }
6880   explicit UnpackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6881         : fbb_(_fbb) {
6882     start_ = fbb_.StartTable();
6883   }
6884   UnpackOptionsBuilder &operator=(const UnpackOptionsBuilder &);
6885   flatbuffers::Offset<UnpackOptions> Finish() {
6886     const auto end = fbb_.EndTable(start_);
6887     auto o = flatbuffers::Offset<UnpackOptions>(end);
6888     return o;
6889   }
6890 };
6891 
6892 inline flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(
6893     flatbuffers::FlatBufferBuilder &_fbb,
6894     int32_t num = 0,
6895     int32_t axis = 0) {
6896   UnpackOptionsBuilder builder_(_fbb);
6897   builder_.add_axis(axis);
6898   builder_.add_num(num);
6899   return builder_.Finish();
6900 }
6901 
6902 flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6903 
6904 struct FloorDivOptionsT : public flatbuffers::NativeTable {
6905   typedef FloorDivOptions TableType;
6906   FloorDivOptionsT() {
6907   }
6908 };
6909 
6910 struct FloorDivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6911   typedef FloorDivOptionsT NativeTableType;
6912   bool Verify(flatbuffers::Verifier &verifier) const {
6913     return VerifyTableStart(verifier) &&
6914            verifier.EndTable();
6915   }
6916   FloorDivOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6917   void UnPackTo(FloorDivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6918   static flatbuffers::Offset<FloorDivOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6919 };
6920 
6921 struct FloorDivOptionsBuilder {
6922   flatbuffers::FlatBufferBuilder &fbb_;
6923   flatbuffers::uoffset_t start_;
6924   explicit FloorDivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6925         : fbb_(_fbb) {
6926     start_ = fbb_.StartTable();
6927   }
6928   FloorDivOptionsBuilder &operator=(const FloorDivOptionsBuilder &);
6929   flatbuffers::Offset<FloorDivOptions> Finish() {
6930     const auto end = fbb_.EndTable(start_);
6931     auto o = flatbuffers::Offset<FloorDivOptions>(end);
6932     return o;
6933   }
6934 };
6935 
6936 inline flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(
6937     flatbuffers::FlatBufferBuilder &_fbb) {
6938   FloorDivOptionsBuilder builder_(_fbb);
6939   return builder_.Finish();
6940 }
6941 
6942 flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6943 
6944 struct SquareOptionsT : public flatbuffers::NativeTable {
6945   typedef SquareOptions TableType;
6946   SquareOptionsT() {
6947   }
6948 };
6949 
6950 struct SquareOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6951   typedef SquareOptionsT NativeTableType;
6952   bool Verify(flatbuffers::Verifier &verifier) const {
6953     return VerifyTableStart(verifier) &&
6954            verifier.EndTable();
6955   }
6956   SquareOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6957   void UnPackTo(SquareOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6958   static flatbuffers::Offset<SquareOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6959 };
6960 
6961 struct SquareOptionsBuilder {
6962   flatbuffers::FlatBufferBuilder &fbb_;
6963   flatbuffers::uoffset_t start_;
6964   explicit SquareOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6965         : fbb_(_fbb) {
6966     start_ = fbb_.StartTable();
6967   }
6968   SquareOptionsBuilder &operator=(const SquareOptionsBuilder &);
6969   flatbuffers::Offset<SquareOptions> Finish() {
6970     const auto end = fbb_.EndTable(start_);
6971     auto o = flatbuffers::Offset<SquareOptions>(end);
6972     return o;
6973   }
6974 };
6975 
6976 inline flatbuffers::Offset<SquareOptions> CreateSquareOptions(
6977     flatbuffers::FlatBufferBuilder &_fbb) {
6978   SquareOptionsBuilder builder_(_fbb);
6979   return builder_.Finish();
6980 }
6981 
6982 flatbuffers::Offset<SquareOptions> CreateSquareOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6983 
6984 struct ZerosLikeOptionsT : public flatbuffers::NativeTable {
6985   typedef ZerosLikeOptions TableType;
6986   ZerosLikeOptionsT() {
6987   }
6988 };
6989 
6990 struct ZerosLikeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6991   typedef ZerosLikeOptionsT NativeTableType;
6992   bool Verify(flatbuffers::Verifier &verifier) const {
6993     return VerifyTableStart(verifier) &&
6994            verifier.EndTable();
6995   }
6996   ZerosLikeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6997   void UnPackTo(ZerosLikeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6998   static flatbuffers::Offset<ZerosLikeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6999 };
7000 
7001 struct ZerosLikeOptionsBuilder {
7002   flatbuffers::FlatBufferBuilder &fbb_;
7003   flatbuffers::uoffset_t start_;
7004   explicit ZerosLikeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7005         : fbb_(_fbb) {
7006     start_ = fbb_.StartTable();
7007   }
7008   ZerosLikeOptionsBuilder &operator=(const ZerosLikeOptionsBuilder &);
7009   flatbuffers::Offset<ZerosLikeOptions> Finish() {
7010     const auto end = fbb_.EndTable(start_);
7011     auto o = flatbuffers::Offset<ZerosLikeOptions>(end);
7012     return o;
7013   }
7014 };
7015 
7016 inline flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(
7017     flatbuffers::FlatBufferBuilder &_fbb) {
7018   ZerosLikeOptionsBuilder builder_(_fbb);
7019   return builder_.Finish();
7020 }
7021 
7022 flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7023 
7024 struct FillOptionsT : public flatbuffers::NativeTable {
7025   typedef FillOptions TableType;
7026   FillOptionsT() {
7027   }
7028 };
7029 
7030 struct FillOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7031   typedef FillOptionsT NativeTableType;
7032   bool Verify(flatbuffers::Verifier &verifier) const {
7033     return VerifyTableStart(verifier) &&
7034            verifier.EndTable();
7035   }
7036   FillOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7037   void UnPackTo(FillOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7038   static flatbuffers::Offset<FillOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7039 };
7040 
7041 struct FillOptionsBuilder {
7042   flatbuffers::FlatBufferBuilder &fbb_;
7043   flatbuffers::uoffset_t start_;
7044   explicit FillOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7045         : fbb_(_fbb) {
7046     start_ = fbb_.StartTable();
7047   }
7048   FillOptionsBuilder &operator=(const FillOptionsBuilder &);
7049   flatbuffers::Offset<FillOptions> Finish() {
7050     const auto end = fbb_.EndTable(start_);
7051     auto o = flatbuffers::Offset<FillOptions>(end);
7052     return o;
7053   }
7054 };
7055 
7056 inline flatbuffers::Offset<FillOptions> CreateFillOptions(
7057     flatbuffers::FlatBufferBuilder &_fbb) {
7058   FillOptionsBuilder builder_(_fbb);
7059   return builder_.Finish();
7060 }
7061 
7062 flatbuffers::Offset<FillOptions> CreateFillOptions(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7063 
7064 struct FloorModOptionsT : public flatbuffers::NativeTable {
7065   typedef FloorModOptions TableType;
7066   FloorModOptionsT() {
7067   }
7068 };
7069 
7070 struct FloorModOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7071   typedef FloorModOptionsT NativeTableType;
7072   bool Verify(flatbuffers::Verifier &verifier) const {
7073     return VerifyTableStart(verifier) &&
7074            verifier.EndTable();
7075   }
7076   FloorModOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7077   void UnPackTo(FloorModOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7078   static flatbuffers::Offset<FloorModOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7079 };
7080 
7081 struct FloorModOptionsBuilder {
7082   flatbuffers::FlatBufferBuilder &fbb_;
7083   flatbuffers::uoffset_t start_;
7084   explicit FloorModOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7085         : fbb_(_fbb) {
7086     start_ = fbb_.StartTable();
7087   }
7088   FloorModOptionsBuilder &operator=(const FloorModOptionsBuilder &);
7089   flatbuffers::Offset<FloorModOptions> Finish() {
7090     const auto end = fbb_.EndTable(start_);
7091     auto o = flatbuffers::Offset<FloorModOptions>(end);
7092     return o;
7093   }
7094 };
7095 
7096 inline flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(
7097     flatbuffers::FlatBufferBuilder &_fbb) {
7098   FloorModOptionsBuilder builder_(_fbb);
7099   return builder_.Finish();
7100 }
7101 
7102 flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7103 
7104 struct RangeOptionsT : public flatbuffers::NativeTable {
7105   typedef RangeOptions TableType;
7106   RangeOptionsT() {
7107   }
7108 };
7109 
7110 struct RangeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7111   typedef RangeOptionsT NativeTableType;
7112   bool Verify(flatbuffers::Verifier &verifier) const {
7113     return VerifyTableStart(verifier) &&
7114            verifier.EndTable();
7115   }
7116   RangeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7117   void UnPackTo(RangeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7118   static flatbuffers::Offset<RangeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7119 };
7120 
7121 struct RangeOptionsBuilder {
7122   flatbuffers::FlatBufferBuilder &fbb_;
7123   flatbuffers::uoffset_t start_;
7124   explicit RangeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7125         : fbb_(_fbb) {
7126     start_ = fbb_.StartTable();
7127   }
7128   RangeOptionsBuilder &operator=(const RangeOptionsBuilder &);
7129   flatbuffers::Offset<RangeOptions> Finish() {
7130     const auto end = fbb_.EndTable(start_);
7131     auto o = flatbuffers::Offset<RangeOptions>(end);
7132     return o;
7133   }
7134 };
7135 
7136 inline flatbuffers::Offset<RangeOptions> CreateRangeOptions(
7137     flatbuffers::FlatBufferBuilder &_fbb) {
7138   RangeOptionsBuilder builder_(_fbb);
7139   return builder_.Finish();
7140 }
7141 
7142 flatbuffers::Offset<RangeOptions> CreateRangeOptions(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7143 
7144 struct LeakyReluOptionsT : public flatbuffers::NativeTable {
7145   typedef LeakyReluOptions TableType;
7146   float alpha;
7147   LeakyReluOptionsT()
7148       : alpha(0.0f) {
7149   }
7150 };
7151 
7152 struct LeakyReluOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7153   typedef LeakyReluOptionsT NativeTableType;
7154   enum {
7155     VT_ALPHA = 4
7156   };
7157   float alpha() const {
7158     return GetField<float>(VT_ALPHA, 0.0f);
7159   }
7160   bool Verify(flatbuffers::Verifier &verifier) const {
7161     return VerifyTableStart(verifier) &&
7162            VerifyField<float>(verifier, VT_ALPHA) &&
7163            verifier.EndTable();
7164   }
7165   LeakyReluOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7166   void UnPackTo(LeakyReluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7167   static flatbuffers::Offset<LeakyReluOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7168 };
7169 
7170 struct LeakyReluOptionsBuilder {
7171   flatbuffers::FlatBufferBuilder &fbb_;
7172   flatbuffers::uoffset_t start_;
7173   void add_alpha(float alpha) {
7174     fbb_.AddElement<float>(LeakyReluOptions::VT_ALPHA, alpha, 0.0f);
7175   }
7176   explicit LeakyReluOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7177         : fbb_(_fbb) {
7178     start_ = fbb_.StartTable();
7179   }
7180   LeakyReluOptionsBuilder &operator=(const LeakyReluOptionsBuilder &);
7181   flatbuffers::Offset<LeakyReluOptions> Finish() {
7182     const auto end = fbb_.EndTable(start_);
7183     auto o = flatbuffers::Offset<LeakyReluOptions>(end);
7184     return o;
7185   }
7186 };
7187 
7188 inline flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(
7189     flatbuffers::FlatBufferBuilder &_fbb,
7190     float alpha = 0.0f) {
7191   LeakyReluOptionsBuilder builder_(_fbb);
7192   builder_.add_alpha(alpha);
7193   return builder_.Finish();
7194 }
7195 
7196 flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7197 
7198 struct SquaredDifferenceOptionsT : public flatbuffers::NativeTable {
7199   typedef SquaredDifferenceOptions TableType;
7200   SquaredDifferenceOptionsT() {
7201   }
7202 };
7203 
7204 struct SquaredDifferenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7205   typedef SquaredDifferenceOptionsT NativeTableType;
7206   bool Verify(flatbuffers::Verifier &verifier) const {
7207     return VerifyTableStart(verifier) &&
7208            verifier.EndTable();
7209   }
7210   SquaredDifferenceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7211   void UnPackTo(SquaredDifferenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7212   static flatbuffers::Offset<SquaredDifferenceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7213 };
7214 
7215 struct SquaredDifferenceOptionsBuilder {
7216   flatbuffers::FlatBufferBuilder &fbb_;
7217   flatbuffers::uoffset_t start_;
7218   explicit SquaredDifferenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7219         : fbb_(_fbb) {
7220     start_ = fbb_.StartTable();
7221   }
7222   SquaredDifferenceOptionsBuilder &operator=(const SquaredDifferenceOptionsBuilder &);
7223   flatbuffers::Offset<SquaredDifferenceOptions> Finish() {
7224     const auto end = fbb_.EndTable(start_);
7225     auto o = flatbuffers::Offset<SquaredDifferenceOptions>(end);
7226     return o;
7227   }
7228 };
7229 
7230 inline flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(
7231     flatbuffers::FlatBufferBuilder &_fbb) {
7232   SquaredDifferenceOptionsBuilder builder_(_fbb);
7233   return builder_.Finish();
7234 }
7235 
7236 flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7237 
7238 struct MirrorPadOptionsT : public flatbuffers::NativeTable {
7239   typedef MirrorPadOptions TableType;
7240   MirrorPadMode mode;
7241   MirrorPadOptionsT()
7242       : mode(MirrorPadMode_REFLECT) {
7243   }
7244 };
7245 
7246 struct MirrorPadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7247   typedef MirrorPadOptionsT NativeTableType;
7248   enum {
7249     VT_MODE = 4
7250   };
7251   MirrorPadMode mode() const {
7252     return static_cast<MirrorPadMode>(GetField<int8_t>(VT_MODE, 0));
7253   }
7254   bool Verify(flatbuffers::Verifier &verifier) const {
7255     return VerifyTableStart(verifier) &&
7256            VerifyField<int8_t>(verifier, VT_MODE) &&
7257            verifier.EndTable();
7258   }
7259   MirrorPadOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7260   void UnPackTo(MirrorPadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7261   static flatbuffers::Offset<MirrorPadOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7262 };
7263 
7264 struct MirrorPadOptionsBuilder {
7265   flatbuffers::FlatBufferBuilder &fbb_;
7266   flatbuffers::uoffset_t start_;
7267   void add_mode(MirrorPadMode mode) {
7268     fbb_.AddElement<int8_t>(MirrorPadOptions::VT_MODE, static_cast<int8_t>(mode), 0);
7269   }
7270   explicit MirrorPadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7271         : fbb_(_fbb) {
7272     start_ = fbb_.StartTable();
7273   }
7274   MirrorPadOptionsBuilder &operator=(const MirrorPadOptionsBuilder &);
7275   flatbuffers::Offset<MirrorPadOptions> Finish() {
7276     const auto end = fbb_.EndTable(start_);
7277     auto o = flatbuffers::Offset<MirrorPadOptions>(end);
7278     return o;
7279   }
7280 };
7281 
7282 inline flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(
7283     flatbuffers::FlatBufferBuilder &_fbb,
7284     MirrorPadMode mode = MirrorPadMode_REFLECT) {
7285   MirrorPadOptionsBuilder builder_(_fbb);
7286   builder_.add_mode(mode);
7287   return builder_.Finish();
7288 }
7289 
7290 flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7291 
7292 struct UniqueOptionsT : public flatbuffers::NativeTable {
7293   typedef UniqueOptions TableType;
7294   TensorType idx_out_type;
7295   UniqueOptionsT()
7296       : idx_out_type(TensorType_INT32) {
7297   }
7298 };
7299 
7300 struct UniqueOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7301   typedef UniqueOptionsT NativeTableType;
7302   enum {
7303     VT_IDX_OUT_TYPE = 4
7304   };
7305   TensorType idx_out_type() const {
7306     return static_cast<TensorType>(GetField<int8_t>(VT_IDX_OUT_TYPE, 2));
7307   }
7308   bool Verify(flatbuffers::Verifier &verifier) const {
7309     return VerifyTableStart(verifier) &&
7310            VerifyField<int8_t>(verifier, VT_IDX_OUT_TYPE) &&
7311            verifier.EndTable();
7312   }
7313   UniqueOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7314   void UnPackTo(UniqueOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7315   static flatbuffers::Offset<UniqueOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7316 };
7317 
7318 struct UniqueOptionsBuilder {
7319   flatbuffers::FlatBufferBuilder &fbb_;
7320   flatbuffers::uoffset_t start_;
7321   void add_idx_out_type(TensorType idx_out_type) {
7322     fbb_.AddElement<int8_t>(UniqueOptions::VT_IDX_OUT_TYPE, static_cast<int8_t>(idx_out_type), 2);
7323   }
7324   explicit UniqueOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7325         : fbb_(_fbb) {
7326     start_ = fbb_.StartTable();
7327   }
7328   UniqueOptionsBuilder &operator=(const UniqueOptionsBuilder &);
7329   flatbuffers::Offset<UniqueOptions> Finish() {
7330     const auto end = fbb_.EndTable(start_);
7331     auto o = flatbuffers::Offset<UniqueOptions>(end);
7332     return o;
7333   }
7334 };
7335 
7336 inline flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(
7337     flatbuffers::FlatBufferBuilder &_fbb,
7338     TensorType idx_out_type = TensorType_INT32) {
7339   UniqueOptionsBuilder builder_(_fbb);
7340   builder_.add_idx_out_type(idx_out_type);
7341   return builder_.Finish();
7342 }
7343 
7344 flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7345 
7346 struct ReverseV2OptionsT : public flatbuffers::NativeTable {
7347   typedef ReverseV2Options TableType;
7348   ReverseV2OptionsT() {
7349   }
7350 };
7351 
7352 struct ReverseV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7353   typedef ReverseV2OptionsT NativeTableType;
7354   bool Verify(flatbuffers::Verifier &verifier) const {
7355     return VerifyTableStart(verifier) &&
7356            verifier.EndTable();
7357   }
7358   ReverseV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7359   void UnPackTo(ReverseV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7360   static flatbuffers::Offset<ReverseV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7361 };
7362 
7363 struct ReverseV2OptionsBuilder {
7364   flatbuffers::FlatBufferBuilder &fbb_;
7365   flatbuffers::uoffset_t start_;
7366   explicit ReverseV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7367         : fbb_(_fbb) {
7368     start_ = fbb_.StartTable();
7369   }
7370   ReverseV2OptionsBuilder &operator=(const ReverseV2OptionsBuilder &);
7371   flatbuffers::Offset<ReverseV2Options> Finish() {
7372     const auto end = fbb_.EndTable(start_);
7373     auto o = flatbuffers::Offset<ReverseV2Options>(end);
7374     return o;
7375   }
7376 };
7377 
7378 inline flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(
7379     flatbuffers::FlatBufferBuilder &_fbb) {
7380   ReverseV2OptionsBuilder builder_(_fbb);
7381   return builder_.Finish();
7382 }
7383 
7384 flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7385 
7386 struct AddNOptionsT : public flatbuffers::NativeTable {
7387   typedef AddNOptions TableType;
7388   AddNOptionsT() {
7389   }
7390 };
7391 
7392 struct AddNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7393   typedef AddNOptionsT NativeTableType;
7394   bool Verify(flatbuffers::Verifier &verifier) const {
7395     return VerifyTableStart(verifier) &&
7396            verifier.EndTable();
7397   }
7398   AddNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7399   void UnPackTo(AddNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7400   static flatbuffers::Offset<AddNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7401 };
7402 
7403 struct AddNOptionsBuilder {
7404   flatbuffers::FlatBufferBuilder &fbb_;
7405   flatbuffers::uoffset_t start_;
7406   explicit AddNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7407         : fbb_(_fbb) {
7408     start_ = fbb_.StartTable();
7409   }
7410   AddNOptionsBuilder &operator=(const AddNOptionsBuilder &);
7411   flatbuffers::Offset<AddNOptions> Finish() {
7412     const auto end = fbb_.EndTable(start_);
7413     auto o = flatbuffers::Offset<AddNOptions>(end);
7414     return o;
7415   }
7416 };
7417 
7418 inline flatbuffers::Offset<AddNOptions> CreateAddNOptions(
7419     flatbuffers::FlatBufferBuilder &_fbb) {
7420   AddNOptionsBuilder builder_(_fbb);
7421   return builder_.Finish();
7422 }
7423 
7424 flatbuffers::Offset<AddNOptions> CreateAddNOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7425 
7426 struct GatherNdOptionsT : public flatbuffers::NativeTable {
7427   typedef GatherNdOptions TableType;
7428   GatherNdOptionsT() {
7429   }
7430 };
7431 
7432 struct GatherNdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7433   typedef GatherNdOptionsT NativeTableType;
7434   bool Verify(flatbuffers::Verifier &verifier) const {
7435     return VerifyTableStart(verifier) &&
7436            verifier.EndTable();
7437   }
7438   GatherNdOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7439   void UnPackTo(GatherNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7440   static flatbuffers::Offset<GatherNdOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7441 };
7442 
7443 struct GatherNdOptionsBuilder {
7444   flatbuffers::FlatBufferBuilder &fbb_;
7445   flatbuffers::uoffset_t start_;
7446   explicit GatherNdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7447         : fbb_(_fbb) {
7448     start_ = fbb_.StartTable();
7449   }
7450   GatherNdOptionsBuilder &operator=(const GatherNdOptionsBuilder &);
7451   flatbuffers::Offset<GatherNdOptions> Finish() {
7452     const auto end = fbb_.EndTable(start_);
7453     auto o = flatbuffers::Offset<GatherNdOptions>(end);
7454     return o;
7455   }
7456 };
7457 
7458 inline flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(
7459     flatbuffers::FlatBufferBuilder &_fbb) {
7460   GatherNdOptionsBuilder builder_(_fbb);
7461   return builder_.Finish();
7462 }
7463 
7464 flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7465 
7466 struct WhereOptionsT : public flatbuffers::NativeTable {
7467   typedef WhereOptions TableType;
7468   WhereOptionsT() {
7469   }
7470 };
7471 
7472 struct WhereOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7473   typedef WhereOptionsT NativeTableType;
7474   bool Verify(flatbuffers::Verifier &verifier) const {
7475     return VerifyTableStart(verifier) &&
7476            verifier.EndTable();
7477   }
7478   WhereOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7479   void UnPackTo(WhereOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7480   static flatbuffers::Offset<WhereOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7481 };
7482 
7483 struct WhereOptionsBuilder {
7484   flatbuffers::FlatBufferBuilder &fbb_;
7485   flatbuffers::uoffset_t start_;
7486   explicit WhereOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7487         : fbb_(_fbb) {
7488     start_ = fbb_.StartTable();
7489   }
7490   WhereOptionsBuilder &operator=(const WhereOptionsBuilder &);
7491   flatbuffers::Offset<WhereOptions> Finish() {
7492     const auto end = fbb_.EndTable(start_);
7493     auto o = flatbuffers::Offset<WhereOptions>(end);
7494     return o;
7495   }
7496 };
7497 
7498 inline flatbuffers::Offset<WhereOptions> CreateWhereOptions(
7499     flatbuffers::FlatBufferBuilder &_fbb) {
7500   WhereOptionsBuilder builder_(_fbb);
7501   return builder_.Finish();
7502 }
7503 
7504 flatbuffers::Offset<WhereOptions> CreateWhereOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7505 
7506 struct ReverseSequenceOptionsT : public flatbuffers::NativeTable {
7507   typedef ReverseSequenceOptions TableType;
7508   int32_t seq_dim;
7509   int32_t batch_dim;
7510   ReverseSequenceOptionsT()
7511       : seq_dim(0),
7512         batch_dim(0) {
7513   }
7514 };
7515 
7516 struct ReverseSequenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7517   typedef ReverseSequenceOptionsT NativeTableType;
7518   enum {
7519     VT_SEQ_DIM = 4,
7520     VT_BATCH_DIM = 6
7521   };
7522   int32_t seq_dim() const {
7523     return GetField<int32_t>(VT_SEQ_DIM, 0);
7524   }
7525   int32_t batch_dim() const {
7526     return GetField<int32_t>(VT_BATCH_DIM, 0);
7527   }
7528   bool Verify(flatbuffers::Verifier &verifier) const {
7529     return VerifyTableStart(verifier) &&
7530            VerifyField<int32_t>(verifier, VT_SEQ_DIM) &&
7531            VerifyField<int32_t>(verifier, VT_BATCH_DIM) &&
7532            verifier.EndTable();
7533   }
7534   ReverseSequenceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7535   void UnPackTo(ReverseSequenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7536   static flatbuffers::Offset<ReverseSequenceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7537 };
7538 
7539 struct ReverseSequenceOptionsBuilder {
7540   flatbuffers::FlatBufferBuilder &fbb_;
7541   flatbuffers::uoffset_t start_;
7542   void add_seq_dim(int32_t seq_dim) {
7543     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_SEQ_DIM, seq_dim, 0);
7544   }
7545   void add_batch_dim(int32_t batch_dim) {
7546     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_BATCH_DIM, batch_dim, 0);
7547   }
7548   explicit ReverseSequenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7549         : fbb_(_fbb) {
7550     start_ = fbb_.StartTable();
7551   }
7552   ReverseSequenceOptionsBuilder &operator=(const ReverseSequenceOptionsBuilder &);
7553   flatbuffers::Offset<ReverseSequenceOptions> Finish() {
7554     const auto end = fbb_.EndTable(start_);
7555     auto o = flatbuffers::Offset<ReverseSequenceOptions>(end);
7556     return o;
7557   }
7558 };
7559 
7560 inline flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(
7561     flatbuffers::FlatBufferBuilder &_fbb,
7562     int32_t seq_dim = 0,
7563     int32_t batch_dim = 0) {
7564   ReverseSequenceOptionsBuilder builder_(_fbb);
7565   builder_.add_batch_dim(batch_dim);
7566   builder_.add_seq_dim(seq_dim);
7567   return builder_.Finish();
7568 }
7569 
7570 flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7571 
7572 struct OperatorCodeT : public flatbuffers::NativeTable {
7573   typedef OperatorCode TableType;
7574   BuiltinOperator builtin_code;
7575   std::string custom_code;
7576   int32_t version;
7577   OperatorCodeT()
7578       : builtin_code(BuiltinOperator_ADD),
7579         version(1) {
7580   }
7581 };
7582 
7583 struct OperatorCode FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7584   typedef OperatorCodeT NativeTableType;
7585   enum {
7586     VT_BUILTIN_CODE = 4,
7587     VT_CUSTOM_CODE = 6,
7588     VT_VERSION = 8
7589   };
7590   BuiltinOperator builtin_code() const {
7591     return static_cast<BuiltinOperator>(GetField<int8_t>(VT_BUILTIN_CODE, 0));
7592   }
7593   const flatbuffers::String *custom_code() const {
7594     return GetPointer<const flatbuffers::String *>(VT_CUSTOM_CODE);
7595   }
7596   int32_t version() const {
7597     return GetField<int32_t>(VT_VERSION, 1);
7598   }
7599   bool Verify(flatbuffers::Verifier &verifier) const {
7600     return VerifyTableStart(verifier) &&
7601            VerifyField<int8_t>(verifier, VT_BUILTIN_CODE) &&
7602            VerifyOffset(verifier, VT_CUSTOM_CODE) &&
7603            verifier.VerifyString(custom_code()) &&
7604            VerifyField<int32_t>(verifier, VT_VERSION) &&
7605            verifier.EndTable();
7606   }
7607   OperatorCodeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7608   void UnPackTo(OperatorCodeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7609   static flatbuffers::Offset<OperatorCode> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7610 };
7611 
7612 struct OperatorCodeBuilder {
7613   flatbuffers::FlatBufferBuilder &fbb_;
7614   flatbuffers::uoffset_t start_;
7615   void add_builtin_code(BuiltinOperator builtin_code) {
7616     fbb_.AddElement<int8_t>(OperatorCode::VT_BUILTIN_CODE, static_cast<int8_t>(builtin_code), 0);
7617   }
7618   void add_custom_code(flatbuffers::Offset<flatbuffers::String> custom_code) {
7619     fbb_.AddOffset(OperatorCode::VT_CUSTOM_CODE, custom_code);
7620   }
7621   void add_version(int32_t version) {
7622     fbb_.AddElement<int32_t>(OperatorCode::VT_VERSION, version, 1);
7623   }
7624   explicit OperatorCodeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7625         : fbb_(_fbb) {
7626     start_ = fbb_.StartTable();
7627   }
7628   OperatorCodeBuilder &operator=(const OperatorCodeBuilder &);
7629   flatbuffers::Offset<OperatorCode> Finish() {
7630     const auto end = fbb_.EndTable(start_);
7631     auto o = flatbuffers::Offset<OperatorCode>(end);
7632     return o;
7633   }
7634 };
7635 
7636 inline flatbuffers::Offset<OperatorCode> CreateOperatorCode(
7637     flatbuffers::FlatBufferBuilder &_fbb,
7638     BuiltinOperator builtin_code = BuiltinOperator_ADD,
7639     flatbuffers::Offset<flatbuffers::String> custom_code = 0,
7640     int32_t version = 1) {
7641   OperatorCodeBuilder builder_(_fbb);
7642   builder_.add_version(version);
7643   builder_.add_custom_code(custom_code);
7644   builder_.add_builtin_code(builtin_code);
7645   return builder_.Finish();
7646 }
7647 
7648 inline flatbuffers::Offset<OperatorCode> CreateOperatorCodeDirect(
7649     flatbuffers::FlatBufferBuilder &_fbb,
7650     BuiltinOperator builtin_code = BuiltinOperator_ADD,
7651     const char *custom_code = nullptr,
7652     int32_t version = 1) {
7653   return tflite::CreateOperatorCode(
7654       _fbb,
7655       builtin_code,
7656       custom_code ? _fbb.CreateString(custom_code) : 0,
7657       version);
7658 }
7659 
7660 flatbuffers::Offset<OperatorCode> CreateOperatorCode(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7661 
7662 struct OperatorT : public flatbuffers::NativeTable {
7663   typedef Operator TableType;
7664   uint32_t opcode_index;
7665   std::vector<int32_t> inputs;
7666   std::vector<int32_t> outputs;
7667   BuiltinOptionsUnion builtin_options;
7668   std::vector<uint8_t> custom_options;
7669   CustomOptionsFormat custom_options_format;
7670   std::vector<bool> mutating_variable_inputs;
7671   OperatorT()
7672       : opcode_index(0),
7673         custom_options_format(CustomOptionsFormat_FLEXBUFFERS) {
7674   }
7675 };
7676 
7677 struct Operator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7678   typedef OperatorT NativeTableType;
7679   enum {
7680     VT_OPCODE_INDEX = 4,
7681     VT_INPUTS = 6,
7682     VT_OUTPUTS = 8,
7683     VT_BUILTIN_OPTIONS_TYPE = 10,
7684     VT_BUILTIN_OPTIONS = 12,
7685     VT_CUSTOM_OPTIONS = 14,
7686     VT_CUSTOM_OPTIONS_FORMAT = 16,
7687     VT_MUTATING_VARIABLE_INPUTS = 18
7688   };
7689   uint32_t opcode_index() const {
7690     return GetField<uint32_t>(VT_OPCODE_INDEX, 0);
7691   }
7692   const flatbuffers::Vector<int32_t> *inputs() const {
7693     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
7694   }
7695   const flatbuffers::Vector<int32_t> *outputs() const {
7696     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
7697   }
7698   BuiltinOptions builtin_options_type() const {
7699     return static_cast<BuiltinOptions>(GetField<uint8_t>(VT_BUILTIN_OPTIONS_TYPE, 0));
7700   }
7701   const void *builtin_options() const {
7702     return GetPointer<const void *>(VT_BUILTIN_OPTIONS);
7703   }
7704   template<typename T> const T *builtin_options_as() const;
7705   const Conv2DOptions *builtin_options_as_Conv2DOptions() const {
7706     return builtin_options_type() == BuiltinOptions_Conv2DOptions ? static_cast<const Conv2DOptions *>(builtin_options()) : nullptr;
7707   }
7708   const DepthwiseConv2DOptions *builtin_options_as_DepthwiseConv2DOptions() const {
7709     return builtin_options_type() == BuiltinOptions_DepthwiseConv2DOptions ? static_cast<const DepthwiseConv2DOptions *>(builtin_options()) : nullptr;
7710   }
7711   const ConcatEmbeddingsOptions *builtin_options_as_ConcatEmbeddingsOptions() const {
7712     return builtin_options_type() == BuiltinOptions_ConcatEmbeddingsOptions ? static_cast<const ConcatEmbeddingsOptions *>(builtin_options()) : nullptr;
7713   }
7714   const LSHProjectionOptions *builtin_options_as_LSHProjectionOptions() const {
7715     return builtin_options_type() == BuiltinOptions_LSHProjectionOptions ? static_cast<const LSHProjectionOptions *>(builtin_options()) : nullptr;
7716   }
7717   const Pool2DOptions *builtin_options_as_Pool2DOptions() const {
7718     return builtin_options_type() == BuiltinOptions_Pool2DOptions ? static_cast<const Pool2DOptions *>(builtin_options()) : nullptr;
7719   }
7720   const SVDFOptions *builtin_options_as_SVDFOptions() const {
7721     return builtin_options_type() == BuiltinOptions_SVDFOptions ? static_cast<const SVDFOptions *>(builtin_options()) : nullptr;
7722   }
7723   const RNNOptions *builtin_options_as_RNNOptions() const {
7724     return builtin_options_type() == BuiltinOptions_RNNOptions ? static_cast<const RNNOptions *>(builtin_options()) : nullptr;
7725   }
7726   const FullyConnectedOptions *builtin_options_as_FullyConnectedOptions() const {
7727     return builtin_options_type() == BuiltinOptions_FullyConnectedOptions ? static_cast<const FullyConnectedOptions *>(builtin_options()) : nullptr;
7728   }
7729   const SoftmaxOptions *builtin_options_as_SoftmaxOptions() const {
7730     return builtin_options_type() == BuiltinOptions_SoftmaxOptions ? static_cast<const SoftmaxOptions *>(builtin_options()) : nullptr;
7731   }
7732   const ConcatenationOptions *builtin_options_as_ConcatenationOptions() const {
7733     return builtin_options_type() == BuiltinOptions_ConcatenationOptions ? static_cast<const ConcatenationOptions *>(builtin_options()) : nullptr;
7734   }
7735   const AddOptions *builtin_options_as_AddOptions() const {
7736     return builtin_options_type() == BuiltinOptions_AddOptions ? static_cast<const AddOptions *>(builtin_options()) : nullptr;
7737   }
7738   const L2NormOptions *builtin_options_as_L2NormOptions() const {
7739     return builtin_options_type() == BuiltinOptions_L2NormOptions ? static_cast<const L2NormOptions *>(builtin_options()) : nullptr;
7740   }
7741   const LocalResponseNormalizationOptions *builtin_options_as_LocalResponseNormalizationOptions() const {
7742     return builtin_options_type() == BuiltinOptions_LocalResponseNormalizationOptions ? static_cast<const LocalResponseNormalizationOptions *>(builtin_options()) : nullptr;
7743   }
7744   const LSTMOptions *builtin_options_as_LSTMOptions() const {
7745     return builtin_options_type() == BuiltinOptions_LSTMOptions ? static_cast<const LSTMOptions *>(builtin_options()) : nullptr;
7746   }
7747   const ResizeBilinearOptions *builtin_options_as_ResizeBilinearOptions() const {
7748     return builtin_options_type() == BuiltinOptions_ResizeBilinearOptions ? static_cast<const ResizeBilinearOptions *>(builtin_options()) : nullptr;
7749   }
7750   const CallOptions *builtin_options_as_CallOptions() const {
7751     return builtin_options_type() == BuiltinOptions_CallOptions ? static_cast<const CallOptions *>(builtin_options()) : nullptr;
7752   }
7753   const ReshapeOptions *builtin_options_as_ReshapeOptions() const {
7754     return builtin_options_type() == BuiltinOptions_ReshapeOptions ? static_cast<const ReshapeOptions *>(builtin_options()) : nullptr;
7755   }
7756   const SkipGramOptions *builtin_options_as_SkipGramOptions() const {
7757     return builtin_options_type() == BuiltinOptions_SkipGramOptions ? static_cast<const SkipGramOptions *>(builtin_options()) : nullptr;
7758   }
7759   const SpaceToDepthOptions *builtin_options_as_SpaceToDepthOptions() const {
7760     return builtin_options_type() == BuiltinOptions_SpaceToDepthOptions ? static_cast<const SpaceToDepthOptions *>(builtin_options()) : nullptr;
7761   }
7762   const EmbeddingLookupSparseOptions *builtin_options_as_EmbeddingLookupSparseOptions() const {
7763     return builtin_options_type() == BuiltinOptions_EmbeddingLookupSparseOptions ? static_cast<const EmbeddingLookupSparseOptions *>(builtin_options()) : nullptr;
7764   }
7765   const MulOptions *builtin_options_as_MulOptions() const {
7766     return builtin_options_type() == BuiltinOptions_MulOptions ? static_cast<const MulOptions *>(builtin_options()) : nullptr;
7767   }
7768   const PadOptions *builtin_options_as_PadOptions() const {
7769     return builtin_options_type() == BuiltinOptions_PadOptions ? static_cast<const PadOptions *>(builtin_options()) : nullptr;
7770   }
7771   const GatherOptions *builtin_options_as_GatherOptions() const {
7772     return builtin_options_type() == BuiltinOptions_GatherOptions ? static_cast<const GatherOptions *>(builtin_options()) : nullptr;
7773   }
7774   const BatchToSpaceNDOptions *builtin_options_as_BatchToSpaceNDOptions() const {
7775     return builtin_options_type() == BuiltinOptions_BatchToSpaceNDOptions ? static_cast<const BatchToSpaceNDOptions *>(builtin_options()) : nullptr;
7776   }
7777   const SpaceToBatchNDOptions *builtin_options_as_SpaceToBatchNDOptions() const {
7778     return builtin_options_type() == BuiltinOptions_SpaceToBatchNDOptions ? static_cast<const SpaceToBatchNDOptions *>(builtin_options()) : nullptr;
7779   }
7780   const TransposeOptions *builtin_options_as_TransposeOptions() const {
7781     return builtin_options_type() == BuiltinOptions_TransposeOptions ? static_cast<const TransposeOptions *>(builtin_options()) : nullptr;
7782   }
7783   const ReducerOptions *builtin_options_as_ReducerOptions() const {
7784     return builtin_options_type() == BuiltinOptions_ReducerOptions ? static_cast<const ReducerOptions *>(builtin_options()) : nullptr;
7785   }
7786   const SubOptions *builtin_options_as_SubOptions() const {
7787     return builtin_options_type() == BuiltinOptions_SubOptions ? static_cast<const SubOptions *>(builtin_options()) : nullptr;
7788   }
7789   const DivOptions *builtin_options_as_DivOptions() const {
7790     return builtin_options_type() == BuiltinOptions_DivOptions ? static_cast<const DivOptions *>(builtin_options()) : nullptr;
7791   }
7792   const SqueezeOptions *builtin_options_as_SqueezeOptions() const {
7793     return builtin_options_type() == BuiltinOptions_SqueezeOptions ? static_cast<const SqueezeOptions *>(builtin_options()) : nullptr;
7794   }
7795   const SequenceRNNOptions *builtin_options_as_SequenceRNNOptions() const {
7796     return builtin_options_type() == BuiltinOptions_SequenceRNNOptions ? static_cast<const SequenceRNNOptions *>(builtin_options()) : nullptr;
7797   }
7798   const StridedSliceOptions *builtin_options_as_StridedSliceOptions() const {
7799     return builtin_options_type() == BuiltinOptions_StridedSliceOptions ? static_cast<const StridedSliceOptions *>(builtin_options()) : nullptr;
7800   }
7801   const ExpOptions *builtin_options_as_ExpOptions() const {
7802     return builtin_options_type() == BuiltinOptions_ExpOptions ? static_cast<const ExpOptions *>(builtin_options()) : nullptr;
7803   }
7804   const TopKV2Options *builtin_options_as_TopKV2Options() const {
7805     return builtin_options_type() == BuiltinOptions_TopKV2Options ? static_cast<const TopKV2Options *>(builtin_options()) : nullptr;
7806   }
7807   const SplitOptions *builtin_options_as_SplitOptions() const {
7808     return builtin_options_type() == BuiltinOptions_SplitOptions ? static_cast<const SplitOptions *>(builtin_options()) : nullptr;
7809   }
7810   const LogSoftmaxOptions *builtin_options_as_LogSoftmaxOptions() const {
7811     return builtin_options_type() == BuiltinOptions_LogSoftmaxOptions ? static_cast<const LogSoftmaxOptions *>(builtin_options()) : nullptr;
7812   }
7813   const CastOptions *builtin_options_as_CastOptions() const {
7814     return builtin_options_type() == BuiltinOptions_CastOptions ? static_cast<const CastOptions *>(builtin_options()) : nullptr;
7815   }
7816   const DequantizeOptions *builtin_options_as_DequantizeOptions() const {
7817     return builtin_options_type() == BuiltinOptions_DequantizeOptions ? static_cast<const DequantizeOptions *>(builtin_options()) : nullptr;
7818   }
7819   const MaximumMinimumOptions *builtin_options_as_MaximumMinimumOptions() const {
7820     return builtin_options_type() == BuiltinOptions_MaximumMinimumOptions ? static_cast<const MaximumMinimumOptions *>(builtin_options()) : nullptr;
7821   }
7822   const ArgMaxOptions *builtin_options_as_ArgMaxOptions() const {
7823     return builtin_options_type() == BuiltinOptions_ArgMaxOptions ? static_cast<const ArgMaxOptions *>(builtin_options()) : nullptr;
7824   }
7825   const LessOptions *builtin_options_as_LessOptions() const {
7826     return builtin_options_type() == BuiltinOptions_LessOptions ? static_cast<const LessOptions *>(builtin_options()) : nullptr;
7827   }
7828   const NegOptions *builtin_options_as_NegOptions() const {
7829     return builtin_options_type() == BuiltinOptions_NegOptions ? static_cast<const NegOptions *>(builtin_options()) : nullptr;
7830   }
7831   const PadV2Options *builtin_options_as_PadV2Options() const {
7832     return builtin_options_type() == BuiltinOptions_PadV2Options ? static_cast<const PadV2Options *>(builtin_options()) : nullptr;
7833   }
7834   const GreaterOptions *builtin_options_as_GreaterOptions() const {
7835     return builtin_options_type() == BuiltinOptions_GreaterOptions ? static_cast<const GreaterOptions *>(builtin_options()) : nullptr;
7836   }
7837   const GreaterEqualOptions *builtin_options_as_GreaterEqualOptions() const {
7838     return builtin_options_type() == BuiltinOptions_GreaterEqualOptions ? static_cast<const GreaterEqualOptions *>(builtin_options()) : nullptr;
7839   }
7840   const LessEqualOptions *builtin_options_as_LessEqualOptions() const {
7841     return builtin_options_type() == BuiltinOptions_LessEqualOptions ? static_cast<const LessEqualOptions *>(builtin_options()) : nullptr;
7842   }
7843   const SelectOptions *builtin_options_as_SelectOptions() const {
7844     return builtin_options_type() == BuiltinOptions_SelectOptions ? static_cast<const SelectOptions *>(builtin_options()) : nullptr;
7845   }
7846   const SliceOptions *builtin_options_as_SliceOptions() const {
7847     return builtin_options_type() == BuiltinOptions_SliceOptions ? static_cast<const SliceOptions *>(builtin_options()) : nullptr;
7848   }
7849   const TransposeConvOptions *builtin_options_as_TransposeConvOptions() const {
7850     return builtin_options_type() == BuiltinOptions_TransposeConvOptions ? static_cast<const TransposeConvOptions *>(builtin_options()) : nullptr;
7851   }
7852   const SparseToDenseOptions *builtin_options_as_SparseToDenseOptions() const {
7853     return builtin_options_type() == BuiltinOptions_SparseToDenseOptions ? static_cast<const SparseToDenseOptions *>(builtin_options()) : nullptr;
7854   }
7855   const TileOptions *builtin_options_as_TileOptions() const {
7856     return builtin_options_type() == BuiltinOptions_TileOptions ? static_cast<const TileOptions *>(builtin_options()) : nullptr;
7857   }
7858   const ExpandDimsOptions *builtin_options_as_ExpandDimsOptions() const {
7859     return builtin_options_type() == BuiltinOptions_ExpandDimsOptions ? static_cast<const ExpandDimsOptions *>(builtin_options()) : nullptr;
7860   }
7861   const EqualOptions *builtin_options_as_EqualOptions() const {
7862     return builtin_options_type() == BuiltinOptions_EqualOptions ? static_cast<const EqualOptions *>(builtin_options()) : nullptr;
7863   }
7864   const NotEqualOptions *builtin_options_as_NotEqualOptions() const {
7865     return builtin_options_type() == BuiltinOptions_NotEqualOptions ? static_cast<const NotEqualOptions *>(builtin_options()) : nullptr;
7866   }
7867   const ShapeOptions *builtin_options_as_ShapeOptions() const {
7868     return builtin_options_type() == BuiltinOptions_ShapeOptions ? static_cast<const ShapeOptions *>(builtin_options()) : nullptr;
7869   }
7870   const PowOptions *builtin_options_as_PowOptions() const {
7871     return builtin_options_type() == BuiltinOptions_PowOptions ? static_cast<const PowOptions *>(builtin_options()) : nullptr;
7872   }
7873   const ArgMinOptions *builtin_options_as_ArgMinOptions() const {
7874     return builtin_options_type() == BuiltinOptions_ArgMinOptions ? static_cast<const ArgMinOptions *>(builtin_options()) : nullptr;
7875   }
7876   const FakeQuantOptions *builtin_options_as_FakeQuantOptions() const {
7877     return builtin_options_type() == BuiltinOptions_FakeQuantOptions ? static_cast<const FakeQuantOptions *>(builtin_options()) : nullptr;
7878   }
7879   const PackOptions *builtin_options_as_PackOptions() const {
7880     return builtin_options_type() == BuiltinOptions_PackOptions ? static_cast<const PackOptions *>(builtin_options()) : nullptr;
7881   }
7882   const LogicalOrOptions *builtin_options_as_LogicalOrOptions() const {
7883     return builtin_options_type() == BuiltinOptions_LogicalOrOptions ? static_cast<const LogicalOrOptions *>(builtin_options()) : nullptr;
7884   }
7885   const OneHotOptions *builtin_options_as_OneHotOptions() const {
7886     return builtin_options_type() == BuiltinOptions_OneHotOptions ? static_cast<const OneHotOptions *>(builtin_options()) : nullptr;
7887   }
7888   const LogicalAndOptions *builtin_options_as_LogicalAndOptions() const {
7889     return builtin_options_type() == BuiltinOptions_LogicalAndOptions ? static_cast<const LogicalAndOptions *>(builtin_options()) : nullptr;
7890   }
7891   const LogicalNotOptions *builtin_options_as_LogicalNotOptions() const {
7892     return builtin_options_type() == BuiltinOptions_LogicalNotOptions ? static_cast<const LogicalNotOptions *>(builtin_options()) : nullptr;
7893   }
7894   const UnpackOptions *builtin_options_as_UnpackOptions() const {
7895     return builtin_options_type() == BuiltinOptions_UnpackOptions ? static_cast<const UnpackOptions *>(builtin_options()) : nullptr;
7896   }
7897   const FloorDivOptions *builtin_options_as_FloorDivOptions() const {
7898     return builtin_options_type() == BuiltinOptions_FloorDivOptions ? static_cast<const FloorDivOptions *>(builtin_options()) : nullptr;
7899   }
7900   const SquareOptions *builtin_options_as_SquareOptions() const {
7901     return builtin_options_type() == BuiltinOptions_SquareOptions ? static_cast<const SquareOptions *>(builtin_options()) : nullptr;
7902   }
7903   const ZerosLikeOptions *builtin_options_as_ZerosLikeOptions() const {
7904     return builtin_options_type() == BuiltinOptions_ZerosLikeOptions ? static_cast<const ZerosLikeOptions *>(builtin_options()) : nullptr;
7905   }
7906   const FillOptions *builtin_options_as_FillOptions() const {
7907     return builtin_options_type() == BuiltinOptions_FillOptions ? static_cast<const FillOptions *>(builtin_options()) : nullptr;
7908   }
7909   const BidirectionalSequenceLSTMOptions *builtin_options_as_BidirectionalSequenceLSTMOptions() const {
7910     return builtin_options_type() == BuiltinOptions_BidirectionalSequenceLSTMOptions ? static_cast<const BidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
7911   }
7912   const BidirectionalSequenceRNNOptions *builtin_options_as_BidirectionalSequenceRNNOptions() const {
7913     return builtin_options_type() == BuiltinOptions_BidirectionalSequenceRNNOptions ? static_cast<const BidirectionalSequenceRNNOptions *>(builtin_options()) : nullptr;
7914   }
7915   const UnidirectionalSequenceLSTMOptions *builtin_options_as_UnidirectionalSequenceLSTMOptions() const {
7916     return builtin_options_type() == BuiltinOptions_UnidirectionalSequenceLSTMOptions ? static_cast<const UnidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
7917   }
7918   const FloorModOptions *builtin_options_as_FloorModOptions() const {
7919     return builtin_options_type() == BuiltinOptions_FloorModOptions ? static_cast<const FloorModOptions *>(builtin_options()) : nullptr;
7920   }
7921   const RangeOptions *builtin_options_as_RangeOptions() const {
7922     return builtin_options_type() == BuiltinOptions_RangeOptions ? static_cast<const RangeOptions *>(builtin_options()) : nullptr;
7923   }
7924   const ResizeNearestNeighborOptions *builtin_options_as_ResizeNearestNeighborOptions() const {
7925     return builtin_options_type() == BuiltinOptions_ResizeNearestNeighborOptions ? static_cast<const ResizeNearestNeighborOptions *>(builtin_options()) : nullptr;
7926   }
7927   const LeakyReluOptions *builtin_options_as_LeakyReluOptions() const {
7928     return builtin_options_type() == BuiltinOptions_LeakyReluOptions ? static_cast<const LeakyReluOptions *>(builtin_options()) : nullptr;
7929   }
7930   const SquaredDifferenceOptions *builtin_options_as_SquaredDifferenceOptions() const {
7931     return builtin_options_type() == BuiltinOptions_SquaredDifferenceOptions ? static_cast<const SquaredDifferenceOptions *>(builtin_options()) : nullptr;
7932   }
7933   const MirrorPadOptions *builtin_options_as_MirrorPadOptions() const {
7934     return builtin_options_type() == BuiltinOptions_MirrorPadOptions ? static_cast<const MirrorPadOptions *>(builtin_options()) : nullptr;
7935   }
7936   const AbsOptions *builtin_options_as_AbsOptions() const {
7937     return builtin_options_type() == BuiltinOptions_AbsOptions ? static_cast<const AbsOptions *>(builtin_options()) : nullptr;
7938   }
7939   const SplitVOptions *builtin_options_as_SplitVOptions() const {
7940     return builtin_options_type() == BuiltinOptions_SplitVOptions ? static_cast<const SplitVOptions *>(builtin_options()) : nullptr;
7941   }
7942   const UniqueOptions *builtin_options_as_UniqueOptions() const {
7943     return builtin_options_type() == BuiltinOptions_UniqueOptions ? static_cast<const UniqueOptions *>(builtin_options()) : nullptr;
7944   }
7945   const ReverseV2Options *builtin_options_as_ReverseV2Options() const {
7946     return builtin_options_type() == BuiltinOptions_ReverseV2Options ? static_cast<const ReverseV2Options *>(builtin_options()) : nullptr;
7947   }
7948   const AddNOptions *builtin_options_as_AddNOptions() const {
7949     return builtin_options_type() == BuiltinOptions_AddNOptions ? static_cast<const AddNOptions *>(builtin_options()) : nullptr;
7950   }
7951   const GatherNdOptions *builtin_options_as_GatherNdOptions() const {
7952     return builtin_options_type() == BuiltinOptions_GatherNdOptions ? static_cast<const GatherNdOptions *>(builtin_options()) : nullptr;
7953   }
7954   const CosOptions *builtin_options_as_CosOptions() const {
7955     return builtin_options_type() == BuiltinOptions_CosOptions ? static_cast<const CosOptions *>(builtin_options()) : nullptr;
7956   }
7957   const WhereOptions *builtin_options_as_WhereOptions() const {
7958     return builtin_options_type() == BuiltinOptions_WhereOptions ? static_cast<const WhereOptions *>(builtin_options()) : nullptr;
7959   }
7960   const RankOptions *builtin_options_as_RankOptions() const {
7961     return builtin_options_type() == BuiltinOptions_RankOptions ? static_cast<const RankOptions *>(builtin_options()) : nullptr;
7962   }
7963   const ReverseSequenceOptions *builtin_options_as_ReverseSequenceOptions() const {
7964     return builtin_options_type() == BuiltinOptions_ReverseSequenceOptions ? static_cast<const ReverseSequenceOptions *>(builtin_options()) : nullptr;
7965   }
7966   const flatbuffers::Vector<uint8_t> *custom_options() const {
7967     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM_OPTIONS);
7968   }
7969   CustomOptionsFormat custom_options_format() const {
7970     return static_cast<CustomOptionsFormat>(GetField<int8_t>(VT_CUSTOM_OPTIONS_FORMAT, 0));
7971   }
7972   const flatbuffers::Vector<uint8_t> *mutating_variable_inputs() const {
7973     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MUTATING_VARIABLE_INPUTS);
7974   }
7975   bool Verify(flatbuffers::Verifier &verifier) const {
7976     return VerifyTableStart(verifier) &&
7977            VerifyField<uint32_t>(verifier, VT_OPCODE_INDEX) &&
7978            VerifyOffset(verifier, VT_INPUTS) &&
7979            verifier.VerifyVector(inputs()) &&
7980            VerifyOffset(verifier, VT_OUTPUTS) &&
7981            verifier.VerifyVector(outputs()) &&
7982            VerifyField<uint8_t>(verifier, VT_BUILTIN_OPTIONS_TYPE) &&
7983            VerifyOffset(verifier, VT_BUILTIN_OPTIONS) &&
7984            VerifyBuiltinOptions(verifier, builtin_options(), builtin_options_type()) &&
7985            VerifyOffset(verifier, VT_CUSTOM_OPTIONS) &&
7986            verifier.VerifyVector(custom_options()) &&
7987            VerifyField<int8_t>(verifier, VT_CUSTOM_OPTIONS_FORMAT) &&
7988            VerifyOffset(verifier, VT_MUTATING_VARIABLE_INPUTS) &&
7989            verifier.VerifyVector(mutating_variable_inputs()) &&
7990            verifier.EndTable();
7991   }
7992   OperatorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7993   void UnPackTo(OperatorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7994   static flatbuffers::Offset<Operator> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7995 };
7996 
7997 template<> inline const Conv2DOptions *Operator::builtin_options_as<Conv2DOptions>() const {
7998   return builtin_options_as_Conv2DOptions();
7999 }
8000 
8001 template<> inline const DepthwiseConv2DOptions *Operator::builtin_options_as<DepthwiseConv2DOptions>() const {
8002   return builtin_options_as_DepthwiseConv2DOptions();
8003 }
8004 
8005 template<> inline const ConcatEmbeddingsOptions *Operator::builtin_options_as<ConcatEmbeddingsOptions>() const {
8006   return builtin_options_as_ConcatEmbeddingsOptions();
8007 }
8008 
8009 template<> inline const LSHProjectionOptions *Operator::builtin_options_as<LSHProjectionOptions>() const {
8010   return builtin_options_as_LSHProjectionOptions();
8011 }
8012 
8013 template<> inline const Pool2DOptions *Operator::builtin_options_as<Pool2DOptions>() const {
8014   return builtin_options_as_Pool2DOptions();
8015 }
8016 
8017 template<> inline const SVDFOptions *Operator::builtin_options_as<SVDFOptions>() const {
8018   return builtin_options_as_SVDFOptions();
8019 }
8020 
8021 template<> inline const RNNOptions *Operator::builtin_options_as<RNNOptions>() const {
8022   return builtin_options_as_RNNOptions();
8023 }
8024 
8025 template<> inline const FullyConnectedOptions *Operator::builtin_options_as<FullyConnectedOptions>() const {
8026   return builtin_options_as_FullyConnectedOptions();
8027 }
8028 
8029 template<> inline const SoftmaxOptions *Operator::builtin_options_as<SoftmaxOptions>() const {
8030   return builtin_options_as_SoftmaxOptions();
8031 }
8032 
8033 template<> inline const ConcatenationOptions *Operator::builtin_options_as<ConcatenationOptions>() const {
8034   return builtin_options_as_ConcatenationOptions();
8035 }
8036 
8037 template<> inline const AddOptions *Operator::builtin_options_as<AddOptions>() const {
8038   return builtin_options_as_AddOptions();
8039 }
8040 
8041 template<> inline const L2NormOptions *Operator::builtin_options_as<L2NormOptions>() const {
8042   return builtin_options_as_L2NormOptions();
8043 }
8044 
8045 template<> inline const LocalResponseNormalizationOptions *Operator::builtin_options_as<LocalResponseNormalizationOptions>() const {
8046   return builtin_options_as_LocalResponseNormalizationOptions();
8047 }
8048 
8049 template<> inline const LSTMOptions *Operator::builtin_options_as<LSTMOptions>() const {
8050   return builtin_options_as_LSTMOptions();
8051 }
8052 
8053 template<> inline const ResizeBilinearOptions *Operator::builtin_options_as<ResizeBilinearOptions>() const {
8054   return builtin_options_as_ResizeBilinearOptions();
8055 }
8056 
8057 template<> inline const CallOptions *Operator::builtin_options_as<CallOptions>() const {
8058   return builtin_options_as_CallOptions();
8059 }
8060 
8061 template<> inline const ReshapeOptions *Operator::builtin_options_as<ReshapeOptions>() const {
8062   return builtin_options_as_ReshapeOptions();
8063 }
8064 
8065 template<> inline const SkipGramOptions *Operator::builtin_options_as<SkipGramOptions>() const {
8066   return builtin_options_as_SkipGramOptions();
8067 }
8068 
8069 template<> inline const SpaceToDepthOptions *Operator::builtin_options_as<SpaceToDepthOptions>() const {
8070   return builtin_options_as_SpaceToDepthOptions();
8071 }
8072 
8073 template<> inline const EmbeddingLookupSparseOptions *Operator::builtin_options_as<EmbeddingLookupSparseOptions>() const {
8074   return builtin_options_as_EmbeddingLookupSparseOptions();
8075 }
8076 
8077 template<> inline const MulOptions *Operator::builtin_options_as<MulOptions>() const {
8078   return builtin_options_as_MulOptions();
8079 }
8080 
8081 template<> inline const PadOptions *Operator::builtin_options_as<PadOptions>() const {
8082   return builtin_options_as_PadOptions();
8083 }
8084 
8085 template<> inline const GatherOptions *Operator::builtin_options_as<GatherOptions>() const {
8086   return builtin_options_as_GatherOptions();
8087 }
8088 
8089 template<> inline const BatchToSpaceNDOptions *Operator::builtin_options_as<BatchToSpaceNDOptions>() const {
8090   return builtin_options_as_BatchToSpaceNDOptions();
8091 }
8092 
8093 template<> inline const SpaceToBatchNDOptions *Operator::builtin_options_as<SpaceToBatchNDOptions>() const {
8094   return builtin_options_as_SpaceToBatchNDOptions();
8095 }
8096 
8097 template<> inline const TransposeOptions *Operator::builtin_options_as<TransposeOptions>() const {
8098   return builtin_options_as_TransposeOptions();
8099 }
8100 
8101 template<> inline const ReducerOptions *Operator::builtin_options_as<ReducerOptions>() const {
8102   return builtin_options_as_ReducerOptions();
8103 }
8104 
8105 template<> inline const SubOptions *Operator::builtin_options_as<SubOptions>() const {
8106   return builtin_options_as_SubOptions();
8107 }
8108 
8109 template<> inline const DivOptions *Operator::builtin_options_as<DivOptions>() const {
8110   return builtin_options_as_DivOptions();
8111 }
8112 
8113 template<> inline const SqueezeOptions *Operator::builtin_options_as<SqueezeOptions>() const {
8114   return builtin_options_as_SqueezeOptions();
8115 }
8116 
8117 template<> inline const SequenceRNNOptions *Operator::builtin_options_as<SequenceRNNOptions>() const {
8118   return builtin_options_as_SequenceRNNOptions();
8119 }
8120 
8121 template<> inline const StridedSliceOptions *Operator::builtin_options_as<StridedSliceOptions>() const {
8122   return builtin_options_as_StridedSliceOptions();
8123 }
8124 
8125 template<> inline const ExpOptions *Operator::builtin_options_as<ExpOptions>() const {
8126   return builtin_options_as_ExpOptions();
8127 }
8128 
8129 template<> inline const TopKV2Options *Operator::builtin_options_as<TopKV2Options>() const {
8130   return builtin_options_as_TopKV2Options();
8131 }
8132 
8133 template<> inline const SplitOptions *Operator::builtin_options_as<SplitOptions>() const {
8134   return builtin_options_as_SplitOptions();
8135 }
8136 
8137 template<> inline const LogSoftmaxOptions *Operator::builtin_options_as<LogSoftmaxOptions>() const {
8138   return builtin_options_as_LogSoftmaxOptions();
8139 }
8140 
8141 template<> inline const CastOptions *Operator::builtin_options_as<CastOptions>() const {
8142   return builtin_options_as_CastOptions();
8143 }
8144 
8145 template<> inline const DequantizeOptions *Operator::builtin_options_as<DequantizeOptions>() const {
8146   return builtin_options_as_DequantizeOptions();
8147 }
8148 
8149 template<> inline const MaximumMinimumOptions *Operator::builtin_options_as<MaximumMinimumOptions>() const {
8150   return builtin_options_as_MaximumMinimumOptions();
8151 }
8152 
8153 template<> inline const ArgMaxOptions *Operator::builtin_options_as<ArgMaxOptions>() const {
8154   return builtin_options_as_ArgMaxOptions();
8155 }
8156 
8157 template<> inline const LessOptions *Operator::builtin_options_as<LessOptions>() const {
8158   return builtin_options_as_LessOptions();
8159 }
8160 
8161 template<> inline const NegOptions *Operator::builtin_options_as<NegOptions>() const {
8162   return builtin_options_as_NegOptions();
8163 }
8164 
8165 template<> inline const PadV2Options *Operator::builtin_options_as<PadV2Options>() const {
8166   return builtin_options_as_PadV2Options();
8167 }
8168 
8169 template<> inline const GreaterOptions *Operator::builtin_options_as<GreaterOptions>() const {
8170   return builtin_options_as_GreaterOptions();
8171 }
8172 
8173 template<> inline const GreaterEqualOptions *Operator::builtin_options_as<GreaterEqualOptions>() const {
8174   return builtin_options_as_GreaterEqualOptions();
8175 }
8176 
8177 template<> inline const LessEqualOptions *Operator::builtin_options_as<LessEqualOptions>() const {
8178   return builtin_options_as_LessEqualOptions();
8179 }
8180 
8181 template<> inline const SelectOptions *Operator::builtin_options_as<SelectOptions>() const {
8182   return builtin_options_as_SelectOptions();
8183 }
8184 
8185 template<> inline const SliceOptions *Operator::builtin_options_as<SliceOptions>() const {
8186   return builtin_options_as_SliceOptions();
8187 }
8188 
8189 template<> inline const TransposeConvOptions *Operator::builtin_options_as<TransposeConvOptions>() const {
8190   return builtin_options_as_TransposeConvOptions();
8191 }
8192 
8193 template<> inline const SparseToDenseOptions *Operator::builtin_options_as<SparseToDenseOptions>() const {
8194   return builtin_options_as_SparseToDenseOptions();
8195 }
8196 
8197 template<> inline const TileOptions *Operator::builtin_options_as<TileOptions>() const {
8198   return builtin_options_as_TileOptions();
8199 }
8200 
8201 template<> inline const ExpandDimsOptions *Operator::builtin_options_as<ExpandDimsOptions>() const {
8202   return builtin_options_as_ExpandDimsOptions();
8203 }
8204 
8205 template<> inline const EqualOptions *Operator::builtin_options_as<EqualOptions>() const {
8206   return builtin_options_as_EqualOptions();
8207 }
8208 
8209 template<> inline const NotEqualOptions *Operator::builtin_options_as<NotEqualOptions>() const {
8210   return builtin_options_as_NotEqualOptions();
8211 }
8212 
8213 template<> inline const ShapeOptions *Operator::builtin_options_as<ShapeOptions>() const {
8214   return builtin_options_as_ShapeOptions();
8215 }
8216 
8217 template<> inline const PowOptions *Operator::builtin_options_as<PowOptions>() const {
8218   return builtin_options_as_PowOptions();
8219 }
8220 
8221 template<> inline const ArgMinOptions *Operator::builtin_options_as<ArgMinOptions>() const {
8222   return builtin_options_as_ArgMinOptions();
8223 }
8224 
8225 template<> inline const FakeQuantOptions *Operator::builtin_options_as<FakeQuantOptions>() const {
8226   return builtin_options_as_FakeQuantOptions();
8227 }
8228 
8229 template<> inline const PackOptions *Operator::builtin_options_as<PackOptions>() const {
8230   return builtin_options_as_PackOptions();
8231 }
8232 
8233 template<> inline const LogicalOrOptions *Operator::builtin_options_as<LogicalOrOptions>() const {
8234   return builtin_options_as_LogicalOrOptions();
8235 }
8236 
8237 template<> inline const OneHotOptions *Operator::builtin_options_as<OneHotOptions>() const {
8238   return builtin_options_as_OneHotOptions();
8239 }
8240 
8241 template<> inline const LogicalAndOptions *Operator::builtin_options_as<LogicalAndOptions>() const {
8242   return builtin_options_as_LogicalAndOptions();
8243 }
8244 
8245 template<> inline const LogicalNotOptions *Operator::builtin_options_as<LogicalNotOptions>() const {
8246   return builtin_options_as_LogicalNotOptions();
8247 }
8248 
8249 template<> inline const UnpackOptions *Operator::builtin_options_as<UnpackOptions>() const {
8250   return builtin_options_as_UnpackOptions();
8251 }
8252 
8253 template<> inline const FloorDivOptions *Operator::builtin_options_as<FloorDivOptions>() const {
8254   return builtin_options_as_FloorDivOptions();
8255 }
8256 
8257 template<> inline const SquareOptions *Operator::builtin_options_as<SquareOptions>() const {
8258   return builtin_options_as_SquareOptions();
8259 }
8260 
8261 template<> inline const ZerosLikeOptions *Operator::builtin_options_as<ZerosLikeOptions>() const {
8262   return builtin_options_as_ZerosLikeOptions();
8263 }
8264 
8265 template<> inline const FillOptions *Operator::builtin_options_as<FillOptions>() const {
8266   return builtin_options_as_FillOptions();
8267 }
8268 
8269 template<> inline const BidirectionalSequenceLSTMOptions *Operator::builtin_options_as<BidirectionalSequenceLSTMOptions>() const {
8270   return builtin_options_as_BidirectionalSequenceLSTMOptions();
8271 }
8272 
8273 template<> inline const BidirectionalSequenceRNNOptions *Operator::builtin_options_as<BidirectionalSequenceRNNOptions>() const {
8274   return builtin_options_as_BidirectionalSequenceRNNOptions();
8275 }
8276 
8277 template<> inline const UnidirectionalSequenceLSTMOptions *Operator::builtin_options_as<UnidirectionalSequenceLSTMOptions>() const {
8278   return builtin_options_as_UnidirectionalSequenceLSTMOptions();
8279 }
8280 
8281 template<> inline const FloorModOptions *Operator::builtin_options_as<FloorModOptions>() const {
8282   return builtin_options_as_FloorModOptions();
8283 }
8284 
8285 template<> inline const RangeOptions *Operator::builtin_options_as<RangeOptions>() const {
8286   return builtin_options_as_RangeOptions();
8287 }
8288 
8289 template<> inline const ResizeNearestNeighborOptions *Operator::builtin_options_as<ResizeNearestNeighborOptions>() const {
8290   return builtin_options_as_ResizeNearestNeighborOptions();
8291 }
8292 
8293 template<> inline const LeakyReluOptions *Operator::builtin_options_as<LeakyReluOptions>() const {
8294   return builtin_options_as_LeakyReluOptions();
8295 }
8296 
8297 template<> inline const SquaredDifferenceOptions *Operator::builtin_options_as<SquaredDifferenceOptions>() const {
8298   return builtin_options_as_SquaredDifferenceOptions();
8299 }
8300 
8301 template<> inline const MirrorPadOptions *Operator::builtin_options_as<MirrorPadOptions>() const {
8302   return builtin_options_as_MirrorPadOptions();
8303 }
8304 
8305 template<> inline const AbsOptions *Operator::builtin_options_as<AbsOptions>() const {
8306   return builtin_options_as_AbsOptions();
8307 }
8308 
8309 template<> inline const SplitVOptions *Operator::builtin_options_as<SplitVOptions>() const {
8310   return builtin_options_as_SplitVOptions();
8311 }
8312 
8313 template<> inline const UniqueOptions *Operator::builtin_options_as<UniqueOptions>() const {
8314   return builtin_options_as_UniqueOptions();
8315 }
8316 
8317 template<> inline const ReverseV2Options *Operator::builtin_options_as<ReverseV2Options>() const {
8318   return builtin_options_as_ReverseV2Options();
8319 }
8320 
8321 template<> inline const AddNOptions *Operator::builtin_options_as<AddNOptions>() const {
8322   return builtin_options_as_AddNOptions();
8323 }
8324 
8325 template<> inline const GatherNdOptions *Operator::builtin_options_as<GatherNdOptions>() const {
8326   return builtin_options_as_GatherNdOptions();
8327 }
8328 
8329 template<> inline const CosOptions *Operator::builtin_options_as<CosOptions>() const {
8330   return builtin_options_as_CosOptions();
8331 }
8332 
8333 template<> inline const WhereOptions *Operator::builtin_options_as<WhereOptions>() const {
8334   return builtin_options_as_WhereOptions();
8335 }
8336 
8337 template<> inline const RankOptions *Operator::builtin_options_as<RankOptions>() const {
8338   return builtin_options_as_RankOptions();
8339 }
8340 
8341 template<> inline const ReverseSequenceOptions *Operator::builtin_options_as<ReverseSequenceOptions>() const {
8342   return builtin_options_as_ReverseSequenceOptions();
8343 }
8344 
8345 struct OperatorBuilder {
8346   flatbuffers::FlatBufferBuilder &fbb_;
8347   flatbuffers::uoffset_t start_;
8348   void add_opcode_index(uint32_t opcode_index) {
8349     fbb_.AddElement<uint32_t>(Operator::VT_OPCODE_INDEX, opcode_index, 0);
8350   }
8351   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
8352     fbb_.AddOffset(Operator::VT_INPUTS, inputs);
8353   }
8354   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
8355     fbb_.AddOffset(Operator::VT_OUTPUTS, outputs);
8356   }
8357   void add_builtin_options_type(BuiltinOptions builtin_options_type) {
8358     fbb_.AddElement<uint8_t>(Operator::VT_BUILTIN_OPTIONS_TYPE, static_cast<uint8_t>(builtin_options_type), 0);
8359   }
8360   void add_builtin_options(flatbuffers::Offset<void> builtin_options) {
8361     fbb_.AddOffset(Operator::VT_BUILTIN_OPTIONS, builtin_options);
8362   }
8363   void add_custom_options(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options) {
8364     fbb_.AddOffset(Operator::VT_CUSTOM_OPTIONS, custom_options);
8365   }
8366   void add_custom_options_format(CustomOptionsFormat custom_options_format) {
8367     fbb_.AddElement<int8_t>(Operator::VT_CUSTOM_OPTIONS_FORMAT, static_cast<int8_t>(custom_options_format), 0);
8368   }
8369   void add_mutating_variable_inputs(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs) {
8370     fbb_.AddOffset(Operator::VT_MUTATING_VARIABLE_INPUTS, mutating_variable_inputs);
8371   }
8372   explicit OperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8373         : fbb_(_fbb) {
8374     start_ = fbb_.StartTable();
8375   }
8376   OperatorBuilder &operator=(const OperatorBuilder &);
8377   flatbuffers::Offset<Operator> Finish() {
8378     const auto end = fbb_.EndTable(start_);
8379     auto o = flatbuffers::Offset<Operator>(end);
8380     return o;
8381   }
8382 };
8383 
8384 inline flatbuffers::Offset<Operator> CreateOperator(
8385     flatbuffers::FlatBufferBuilder &_fbb,
8386     uint32_t opcode_index = 0,
8387     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
8388     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
8389     BuiltinOptions builtin_options_type = BuiltinOptions_NONE,
8390     flatbuffers::Offset<void> builtin_options = 0,
8391     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options = 0,
8392     CustomOptionsFormat custom_options_format = CustomOptionsFormat_FLEXBUFFERS,
8393     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs = 0) {
8394   OperatorBuilder builder_(_fbb);
8395   builder_.add_mutating_variable_inputs(mutating_variable_inputs);
8396   builder_.add_custom_options(custom_options);
8397   builder_.add_builtin_options(builtin_options);
8398   builder_.add_outputs(outputs);
8399   builder_.add_inputs(inputs);
8400   builder_.add_opcode_index(opcode_index);
8401   builder_.add_custom_options_format(custom_options_format);
8402   builder_.add_builtin_options_type(builtin_options_type);
8403   return builder_.Finish();
8404 }
8405 
8406 inline flatbuffers::Offset<Operator> CreateOperatorDirect(
8407     flatbuffers::FlatBufferBuilder &_fbb,
8408     uint32_t opcode_index = 0,
8409     const std::vector<int32_t> *inputs = nullptr,
8410     const std::vector<int32_t> *outputs = nullptr,
8411     BuiltinOptions builtin_options_type = BuiltinOptions_NONE,
8412     flatbuffers::Offset<void> builtin_options = 0,
8413     const std::vector<uint8_t> *custom_options = nullptr,
8414     CustomOptionsFormat custom_options_format = CustomOptionsFormat_FLEXBUFFERS,
8415     const std::vector<uint8_t> *mutating_variable_inputs = nullptr) {
8416   return tflite::CreateOperator(
8417       _fbb,
8418       opcode_index,
8419       inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0,
8420       outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0,
8421       builtin_options_type,
8422       builtin_options,
8423       custom_options ? _fbb.CreateVector<uint8_t>(*custom_options) : 0,
8424       custom_options_format,
8425       mutating_variable_inputs ? _fbb.CreateVector<uint8_t>(*mutating_variable_inputs) : 0);
8426 }
8427 
8428 flatbuffers::Offset<Operator> CreateOperator(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8429 
8430 struct SubGraphT : public flatbuffers::NativeTable {
8431   typedef SubGraph TableType;
8432   std::vector<std::unique_ptr<TensorT>> tensors;
8433   std::vector<int32_t> inputs;
8434   std::vector<int32_t> outputs;
8435   std::vector<std::unique_ptr<OperatorT>> operators;
8436   std::string name;
8437   SubGraphT() {
8438   }
8439 };
8440 
8441 struct SubGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8442   typedef SubGraphT NativeTableType;
8443   enum {
8444     VT_TENSORS = 4,
8445     VT_INPUTS = 6,
8446     VT_OUTPUTS = 8,
8447     VT_OPERATORS = 10,
8448     VT_NAME = 12
8449   };
8450   const flatbuffers::Vector<flatbuffers::Offset<Tensor>> *tensors() const {
8451     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Tensor>> *>(VT_TENSORS);
8452   }
8453   const flatbuffers::Vector<int32_t> *inputs() const {
8454     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
8455   }
8456   const flatbuffers::Vector<int32_t> *outputs() const {
8457     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
8458   }
8459   const flatbuffers::Vector<flatbuffers::Offset<Operator>> *operators() const {
8460     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Operator>> *>(VT_OPERATORS);
8461   }
8462   const flatbuffers::String *name() const {
8463     return GetPointer<const flatbuffers::String *>(VT_NAME);
8464   }
8465   bool Verify(flatbuffers::Verifier &verifier) const {
8466     return VerifyTableStart(verifier) &&
8467            VerifyOffset(verifier, VT_TENSORS) &&
8468            verifier.VerifyVector(tensors()) &&
8469            verifier.VerifyVectorOfTables(tensors()) &&
8470            VerifyOffset(verifier, VT_INPUTS) &&
8471            verifier.VerifyVector(inputs()) &&
8472            VerifyOffset(verifier, VT_OUTPUTS) &&
8473            verifier.VerifyVector(outputs()) &&
8474            VerifyOffset(verifier, VT_OPERATORS) &&
8475            verifier.VerifyVector(operators()) &&
8476            verifier.VerifyVectorOfTables(operators()) &&
8477            VerifyOffset(verifier, VT_NAME) &&
8478            verifier.VerifyString(name()) &&
8479            verifier.EndTable();
8480   }
8481   SubGraphT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8482   void UnPackTo(SubGraphT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8483   static flatbuffers::Offset<SubGraph> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8484 };
8485 
8486 struct SubGraphBuilder {
8487   flatbuffers::FlatBufferBuilder &fbb_;
8488   flatbuffers::uoffset_t start_;
8489   void add_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Tensor>>> tensors) {
8490     fbb_.AddOffset(SubGraph::VT_TENSORS, tensors);
8491   }
8492   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
8493     fbb_.AddOffset(SubGraph::VT_INPUTS, inputs);
8494   }
8495   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
8496     fbb_.AddOffset(SubGraph::VT_OUTPUTS, outputs);
8497   }
8498   void add_operators(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Operator>>> operators) {
8499     fbb_.AddOffset(SubGraph::VT_OPERATORS, operators);
8500   }
8501   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
8502     fbb_.AddOffset(SubGraph::VT_NAME, name);
8503   }
8504   explicit SubGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8505         : fbb_(_fbb) {
8506     start_ = fbb_.StartTable();
8507   }
8508   SubGraphBuilder &operator=(const SubGraphBuilder &);
8509   flatbuffers::Offset<SubGraph> Finish() {
8510     const auto end = fbb_.EndTable(start_);
8511     auto o = flatbuffers::Offset<SubGraph>(end);
8512     return o;
8513   }
8514 };
8515 
8516 inline flatbuffers::Offset<SubGraph> CreateSubGraph(
8517     flatbuffers::FlatBufferBuilder &_fbb,
8518     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Tensor>>> tensors = 0,
8519     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
8520     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
8521     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Operator>>> operators = 0,
8522     flatbuffers::Offset<flatbuffers::String> name = 0) {
8523   SubGraphBuilder builder_(_fbb);
8524   builder_.add_name(name);
8525   builder_.add_operators(operators);
8526   builder_.add_outputs(outputs);
8527   builder_.add_inputs(inputs);
8528   builder_.add_tensors(tensors);
8529   return builder_.Finish();
8530 }
8531 
8532 inline flatbuffers::Offset<SubGraph> CreateSubGraphDirect(
8533     flatbuffers::FlatBufferBuilder &_fbb,
8534     const std::vector<flatbuffers::Offset<Tensor>> *tensors = nullptr,
8535     const std::vector<int32_t> *inputs = nullptr,
8536     const std::vector<int32_t> *outputs = nullptr,
8537     const std::vector<flatbuffers::Offset<Operator>> *operators = nullptr,
8538     const char *name = nullptr) {
8539   return tflite::CreateSubGraph(
8540       _fbb,
8541       tensors ? _fbb.CreateVector<flatbuffers::Offset<Tensor>>(*tensors) : 0,
8542       inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0,
8543       outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0,
8544       operators ? _fbb.CreateVector<flatbuffers::Offset<Operator>>(*operators) : 0,
8545       name ? _fbb.CreateString(name) : 0);
8546 }
8547 
8548 flatbuffers::Offset<SubGraph> CreateSubGraph(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8549 
8550 struct BufferT : public flatbuffers::NativeTable {
8551   typedef Buffer TableType;
8552   std::vector<uint8_t> data;
8553   BufferT() {
8554   }
8555 };
8556 
8557 struct Buffer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8558   typedef BufferT NativeTableType;
8559   enum {
8560     VT_DATA = 4
8561   };
8562   const flatbuffers::Vector<uint8_t> *data() const {
8563     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_DATA);
8564   }
8565   bool Verify(flatbuffers::Verifier &verifier) const {
8566     return VerifyTableStart(verifier) &&
8567            VerifyOffset(verifier, VT_DATA) &&
8568            verifier.VerifyVector(data()) &&
8569            verifier.EndTable();
8570   }
8571   BufferT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8572   void UnPackTo(BufferT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8573   static flatbuffers::Offset<Buffer> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BufferT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8574 };
8575 
8576 struct BufferBuilder {
8577   flatbuffers::FlatBufferBuilder &fbb_;
8578   flatbuffers::uoffset_t start_;
8579   void add_data(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data) {
8580     fbb_.AddOffset(Buffer::VT_DATA, data);
8581   }
8582   explicit BufferBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8583         : fbb_(_fbb) {
8584     start_ = fbb_.StartTable();
8585   }
8586   BufferBuilder &operator=(const BufferBuilder &);
8587   flatbuffers::Offset<Buffer> Finish() {
8588     const auto end = fbb_.EndTable(start_);
8589     auto o = flatbuffers::Offset<Buffer>(end);
8590     return o;
8591   }
8592 };
8593 
8594 inline flatbuffers::Offset<Buffer> CreateBuffer(
8595     flatbuffers::FlatBufferBuilder &_fbb,
8596     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data = 0) {
8597   BufferBuilder builder_(_fbb);
8598   builder_.add_data(data);
8599   return builder_.Finish();
8600 }
8601 
8602 inline flatbuffers::Offset<Buffer> CreateBufferDirect(
8603     flatbuffers::FlatBufferBuilder &_fbb,
8604     const std::vector<uint8_t> *data = nullptr) {
8605   return tflite::CreateBuffer(
8606       _fbb,
8607       data ? _fbb.CreateVector<uint8_t>(*data) : 0);
8608 }
8609 
8610 flatbuffers::Offset<Buffer> CreateBuffer(flatbuffers::FlatBufferBuilder &_fbb, const BufferT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8611 
8612 struct ModelT : public flatbuffers::NativeTable {
8613   typedef Model TableType;
8614   uint32_t version;
8615   std::vector<std::unique_ptr<OperatorCodeT>> operator_codes;
8616   std::vector<std::unique_ptr<SubGraphT>> subgraphs;
8617   std::string description;
8618   std::vector<std::unique_ptr<BufferT>> buffers;
8619   std::vector<int32_t> metadata_buffer;
8620   ModelT()
8621       : version(0) {
8622   }
8623 };
8624 
8625 struct Model FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8626   typedef ModelT NativeTableType;
8627   enum {
8628     VT_VERSION = 4,
8629     VT_OPERATOR_CODES = 6,
8630     VT_SUBGRAPHS = 8,
8631     VT_DESCRIPTION = 10,
8632     VT_BUFFERS = 12,
8633     VT_METADATA_BUFFER = 14
8634   };
8635   uint32_t version() const {
8636     return GetField<uint32_t>(VT_VERSION, 0);
8637   }
8638   const flatbuffers::Vector<flatbuffers::Offset<OperatorCode>> *operator_codes() const {
8639     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<OperatorCode>> *>(VT_OPERATOR_CODES);
8640   }
8641   const flatbuffers::Vector<flatbuffers::Offset<SubGraph>> *subgraphs() const {
8642     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<SubGraph>> *>(VT_SUBGRAPHS);
8643   }
8644   const flatbuffers::String *description() const {
8645     return GetPointer<const flatbuffers::String *>(VT_DESCRIPTION);
8646   }
8647   const flatbuffers::Vector<flatbuffers::Offset<Buffer>> *buffers() const {
8648     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Buffer>> *>(VT_BUFFERS);
8649   }
8650   const flatbuffers::Vector<int32_t> *metadata_buffer() const {
8651     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_METADATA_BUFFER);
8652   }
8653   bool Verify(flatbuffers::Verifier &verifier) const {
8654     return VerifyTableStart(verifier) &&
8655            VerifyField<uint32_t>(verifier, VT_VERSION) &&
8656            VerifyOffset(verifier, VT_OPERATOR_CODES) &&
8657            verifier.VerifyVector(operator_codes()) &&
8658            verifier.VerifyVectorOfTables(operator_codes()) &&
8659            VerifyOffset(verifier, VT_SUBGRAPHS) &&
8660            verifier.VerifyVector(subgraphs()) &&
8661            verifier.VerifyVectorOfTables(subgraphs()) &&
8662            VerifyOffset(verifier, VT_DESCRIPTION) &&
8663            verifier.VerifyString(description()) &&
8664            VerifyOffset(verifier, VT_BUFFERS) &&
8665            verifier.VerifyVector(buffers()) &&
8666            verifier.VerifyVectorOfTables(buffers()) &&
8667            VerifyOffset(verifier, VT_METADATA_BUFFER) &&
8668            verifier.VerifyVector(metadata_buffer()) &&
8669            verifier.EndTable();
8670   }
8671   ModelT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8672   void UnPackTo(ModelT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8673   static flatbuffers::Offset<Model> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ModelT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8674 };
8675 
8676 struct ModelBuilder {
8677   flatbuffers::FlatBufferBuilder &fbb_;
8678   flatbuffers::uoffset_t start_;
8679   void add_version(uint32_t version) {
8680     fbb_.AddElement<uint32_t>(Model::VT_VERSION, version, 0);
8681   }
8682   void add_operator_codes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<OperatorCode>>> operator_codes) {
8683     fbb_.AddOffset(Model::VT_OPERATOR_CODES, operator_codes);
8684   }
8685   void add_subgraphs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SubGraph>>> subgraphs) {
8686     fbb_.AddOffset(Model::VT_SUBGRAPHS, subgraphs);
8687   }
8688   void add_description(flatbuffers::Offset<flatbuffers::String> description) {
8689     fbb_.AddOffset(Model::VT_DESCRIPTION, description);
8690   }
8691   void add_buffers(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Buffer>>> buffers) {
8692     fbb_.AddOffset(Model::VT_BUFFERS, buffers);
8693   }
8694   void add_metadata_buffer(flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer) {
8695     fbb_.AddOffset(Model::VT_METADATA_BUFFER, metadata_buffer);
8696   }
8697   explicit ModelBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8698         : fbb_(_fbb) {
8699     start_ = fbb_.StartTable();
8700   }
8701   ModelBuilder &operator=(const ModelBuilder &);
8702   flatbuffers::Offset<Model> Finish() {
8703     const auto end = fbb_.EndTable(start_);
8704     auto o = flatbuffers::Offset<Model>(end);
8705     return o;
8706   }
8707 };
8708 
8709 inline flatbuffers::Offset<Model> CreateModel(
8710     flatbuffers::FlatBufferBuilder &_fbb,
8711     uint32_t version = 0,
8712     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<OperatorCode>>> operator_codes = 0,
8713     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SubGraph>>> subgraphs = 0,
8714     flatbuffers::Offset<flatbuffers::String> description = 0,
8715     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Buffer>>> buffers = 0,
8716     flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer = 0) {
8717   ModelBuilder builder_(_fbb);
8718   builder_.add_metadata_buffer(metadata_buffer);
8719   builder_.add_buffers(buffers);
8720   builder_.add_description(description);
8721   builder_.add_subgraphs(subgraphs);
8722   builder_.add_operator_codes(operator_codes);
8723   builder_.add_version(version);
8724   return builder_.Finish();
8725 }
8726 
8727 inline flatbuffers::Offset<Model> CreateModelDirect(
8728     flatbuffers::FlatBufferBuilder &_fbb,
8729     uint32_t version = 0,
8730     const std::vector<flatbuffers::Offset<OperatorCode>> *operator_codes = nullptr,
8731     const std::vector<flatbuffers::Offset<SubGraph>> *subgraphs = nullptr,
8732     const char *description = nullptr,
8733     const std::vector<flatbuffers::Offset<Buffer>> *buffers = nullptr,
8734     const std::vector<int32_t> *metadata_buffer = nullptr) {
8735   return tflite::CreateModel(
8736       _fbb,
8737       version,
8738       operator_codes ? _fbb.CreateVector<flatbuffers::Offset<OperatorCode>>(*operator_codes) : 0,
8739       subgraphs ? _fbb.CreateVector<flatbuffers::Offset<SubGraph>>(*subgraphs) : 0,
8740       description ? _fbb.CreateString(description) : 0,
8741       buffers ? _fbb.CreateVector<flatbuffers::Offset<Buffer>>(*buffers) : 0,
8742       metadata_buffer ? _fbb.CreateVector<int32_t>(*metadata_buffer) : 0);
8743 }
8744 
8745 flatbuffers::Offset<Model> CreateModel(flatbuffers::FlatBufferBuilder &_fbb, const ModelT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8746 
8747 inline CustomQuantizationT *CustomQuantization::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8748   auto _o = new CustomQuantizationT();
8749   UnPackTo(_o, _resolver);
8750   return _o;
8751 }
8752 
8753 inline void CustomQuantization::UnPackTo(CustomQuantizationT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8754   (void)_o;
8755   (void)_resolver;
8756   { auto _e = custom(); if (_e) { _o->custom.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->custom[_i] = _e->Get(_i); } } };
8757 }
8758 
8759 inline flatbuffers::Offset<CustomQuantization> CustomQuantization::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8760   return CreateCustomQuantization(_fbb, _o, _rehasher);
8761 }
8762 
8763 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8764   (void)_rehasher;
8765   (void)_o;
8766   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CustomQuantizationT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8767   auto _custom = _o->custom.size() ? _fbb.CreateVector(_o->custom) : 0;
8768   return tflite::CreateCustomQuantization(
8769       _fbb,
8770       _custom);
8771 }
8772 
8773 inline QuantizationParametersT *QuantizationParameters::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8774   auto _o = new QuantizationParametersT();
8775   UnPackTo(_o, _resolver);
8776   return _o;
8777 }
8778 
8779 inline void QuantizationParameters::UnPackTo(QuantizationParametersT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8780   (void)_o;
8781   (void)_resolver;
8782   { auto _e = min(); if (_e) { _o->min.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->min[_i] = _e->Get(_i); } } };
8783   { auto _e = max(); if (_e) { _o->max.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->max[_i] = _e->Get(_i); } } };
8784   { auto _e = scale(); if (_e) { _o->scale.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scale[_i] = _e->Get(_i); } } };
8785   { auto _e = zero_point(); if (_e) { _o->zero_point.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->zero_point[_i] = _e->Get(_i); } } };
8786   { auto _e = details_type(); _o->details.type = _e; };
8787   { auto _e = details(); if (_e) _o->details.value = QuantizationDetailsUnion::UnPack(_e, details_type(), _resolver); };
8788   { auto _e = quantized_dimension(); _o->quantized_dimension = _e; };
8789 }
8790 
8791 inline flatbuffers::Offset<QuantizationParameters> QuantizationParameters::Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8792   return CreateQuantizationParameters(_fbb, _o, _rehasher);
8793 }
8794 
8795 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8796   (void)_rehasher;
8797   (void)_o;
8798   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const QuantizationParametersT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8799   auto _min = _o->min.size() ? _fbb.CreateVector(_o->min) : 0;
8800   auto _max = _o->max.size() ? _fbb.CreateVector(_o->max) : 0;
8801   auto _scale = _o->scale.size() ? _fbb.CreateVector(_o->scale) : 0;
8802   auto _zero_point = _o->zero_point.size() ? _fbb.CreateVector(_o->zero_point) : 0;
8803   auto _details_type = _o->details.type;
8804   auto _details = _o->details.Pack(_fbb);
8805   auto _quantized_dimension = _o->quantized_dimension;
8806   return tflite::CreateQuantizationParameters(
8807       _fbb,
8808       _min,
8809       _max,
8810       _scale,
8811       _zero_point,
8812       _details_type,
8813       _details,
8814       _quantized_dimension);
8815 }
8816 
8817 inline TensorT *Tensor::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8818   auto _o = new TensorT();
8819   UnPackTo(_o, _resolver);
8820   return _o;
8821 }
8822 
8823 inline void Tensor::UnPackTo(TensorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8824   (void)_o;
8825   (void)_resolver;
8826   { auto _e = shape(); if (_e) { _o->shape.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->shape[_i] = _e->Get(_i); } } };
8827   { auto _e = type(); _o->type = _e; };
8828   { auto _e = buffer(); _o->buffer = _e; };
8829   { auto _e = name(); if (_e) _o->name = _e->str(); };
8830   { auto _e = quantization(); if (_e) _o->quantization = std::unique_ptr<QuantizationParametersT>(_e->UnPack(_resolver)); };
8831   { auto _e = is_variable(); _o->is_variable = _e; };
8832 }
8833 
8834 inline flatbuffers::Offset<Tensor> Tensor::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8835   return CreateTensor(_fbb, _o, _rehasher);
8836 }
8837 
8838 inline flatbuffers::Offset<Tensor> CreateTensor(flatbuffers::FlatBufferBuilder &_fbb, const TensorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8839   (void)_rehasher;
8840   (void)_o;
8841   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TensorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8842   auto _shape = _o->shape.size() ? _fbb.CreateVector(_o->shape) : 0;
8843   auto _type = _o->type;
8844   auto _buffer = _o->buffer;
8845   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
8846   auto _quantization = _o->quantization ? CreateQuantizationParameters(_fbb, _o->quantization.get(), _rehasher) : 0;
8847   auto _is_variable = _o->is_variable;
8848   return tflite::CreateTensor(
8849       _fbb,
8850       _shape,
8851       _type,
8852       _buffer,
8853       _name,
8854       _quantization,
8855       _is_variable);
8856 }
8857 
8858 inline Conv2DOptionsT *Conv2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8859   auto _o = new Conv2DOptionsT();
8860   UnPackTo(_o, _resolver);
8861   return _o;
8862 }
8863 
8864 inline void Conv2DOptions::UnPackTo(Conv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8865   (void)_o;
8866   (void)_resolver;
8867   { auto _e = padding(); _o->padding = _e; };
8868   { auto _e = stride_w(); _o->stride_w = _e; };
8869   { auto _e = stride_h(); _o->stride_h = _e; };
8870   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
8871   { auto _e = dilation_w_factor(); _o->dilation_w_factor = _e; };
8872   { auto _e = dilation_h_factor(); _o->dilation_h_factor = _e; };
8873 }
8874 
8875 inline flatbuffers::Offset<Conv2DOptions> Conv2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8876   return CreateConv2DOptions(_fbb, _o, _rehasher);
8877 }
8878 
8879 inline flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8880   (void)_rehasher;
8881   (void)_o;
8882   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Conv2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8883   auto _padding = _o->padding;
8884   auto _stride_w = _o->stride_w;
8885   auto _stride_h = _o->stride_h;
8886   auto _fused_activation_function = _o->fused_activation_function;
8887   auto _dilation_w_factor = _o->dilation_w_factor;
8888   auto _dilation_h_factor = _o->dilation_h_factor;
8889   return tflite::CreateConv2DOptions(
8890       _fbb,
8891       _padding,
8892       _stride_w,
8893       _stride_h,
8894       _fused_activation_function,
8895       _dilation_w_factor,
8896       _dilation_h_factor);
8897 }
8898 
8899 inline Pool2DOptionsT *Pool2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8900   auto _o = new Pool2DOptionsT();
8901   UnPackTo(_o, _resolver);
8902   return _o;
8903 }
8904 
8905 inline void Pool2DOptions::UnPackTo(Pool2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8906   (void)_o;
8907   (void)_resolver;
8908   { auto _e = padding(); _o->padding = _e; };
8909   { auto _e = stride_w(); _o->stride_w = _e; };
8910   { auto _e = stride_h(); _o->stride_h = _e; };
8911   { auto _e = filter_width(); _o->filter_width = _e; };
8912   { auto _e = filter_height(); _o->filter_height = _e; };
8913   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
8914 }
8915 
8916 inline flatbuffers::Offset<Pool2DOptions> Pool2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8917   return CreatePool2DOptions(_fbb, _o, _rehasher);
8918 }
8919 
8920 inline flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8921   (void)_rehasher;
8922   (void)_o;
8923   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Pool2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8924   auto _padding = _o->padding;
8925   auto _stride_w = _o->stride_w;
8926   auto _stride_h = _o->stride_h;
8927   auto _filter_width = _o->filter_width;
8928   auto _filter_height = _o->filter_height;
8929   auto _fused_activation_function = _o->fused_activation_function;
8930   return tflite::CreatePool2DOptions(
8931       _fbb,
8932       _padding,
8933       _stride_w,
8934       _stride_h,
8935       _filter_width,
8936       _filter_height,
8937       _fused_activation_function);
8938 }
8939 
8940 inline DepthwiseConv2DOptionsT *DepthwiseConv2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8941   auto _o = new DepthwiseConv2DOptionsT();
8942   UnPackTo(_o, _resolver);
8943   return _o;
8944 }
8945 
8946 inline void DepthwiseConv2DOptions::UnPackTo(DepthwiseConv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8947   (void)_o;
8948   (void)_resolver;
8949   { auto _e = padding(); _o->padding = _e; };
8950   { auto _e = stride_w(); _o->stride_w = _e; };
8951   { auto _e = stride_h(); _o->stride_h = _e; };
8952   { auto _e = depth_multiplier(); _o->depth_multiplier = _e; };
8953   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
8954   { auto _e = dilation_w_factor(); _o->dilation_w_factor = _e; };
8955   { auto _e = dilation_h_factor(); _o->dilation_h_factor = _e; };
8956 }
8957 
8958 inline flatbuffers::Offset<DepthwiseConv2DOptions> DepthwiseConv2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8959   return CreateDepthwiseConv2DOptions(_fbb, _o, _rehasher);
8960 }
8961 
8962 inline flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8963   (void)_rehasher;
8964   (void)_o;
8965   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DepthwiseConv2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8966   auto _padding = _o->padding;
8967   auto _stride_w = _o->stride_w;
8968   auto _stride_h = _o->stride_h;
8969   auto _depth_multiplier = _o->depth_multiplier;
8970   auto _fused_activation_function = _o->fused_activation_function;
8971   auto _dilation_w_factor = _o->dilation_w_factor;
8972   auto _dilation_h_factor = _o->dilation_h_factor;
8973   return tflite::CreateDepthwiseConv2DOptions(
8974       _fbb,
8975       _padding,
8976       _stride_w,
8977       _stride_h,
8978       _depth_multiplier,
8979       _fused_activation_function,
8980       _dilation_w_factor,
8981       _dilation_h_factor);
8982 }
8983 
8984 inline ConcatEmbeddingsOptionsT *ConcatEmbeddingsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8985   auto _o = new ConcatEmbeddingsOptionsT();
8986   UnPackTo(_o, _resolver);
8987   return _o;
8988 }
8989 
8990 inline void ConcatEmbeddingsOptions::UnPackTo(ConcatEmbeddingsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8991   (void)_o;
8992   (void)_resolver;
8993   { auto _e = num_channels(); _o->num_channels = _e; };
8994   { auto _e = num_columns_per_channel(); if (_e) { _o->num_columns_per_channel.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->num_columns_per_channel[_i] = _e->Get(_i); } } };
8995   { auto _e = embedding_dim_per_channel(); if (_e) { _o->embedding_dim_per_channel.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->embedding_dim_per_channel[_i] = _e->Get(_i); } } };
8996 }
8997 
8998 inline flatbuffers::Offset<ConcatEmbeddingsOptions> ConcatEmbeddingsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8999   return CreateConcatEmbeddingsOptions(_fbb, _o, _rehasher);
9000 }
9001 
9002 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9003   (void)_rehasher;
9004   (void)_o;
9005   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ConcatEmbeddingsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9006   auto _num_channels = _o->num_channels;
9007   auto _num_columns_per_channel = _o->num_columns_per_channel.size() ? _fbb.CreateVector(_o->num_columns_per_channel) : 0;
9008   auto _embedding_dim_per_channel = _o->embedding_dim_per_channel.size() ? _fbb.CreateVector(_o->embedding_dim_per_channel) : 0;
9009   return tflite::CreateConcatEmbeddingsOptions(
9010       _fbb,
9011       _num_channels,
9012       _num_columns_per_channel,
9013       _embedding_dim_per_channel);
9014 }
9015 
9016 inline LSHProjectionOptionsT *LSHProjectionOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9017   auto _o = new LSHProjectionOptionsT();
9018   UnPackTo(_o, _resolver);
9019   return _o;
9020 }
9021 
9022 inline void LSHProjectionOptions::UnPackTo(LSHProjectionOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9023   (void)_o;
9024   (void)_resolver;
9025   { auto _e = type(); _o->type = _e; };
9026 }
9027 
9028 inline flatbuffers::Offset<LSHProjectionOptions> LSHProjectionOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9029   return CreateLSHProjectionOptions(_fbb, _o, _rehasher);
9030 }
9031 
9032 inline flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9033   (void)_rehasher;
9034   (void)_o;
9035   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LSHProjectionOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9036   auto _type = _o->type;
9037   return tflite::CreateLSHProjectionOptions(
9038       _fbb,
9039       _type);
9040 }
9041 
9042 inline SVDFOptionsT *SVDFOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9043   auto _o = new SVDFOptionsT();
9044   UnPackTo(_o, _resolver);
9045   return _o;
9046 }
9047 
9048 inline void SVDFOptions::UnPackTo(SVDFOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9049   (void)_o;
9050   (void)_resolver;
9051   { auto _e = rank(); _o->rank = _e; };
9052   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9053 }
9054 
9055 inline flatbuffers::Offset<SVDFOptions> SVDFOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9056   return CreateSVDFOptions(_fbb, _o, _rehasher);
9057 }
9058 
9059 inline flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9060   (void)_rehasher;
9061   (void)_o;
9062   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SVDFOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9063   auto _rank = _o->rank;
9064   auto _fused_activation_function = _o->fused_activation_function;
9065   return tflite::CreateSVDFOptions(
9066       _fbb,
9067       _rank,
9068       _fused_activation_function);
9069 }
9070 
9071 inline RNNOptionsT *RNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9072   auto _o = new RNNOptionsT();
9073   UnPackTo(_o, _resolver);
9074   return _o;
9075 }
9076 
9077 inline void RNNOptions::UnPackTo(RNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9078   (void)_o;
9079   (void)_resolver;
9080   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9081 }
9082 
9083 inline flatbuffers::Offset<RNNOptions> RNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9084   return CreateRNNOptions(_fbb, _o, _rehasher);
9085 }
9086 
9087 inline flatbuffers::Offset<RNNOptions> CreateRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9088   (void)_rehasher;
9089   (void)_o;
9090   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9091   auto _fused_activation_function = _o->fused_activation_function;
9092   return tflite::CreateRNNOptions(
9093       _fbb,
9094       _fused_activation_function);
9095 }
9096 
9097 inline SequenceRNNOptionsT *SequenceRNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9098   auto _o = new SequenceRNNOptionsT();
9099   UnPackTo(_o, _resolver);
9100   return _o;
9101 }
9102 
9103 inline void SequenceRNNOptions::UnPackTo(SequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9104   (void)_o;
9105   (void)_resolver;
9106   { auto _e = time_major(); _o->time_major = _e; };
9107   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9108 }
9109 
9110 inline flatbuffers::Offset<SequenceRNNOptions> SequenceRNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9111   return CreateSequenceRNNOptions(_fbb, _o, _rehasher);
9112 }
9113 
9114 inline flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9115   (void)_rehasher;
9116   (void)_o;
9117   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SequenceRNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9118   auto _time_major = _o->time_major;
9119   auto _fused_activation_function = _o->fused_activation_function;
9120   return tflite::CreateSequenceRNNOptions(
9121       _fbb,
9122       _time_major,
9123       _fused_activation_function);
9124 }
9125 
9126 inline BidirectionalSequenceRNNOptionsT *BidirectionalSequenceRNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9127   auto _o = new BidirectionalSequenceRNNOptionsT();
9128   UnPackTo(_o, _resolver);
9129   return _o;
9130 }
9131 
9132 inline void BidirectionalSequenceRNNOptions::UnPackTo(BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9133   (void)_o;
9134   (void)_resolver;
9135   { auto _e = time_major(); _o->time_major = _e; };
9136   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9137   { auto _e = merge_outputs(); _o->merge_outputs = _e; };
9138 }
9139 
9140 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> BidirectionalSequenceRNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9141   return CreateBidirectionalSequenceRNNOptions(_fbb, _o, _rehasher);
9142 }
9143 
9144 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9145   (void)_rehasher;
9146   (void)_o;
9147   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BidirectionalSequenceRNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9148   auto _time_major = _o->time_major;
9149   auto _fused_activation_function = _o->fused_activation_function;
9150   auto _merge_outputs = _o->merge_outputs;
9151   return tflite::CreateBidirectionalSequenceRNNOptions(
9152       _fbb,
9153       _time_major,
9154       _fused_activation_function,
9155       _merge_outputs);
9156 }
9157 
9158 inline FullyConnectedOptionsT *FullyConnectedOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9159   auto _o = new FullyConnectedOptionsT();
9160   UnPackTo(_o, _resolver);
9161   return _o;
9162 }
9163 
9164 inline void FullyConnectedOptions::UnPackTo(FullyConnectedOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9165   (void)_o;
9166   (void)_resolver;
9167   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9168   { auto _e = weights_format(); _o->weights_format = _e; };
9169 }
9170 
9171 inline flatbuffers::Offset<FullyConnectedOptions> FullyConnectedOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9172   return CreateFullyConnectedOptions(_fbb, _o, _rehasher);
9173 }
9174 
9175 inline flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9176   (void)_rehasher;
9177   (void)_o;
9178   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FullyConnectedOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9179   auto _fused_activation_function = _o->fused_activation_function;
9180   auto _weights_format = _o->weights_format;
9181   return tflite::CreateFullyConnectedOptions(
9182       _fbb,
9183       _fused_activation_function,
9184       _weights_format);
9185 }
9186 
9187 inline SoftmaxOptionsT *SoftmaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9188   auto _o = new SoftmaxOptionsT();
9189   UnPackTo(_o, _resolver);
9190   return _o;
9191 }
9192 
9193 inline void SoftmaxOptions::UnPackTo(SoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9194   (void)_o;
9195   (void)_resolver;
9196   { auto _e = beta(); _o->beta = _e; };
9197 }
9198 
9199 inline flatbuffers::Offset<SoftmaxOptions> SoftmaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9200   return CreateSoftmaxOptions(_fbb, _o, _rehasher);
9201 }
9202 
9203 inline flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9204   (void)_rehasher;
9205   (void)_o;
9206   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SoftmaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9207   auto _beta = _o->beta;
9208   return tflite::CreateSoftmaxOptions(
9209       _fbb,
9210       _beta);
9211 }
9212 
9213 inline ConcatenationOptionsT *ConcatenationOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9214   auto _o = new ConcatenationOptionsT();
9215   UnPackTo(_o, _resolver);
9216   return _o;
9217 }
9218 
9219 inline void ConcatenationOptions::UnPackTo(ConcatenationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9220   (void)_o;
9221   (void)_resolver;
9222   { auto _e = axis(); _o->axis = _e; };
9223   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9224 }
9225 
9226 inline flatbuffers::Offset<ConcatenationOptions> ConcatenationOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9227   return CreateConcatenationOptions(_fbb, _o, _rehasher);
9228 }
9229 
9230 inline flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9231   (void)_rehasher;
9232   (void)_o;
9233   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ConcatenationOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9234   auto _axis = _o->axis;
9235   auto _fused_activation_function = _o->fused_activation_function;
9236   return tflite::CreateConcatenationOptions(
9237       _fbb,
9238       _axis,
9239       _fused_activation_function);
9240 }
9241 
9242 inline AddOptionsT *AddOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9243   auto _o = new AddOptionsT();
9244   UnPackTo(_o, _resolver);
9245   return _o;
9246 }
9247 
9248 inline void AddOptions::UnPackTo(AddOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9249   (void)_o;
9250   (void)_resolver;
9251   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9252 }
9253 
9254 inline flatbuffers::Offset<AddOptions> AddOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9255   return CreateAddOptions(_fbb, _o, _rehasher);
9256 }
9257 
9258 inline flatbuffers::Offset<AddOptions> CreateAddOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9259   (void)_rehasher;
9260   (void)_o;
9261   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AddOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9262   auto _fused_activation_function = _o->fused_activation_function;
9263   return tflite::CreateAddOptions(
9264       _fbb,
9265       _fused_activation_function);
9266 }
9267 
9268 inline MulOptionsT *MulOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9269   auto _o = new MulOptionsT();
9270   UnPackTo(_o, _resolver);
9271   return _o;
9272 }
9273 
9274 inline void MulOptions::UnPackTo(MulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9275   (void)_o;
9276   (void)_resolver;
9277   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9278 }
9279 
9280 inline flatbuffers::Offset<MulOptions> MulOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9281   return CreateMulOptions(_fbb, _o, _rehasher);
9282 }
9283 
9284 inline flatbuffers::Offset<MulOptions> CreateMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9285   (void)_rehasher;
9286   (void)_o;
9287   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MulOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9288   auto _fused_activation_function = _o->fused_activation_function;
9289   return tflite::CreateMulOptions(
9290       _fbb,
9291       _fused_activation_function);
9292 }
9293 
9294 inline L2NormOptionsT *L2NormOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9295   auto _o = new L2NormOptionsT();
9296   UnPackTo(_o, _resolver);
9297   return _o;
9298 }
9299 
9300 inline void L2NormOptions::UnPackTo(L2NormOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9301   (void)_o;
9302   (void)_resolver;
9303   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9304 }
9305 
9306 inline flatbuffers::Offset<L2NormOptions> L2NormOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9307   return CreateL2NormOptions(_fbb, _o, _rehasher);
9308 }
9309 
9310 inline flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9311   (void)_rehasher;
9312   (void)_o;
9313   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const L2NormOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9314   auto _fused_activation_function = _o->fused_activation_function;
9315   return tflite::CreateL2NormOptions(
9316       _fbb,
9317       _fused_activation_function);
9318 }
9319 
9320 inline LocalResponseNormalizationOptionsT *LocalResponseNormalizationOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9321   auto _o = new LocalResponseNormalizationOptionsT();
9322   UnPackTo(_o, _resolver);
9323   return _o;
9324 }
9325 
9326 inline void LocalResponseNormalizationOptions::UnPackTo(LocalResponseNormalizationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9327   (void)_o;
9328   (void)_resolver;
9329   { auto _e = radius(); _o->radius = _e; };
9330   { auto _e = bias(); _o->bias = _e; };
9331   { auto _e = alpha(); _o->alpha = _e; };
9332   { auto _e = beta(); _o->beta = _e; };
9333 }
9334 
9335 inline flatbuffers::Offset<LocalResponseNormalizationOptions> LocalResponseNormalizationOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9336   return CreateLocalResponseNormalizationOptions(_fbb, _o, _rehasher);
9337 }
9338 
9339 inline flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9340   (void)_rehasher;
9341   (void)_o;
9342   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LocalResponseNormalizationOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9343   auto _radius = _o->radius;
9344   auto _bias = _o->bias;
9345   auto _alpha = _o->alpha;
9346   auto _beta = _o->beta;
9347   return tflite::CreateLocalResponseNormalizationOptions(
9348       _fbb,
9349       _radius,
9350       _bias,
9351       _alpha,
9352       _beta);
9353 }
9354 
9355 inline LSTMOptionsT *LSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9356   auto _o = new LSTMOptionsT();
9357   UnPackTo(_o, _resolver);
9358   return _o;
9359 }
9360 
9361 inline void LSTMOptions::UnPackTo(LSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9362   (void)_o;
9363   (void)_resolver;
9364   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9365   { auto _e = cell_clip(); _o->cell_clip = _e; };
9366   { auto _e = proj_clip(); _o->proj_clip = _e; };
9367   { auto _e = kernel_type(); _o->kernel_type = _e; };
9368 }
9369 
9370 inline flatbuffers::Offset<LSTMOptions> LSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9371   return CreateLSTMOptions(_fbb, _o, _rehasher);
9372 }
9373 
9374 inline flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9375   (void)_rehasher;
9376   (void)_o;
9377   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9378   auto _fused_activation_function = _o->fused_activation_function;
9379   auto _cell_clip = _o->cell_clip;
9380   auto _proj_clip = _o->proj_clip;
9381   auto _kernel_type = _o->kernel_type;
9382   return tflite::CreateLSTMOptions(
9383       _fbb,
9384       _fused_activation_function,
9385       _cell_clip,
9386       _proj_clip,
9387       _kernel_type);
9388 }
9389 
9390 inline UnidirectionalSequenceLSTMOptionsT *UnidirectionalSequenceLSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9391   auto _o = new UnidirectionalSequenceLSTMOptionsT();
9392   UnPackTo(_o, _resolver);
9393   return _o;
9394 }
9395 
9396 inline void UnidirectionalSequenceLSTMOptions::UnPackTo(UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9397   (void)_o;
9398   (void)_resolver;
9399   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9400   { auto _e = cell_clip(); _o->cell_clip = _e; };
9401   { auto _e = proj_clip(); _o->proj_clip = _e; };
9402   { auto _e = time_major(); _o->time_major = _e; };
9403 }
9404 
9405 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> UnidirectionalSequenceLSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9406   return CreateUnidirectionalSequenceLSTMOptions(_fbb, _o, _rehasher);
9407 }
9408 
9409 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9410   (void)_rehasher;
9411   (void)_o;
9412   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnidirectionalSequenceLSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9413   auto _fused_activation_function = _o->fused_activation_function;
9414   auto _cell_clip = _o->cell_clip;
9415   auto _proj_clip = _o->proj_clip;
9416   auto _time_major = _o->time_major;
9417   return tflite::CreateUnidirectionalSequenceLSTMOptions(
9418       _fbb,
9419       _fused_activation_function,
9420       _cell_clip,
9421       _proj_clip,
9422       _time_major);
9423 }
9424 
9425 inline BidirectionalSequenceLSTMOptionsT *BidirectionalSequenceLSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9426   auto _o = new BidirectionalSequenceLSTMOptionsT();
9427   UnPackTo(_o, _resolver);
9428   return _o;
9429 }
9430 
9431 inline void BidirectionalSequenceLSTMOptions::UnPackTo(BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9432   (void)_o;
9433   (void)_resolver;
9434   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9435   { auto _e = cell_clip(); _o->cell_clip = _e; };
9436   { auto _e = proj_clip(); _o->proj_clip = _e; };
9437   { auto _e = merge_outputs(); _o->merge_outputs = _e; };
9438   { auto _e = time_major(); _o->time_major = _e; };
9439 }
9440 
9441 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> BidirectionalSequenceLSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9442   return CreateBidirectionalSequenceLSTMOptions(_fbb, _o, _rehasher);
9443 }
9444 
9445 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9446   (void)_rehasher;
9447   (void)_o;
9448   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BidirectionalSequenceLSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9449   auto _fused_activation_function = _o->fused_activation_function;
9450   auto _cell_clip = _o->cell_clip;
9451   auto _proj_clip = _o->proj_clip;
9452   auto _merge_outputs = _o->merge_outputs;
9453   auto _time_major = _o->time_major;
9454   return tflite::CreateBidirectionalSequenceLSTMOptions(
9455       _fbb,
9456       _fused_activation_function,
9457       _cell_clip,
9458       _proj_clip,
9459       _merge_outputs,
9460       _time_major);
9461 }
9462 
9463 inline ResizeBilinearOptionsT *ResizeBilinearOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9464   auto _o = new ResizeBilinearOptionsT();
9465   UnPackTo(_o, _resolver);
9466   return _o;
9467 }
9468 
9469 inline void ResizeBilinearOptions::UnPackTo(ResizeBilinearOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9470   (void)_o;
9471   (void)_resolver;
9472   { auto _e = align_corners(); _o->align_corners = _e; };
9473 }
9474 
9475 inline flatbuffers::Offset<ResizeBilinearOptions> ResizeBilinearOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9476   return CreateResizeBilinearOptions(_fbb, _o, _rehasher);
9477 }
9478 
9479 inline flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9480   (void)_rehasher;
9481   (void)_o;
9482   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ResizeBilinearOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9483   auto _align_corners = _o->align_corners;
9484   return tflite::CreateResizeBilinearOptions(
9485       _fbb,
9486       _align_corners);
9487 }
9488 
9489 inline ResizeNearestNeighborOptionsT *ResizeNearestNeighborOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9490   auto _o = new ResizeNearestNeighborOptionsT();
9491   UnPackTo(_o, _resolver);
9492   return _o;
9493 }
9494 
9495 inline void ResizeNearestNeighborOptions::UnPackTo(ResizeNearestNeighborOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9496   (void)_o;
9497   (void)_resolver;
9498   { auto _e = align_corners(); _o->align_corners = _e; };
9499 }
9500 
9501 inline flatbuffers::Offset<ResizeNearestNeighborOptions> ResizeNearestNeighborOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9502   return CreateResizeNearestNeighborOptions(_fbb, _o, _rehasher);
9503 }
9504 
9505 inline flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9506   (void)_rehasher;
9507   (void)_o;
9508   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ResizeNearestNeighborOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9509   auto _align_corners = _o->align_corners;
9510   return tflite::CreateResizeNearestNeighborOptions(
9511       _fbb,
9512       _align_corners);
9513 }
9514 
9515 inline CallOptionsT *CallOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9516   auto _o = new CallOptionsT();
9517   UnPackTo(_o, _resolver);
9518   return _o;
9519 }
9520 
9521 inline void CallOptions::UnPackTo(CallOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9522   (void)_o;
9523   (void)_resolver;
9524   { auto _e = subgraph(); _o->subgraph = _e; };
9525 }
9526 
9527 inline flatbuffers::Offset<CallOptions> CallOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9528   return CreateCallOptions(_fbb, _o, _rehasher);
9529 }
9530 
9531 inline flatbuffers::Offset<CallOptions> CreateCallOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9532   (void)_rehasher;
9533   (void)_o;
9534   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CallOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9535   auto _subgraph = _o->subgraph;
9536   return tflite::CreateCallOptions(
9537       _fbb,
9538       _subgraph);
9539 }
9540 
9541 inline PadOptionsT *PadOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9542   auto _o = new PadOptionsT();
9543   UnPackTo(_o, _resolver);
9544   return _o;
9545 }
9546 
9547 inline void PadOptions::UnPackTo(PadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9548   (void)_o;
9549   (void)_resolver;
9550 }
9551 
9552 inline flatbuffers::Offset<PadOptions> PadOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9553   return CreatePadOptions(_fbb, _o, _rehasher);
9554 }
9555 
9556 inline flatbuffers::Offset<PadOptions> CreatePadOptions(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9557   (void)_rehasher;
9558   (void)_o;
9559   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PadOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9560   return tflite::CreatePadOptions(
9561       _fbb);
9562 }
9563 
9564 inline PadV2OptionsT *PadV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9565   auto _o = new PadV2OptionsT();
9566   UnPackTo(_o, _resolver);
9567   return _o;
9568 }
9569 
9570 inline void PadV2Options::UnPackTo(PadV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9571   (void)_o;
9572   (void)_resolver;
9573 }
9574 
9575 inline flatbuffers::Offset<PadV2Options> PadV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9576   return CreatePadV2Options(_fbb, _o, _rehasher);
9577 }
9578 
9579 inline flatbuffers::Offset<PadV2Options> CreatePadV2Options(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9580   (void)_rehasher;
9581   (void)_o;
9582   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PadV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9583   return tflite::CreatePadV2Options(
9584       _fbb);
9585 }
9586 
9587 inline ReshapeOptionsT *ReshapeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9588   auto _o = new ReshapeOptionsT();
9589   UnPackTo(_o, _resolver);
9590   return _o;
9591 }
9592 
9593 inline void ReshapeOptions::UnPackTo(ReshapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9594   (void)_o;
9595   (void)_resolver;
9596   { auto _e = new_shape(); if (_e) { _o->new_shape.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->new_shape[_i] = _e->Get(_i); } } };
9597 }
9598 
9599 inline flatbuffers::Offset<ReshapeOptions> ReshapeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9600   return CreateReshapeOptions(_fbb, _o, _rehasher);
9601 }
9602 
9603 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9604   (void)_rehasher;
9605   (void)_o;
9606   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReshapeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9607   auto _new_shape = _o->new_shape.size() ? _fbb.CreateVector(_o->new_shape) : 0;
9608   return tflite::CreateReshapeOptions(
9609       _fbb,
9610       _new_shape);
9611 }
9612 
9613 inline SpaceToBatchNDOptionsT *SpaceToBatchNDOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9614   auto _o = new SpaceToBatchNDOptionsT();
9615   UnPackTo(_o, _resolver);
9616   return _o;
9617 }
9618 
9619 inline void SpaceToBatchNDOptions::UnPackTo(SpaceToBatchNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9620   (void)_o;
9621   (void)_resolver;
9622 }
9623 
9624 inline flatbuffers::Offset<SpaceToBatchNDOptions> SpaceToBatchNDOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9625   return CreateSpaceToBatchNDOptions(_fbb, _o, _rehasher);
9626 }
9627 
9628 inline flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9629   (void)_rehasher;
9630   (void)_o;
9631   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SpaceToBatchNDOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9632   return tflite::CreateSpaceToBatchNDOptions(
9633       _fbb);
9634 }
9635 
9636 inline BatchToSpaceNDOptionsT *BatchToSpaceNDOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9637   auto _o = new BatchToSpaceNDOptionsT();
9638   UnPackTo(_o, _resolver);
9639   return _o;
9640 }
9641 
9642 inline void BatchToSpaceNDOptions::UnPackTo(BatchToSpaceNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9643   (void)_o;
9644   (void)_resolver;
9645 }
9646 
9647 inline flatbuffers::Offset<BatchToSpaceNDOptions> BatchToSpaceNDOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9648   return CreateBatchToSpaceNDOptions(_fbb, _o, _rehasher);
9649 }
9650 
9651 inline flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9652   (void)_rehasher;
9653   (void)_o;
9654   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BatchToSpaceNDOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9655   return tflite::CreateBatchToSpaceNDOptions(
9656       _fbb);
9657 }
9658 
9659 inline SkipGramOptionsT *SkipGramOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9660   auto _o = new SkipGramOptionsT();
9661   UnPackTo(_o, _resolver);
9662   return _o;
9663 }
9664 
9665 inline void SkipGramOptions::UnPackTo(SkipGramOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9666   (void)_o;
9667   (void)_resolver;
9668   { auto _e = ngram_size(); _o->ngram_size = _e; };
9669   { auto _e = max_skip_size(); _o->max_skip_size = _e; };
9670   { auto _e = include_all_ngrams(); _o->include_all_ngrams = _e; };
9671 }
9672 
9673 inline flatbuffers::Offset<SkipGramOptions> SkipGramOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9674   return CreateSkipGramOptions(_fbb, _o, _rehasher);
9675 }
9676 
9677 inline flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9678   (void)_rehasher;
9679   (void)_o;
9680   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SkipGramOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9681   auto _ngram_size = _o->ngram_size;
9682   auto _max_skip_size = _o->max_skip_size;
9683   auto _include_all_ngrams = _o->include_all_ngrams;
9684   return tflite::CreateSkipGramOptions(
9685       _fbb,
9686       _ngram_size,
9687       _max_skip_size,
9688       _include_all_ngrams);
9689 }
9690 
9691 inline SpaceToDepthOptionsT *SpaceToDepthOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9692   auto _o = new SpaceToDepthOptionsT();
9693   UnPackTo(_o, _resolver);
9694   return _o;
9695 }
9696 
9697 inline void SpaceToDepthOptions::UnPackTo(SpaceToDepthOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9698   (void)_o;
9699   (void)_resolver;
9700   { auto _e = block_size(); _o->block_size = _e; };
9701 }
9702 
9703 inline flatbuffers::Offset<SpaceToDepthOptions> SpaceToDepthOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9704   return CreateSpaceToDepthOptions(_fbb, _o, _rehasher);
9705 }
9706 
9707 inline flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9708   (void)_rehasher;
9709   (void)_o;
9710   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SpaceToDepthOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9711   auto _block_size = _o->block_size;
9712   return tflite::CreateSpaceToDepthOptions(
9713       _fbb,
9714       _block_size);
9715 }
9716 
9717 inline SubOptionsT *SubOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9718   auto _o = new SubOptionsT();
9719   UnPackTo(_o, _resolver);
9720   return _o;
9721 }
9722 
9723 inline void SubOptions::UnPackTo(SubOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9724   (void)_o;
9725   (void)_resolver;
9726   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9727 }
9728 
9729 inline flatbuffers::Offset<SubOptions> SubOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9730   return CreateSubOptions(_fbb, _o, _rehasher);
9731 }
9732 
9733 inline flatbuffers::Offset<SubOptions> CreateSubOptions(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9734   (void)_rehasher;
9735   (void)_o;
9736   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9737   auto _fused_activation_function = _o->fused_activation_function;
9738   return tflite::CreateSubOptions(
9739       _fbb,
9740       _fused_activation_function);
9741 }
9742 
9743 inline DivOptionsT *DivOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9744   auto _o = new DivOptionsT();
9745   UnPackTo(_o, _resolver);
9746   return _o;
9747 }
9748 
9749 inline void DivOptions::UnPackTo(DivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9750   (void)_o;
9751   (void)_resolver;
9752   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; };
9753 }
9754 
9755 inline flatbuffers::Offset<DivOptions> DivOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9756   return CreateDivOptions(_fbb, _o, _rehasher);
9757 }
9758 
9759 inline flatbuffers::Offset<DivOptions> CreateDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9760   (void)_rehasher;
9761   (void)_o;
9762   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DivOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9763   auto _fused_activation_function = _o->fused_activation_function;
9764   return tflite::CreateDivOptions(
9765       _fbb,
9766       _fused_activation_function);
9767 }
9768 
9769 inline TopKV2OptionsT *TopKV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9770   auto _o = new TopKV2OptionsT();
9771   UnPackTo(_o, _resolver);
9772   return _o;
9773 }
9774 
9775 inline void TopKV2Options::UnPackTo(TopKV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9776   (void)_o;
9777   (void)_resolver;
9778 }
9779 
9780 inline flatbuffers::Offset<TopKV2Options> TopKV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9781   return CreateTopKV2Options(_fbb, _o, _rehasher);
9782 }
9783 
9784 inline flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9785   (void)_rehasher;
9786   (void)_o;
9787   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TopKV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9788   return tflite::CreateTopKV2Options(
9789       _fbb);
9790 }
9791 
9792 inline EmbeddingLookupSparseOptionsT *EmbeddingLookupSparseOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9793   auto _o = new EmbeddingLookupSparseOptionsT();
9794   UnPackTo(_o, _resolver);
9795   return _o;
9796 }
9797 
9798 inline void EmbeddingLookupSparseOptions::UnPackTo(EmbeddingLookupSparseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9799   (void)_o;
9800   (void)_resolver;
9801   { auto _e = combiner(); _o->combiner = _e; };
9802 }
9803 
9804 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> EmbeddingLookupSparseOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9805   return CreateEmbeddingLookupSparseOptions(_fbb, _o, _rehasher);
9806 }
9807 
9808 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9809   (void)_rehasher;
9810   (void)_o;
9811   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EmbeddingLookupSparseOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9812   auto _combiner = _o->combiner;
9813   return tflite::CreateEmbeddingLookupSparseOptions(
9814       _fbb,
9815       _combiner);
9816 }
9817 
9818 inline GatherOptionsT *GatherOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9819   auto _o = new GatherOptionsT();
9820   UnPackTo(_o, _resolver);
9821   return _o;
9822 }
9823 
9824 inline void GatherOptions::UnPackTo(GatherOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9825   (void)_o;
9826   (void)_resolver;
9827   { auto _e = axis(); _o->axis = _e; };
9828 }
9829 
9830 inline flatbuffers::Offset<GatherOptions> GatherOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9831   return CreateGatherOptions(_fbb, _o, _rehasher);
9832 }
9833 
9834 inline flatbuffers::Offset<GatherOptions> CreateGatherOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9835   (void)_rehasher;
9836   (void)_o;
9837   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GatherOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9838   auto _axis = _o->axis;
9839   return tflite::CreateGatherOptions(
9840       _fbb,
9841       _axis);
9842 }
9843 
9844 inline TransposeOptionsT *TransposeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9845   auto _o = new TransposeOptionsT();
9846   UnPackTo(_o, _resolver);
9847   return _o;
9848 }
9849 
9850 inline void TransposeOptions::UnPackTo(TransposeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9851   (void)_o;
9852   (void)_resolver;
9853 }
9854 
9855 inline flatbuffers::Offset<TransposeOptions> TransposeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9856   return CreateTransposeOptions(_fbb, _o, _rehasher);
9857 }
9858 
9859 inline flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9860   (void)_rehasher;
9861   (void)_o;
9862   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TransposeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9863   return tflite::CreateTransposeOptions(
9864       _fbb);
9865 }
9866 
9867 inline ExpOptionsT *ExpOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9868   auto _o = new ExpOptionsT();
9869   UnPackTo(_o, _resolver);
9870   return _o;
9871 }
9872 
9873 inline void ExpOptions::UnPackTo(ExpOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9874   (void)_o;
9875   (void)_resolver;
9876 }
9877 
9878 inline flatbuffers::Offset<ExpOptions> ExpOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9879   return CreateExpOptions(_fbb, _o, _rehasher);
9880 }
9881 
9882 inline flatbuffers::Offset<ExpOptions> CreateExpOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9883   (void)_rehasher;
9884   (void)_o;
9885   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ExpOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9886   return tflite::CreateExpOptions(
9887       _fbb);
9888 }
9889 
9890 inline CosOptionsT *CosOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9891   auto _o = new CosOptionsT();
9892   UnPackTo(_o, _resolver);
9893   return _o;
9894 }
9895 
9896 inline void CosOptions::UnPackTo(CosOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9897   (void)_o;
9898   (void)_resolver;
9899 }
9900 
9901 inline flatbuffers::Offset<CosOptions> CosOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9902   return CreateCosOptions(_fbb, _o, _rehasher);
9903 }
9904 
9905 inline flatbuffers::Offset<CosOptions> CreateCosOptions(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9906   (void)_rehasher;
9907   (void)_o;
9908   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CosOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9909   return tflite::CreateCosOptions(
9910       _fbb);
9911 }
9912 
9913 inline ReducerOptionsT *ReducerOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9914   auto _o = new ReducerOptionsT();
9915   UnPackTo(_o, _resolver);
9916   return _o;
9917 }
9918 
9919 inline void ReducerOptions::UnPackTo(ReducerOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9920   (void)_o;
9921   (void)_resolver;
9922   { auto _e = keep_dims(); _o->keep_dims = _e; };
9923 }
9924 
9925 inline flatbuffers::Offset<ReducerOptions> ReducerOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9926   return CreateReducerOptions(_fbb, _o, _rehasher);
9927 }
9928 
9929 inline flatbuffers::Offset<ReducerOptions> CreateReducerOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9930   (void)_rehasher;
9931   (void)_o;
9932   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReducerOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9933   auto _keep_dims = _o->keep_dims;
9934   return tflite::CreateReducerOptions(
9935       _fbb,
9936       _keep_dims);
9937 }
9938 
9939 inline SqueezeOptionsT *SqueezeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9940   auto _o = new SqueezeOptionsT();
9941   UnPackTo(_o, _resolver);
9942   return _o;
9943 }
9944 
9945 inline void SqueezeOptions::UnPackTo(SqueezeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9946   (void)_o;
9947   (void)_resolver;
9948   { auto _e = squeeze_dims(); if (_e) { _o->squeeze_dims.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->squeeze_dims[_i] = _e->Get(_i); } } };
9949 }
9950 
9951 inline flatbuffers::Offset<SqueezeOptions> SqueezeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9952   return CreateSqueezeOptions(_fbb, _o, _rehasher);
9953 }
9954 
9955 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9956   (void)_rehasher;
9957   (void)_o;
9958   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SqueezeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9959   auto _squeeze_dims = _o->squeeze_dims.size() ? _fbb.CreateVector(_o->squeeze_dims) : 0;
9960   return tflite::CreateSqueezeOptions(
9961       _fbb,
9962       _squeeze_dims);
9963 }
9964 
9965 inline SplitOptionsT *SplitOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9966   auto _o = new SplitOptionsT();
9967   UnPackTo(_o, _resolver);
9968   return _o;
9969 }
9970 
9971 inline void SplitOptions::UnPackTo(SplitOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9972   (void)_o;
9973   (void)_resolver;
9974   { auto _e = num_splits(); _o->num_splits = _e; };
9975 }
9976 
9977 inline flatbuffers::Offset<SplitOptions> SplitOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
9978   return CreateSplitOptions(_fbb, _o, _rehasher);
9979 }
9980 
9981 inline flatbuffers::Offset<SplitOptions> CreateSplitOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
9982   (void)_rehasher;
9983   (void)_o;
9984   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SplitOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
9985   auto _num_splits = _o->num_splits;
9986   return tflite::CreateSplitOptions(
9987       _fbb,
9988       _num_splits);
9989 }
9990 
9991 inline SplitVOptionsT *SplitVOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
9992   auto _o = new SplitVOptionsT();
9993   UnPackTo(_o, _resolver);
9994   return _o;
9995 }
9996 
9997 inline void SplitVOptions::UnPackTo(SplitVOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
9998   (void)_o;
9999   (void)_resolver;
10000   { auto _e = num_splits(); _o->num_splits = _e; };
10001 }
10002 
10003 inline flatbuffers::Offset<SplitVOptions> SplitVOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10004   return CreateSplitVOptions(_fbb, _o, _rehasher);
10005 }
10006 
10007 inline flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10008   (void)_rehasher;
10009   (void)_o;
10010   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SplitVOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10011   auto _num_splits = _o->num_splits;
10012   return tflite::CreateSplitVOptions(
10013       _fbb,
10014       _num_splits);
10015 }
10016 
10017 inline StridedSliceOptionsT *StridedSliceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10018   auto _o = new StridedSliceOptionsT();
10019   UnPackTo(_o, _resolver);
10020   return _o;
10021 }
10022 
10023 inline void StridedSliceOptions::UnPackTo(StridedSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10024   (void)_o;
10025   (void)_resolver;
10026   { auto _e = begin_mask(); _o->begin_mask = _e; };
10027   { auto _e = end_mask(); _o->end_mask = _e; };
10028   { auto _e = ellipsis_mask(); _o->ellipsis_mask = _e; };
10029   { auto _e = new_axis_mask(); _o->new_axis_mask = _e; };
10030   { auto _e = shrink_axis_mask(); _o->shrink_axis_mask = _e; };
10031 }
10032 
10033 inline flatbuffers::Offset<StridedSliceOptions> StridedSliceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10034   return CreateStridedSliceOptions(_fbb, _o, _rehasher);
10035 }
10036 
10037 inline flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10038   (void)_rehasher;
10039   (void)_o;
10040   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StridedSliceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10041   auto _begin_mask = _o->begin_mask;
10042   auto _end_mask = _o->end_mask;
10043   auto _ellipsis_mask = _o->ellipsis_mask;
10044   auto _new_axis_mask = _o->new_axis_mask;
10045   auto _shrink_axis_mask = _o->shrink_axis_mask;
10046   return tflite::CreateStridedSliceOptions(
10047       _fbb,
10048       _begin_mask,
10049       _end_mask,
10050       _ellipsis_mask,
10051       _new_axis_mask,
10052       _shrink_axis_mask);
10053 }
10054 
10055 inline LogSoftmaxOptionsT *LogSoftmaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10056   auto _o = new LogSoftmaxOptionsT();
10057   UnPackTo(_o, _resolver);
10058   return _o;
10059 }
10060 
10061 inline void LogSoftmaxOptions::UnPackTo(LogSoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10062   (void)_o;
10063   (void)_resolver;
10064 }
10065 
10066 inline flatbuffers::Offset<LogSoftmaxOptions> LogSoftmaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10067   return CreateLogSoftmaxOptions(_fbb, _o, _rehasher);
10068 }
10069 
10070 inline flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10071   (void)_rehasher;
10072   (void)_o;
10073   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogSoftmaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10074   return tflite::CreateLogSoftmaxOptions(
10075       _fbb);
10076 }
10077 
10078 inline CastOptionsT *CastOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10079   auto _o = new CastOptionsT();
10080   UnPackTo(_o, _resolver);
10081   return _o;
10082 }
10083 
10084 inline void CastOptions::UnPackTo(CastOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10085   (void)_o;
10086   (void)_resolver;
10087   { auto _e = in_data_type(); _o->in_data_type = _e; };
10088   { auto _e = out_data_type(); _o->out_data_type = _e; };
10089 }
10090 
10091 inline flatbuffers::Offset<CastOptions> CastOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10092   return CreateCastOptions(_fbb, _o, _rehasher);
10093 }
10094 
10095 inline flatbuffers::Offset<CastOptions> CreateCastOptions(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10096   (void)_rehasher;
10097   (void)_o;
10098   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CastOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10099   auto _in_data_type = _o->in_data_type;
10100   auto _out_data_type = _o->out_data_type;
10101   return tflite::CreateCastOptions(
10102       _fbb,
10103       _in_data_type,
10104       _out_data_type);
10105 }
10106 
10107 inline DequantizeOptionsT *DequantizeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10108   auto _o = new DequantizeOptionsT();
10109   UnPackTo(_o, _resolver);
10110   return _o;
10111 }
10112 
10113 inline void DequantizeOptions::UnPackTo(DequantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10114   (void)_o;
10115   (void)_resolver;
10116 }
10117 
10118 inline flatbuffers::Offset<DequantizeOptions> DequantizeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10119   return CreateDequantizeOptions(_fbb, _o, _rehasher);
10120 }
10121 
10122 inline flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10123   (void)_rehasher;
10124   (void)_o;
10125   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DequantizeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10126   return tflite::CreateDequantizeOptions(
10127       _fbb);
10128 }
10129 
10130 inline MaximumMinimumOptionsT *MaximumMinimumOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10131   auto _o = new MaximumMinimumOptionsT();
10132   UnPackTo(_o, _resolver);
10133   return _o;
10134 }
10135 
10136 inline void MaximumMinimumOptions::UnPackTo(MaximumMinimumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10137   (void)_o;
10138   (void)_resolver;
10139 }
10140 
10141 inline flatbuffers::Offset<MaximumMinimumOptions> MaximumMinimumOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10142   return CreateMaximumMinimumOptions(_fbb, _o, _rehasher);
10143 }
10144 
10145 inline flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10146   (void)_rehasher;
10147   (void)_o;
10148   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MaximumMinimumOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10149   return tflite::CreateMaximumMinimumOptions(
10150       _fbb);
10151 }
10152 
10153 inline TileOptionsT *TileOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10154   auto _o = new TileOptionsT();
10155   UnPackTo(_o, _resolver);
10156   return _o;
10157 }
10158 
10159 inline void TileOptions::UnPackTo(TileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10160   (void)_o;
10161   (void)_resolver;
10162 }
10163 
10164 inline flatbuffers::Offset<TileOptions> TileOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10165   return CreateTileOptions(_fbb, _o, _rehasher);
10166 }
10167 
10168 inline flatbuffers::Offset<TileOptions> CreateTileOptions(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10169   (void)_rehasher;
10170   (void)_o;
10171   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TileOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10172   return tflite::CreateTileOptions(
10173       _fbb);
10174 }
10175 
10176 inline ArgMaxOptionsT *ArgMaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10177   auto _o = new ArgMaxOptionsT();
10178   UnPackTo(_o, _resolver);
10179   return _o;
10180 }
10181 
10182 inline void ArgMaxOptions::UnPackTo(ArgMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10183   (void)_o;
10184   (void)_resolver;
10185   { auto _e = output_type(); _o->output_type = _e; };
10186 }
10187 
10188 inline flatbuffers::Offset<ArgMaxOptions> ArgMaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10189   return CreateArgMaxOptions(_fbb, _o, _rehasher);
10190 }
10191 
10192 inline flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10193   (void)_rehasher;
10194   (void)_o;
10195   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArgMaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10196   auto _output_type = _o->output_type;
10197   return tflite::CreateArgMaxOptions(
10198       _fbb,
10199       _output_type);
10200 }
10201 
10202 inline ArgMinOptionsT *ArgMinOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10203   auto _o = new ArgMinOptionsT();
10204   UnPackTo(_o, _resolver);
10205   return _o;
10206 }
10207 
10208 inline void ArgMinOptions::UnPackTo(ArgMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10209   (void)_o;
10210   (void)_resolver;
10211   { auto _e = output_type(); _o->output_type = _e; };
10212 }
10213 
10214 inline flatbuffers::Offset<ArgMinOptions> ArgMinOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10215   return CreateArgMinOptions(_fbb, _o, _rehasher);
10216 }
10217 
10218 inline flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10219   (void)_rehasher;
10220   (void)_o;
10221   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArgMinOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10222   auto _output_type = _o->output_type;
10223   return tflite::CreateArgMinOptions(
10224       _fbb,
10225       _output_type);
10226 }
10227 
10228 inline GreaterOptionsT *GreaterOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10229   auto _o = new GreaterOptionsT();
10230   UnPackTo(_o, _resolver);
10231   return _o;
10232 }
10233 
10234 inline void GreaterOptions::UnPackTo(GreaterOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10235   (void)_o;
10236   (void)_resolver;
10237 }
10238 
10239 inline flatbuffers::Offset<GreaterOptions> GreaterOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10240   return CreateGreaterOptions(_fbb, _o, _rehasher);
10241 }
10242 
10243 inline flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10244   (void)_rehasher;
10245   (void)_o;
10246   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GreaterOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10247   return tflite::CreateGreaterOptions(
10248       _fbb);
10249 }
10250 
10251 inline GreaterEqualOptionsT *GreaterEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10252   auto _o = new GreaterEqualOptionsT();
10253   UnPackTo(_o, _resolver);
10254   return _o;
10255 }
10256 
10257 inline void GreaterEqualOptions::UnPackTo(GreaterEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10258   (void)_o;
10259   (void)_resolver;
10260 }
10261 
10262 inline flatbuffers::Offset<GreaterEqualOptions> GreaterEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10263   return CreateGreaterEqualOptions(_fbb, _o, _rehasher);
10264 }
10265 
10266 inline flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10267   (void)_rehasher;
10268   (void)_o;
10269   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GreaterEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10270   return tflite::CreateGreaterEqualOptions(
10271       _fbb);
10272 }
10273 
10274 inline LessOptionsT *LessOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10275   auto _o = new LessOptionsT();
10276   UnPackTo(_o, _resolver);
10277   return _o;
10278 }
10279 
10280 inline void LessOptions::UnPackTo(LessOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10281   (void)_o;
10282   (void)_resolver;
10283 }
10284 
10285 inline flatbuffers::Offset<LessOptions> LessOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10286   return CreateLessOptions(_fbb, _o, _rehasher);
10287 }
10288 
10289 inline flatbuffers::Offset<LessOptions> CreateLessOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10290   (void)_rehasher;
10291   (void)_o;
10292   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LessOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10293   return tflite::CreateLessOptions(
10294       _fbb);
10295 }
10296 
10297 inline LessEqualOptionsT *LessEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10298   auto _o = new LessEqualOptionsT();
10299   UnPackTo(_o, _resolver);
10300   return _o;
10301 }
10302 
10303 inline void LessEqualOptions::UnPackTo(LessEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10304   (void)_o;
10305   (void)_resolver;
10306 }
10307 
10308 inline flatbuffers::Offset<LessEqualOptions> LessEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10309   return CreateLessEqualOptions(_fbb, _o, _rehasher);
10310 }
10311 
10312 inline flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10313   (void)_rehasher;
10314   (void)_o;
10315   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LessEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10316   return tflite::CreateLessEqualOptions(
10317       _fbb);
10318 }
10319 
10320 inline NegOptionsT *NegOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10321   auto _o = new NegOptionsT();
10322   UnPackTo(_o, _resolver);
10323   return _o;
10324 }
10325 
10326 inline void NegOptions::UnPackTo(NegOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10327   (void)_o;
10328   (void)_resolver;
10329 }
10330 
10331 inline flatbuffers::Offset<NegOptions> NegOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10332   return CreateNegOptions(_fbb, _o, _rehasher);
10333 }
10334 
10335 inline flatbuffers::Offset<NegOptions> CreateNegOptions(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10336   (void)_rehasher;
10337   (void)_o;
10338   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NegOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10339   return tflite::CreateNegOptions(
10340       _fbb);
10341 }
10342 
10343 inline SelectOptionsT *SelectOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10344   auto _o = new SelectOptionsT();
10345   UnPackTo(_o, _resolver);
10346   return _o;
10347 }
10348 
10349 inline void SelectOptions::UnPackTo(SelectOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10350   (void)_o;
10351   (void)_resolver;
10352 }
10353 
10354 inline flatbuffers::Offset<SelectOptions> SelectOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10355   return CreateSelectOptions(_fbb, _o, _rehasher);
10356 }
10357 
10358 inline flatbuffers::Offset<SelectOptions> CreateSelectOptions(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10359   (void)_rehasher;
10360   (void)_o;
10361   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelectOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10362   return tflite::CreateSelectOptions(
10363       _fbb);
10364 }
10365 
10366 inline SliceOptionsT *SliceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10367   auto _o = new SliceOptionsT();
10368   UnPackTo(_o, _resolver);
10369   return _o;
10370 }
10371 
10372 inline void SliceOptions::UnPackTo(SliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10373   (void)_o;
10374   (void)_resolver;
10375 }
10376 
10377 inline flatbuffers::Offset<SliceOptions> SliceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10378   return CreateSliceOptions(_fbb, _o, _rehasher);
10379 }
10380 
10381 inline flatbuffers::Offset<SliceOptions> CreateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10382   (void)_rehasher;
10383   (void)_o;
10384   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SliceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10385   return tflite::CreateSliceOptions(
10386       _fbb);
10387 }
10388 
10389 inline TransposeConvOptionsT *TransposeConvOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10390   auto _o = new TransposeConvOptionsT();
10391   UnPackTo(_o, _resolver);
10392   return _o;
10393 }
10394 
10395 inline void TransposeConvOptions::UnPackTo(TransposeConvOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10396   (void)_o;
10397   (void)_resolver;
10398   { auto _e = padding(); _o->padding = _e; };
10399   { auto _e = stride_w(); _o->stride_w = _e; };
10400   { auto _e = stride_h(); _o->stride_h = _e; };
10401 }
10402 
10403 inline flatbuffers::Offset<TransposeConvOptions> TransposeConvOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10404   return CreateTransposeConvOptions(_fbb, _o, _rehasher);
10405 }
10406 
10407 inline flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10408   (void)_rehasher;
10409   (void)_o;
10410   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TransposeConvOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10411   auto _padding = _o->padding;
10412   auto _stride_w = _o->stride_w;
10413   auto _stride_h = _o->stride_h;
10414   return tflite::CreateTransposeConvOptions(
10415       _fbb,
10416       _padding,
10417       _stride_w,
10418       _stride_h);
10419 }
10420 
10421 inline ExpandDimsOptionsT *ExpandDimsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10422   auto _o = new ExpandDimsOptionsT();
10423   UnPackTo(_o, _resolver);
10424   return _o;
10425 }
10426 
10427 inline void ExpandDimsOptions::UnPackTo(ExpandDimsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10428   (void)_o;
10429   (void)_resolver;
10430 }
10431 
10432 inline flatbuffers::Offset<ExpandDimsOptions> ExpandDimsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10433   return CreateExpandDimsOptions(_fbb, _o, _rehasher);
10434 }
10435 
10436 inline flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10437   (void)_rehasher;
10438   (void)_o;
10439   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ExpandDimsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10440   return tflite::CreateExpandDimsOptions(
10441       _fbb);
10442 }
10443 
10444 inline SparseToDenseOptionsT *SparseToDenseOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10445   auto _o = new SparseToDenseOptionsT();
10446   UnPackTo(_o, _resolver);
10447   return _o;
10448 }
10449 
10450 inline void SparseToDenseOptions::UnPackTo(SparseToDenseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10451   (void)_o;
10452   (void)_resolver;
10453   { auto _e = validate_indices(); _o->validate_indices = _e; };
10454 }
10455 
10456 inline flatbuffers::Offset<SparseToDenseOptions> SparseToDenseOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10457   return CreateSparseToDenseOptions(_fbb, _o, _rehasher);
10458 }
10459 
10460 inline flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10461   (void)_rehasher;
10462   (void)_o;
10463   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SparseToDenseOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10464   auto _validate_indices = _o->validate_indices;
10465   return tflite::CreateSparseToDenseOptions(
10466       _fbb,
10467       _validate_indices);
10468 }
10469 
10470 inline EqualOptionsT *EqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10471   auto _o = new EqualOptionsT();
10472   UnPackTo(_o, _resolver);
10473   return _o;
10474 }
10475 
10476 inline void EqualOptions::UnPackTo(EqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10477   (void)_o;
10478   (void)_resolver;
10479 }
10480 
10481 inline flatbuffers::Offset<EqualOptions> EqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10482   return CreateEqualOptions(_fbb, _o, _rehasher);
10483 }
10484 
10485 inline flatbuffers::Offset<EqualOptions> CreateEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10486   (void)_rehasher;
10487   (void)_o;
10488   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10489   return tflite::CreateEqualOptions(
10490       _fbb);
10491 }
10492 
10493 inline NotEqualOptionsT *NotEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10494   auto _o = new NotEqualOptionsT();
10495   UnPackTo(_o, _resolver);
10496   return _o;
10497 }
10498 
10499 inline void NotEqualOptions::UnPackTo(NotEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10500   (void)_o;
10501   (void)_resolver;
10502 }
10503 
10504 inline flatbuffers::Offset<NotEqualOptions> NotEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10505   return CreateNotEqualOptions(_fbb, _o, _rehasher);
10506 }
10507 
10508 inline flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10509   (void)_rehasher;
10510   (void)_o;
10511   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NotEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10512   return tflite::CreateNotEqualOptions(
10513       _fbb);
10514 }
10515 
10516 inline ShapeOptionsT *ShapeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10517   auto _o = new ShapeOptionsT();
10518   UnPackTo(_o, _resolver);
10519   return _o;
10520 }
10521 
10522 inline void ShapeOptions::UnPackTo(ShapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10523   (void)_o;
10524   (void)_resolver;
10525   { auto _e = out_type(); _o->out_type = _e; };
10526 }
10527 
10528 inline flatbuffers::Offset<ShapeOptions> ShapeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10529   return CreateShapeOptions(_fbb, _o, _rehasher);
10530 }
10531 
10532 inline flatbuffers::Offset<ShapeOptions> CreateShapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10533   (void)_rehasher;
10534   (void)_o;
10535   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShapeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10536   auto _out_type = _o->out_type;
10537   return tflite::CreateShapeOptions(
10538       _fbb,
10539       _out_type);
10540 }
10541 
10542 inline RankOptionsT *RankOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10543   auto _o = new RankOptionsT();
10544   UnPackTo(_o, _resolver);
10545   return _o;
10546 }
10547 
10548 inline void RankOptions::UnPackTo(RankOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10549   (void)_o;
10550   (void)_resolver;
10551 }
10552 
10553 inline flatbuffers::Offset<RankOptions> RankOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10554   return CreateRankOptions(_fbb, _o, _rehasher);
10555 }
10556 
10557 inline flatbuffers::Offset<RankOptions> CreateRankOptions(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10558   (void)_rehasher;
10559   (void)_o;
10560   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RankOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10561   return tflite::CreateRankOptions(
10562       _fbb);
10563 }
10564 
10565 inline PowOptionsT *PowOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10566   auto _o = new PowOptionsT();
10567   UnPackTo(_o, _resolver);
10568   return _o;
10569 }
10570 
10571 inline void PowOptions::UnPackTo(PowOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10572   (void)_o;
10573   (void)_resolver;
10574 }
10575 
10576 inline flatbuffers::Offset<PowOptions> PowOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10577   return CreatePowOptions(_fbb, _o, _rehasher);
10578 }
10579 
10580 inline flatbuffers::Offset<PowOptions> CreatePowOptions(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10581   (void)_rehasher;
10582   (void)_o;
10583   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PowOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10584   return tflite::CreatePowOptions(
10585       _fbb);
10586 }
10587 
10588 inline FakeQuantOptionsT *FakeQuantOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10589   auto _o = new FakeQuantOptionsT();
10590   UnPackTo(_o, _resolver);
10591   return _o;
10592 }
10593 
10594 inline void FakeQuantOptions::UnPackTo(FakeQuantOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10595   (void)_o;
10596   (void)_resolver;
10597   { auto _e = min(); _o->min = _e; };
10598   { auto _e = max(); _o->max = _e; };
10599   { auto _e = num_bits(); _o->num_bits = _e; };
10600   { auto _e = narrow_range(); _o->narrow_range = _e; };
10601 }
10602 
10603 inline flatbuffers::Offset<FakeQuantOptions> FakeQuantOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10604   return CreateFakeQuantOptions(_fbb, _o, _rehasher);
10605 }
10606 
10607 inline flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10608   (void)_rehasher;
10609   (void)_o;
10610   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FakeQuantOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10611   auto _min = _o->min;
10612   auto _max = _o->max;
10613   auto _num_bits = _o->num_bits;
10614   auto _narrow_range = _o->narrow_range;
10615   return tflite::CreateFakeQuantOptions(
10616       _fbb,
10617       _min,
10618       _max,
10619       _num_bits,
10620       _narrow_range);
10621 }
10622 
10623 inline PackOptionsT *PackOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10624   auto _o = new PackOptionsT();
10625   UnPackTo(_o, _resolver);
10626   return _o;
10627 }
10628 
10629 inline void PackOptions::UnPackTo(PackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10630   (void)_o;
10631   (void)_resolver;
10632   { auto _e = values_count(); _o->values_count = _e; };
10633   { auto _e = axis(); _o->axis = _e; };
10634 }
10635 
10636 inline flatbuffers::Offset<PackOptions> PackOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10637   return CreatePackOptions(_fbb, _o, _rehasher);
10638 }
10639 
10640 inline flatbuffers::Offset<PackOptions> CreatePackOptions(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10641   (void)_rehasher;
10642   (void)_o;
10643   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PackOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10644   auto _values_count = _o->values_count;
10645   auto _axis = _o->axis;
10646   return tflite::CreatePackOptions(
10647       _fbb,
10648       _values_count,
10649       _axis);
10650 }
10651 
10652 inline LogicalOrOptionsT *LogicalOrOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10653   auto _o = new LogicalOrOptionsT();
10654   UnPackTo(_o, _resolver);
10655   return _o;
10656 }
10657 
10658 inline void LogicalOrOptions::UnPackTo(LogicalOrOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10659   (void)_o;
10660   (void)_resolver;
10661 }
10662 
10663 inline flatbuffers::Offset<LogicalOrOptions> LogicalOrOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10664   return CreateLogicalOrOptions(_fbb, _o, _rehasher);
10665 }
10666 
10667 inline flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10668   (void)_rehasher;
10669   (void)_o;
10670   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalOrOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10671   return tflite::CreateLogicalOrOptions(
10672       _fbb);
10673 }
10674 
10675 inline OneHotOptionsT *OneHotOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10676   auto _o = new OneHotOptionsT();
10677   UnPackTo(_o, _resolver);
10678   return _o;
10679 }
10680 
10681 inline void OneHotOptions::UnPackTo(OneHotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10682   (void)_o;
10683   (void)_resolver;
10684   { auto _e = axis(); _o->axis = _e; };
10685 }
10686 
10687 inline flatbuffers::Offset<OneHotOptions> OneHotOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10688   return CreateOneHotOptions(_fbb, _o, _rehasher);
10689 }
10690 
10691 inline flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10692   (void)_rehasher;
10693   (void)_o;
10694   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OneHotOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10695   auto _axis = _o->axis;
10696   return tflite::CreateOneHotOptions(
10697       _fbb,
10698       _axis);
10699 }
10700 
10701 inline AbsOptionsT *AbsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10702   auto _o = new AbsOptionsT();
10703   UnPackTo(_o, _resolver);
10704   return _o;
10705 }
10706 
10707 inline void AbsOptions::UnPackTo(AbsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10708   (void)_o;
10709   (void)_resolver;
10710 }
10711 
10712 inline flatbuffers::Offset<AbsOptions> AbsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10713   return CreateAbsOptions(_fbb, _o, _rehasher);
10714 }
10715 
10716 inline flatbuffers::Offset<AbsOptions> CreateAbsOptions(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10717   (void)_rehasher;
10718   (void)_o;
10719   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AbsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10720   return tflite::CreateAbsOptions(
10721       _fbb);
10722 }
10723 
10724 inline LogicalAndOptionsT *LogicalAndOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10725   auto _o = new LogicalAndOptionsT();
10726   UnPackTo(_o, _resolver);
10727   return _o;
10728 }
10729 
10730 inline void LogicalAndOptions::UnPackTo(LogicalAndOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10731   (void)_o;
10732   (void)_resolver;
10733 }
10734 
10735 inline flatbuffers::Offset<LogicalAndOptions> LogicalAndOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10736   return CreateLogicalAndOptions(_fbb, _o, _rehasher);
10737 }
10738 
10739 inline flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10740   (void)_rehasher;
10741   (void)_o;
10742   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalAndOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10743   return tflite::CreateLogicalAndOptions(
10744       _fbb);
10745 }
10746 
10747 inline LogicalNotOptionsT *LogicalNotOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10748   auto _o = new LogicalNotOptionsT();
10749   UnPackTo(_o, _resolver);
10750   return _o;
10751 }
10752 
10753 inline void LogicalNotOptions::UnPackTo(LogicalNotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10754   (void)_o;
10755   (void)_resolver;
10756 }
10757 
10758 inline flatbuffers::Offset<LogicalNotOptions> LogicalNotOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10759   return CreateLogicalNotOptions(_fbb, _o, _rehasher);
10760 }
10761 
10762 inline flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10763   (void)_rehasher;
10764   (void)_o;
10765   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalNotOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10766   return tflite::CreateLogicalNotOptions(
10767       _fbb);
10768 }
10769 
10770 inline UnpackOptionsT *UnpackOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10771   auto _o = new UnpackOptionsT();
10772   UnPackTo(_o, _resolver);
10773   return _o;
10774 }
10775 
10776 inline void UnpackOptions::UnPackTo(UnpackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10777   (void)_o;
10778   (void)_resolver;
10779   { auto _e = num(); _o->num = _e; };
10780   { auto _e = axis(); _o->axis = _e; };
10781 }
10782 
10783 inline flatbuffers::Offset<UnpackOptions> UnpackOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10784   return CreateUnpackOptions(_fbb, _o, _rehasher);
10785 }
10786 
10787 inline flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10788   (void)_rehasher;
10789   (void)_o;
10790   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnpackOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10791   auto _num = _o->num;
10792   auto _axis = _o->axis;
10793   return tflite::CreateUnpackOptions(
10794       _fbb,
10795       _num,
10796       _axis);
10797 }
10798 
10799 inline FloorDivOptionsT *FloorDivOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10800   auto _o = new FloorDivOptionsT();
10801   UnPackTo(_o, _resolver);
10802   return _o;
10803 }
10804 
10805 inline void FloorDivOptions::UnPackTo(FloorDivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10806   (void)_o;
10807   (void)_resolver;
10808 }
10809 
10810 inline flatbuffers::Offset<FloorDivOptions> FloorDivOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10811   return CreateFloorDivOptions(_fbb, _o, _rehasher);
10812 }
10813 
10814 inline flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10815   (void)_rehasher;
10816   (void)_o;
10817   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloorDivOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10818   return tflite::CreateFloorDivOptions(
10819       _fbb);
10820 }
10821 
10822 inline SquareOptionsT *SquareOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10823   auto _o = new SquareOptionsT();
10824   UnPackTo(_o, _resolver);
10825   return _o;
10826 }
10827 
10828 inline void SquareOptions::UnPackTo(SquareOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10829   (void)_o;
10830   (void)_resolver;
10831 }
10832 
10833 inline flatbuffers::Offset<SquareOptions> SquareOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10834   return CreateSquareOptions(_fbb, _o, _rehasher);
10835 }
10836 
10837 inline flatbuffers::Offset<SquareOptions> CreateSquareOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10838   (void)_rehasher;
10839   (void)_o;
10840   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SquareOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10841   return tflite::CreateSquareOptions(
10842       _fbb);
10843 }
10844 
10845 inline ZerosLikeOptionsT *ZerosLikeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10846   auto _o = new ZerosLikeOptionsT();
10847   UnPackTo(_o, _resolver);
10848   return _o;
10849 }
10850 
10851 inline void ZerosLikeOptions::UnPackTo(ZerosLikeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10852   (void)_o;
10853   (void)_resolver;
10854 }
10855 
10856 inline flatbuffers::Offset<ZerosLikeOptions> ZerosLikeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10857   return CreateZerosLikeOptions(_fbb, _o, _rehasher);
10858 }
10859 
10860 inline flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10861   (void)_rehasher;
10862   (void)_o;
10863   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ZerosLikeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10864   return tflite::CreateZerosLikeOptions(
10865       _fbb);
10866 }
10867 
10868 inline FillOptionsT *FillOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10869   auto _o = new FillOptionsT();
10870   UnPackTo(_o, _resolver);
10871   return _o;
10872 }
10873 
10874 inline void FillOptions::UnPackTo(FillOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10875   (void)_o;
10876   (void)_resolver;
10877 }
10878 
10879 inline flatbuffers::Offset<FillOptions> FillOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10880   return CreateFillOptions(_fbb, _o, _rehasher);
10881 }
10882 
10883 inline flatbuffers::Offset<FillOptions> CreateFillOptions(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10884   (void)_rehasher;
10885   (void)_o;
10886   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FillOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10887   return tflite::CreateFillOptions(
10888       _fbb);
10889 }
10890 
10891 inline FloorModOptionsT *FloorModOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10892   auto _o = new FloorModOptionsT();
10893   UnPackTo(_o, _resolver);
10894   return _o;
10895 }
10896 
10897 inline void FloorModOptions::UnPackTo(FloorModOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10898   (void)_o;
10899   (void)_resolver;
10900 }
10901 
10902 inline flatbuffers::Offset<FloorModOptions> FloorModOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10903   return CreateFloorModOptions(_fbb, _o, _rehasher);
10904 }
10905 
10906 inline flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10907   (void)_rehasher;
10908   (void)_o;
10909   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloorModOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10910   return tflite::CreateFloorModOptions(
10911       _fbb);
10912 }
10913 
10914 inline RangeOptionsT *RangeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10915   auto _o = new RangeOptionsT();
10916   UnPackTo(_o, _resolver);
10917   return _o;
10918 }
10919 
10920 inline void RangeOptions::UnPackTo(RangeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10921   (void)_o;
10922   (void)_resolver;
10923 }
10924 
10925 inline flatbuffers::Offset<RangeOptions> RangeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10926   return CreateRangeOptions(_fbb, _o, _rehasher);
10927 }
10928 
10929 inline flatbuffers::Offset<RangeOptions> CreateRangeOptions(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10930   (void)_rehasher;
10931   (void)_o;
10932   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RangeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10933   return tflite::CreateRangeOptions(
10934       _fbb);
10935 }
10936 
10937 inline LeakyReluOptionsT *LeakyReluOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10938   auto _o = new LeakyReluOptionsT();
10939   UnPackTo(_o, _resolver);
10940   return _o;
10941 }
10942 
10943 inline void LeakyReluOptions::UnPackTo(LeakyReluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10944   (void)_o;
10945   (void)_resolver;
10946   { auto _e = alpha(); _o->alpha = _e; };
10947 }
10948 
10949 inline flatbuffers::Offset<LeakyReluOptions> LeakyReluOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10950   return CreateLeakyReluOptions(_fbb, _o, _rehasher);
10951 }
10952 
10953 inline flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10954   (void)_rehasher;
10955   (void)_o;
10956   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LeakyReluOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10957   auto _alpha = _o->alpha;
10958   return tflite::CreateLeakyReluOptions(
10959       _fbb,
10960       _alpha);
10961 }
10962 
10963 inline SquaredDifferenceOptionsT *SquaredDifferenceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10964   auto _o = new SquaredDifferenceOptionsT();
10965   UnPackTo(_o, _resolver);
10966   return _o;
10967 }
10968 
10969 inline void SquaredDifferenceOptions::UnPackTo(SquaredDifferenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10970   (void)_o;
10971   (void)_resolver;
10972 }
10973 
10974 inline flatbuffers::Offset<SquaredDifferenceOptions> SquaredDifferenceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10975   return CreateSquaredDifferenceOptions(_fbb, _o, _rehasher);
10976 }
10977 
10978 inline flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
10979   (void)_rehasher;
10980   (void)_o;
10981   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SquaredDifferenceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
10982   return tflite::CreateSquaredDifferenceOptions(
10983       _fbb);
10984 }
10985 
10986 inline MirrorPadOptionsT *MirrorPadOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
10987   auto _o = new MirrorPadOptionsT();
10988   UnPackTo(_o, _resolver);
10989   return _o;
10990 }
10991 
10992 inline void MirrorPadOptions::UnPackTo(MirrorPadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
10993   (void)_o;
10994   (void)_resolver;
10995   { auto _e = mode(); _o->mode = _e; };
10996 }
10997 
10998 inline flatbuffers::Offset<MirrorPadOptions> MirrorPadOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
10999   return CreateMirrorPadOptions(_fbb, _o, _rehasher);
11000 }
11001 
11002 inline flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11003   (void)_rehasher;
11004   (void)_o;
11005   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MirrorPadOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11006   auto _mode = _o->mode;
11007   return tflite::CreateMirrorPadOptions(
11008       _fbb,
11009       _mode);
11010 }
11011 
11012 inline UniqueOptionsT *UniqueOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11013   auto _o = new UniqueOptionsT();
11014   UnPackTo(_o, _resolver);
11015   return _o;
11016 }
11017 
11018 inline void UniqueOptions::UnPackTo(UniqueOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11019   (void)_o;
11020   (void)_resolver;
11021   { auto _e = idx_out_type(); _o->idx_out_type = _e; };
11022 }
11023 
11024 inline flatbuffers::Offset<UniqueOptions> UniqueOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11025   return CreateUniqueOptions(_fbb, _o, _rehasher);
11026 }
11027 
11028 inline flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11029   (void)_rehasher;
11030   (void)_o;
11031   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UniqueOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11032   auto _idx_out_type = _o->idx_out_type;
11033   return tflite::CreateUniqueOptions(
11034       _fbb,
11035       _idx_out_type);
11036 }
11037 
11038 inline ReverseV2OptionsT *ReverseV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11039   auto _o = new ReverseV2OptionsT();
11040   UnPackTo(_o, _resolver);
11041   return _o;
11042 }
11043 
11044 inline void ReverseV2Options::UnPackTo(ReverseV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11045   (void)_o;
11046   (void)_resolver;
11047 }
11048 
11049 inline flatbuffers::Offset<ReverseV2Options> ReverseV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11050   return CreateReverseV2Options(_fbb, _o, _rehasher);
11051 }
11052 
11053 inline flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11054   (void)_rehasher;
11055   (void)_o;
11056   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReverseV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11057   return tflite::CreateReverseV2Options(
11058       _fbb);
11059 }
11060 
11061 inline AddNOptionsT *AddNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11062   auto _o = new AddNOptionsT();
11063   UnPackTo(_o, _resolver);
11064   return _o;
11065 }
11066 
11067 inline void AddNOptions::UnPackTo(AddNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11068   (void)_o;
11069   (void)_resolver;
11070 }
11071 
11072 inline flatbuffers::Offset<AddNOptions> AddNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11073   return CreateAddNOptions(_fbb, _o, _rehasher);
11074 }
11075 
11076 inline flatbuffers::Offset<AddNOptions> CreateAddNOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11077   (void)_rehasher;
11078   (void)_o;
11079   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AddNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11080   return tflite::CreateAddNOptions(
11081       _fbb);
11082 }
11083 
11084 inline GatherNdOptionsT *GatherNdOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11085   auto _o = new GatherNdOptionsT();
11086   UnPackTo(_o, _resolver);
11087   return _o;
11088 }
11089 
11090 inline void GatherNdOptions::UnPackTo(GatherNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11091   (void)_o;
11092   (void)_resolver;
11093 }
11094 
11095 inline flatbuffers::Offset<GatherNdOptions> GatherNdOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11096   return CreateGatherNdOptions(_fbb, _o, _rehasher);
11097 }
11098 
11099 inline flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11100   (void)_rehasher;
11101   (void)_o;
11102   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GatherNdOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11103   return tflite::CreateGatherNdOptions(
11104       _fbb);
11105 }
11106 
11107 inline WhereOptionsT *WhereOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11108   auto _o = new WhereOptionsT();
11109   UnPackTo(_o, _resolver);
11110   return _o;
11111 }
11112 
11113 inline void WhereOptions::UnPackTo(WhereOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11114   (void)_o;
11115   (void)_resolver;
11116 }
11117 
11118 inline flatbuffers::Offset<WhereOptions> WhereOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11119   return CreateWhereOptions(_fbb, _o, _rehasher);
11120 }
11121 
11122 inline flatbuffers::Offset<WhereOptions> CreateWhereOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11123   (void)_rehasher;
11124   (void)_o;
11125   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WhereOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11126   return tflite::CreateWhereOptions(
11127       _fbb);
11128 }
11129 
11130 inline ReverseSequenceOptionsT *ReverseSequenceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11131   auto _o = new ReverseSequenceOptionsT();
11132   UnPackTo(_o, _resolver);
11133   return _o;
11134 }
11135 
11136 inline void ReverseSequenceOptions::UnPackTo(ReverseSequenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11137   (void)_o;
11138   (void)_resolver;
11139   { auto _e = seq_dim(); _o->seq_dim = _e; };
11140   { auto _e = batch_dim(); _o->batch_dim = _e; };
11141 }
11142 
11143 inline flatbuffers::Offset<ReverseSequenceOptions> ReverseSequenceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11144   return CreateReverseSequenceOptions(_fbb, _o, _rehasher);
11145 }
11146 
11147 inline flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11148   (void)_rehasher;
11149   (void)_o;
11150   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReverseSequenceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11151   auto _seq_dim = _o->seq_dim;
11152   auto _batch_dim = _o->batch_dim;
11153   return tflite::CreateReverseSequenceOptions(
11154       _fbb,
11155       _seq_dim,
11156       _batch_dim);
11157 }
11158 
11159 inline OperatorCodeT *OperatorCode::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11160   auto _o = new OperatorCodeT();
11161   UnPackTo(_o, _resolver);
11162   return _o;
11163 }
11164 
11165 inline void OperatorCode::UnPackTo(OperatorCodeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11166   (void)_o;
11167   (void)_resolver;
11168   { auto _e = builtin_code(); _o->builtin_code = _e; };
11169   { auto _e = custom_code(); if (_e) _o->custom_code = _e->str(); };
11170   { auto _e = version(); _o->version = _e; };
11171 }
11172 
11173 inline flatbuffers::Offset<OperatorCode> OperatorCode::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11174   return CreateOperatorCode(_fbb, _o, _rehasher);
11175 }
11176 
11177 inline flatbuffers::Offset<OperatorCode> CreateOperatorCode(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11178   (void)_rehasher;
11179   (void)_o;
11180   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OperatorCodeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11181   auto _builtin_code = _o->builtin_code;
11182   auto _custom_code = _o->custom_code.empty() ? 0 : _fbb.CreateString(_o->custom_code);
11183   auto _version = _o->version;
11184   return tflite::CreateOperatorCode(
11185       _fbb,
11186       _builtin_code,
11187       _custom_code,
11188       _version);
11189 }
11190 
11191 inline OperatorT *Operator::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11192   auto _o = new OperatorT();
11193   UnPackTo(_o, _resolver);
11194   return _o;
11195 }
11196 
11197 inline void Operator::UnPackTo(OperatorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11198   (void)_o;
11199   (void)_resolver;
11200   { auto _e = opcode_index(); _o->opcode_index = _e; };
11201   { auto _e = inputs(); if (_e) { _o->inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inputs[_i] = _e->Get(_i); } } };
11202   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = _e->Get(_i); } } };
11203   { auto _e = builtin_options_type(); _o->builtin_options.type = _e; };
11204   { auto _e = builtin_options(); if (_e) _o->builtin_options.value = BuiltinOptionsUnion::UnPack(_e, builtin_options_type(), _resolver); };
11205   { auto _e = custom_options(); if (_e) { _o->custom_options.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->custom_options[_i] = _e->Get(_i); } } };
11206   { auto _e = custom_options_format(); _o->custom_options_format = _e; };
11207   { auto _e = mutating_variable_inputs(); if (_e) { _o->mutating_variable_inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mutating_variable_inputs[_i] = _e->Get(_i) != 0; } } };
11208 }
11209 
11210 inline flatbuffers::Offset<Operator> Operator::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11211   return CreateOperator(_fbb, _o, _rehasher);
11212 }
11213 
11214 inline flatbuffers::Offset<Operator> CreateOperator(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11215   (void)_rehasher;
11216   (void)_o;
11217   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OperatorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11218   auto _opcode_index = _o->opcode_index;
11219   auto _inputs = _o->inputs.size() ? _fbb.CreateVector(_o->inputs) : 0;
11220   auto _outputs = _o->outputs.size() ? _fbb.CreateVector(_o->outputs) : 0;
11221   auto _builtin_options_type = _o->builtin_options.type;
11222   auto _builtin_options = _o->builtin_options.Pack(_fbb);
11223   auto _custom_options = _o->custom_options.size() ? _fbb.CreateVector(_o->custom_options) : 0;
11224   auto _custom_options_format = _o->custom_options_format;
11225   auto _mutating_variable_inputs = _o->mutating_variable_inputs.size() ? _fbb.CreateVector(_o->mutating_variable_inputs) : 0;
11226   return tflite::CreateOperator(
11227       _fbb,
11228       _opcode_index,
11229       _inputs,
11230       _outputs,
11231       _builtin_options_type,
11232       _builtin_options,
11233       _custom_options,
11234       _custom_options_format,
11235       _mutating_variable_inputs);
11236 }
11237 
11238 inline SubGraphT *SubGraph::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11239   auto _o = new SubGraphT();
11240   UnPackTo(_o, _resolver);
11241   return _o;
11242 }
11243 
11244 inline void SubGraph::UnPackTo(SubGraphT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11245   (void)_o;
11246   (void)_resolver;
11247   { auto _e = tensors(); if (_e) { _o->tensors.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->tensors[_i] = std::unique_ptr<TensorT>(_e->Get(_i)->UnPack(_resolver)); } } };
11248   { auto _e = inputs(); if (_e) { _o->inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inputs[_i] = _e->Get(_i); } } };
11249   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = _e->Get(_i); } } };
11250   { auto _e = operators(); if (_e) { _o->operators.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->operators[_i] = std::unique_ptr<OperatorT>(_e->Get(_i)->UnPack(_resolver)); } } };
11251   { auto _e = name(); if (_e) _o->name = _e->str(); };
11252 }
11253 
11254 inline flatbuffers::Offset<SubGraph> SubGraph::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11255   return CreateSubGraph(_fbb, _o, _rehasher);
11256 }
11257 
11258 inline flatbuffers::Offset<SubGraph> CreateSubGraph(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11259   (void)_rehasher;
11260   (void)_o;
11261   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubGraphT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11262   auto _tensors = _o->tensors.size() ? _fbb.CreateVector<flatbuffers::Offset<Tensor>> (_o->tensors.size(), [](size_t i, _VectorArgs *__va) { return CreateTensor(*__va->__fbb, __va->__o->tensors[i].get(), __va->__rehasher); }, &_va ) : 0;
11263   auto _inputs = _o->inputs.size() ? _fbb.CreateVector(_o->inputs) : 0;
11264   auto _outputs = _o->outputs.size() ? _fbb.CreateVector(_o->outputs) : 0;
11265   auto _operators = _o->operators.size() ? _fbb.CreateVector<flatbuffers::Offset<Operator>> (_o->operators.size(), [](size_t i, _VectorArgs *__va) { return CreateOperator(*__va->__fbb, __va->__o->operators[i].get(), __va->__rehasher); }, &_va ) : 0;
11266   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
11267   return tflite::CreateSubGraph(
11268       _fbb,
11269       _tensors,
11270       _inputs,
11271       _outputs,
11272       _operators,
11273       _name);
11274 }
11275 
11276 inline BufferT *Buffer::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11277   auto _o = new BufferT();
11278   UnPackTo(_o, _resolver);
11279   return _o;
11280 }
11281 
11282 inline void Buffer::UnPackTo(BufferT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11283   (void)_o;
11284   (void)_resolver;
11285   { auto _e = data(); if (_e) { _o->data.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->data[_i] = _e->Get(_i); } } };
11286 }
11287 
11288 inline flatbuffers::Offset<Buffer> Buffer::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BufferT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11289   return CreateBuffer(_fbb, _o, _rehasher);
11290 }
11291 
11292 inline flatbuffers::Offset<Buffer> CreateBuffer(flatbuffers::FlatBufferBuilder &_fbb, const BufferT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11293   (void)_rehasher;
11294   (void)_o;
11295   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BufferT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11296   auto _data = _o->data.size() ? _fbb.CreateVector(_o->data) : 0;
11297   return tflite::CreateBuffer(
11298       _fbb,
11299       _data);
11300 }
11301 
11302 inline ModelT *Model::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
11303   auto _o = new ModelT();
11304   UnPackTo(_o, _resolver);
11305   return _o;
11306 }
11307 
11308 inline void Model::UnPackTo(ModelT *_o, const flatbuffers::resolver_function_t *_resolver) const {
11309   (void)_o;
11310   (void)_resolver;
11311   { auto _e = version(); _o->version = _e; };
11312   { auto _e = operator_codes(); if (_e) { _o->operator_codes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->operator_codes[_i] = std::unique_ptr<OperatorCodeT>(_e->Get(_i)->UnPack(_resolver)); } } };
11313   { auto _e = subgraphs(); if (_e) { _o->subgraphs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->subgraphs[_i] = std::unique_ptr<SubGraphT>(_e->Get(_i)->UnPack(_resolver)); } } };
11314   { auto _e = description(); if (_e) _o->description = _e->str(); };
11315   { auto _e = buffers(); if (_e) { _o->buffers.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->buffers[_i] = std::unique_ptr<BufferT>(_e->Get(_i)->UnPack(_resolver)); } } };
11316   { auto _e = metadata_buffer(); if (_e) { _o->metadata_buffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->metadata_buffer[_i] = _e->Get(_i); } } };
11317 }
11318 
11319 inline flatbuffers::Offset<Model> Model::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ModelT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
11320   return CreateModel(_fbb, _o, _rehasher);
11321 }
11322 
11323 inline flatbuffers::Offset<Model> CreateModel(flatbuffers::FlatBufferBuilder &_fbb, const ModelT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
11324   (void)_rehasher;
11325   (void)_o;
11326   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ModelT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
11327   auto _version = _o->version;
11328   auto _operator_codes = _o->operator_codes.size() ? _fbb.CreateVector<flatbuffers::Offset<OperatorCode>> (_o->operator_codes.size(), [](size_t i, _VectorArgs *__va) { return CreateOperatorCode(*__va->__fbb, __va->__o->operator_codes[i].get(), __va->__rehasher); }, &_va ) : 0;
11329   auto _subgraphs = _o->subgraphs.size() ? _fbb.CreateVector<flatbuffers::Offset<SubGraph>> (_o->subgraphs.size(), [](size_t i, _VectorArgs *__va) { return CreateSubGraph(*__va->__fbb, __va->__o->subgraphs[i].get(), __va->__rehasher); }, &_va ) : 0;
11330   auto _description = _o->description.empty() ? 0 : _fbb.CreateString(_o->description);
11331   auto _buffers = _o->buffers.size() ? _fbb.CreateVector<flatbuffers::Offset<Buffer>> (_o->buffers.size(), [](size_t i, _VectorArgs *__va) { return CreateBuffer(*__va->__fbb, __va->__o->buffers[i].get(), __va->__rehasher); }, &_va ) : 0;
11332   auto _metadata_buffer = _o->metadata_buffer.size() ? _fbb.CreateVector(_o->metadata_buffer) : 0;
11333   return tflite::CreateModel(
11334       _fbb,
11335       _version,
11336       _operator_codes,
11337       _subgraphs,
11338       _description,
11339       _buffers,
11340       _metadata_buffer);
11341 }
11342 
11343 inline bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type) {
11344   switch (type) {
11345     case QuantizationDetails_NONE: {
11346       return true;
11347     }
11348     case QuantizationDetails_CustomQuantization: {
11349       auto ptr = reinterpret_cast<const CustomQuantization *>(obj);
11350       return verifier.VerifyTable(ptr);
11351     }
11352     default: return false;
11353   }
11354 }
11355 
11356 inline bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
11357   if (!values || !types) return !values && !types;
11358   if (values->size() != types->size()) return false;
11359   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
11360     if (!VerifyQuantizationDetails(
11361         verifier,  values->Get(i), types->GetEnum<QuantizationDetails>(i))) {
11362       return false;
11363     }
11364   }
11365   return true;
11366 }
11367 
11368 inline void *QuantizationDetailsUnion::UnPack(const void *obj, QuantizationDetails type, const flatbuffers::resolver_function_t *resolver) {
11369   switch (type) {
11370     case QuantizationDetails_CustomQuantization: {
11371       auto ptr = reinterpret_cast<const CustomQuantization *>(obj);
11372       return ptr->UnPack(resolver);
11373     }
11374     default: return nullptr;
11375   }
11376 }
11377 
11378 inline flatbuffers::Offset<void> QuantizationDetailsUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
11379   switch (type) {
11380     case QuantizationDetails_CustomQuantization: {
11381       auto ptr = reinterpret_cast<const CustomQuantizationT *>(value);
11382       return CreateCustomQuantization(_fbb, ptr, _rehasher).Union();
11383     }
11384     default: return 0;
11385   }
11386 }
11387 
11388 inline QuantizationDetailsUnion::QuantizationDetailsUnion(const QuantizationDetailsUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
11389   switch (type) {
11390     case QuantizationDetails_CustomQuantization: {
11391       value = new CustomQuantizationT(*reinterpret_cast<CustomQuantizationT *>(u.value));
11392       break;
11393     }
11394     default:
11395       break;
11396   }
11397 }
11398 
11399 inline void QuantizationDetailsUnion::Reset() {
11400   switch (type) {
11401     case QuantizationDetails_CustomQuantization: {
11402       auto ptr = reinterpret_cast<CustomQuantizationT *>(value);
11403       delete ptr;
11404       break;
11405     }
11406     default: break;
11407   }
11408   value = nullptr;
11409   type = QuantizationDetails_NONE;
11410 }
11411 
11412 inline bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type) {
11413   switch (type) {
11414     case BuiltinOptions_NONE: {
11415       return true;
11416     }
11417     case BuiltinOptions_Conv2DOptions: {
11418       auto ptr = reinterpret_cast<const Conv2DOptions *>(obj);
11419       return verifier.VerifyTable(ptr);
11420     }
11421     case BuiltinOptions_DepthwiseConv2DOptions: {
11422       auto ptr = reinterpret_cast<const DepthwiseConv2DOptions *>(obj);
11423       return verifier.VerifyTable(ptr);
11424     }
11425     case BuiltinOptions_ConcatEmbeddingsOptions: {
11426       auto ptr = reinterpret_cast<const ConcatEmbeddingsOptions *>(obj);
11427       return verifier.VerifyTable(ptr);
11428     }
11429     case BuiltinOptions_LSHProjectionOptions: {
11430       auto ptr = reinterpret_cast<const LSHProjectionOptions *>(obj);
11431       return verifier.VerifyTable(ptr);
11432     }
11433     case BuiltinOptions_Pool2DOptions: {
11434       auto ptr = reinterpret_cast<const Pool2DOptions *>(obj);
11435       return verifier.VerifyTable(ptr);
11436     }
11437     case BuiltinOptions_SVDFOptions: {
11438       auto ptr = reinterpret_cast<const SVDFOptions *>(obj);
11439       return verifier.VerifyTable(ptr);
11440     }
11441     case BuiltinOptions_RNNOptions: {
11442       auto ptr = reinterpret_cast<const RNNOptions *>(obj);
11443       return verifier.VerifyTable(ptr);
11444     }
11445     case BuiltinOptions_FullyConnectedOptions: {
11446       auto ptr = reinterpret_cast<const FullyConnectedOptions *>(obj);
11447       return verifier.VerifyTable(ptr);
11448     }
11449     case BuiltinOptions_SoftmaxOptions: {
11450       auto ptr = reinterpret_cast<const SoftmaxOptions *>(obj);
11451       return verifier.VerifyTable(ptr);
11452     }
11453     case BuiltinOptions_ConcatenationOptions: {
11454       auto ptr = reinterpret_cast<const ConcatenationOptions *>(obj);
11455       return verifier.VerifyTable(ptr);
11456     }
11457     case BuiltinOptions_AddOptions: {
11458       auto ptr = reinterpret_cast<const AddOptions *>(obj);
11459       return verifier.VerifyTable(ptr);
11460     }
11461     case BuiltinOptions_L2NormOptions: {
11462       auto ptr = reinterpret_cast<const L2NormOptions *>(obj);
11463       return verifier.VerifyTable(ptr);
11464     }
11465     case BuiltinOptions_LocalResponseNormalizationOptions: {
11466       auto ptr = reinterpret_cast<const LocalResponseNormalizationOptions *>(obj);
11467       return verifier.VerifyTable(ptr);
11468     }
11469     case BuiltinOptions_LSTMOptions: {
11470       auto ptr = reinterpret_cast<const LSTMOptions *>(obj);
11471       return verifier.VerifyTable(ptr);
11472     }
11473     case BuiltinOptions_ResizeBilinearOptions: {
11474       auto ptr = reinterpret_cast<const ResizeBilinearOptions *>(obj);
11475       return verifier.VerifyTable(ptr);
11476     }
11477     case BuiltinOptions_CallOptions: {
11478       auto ptr = reinterpret_cast<const CallOptions *>(obj);
11479       return verifier.VerifyTable(ptr);
11480     }
11481     case BuiltinOptions_ReshapeOptions: {
11482       auto ptr = reinterpret_cast<const ReshapeOptions *>(obj);
11483       return verifier.VerifyTable(ptr);
11484     }
11485     case BuiltinOptions_SkipGramOptions: {
11486       auto ptr = reinterpret_cast<const SkipGramOptions *>(obj);
11487       return verifier.VerifyTable(ptr);
11488     }
11489     case BuiltinOptions_SpaceToDepthOptions: {
11490       auto ptr = reinterpret_cast<const SpaceToDepthOptions *>(obj);
11491       return verifier.VerifyTable(ptr);
11492     }
11493     case BuiltinOptions_EmbeddingLookupSparseOptions: {
11494       auto ptr = reinterpret_cast<const EmbeddingLookupSparseOptions *>(obj);
11495       return verifier.VerifyTable(ptr);
11496     }
11497     case BuiltinOptions_MulOptions: {
11498       auto ptr = reinterpret_cast<const MulOptions *>(obj);
11499       return verifier.VerifyTable(ptr);
11500     }
11501     case BuiltinOptions_PadOptions: {
11502       auto ptr = reinterpret_cast<const PadOptions *>(obj);
11503       return verifier.VerifyTable(ptr);
11504     }
11505     case BuiltinOptions_GatherOptions: {
11506       auto ptr = reinterpret_cast<const GatherOptions *>(obj);
11507       return verifier.VerifyTable(ptr);
11508     }
11509     case BuiltinOptions_BatchToSpaceNDOptions: {
11510       auto ptr = reinterpret_cast<const BatchToSpaceNDOptions *>(obj);
11511       return verifier.VerifyTable(ptr);
11512     }
11513     case BuiltinOptions_SpaceToBatchNDOptions: {
11514       auto ptr = reinterpret_cast<const SpaceToBatchNDOptions *>(obj);
11515       return verifier.VerifyTable(ptr);
11516     }
11517     case BuiltinOptions_TransposeOptions: {
11518       auto ptr = reinterpret_cast<const TransposeOptions *>(obj);
11519       return verifier.VerifyTable(ptr);
11520     }
11521     case BuiltinOptions_ReducerOptions: {
11522       auto ptr = reinterpret_cast<const ReducerOptions *>(obj);
11523       return verifier.VerifyTable(ptr);
11524     }
11525     case BuiltinOptions_SubOptions: {
11526       auto ptr = reinterpret_cast<const SubOptions *>(obj);
11527       return verifier.VerifyTable(ptr);
11528     }
11529     case BuiltinOptions_DivOptions: {
11530       auto ptr = reinterpret_cast<const DivOptions *>(obj);
11531       return verifier.VerifyTable(ptr);
11532     }
11533     case BuiltinOptions_SqueezeOptions: {
11534       auto ptr = reinterpret_cast<const SqueezeOptions *>(obj);
11535       return verifier.VerifyTable(ptr);
11536     }
11537     case BuiltinOptions_SequenceRNNOptions: {
11538       auto ptr = reinterpret_cast<const SequenceRNNOptions *>(obj);
11539       return verifier.VerifyTable(ptr);
11540     }
11541     case BuiltinOptions_StridedSliceOptions: {
11542       auto ptr = reinterpret_cast<const StridedSliceOptions *>(obj);
11543       return verifier.VerifyTable(ptr);
11544     }
11545     case BuiltinOptions_ExpOptions: {
11546       auto ptr = reinterpret_cast<const ExpOptions *>(obj);
11547       return verifier.VerifyTable(ptr);
11548     }
11549     case BuiltinOptions_TopKV2Options: {
11550       auto ptr = reinterpret_cast<const TopKV2Options *>(obj);
11551       return verifier.VerifyTable(ptr);
11552     }
11553     case BuiltinOptions_SplitOptions: {
11554       auto ptr = reinterpret_cast<const SplitOptions *>(obj);
11555       return verifier.VerifyTable(ptr);
11556     }
11557     case BuiltinOptions_LogSoftmaxOptions: {
11558       auto ptr = reinterpret_cast<const LogSoftmaxOptions *>(obj);
11559       return verifier.VerifyTable(ptr);
11560     }
11561     case BuiltinOptions_CastOptions: {
11562       auto ptr = reinterpret_cast<const CastOptions *>(obj);
11563       return verifier.VerifyTable(ptr);
11564     }
11565     case BuiltinOptions_DequantizeOptions: {
11566       auto ptr = reinterpret_cast<const DequantizeOptions *>(obj);
11567       return verifier.VerifyTable(ptr);
11568     }
11569     case BuiltinOptions_MaximumMinimumOptions: {
11570       auto ptr = reinterpret_cast<const MaximumMinimumOptions *>(obj);
11571       return verifier.VerifyTable(ptr);
11572     }
11573     case BuiltinOptions_ArgMaxOptions: {
11574       auto ptr = reinterpret_cast<const ArgMaxOptions *>(obj);
11575       return verifier.VerifyTable(ptr);
11576     }
11577     case BuiltinOptions_LessOptions: {
11578       auto ptr = reinterpret_cast<const LessOptions *>(obj);
11579       return verifier.VerifyTable(ptr);
11580     }
11581     case BuiltinOptions_NegOptions: {
11582       auto ptr = reinterpret_cast<const NegOptions *>(obj);
11583       return verifier.VerifyTable(ptr);
11584     }
11585     case BuiltinOptions_PadV2Options: {
11586       auto ptr = reinterpret_cast<const PadV2Options *>(obj);
11587       return verifier.VerifyTable(ptr);
11588     }
11589     case BuiltinOptions_GreaterOptions: {
11590       auto ptr = reinterpret_cast<const GreaterOptions *>(obj);
11591       return verifier.VerifyTable(ptr);
11592     }
11593     case BuiltinOptions_GreaterEqualOptions: {
11594       auto ptr = reinterpret_cast<const GreaterEqualOptions *>(obj);
11595       return verifier.VerifyTable(ptr);
11596     }
11597     case BuiltinOptions_LessEqualOptions: {
11598       auto ptr = reinterpret_cast<const LessEqualOptions *>(obj);
11599       return verifier.VerifyTable(ptr);
11600     }
11601     case BuiltinOptions_SelectOptions: {
11602       auto ptr = reinterpret_cast<const SelectOptions *>(obj);
11603       return verifier.VerifyTable(ptr);
11604     }
11605     case BuiltinOptions_SliceOptions: {
11606       auto ptr = reinterpret_cast<const SliceOptions *>(obj);
11607       return verifier.VerifyTable(ptr);
11608     }
11609     case BuiltinOptions_TransposeConvOptions: {
11610       auto ptr = reinterpret_cast<const TransposeConvOptions *>(obj);
11611       return verifier.VerifyTable(ptr);
11612     }
11613     case BuiltinOptions_SparseToDenseOptions: {
11614       auto ptr = reinterpret_cast<const SparseToDenseOptions *>(obj);
11615       return verifier.VerifyTable(ptr);
11616     }
11617     case BuiltinOptions_TileOptions: {
11618       auto ptr = reinterpret_cast<const TileOptions *>(obj);
11619       return verifier.VerifyTable(ptr);
11620     }
11621     case BuiltinOptions_ExpandDimsOptions: {
11622       auto ptr = reinterpret_cast<const ExpandDimsOptions *>(obj);
11623       return verifier.VerifyTable(ptr);
11624     }
11625     case BuiltinOptions_EqualOptions: {
11626       auto ptr = reinterpret_cast<const EqualOptions *>(obj);
11627       return verifier.VerifyTable(ptr);
11628     }
11629     case BuiltinOptions_NotEqualOptions: {
11630       auto ptr = reinterpret_cast<const NotEqualOptions *>(obj);
11631       return verifier.VerifyTable(ptr);
11632     }
11633     case BuiltinOptions_ShapeOptions: {
11634       auto ptr = reinterpret_cast<const ShapeOptions *>(obj);
11635       return verifier.VerifyTable(ptr);
11636     }
11637     case BuiltinOptions_PowOptions: {
11638       auto ptr = reinterpret_cast<const PowOptions *>(obj);
11639       return verifier.VerifyTable(ptr);
11640     }
11641     case BuiltinOptions_ArgMinOptions: {
11642       auto ptr = reinterpret_cast<const ArgMinOptions *>(obj);
11643       return verifier.VerifyTable(ptr);
11644     }
11645     case BuiltinOptions_FakeQuantOptions: {
11646       auto ptr = reinterpret_cast<const FakeQuantOptions *>(obj);
11647       return verifier.VerifyTable(ptr);
11648     }
11649     case BuiltinOptions_PackOptions: {
11650       auto ptr = reinterpret_cast<const PackOptions *>(obj);
11651       return verifier.VerifyTable(ptr);
11652     }
11653     case BuiltinOptions_LogicalOrOptions: {
11654       auto ptr = reinterpret_cast<const LogicalOrOptions *>(obj);
11655       return verifier.VerifyTable(ptr);
11656     }
11657     case BuiltinOptions_OneHotOptions: {
11658       auto ptr = reinterpret_cast<const OneHotOptions *>(obj);
11659       return verifier.VerifyTable(ptr);
11660     }
11661     case BuiltinOptions_LogicalAndOptions: {
11662       auto ptr = reinterpret_cast<const LogicalAndOptions *>(obj);
11663       return verifier.VerifyTable(ptr);
11664     }
11665     case BuiltinOptions_LogicalNotOptions: {
11666       auto ptr = reinterpret_cast<const LogicalNotOptions *>(obj);
11667       return verifier.VerifyTable(ptr);
11668     }
11669     case BuiltinOptions_UnpackOptions: {
11670       auto ptr = reinterpret_cast<const UnpackOptions *>(obj);
11671       return verifier.VerifyTable(ptr);
11672     }
11673     case BuiltinOptions_FloorDivOptions: {
11674       auto ptr = reinterpret_cast<const FloorDivOptions *>(obj);
11675       return verifier.VerifyTable(ptr);
11676     }
11677     case BuiltinOptions_SquareOptions: {
11678       auto ptr = reinterpret_cast<const SquareOptions *>(obj);
11679       return verifier.VerifyTable(ptr);
11680     }
11681     case BuiltinOptions_ZerosLikeOptions: {
11682       auto ptr = reinterpret_cast<const ZerosLikeOptions *>(obj);
11683       return verifier.VerifyTable(ptr);
11684     }
11685     case BuiltinOptions_FillOptions: {
11686       auto ptr = reinterpret_cast<const FillOptions *>(obj);
11687       return verifier.VerifyTable(ptr);
11688     }
11689     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
11690       auto ptr = reinterpret_cast<const BidirectionalSequenceLSTMOptions *>(obj);
11691       return verifier.VerifyTable(ptr);
11692     }
11693     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
11694       auto ptr = reinterpret_cast<const BidirectionalSequenceRNNOptions *>(obj);
11695       return verifier.VerifyTable(ptr);
11696     }
11697     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
11698       auto ptr = reinterpret_cast<const UnidirectionalSequenceLSTMOptions *>(obj);
11699       return verifier.VerifyTable(ptr);
11700     }
11701     case BuiltinOptions_FloorModOptions: {
11702       auto ptr = reinterpret_cast<const FloorModOptions *>(obj);
11703       return verifier.VerifyTable(ptr);
11704     }
11705     case BuiltinOptions_RangeOptions: {
11706       auto ptr = reinterpret_cast<const RangeOptions *>(obj);
11707       return verifier.VerifyTable(ptr);
11708     }
11709     case BuiltinOptions_ResizeNearestNeighborOptions: {
11710       auto ptr = reinterpret_cast<const ResizeNearestNeighborOptions *>(obj);
11711       return verifier.VerifyTable(ptr);
11712     }
11713     case BuiltinOptions_LeakyReluOptions: {
11714       auto ptr = reinterpret_cast<const LeakyReluOptions *>(obj);
11715       return verifier.VerifyTable(ptr);
11716     }
11717     case BuiltinOptions_SquaredDifferenceOptions: {
11718       auto ptr = reinterpret_cast<const SquaredDifferenceOptions *>(obj);
11719       return verifier.VerifyTable(ptr);
11720     }
11721     case BuiltinOptions_MirrorPadOptions: {
11722       auto ptr = reinterpret_cast<const MirrorPadOptions *>(obj);
11723       return verifier.VerifyTable(ptr);
11724     }
11725     case BuiltinOptions_AbsOptions: {
11726       auto ptr = reinterpret_cast<const AbsOptions *>(obj);
11727       return verifier.VerifyTable(ptr);
11728     }
11729     case BuiltinOptions_SplitVOptions: {
11730       auto ptr = reinterpret_cast<const SplitVOptions *>(obj);
11731       return verifier.VerifyTable(ptr);
11732     }
11733     case BuiltinOptions_UniqueOptions: {
11734       auto ptr = reinterpret_cast<const UniqueOptions *>(obj);
11735       return verifier.VerifyTable(ptr);
11736     }
11737     case BuiltinOptions_ReverseV2Options: {
11738       auto ptr = reinterpret_cast<const ReverseV2Options *>(obj);
11739       return verifier.VerifyTable(ptr);
11740     }
11741     case BuiltinOptions_AddNOptions: {
11742       auto ptr = reinterpret_cast<const AddNOptions *>(obj);
11743       return verifier.VerifyTable(ptr);
11744     }
11745     case BuiltinOptions_GatherNdOptions: {
11746       auto ptr = reinterpret_cast<const GatherNdOptions *>(obj);
11747       return verifier.VerifyTable(ptr);
11748     }
11749     case BuiltinOptions_CosOptions: {
11750       auto ptr = reinterpret_cast<const CosOptions *>(obj);
11751       return verifier.VerifyTable(ptr);
11752     }
11753     case BuiltinOptions_WhereOptions: {
11754       auto ptr = reinterpret_cast<const WhereOptions *>(obj);
11755       return verifier.VerifyTable(ptr);
11756     }
11757     case BuiltinOptions_RankOptions: {
11758       auto ptr = reinterpret_cast<const RankOptions *>(obj);
11759       return verifier.VerifyTable(ptr);
11760     }
11761     case BuiltinOptions_ReverseSequenceOptions: {
11762       auto ptr = reinterpret_cast<const ReverseSequenceOptions *>(obj);
11763       return verifier.VerifyTable(ptr);
11764     }
11765     default: return false;
11766   }
11767 }
11768 
11769 inline bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
11770   if (!values || !types) return !values && !types;
11771   if (values->size() != types->size()) return false;
11772   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
11773     if (!VerifyBuiltinOptions(
11774         verifier,  values->Get(i), types->GetEnum<BuiltinOptions>(i))) {
11775       return false;
11776     }
11777   }
11778   return true;
11779 }
11780 
11781 inline void *BuiltinOptionsUnion::UnPack(const void *obj, BuiltinOptions type, const flatbuffers::resolver_function_t *resolver) {
11782   switch (type) {
11783     case BuiltinOptions_Conv2DOptions: {
11784       auto ptr = reinterpret_cast<const Conv2DOptions *>(obj);
11785       return ptr->UnPack(resolver);
11786     }
11787     case BuiltinOptions_DepthwiseConv2DOptions: {
11788       auto ptr = reinterpret_cast<const DepthwiseConv2DOptions *>(obj);
11789       return ptr->UnPack(resolver);
11790     }
11791     case BuiltinOptions_ConcatEmbeddingsOptions: {
11792       auto ptr = reinterpret_cast<const ConcatEmbeddingsOptions *>(obj);
11793       return ptr->UnPack(resolver);
11794     }
11795     case BuiltinOptions_LSHProjectionOptions: {
11796       auto ptr = reinterpret_cast<const LSHProjectionOptions *>(obj);
11797       return ptr->UnPack(resolver);
11798     }
11799     case BuiltinOptions_Pool2DOptions: {
11800       auto ptr = reinterpret_cast<const Pool2DOptions *>(obj);
11801       return ptr->UnPack(resolver);
11802     }
11803     case BuiltinOptions_SVDFOptions: {
11804       auto ptr = reinterpret_cast<const SVDFOptions *>(obj);
11805       return ptr->UnPack(resolver);
11806     }
11807     case BuiltinOptions_RNNOptions: {
11808       auto ptr = reinterpret_cast<const RNNOptions *>(obj);
11809       return ptr->UnPack(resolver);
11810     }
11811     case BuiltinOptions_FullyConnectedOptions: {
11812       auto ptr = reinterpret_cast<const FullyConnectedOptions *>(obj);
11813       return ptr->UnPack(resolver);
11814     }
11815     case BuiltinOptions_SoftmaxOptions: {
11816       auto ptr = reinterpret_cast<const SoftmaxOptions *>(obj);
11817       return ptr->UnPack(resolver);
11818     }
11819     case BuiltinOptions_ConcatenationOptions: {
11820       auto ptr = reinterpret_cast<const ConcatenationOptions *>(obj);
11821       return ptr->UnPack(resolver);
11822     }
11823     case BuiltinOptions_AddOptions: {
11824       auto ptr = reinterpret_cast<const AddOptions *>(obj);
11825       return ptr->UnPack(resolver);
11826     }
11827     case BuiltinOptions_L2NormOptions: {
11828       auto ptr = reinterpret_cast<const L2NormOptions *>(obj);
11829       return ptr->UnPack(resolver);
11830     }
11831     case BuiltinOptions_LocalResponseNormalizationOptions: {
11832       auto ptr = reinterpret_cast<const LocalResponseNormalizationOptions *>(obj);
11833       return ptr->UnPack(resolver);
11834     }
11835     case BuiltinOptions_LSTMOptions: {
11836       auto ptr = reinterpret_cast<const LSTMOptions *>(obj);
11837       return ptr->UnPack(resolver);
11838     }
11839     case BuiltinOptions_ResizeBilinearOptions: {
11840       auto ptr = reinterpret_cast<const ResizeBilinearOptions *>(obj);
11841       return ptr->UnPack(resolver);
11842     }
11843     case BuiltinOptions_CallOptions: {
11844       auto ptr = reinterpret_cast<const CallOptions *>(obj);
11845       return ptr->UnPack(resolver);
11846     }
11847     case BuiltinOptions_ReshapeOptions: {
11848       auto ptr = reinterpret_cast<const ReshapeOptions *>(obj);
11849       return ptr->UnPack(resolver);
11850     }
11851     case BuiltinOptions_SkipGramOptions: {
11852       auto ptr = reinterpret_cast<const SkipGramOptions *>(obj);
11853       return ptr->UnPack(resolver);
11854     }
11855     case BuiltinOptions_SpaceToDepthOptions: {
11856       auto ptr = reinterpret_cast<const SpaceToDepthOptions *>(obj);
11857       return ptr->UnPack(resolver);
11858     }
11859     case BuiltinOptions_EmbeddingLookupSparseOptions: {
11860       auto ptr = reinterpret_cast<const EmbeddingLookupSparseOptions *>(obj);
11861       return ptr->UnPack(resolver);
11862     }
11863     case BuiltinOptions_MulOptions: {
11864       auto ptr = reinterpret_cast<const MulOptions *>(obj);
11865       return ptr->UnPack(resolver);
11866     }
11867     case BuiltinOptions_PadOptions: {
11868       auto ptr = reinterpret_cast<const PadOptions *>(obj);
11869       return ptr->UnPack(resolver);
11870     }
11871     case BuiltinOptions_GatherOptions: {
11872       auto ptr = reinterpret_cast<const GatherOptions *>(obj);
11873       return ptr->UnPack(resolver);
11874     }
11875     case BuiltinOptions_BatchToSpaceNDOptions: {
11876       auto ptr = reinterpret_cast<const BatchToSpaceNDOptions *>(obj);
11877       return ptr->UnPack(resolver);
11878     }
11879     case BuiltinOptions_SpaceToBatchNDOptions: {
11880       auto ptr = reinterpret_cast<const SpaceToBatchNDOptions *>(obj);
11881       return ptr->UnPack(resolver);
11882     }
11883     case BuiltinOptions_TransposeOptions: {
11884       auto ptr = reinterpret_cast<const TransposeOptions *>(obj);
11885       return ptr->UnPack(resolver);
11886     }
11887     case BuiltinOptions_ReducerOptions: {
11888       auto ptr = reinterpret_cast<const ReducerOptions *>(obj);
11889       return ptr->UnPack(resolver);
11890     }
11891     case BuiltinOptions_SubOptions: {
11892       auto ptr = reinterpret_cast<const SubOptions *>(obj);
11893       return ptr->UnPack(resolver);
11894     }
11895     case BuiltinOptions_DivOptions: {
11896       auto ptr = reinterpret_cast<const DivOptions *>(obj);
11897       return ptr->UnPack(resolver);
11898     }
11899     case BuiltinOptions_SqueezeOptions: {
11900       auto ptr = reinterpret_cast<const SqueezeOptions *>(obj);
11901       return ptr->UnPack(resolver);
11902     }
11903     case BuiltinOptions_SequenceRNNOptions: {
11904       auto ptr = reinterpret_cast<const SequenceRNNOptions *>(obj);
11905       return ptr->UnPack(resolver);
11906     }
11907     case BuiltinOptions_StridedSliceOptions: {
11908       auto ptr = reinterpret_cast<const StridedSliceOptions *>(obj);
11909       return ptr->UnPack(resolver);
11910     }
11911     case BuiltinOptions_ExpOptions: {
11912       auto ptr = reinterpret_cast<const ExpOptions *>(obj);
11913       return ptr->UnPack(resolver);
11914     }
11915     case BuiltinOptions_TopKV2Options: {
11916       auto ptr = reinterpret_cast<const TopKV2Options *>(obj);
11917       return ptr->UnPack(resolver);
11918     }
11919     case BuiltinOptions_SplitOptions: {
11920       auto ptr = reinterpret_cast<const SplitOptions *>(obj);
11921       return ptr->UnPack(resolver);
11922     }
11923     case BuiltinOptions_LogSoftmaxOptions: {
11924       auto ptr = reinterpret_cast<const LogSoftmaxOptions *>(obj);
11925       return ptr->UnPack(resolver);
11926     }
11927     case BuiltinOptions_CastOptions: {
11928       auto ptr = reinterpret_cast<const CastOptions *>(obj);
11929       return ptr->UnPack(resolver);
11930     }
11931     case BuiltinOptions_DequantizeOptions: {
11932       auto ptr = reinterpret_cast<const DequantizeOptions *>(obj);
11933       return ptr->UnPack(resolver);
11934     }
11935     case BuiltinOptions_MaximumMinimumOptions: {
11936       auto ptr = reinterpret_cast<const MaximumMinimumOptions *>(obj);
11937       return ptr->UnPack(resolver);
11938     }
11939     case BuiltinOptions_ArgMaxOptions: {
11940       auto ptr = reinterpret_cast<const ArgMaxOptions *>(obj);
11941       return ptr->UnPack(resolver);
11942     }
11943     case BuiltinOptions_LessOptions: {
11944       auto ptr = reinterpret_cast<const LessOptions *>(obj);
11945       return ptr->UnPack(resolver);
11946     }
11947     case BuiltinOptions_NegOptions: {
11948       auto ptr = reinterpret_cast<const NegOptions *>(obj);
11949       return ptr->UnPack(resolver);
11950     }
11951     case BuiltinOptions_PadV2Options: {
11952       auto ptr = reinterpret_cast<const PadV2Options *>(obj);
11953       return ptr->UnPack(resolver);
11954     }
11955     case BuiltinOptions_GreaterOptions: {
11956       auto ptr = reinterpret_cast<const GreaterOptions *>(obj);
11957       return ptr->UnPack(resolver);
11958     }
11959     case BuiltinOptions_GreaterEqualOptions: {
11960       auto ptr = reinterpret_cast<const GreaterEqualOptions *>(obj);
11961       return ptr->UnPack(resolver);
11962     }
11963     case BuiltinOptions_LessEqualOptions: {
11964       auto ptr = reinterpret_cast<const LessEqualOptions *>(obj);
11965       return ptr->UnPack(resolver);
11966     }
11967     case BuiltinOptions_SelectOptions: {
11968       auto ptr = reinterpret_cast<const SelectOptions *>(obj);
11969       return ptr->UnPack(resolver);
11970     }
11971     case BuiltinOptions_SliceOptions: {
11972       auto ptr = reinterpret_cast<const SliceOptions *>(obj);
11973       return ptr->UnPack(resolver);
11974     }
11975     case BuiltinOptions_TransposeConvOptions: {
11976       auto ptr = reinterpret_cast<const TransposeConvOptions *>(obj);
11977       return ptr->UnPack(resolver);
11978     }
11979     case BuiltinOptions_SparseToDenseOptions: {
11980       auto ptr = reinterpret_cast<const SparseToDenseOptions *>(obj);
11981       return ptr->UnPack(resolver);
11982     }
11983     case BuiltinOptions_TileOptions: {
11984       auto ptr = reinterpret_cast<const TileOptions *>(obj);
11985       return ptr->UnPack(resolver);
11986     }
11987     case BuiltinOptions_ExpandDimsOptions: {
11988       auto ptr = reinterpret_cast<const ExpandDimsOptions *>(obj);
11989       return ptr->UnPack(resolver);
11990     }
11991     case BuiltinOptions_EqualOptions: {
11992       auto ptr = reinterpret_cast<const EqualOptions *>(obj);
11993       return ptr->UnPack(resolver);
11994     }
11995     case BuiltinOptions_NotEqualOptions: {
11996       auto ptr = reinterpret_cast<const NotEqualOptions *>(obj);
11997       return ptr->UnPack(resolver);
11998     }
11999     case BuiltinOptions_ShapeOptions: {
12000       auto ptr = reinterpret_cast<const ShapeOptions *>(obj);
12001       return ptr->UnPack(resolver);
12002     }
12003     case BuiltinOptions_PowOptions: {
12004       auto ptr = reinterpret_cast<const PowOptions *>(obj);
12005       return ptr->UnPack(resolver);
12006     }
12007     case BuiltinOptions_ArgMinOptions: {
12008       auto ptr = reinterpret_cast<const ArgMinOptions *>(obj);
12009       return ptr->UnPack(resolver);
12010     }
12011     case BuiltinOptions_FakeQuantOptions: {
12012       auto ptr = reinterpret_cast<const FakeQuantOptions *>(obj);
12013       return ptr->UnPack(resolver);
12014     }
12015     case BuiltinOptions_PackOptions: {
12016       auto ptr = reinterpret_cast<const PackOptions *>(obj);
12017       return ptr->UnPack(resolver);
12018     }
12019     case BuiltinOptions_LogicalOrOptions: {
12020       auto ptr = reinterpret_cast<const LogicalOrOptions *>(obj);
12021       return ptr->UnPack(resolver);
12022     }
12023     case BuiltinOptions_OneHotOptions: {
12024       auto ptr = reinterpret_cast<const OneHotOptions *>(obj);
12025       return ptr->UnPack(resolver);
12026     }
12027     case BuiltinOptions_LogicalAndOptions: {
12028       auto ptr = reinterpret_cast<const LogicalAndOptions *>(obj);
12029       return ptr->UnPack(resolver);
12030     }
12031     case BuiltinOptions_LogicalNotOptions: {
12032       auto ptr = reinterpret_cast<const LogicalNotOptions *>(obj);
12033       return ptr->UnPack(resolver);
12034     }
12035     case BuiltinOptions_UnpackOptions: {
12036       auto ptr = reinterpret_cast<const UnpackOptions *>(obj);
12037       return ptr->UnPack(resolver);
12038     }
12039     case BuiltinOptions_FloorDivOptions: {
12040       auto ptr = reinterpret_cast<const FloorDivOptions *>(obj);
12041       return ptr->UnPack(resolver);
12042     }
12043     case BuiltinOptions_SquareOptions: {
12044       auto ptr = reinterpret_cast<const SquareOptions *>(obj);
12045       return ptr->UnPack(resolver);
12046     }
12047     case BuiltinOptions_ZerosLikeOptions: {
12048       auto ptr = reinterpret_cast<const ZerosLikeOptions *>(obj);
12049       return ptr->UnPack(resolver);
12050     }
12051     case BuiltinOptions_FillOptions: {
12052       auto ptr = reinterpret_cast<const FillOptions *>(obj);
12053       return ptr->UnPack(resolver);
12054     }
12055     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
12056       auto ptr = reinterpret_cast<const BidirectionalSequenceLSTMOptions *>(obj);
12057       return ptr->UnPack(resolver);
12058     }
12059     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
12060       auto ptr = reinterpret_cast<const BidirectionalSequenceRNNOptions *>(obj);
12061       return ptr->UnPack(resolver);
12062     }
12063     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
12064       auto ptr = reinterpret_cast<const UnidirectionalSequenceLSTMOptions *>(obj);
12065       return ptr->UnPack(resolver);
12066     }
12067     case BuiltinOptions_FloorModOptions: {
12068       auto ptr = reinterpret_cast<const FloorModOptions *>(obj);
12069       return ptr->UnPack(resolver);
12070     }
12071     case BuiltinOptions_RangeOptions: {
12072       auto ptr = reinterpret_cast<const RangeOptions *>(obj);
12073       return ptr->UnPack(resolver);
12074     }
12075     case BuiltinOptions_ResizeNearestNeighborOptions: {
12076       auto ptr = reinterpret_cast<const ResizeNearestNeighborOptions *>(obj);
12077       return ptr->UnPack(resolver);
12078     }
12079     case BuiltinOptions_LeakyReluOptions: {
12080       auto ptr = reinterpret_cast<const LeakyReluOptions *>(obj);
12081       return ptr->UnPack(resolver);
12082     }
12083     case BuiltinOptions_SquaredDifferenceOptions: {
12084       auto ptr = reinterpret_cast<const SquaredDifferenceOptions *>(obj);
12085       return ptr->UnPack(resolver);
12086     }
12087     case BuiltinOptions_MirrorPadOptions: {
12088       auto ptr = reinterpret_cast<const MirrorPadOptions *>(obj);
12089       return ptr->UnPack(resolver);
12090     }
12091     case BuiltinOptions_AbsOptions: {
12092       auto ptr = reinterpret_cast<const AbsOptions *>(obj);
12093       return ptr->UnPack(resolver);
12094     }
12095     case BuiltinOptions_SplitVOptions: {
12096       auto ptr = reinterpret_cast<const SplitVOptions *>(obj);
12097       return ptr->UnPack(resolver);
12098     }
12099     case BuiltinOptions_UniqueOptions: {
12100       auto ptr = reinterpret_cast<const UniqueOptions *>(obj);
12101       return ptr->UnPack(resolver);
12102     }
12103     case BuiltinOptions_ReverseV2Options: {
12104       auto ptr = reinterpret_cast<const ReverseV2Options *>(obj);
12105       return ptr->UnPack(resolver);
12106     }
12107     case BuiltinOptions_AddNOptions: {
12108       auto ptr = reinterpret_cast<const AddNOptions *>(obj);
12109       return ptr->UnPack(resolver);
12110     }
12111     case BuiltinOptions_GatherNdOptions: {
12112       auto ptr = reinterpret_cast<const GatherNdOptions *>(obj);
12113       return ptr->UnPack(resolver);
12114     }
12115     case BuiltinOptions_CosOptions: {
12116       auto ptr = reinterpret_cast<const CosOptions *>(obj);
12117       return ptr->UnPack(resolver);
12118     }
12119     case BuiltinOptions_WhereOptions: {
12120       auto ptr = reinterpret_cast<const WhereOptions *>(obj);
12121       return ptr->UnPack(resolver);
12122     }
12123     case BuiltinOptions_RankOptions: {
12124       auto ptr = reinterpret_cast<const RankOptions *>(obj);
12125       return ptr->UnPack(resolver);
12126     }
12127     case BuiltinOptions_ReverseSequenceOptions: {
12128       auto ptr = reinterpret_cast<const ReverseSequenceOptions *>(obj);
12129       return ptr->UnPack(resolver);
12130     }
12131     default: return nullptr;
12132   }
12133 }
12134 
12135 inline flatbuffers::Offset<void> BuiltinOptionsUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
12136   switch (type) {
12137     case BuiltinOptions_Conv2DOptions: {
12138       auto ptr = reinterpret_cast<const Conv2DOptionsT *>(value);
12139       return CreateConv2DOptions(_fbb, ptr, _rehasher).Union();
12140     }
12141     case BuiltinOptions_DepthwiseConv2DOptions: {
12142       auto ptr = reinterpret_cast<const DepthwiseConv2DOptionsT *>(value);
12143       return CreateDepthwiseConv2DOptions(_fbb, ptr, _rehasher).Union();
12144     }
12145     case BuiltinOptions_ConcatEmbeddingsOptions: {
12146       auto ptr = reinterpret_cast<const ConcatEmbeddingsOptionsT *>(value);
12147       return CreateConcatEmbeddingsOptions(_fbb, ptr, _rehasher).Union();
12148     }
12149     case BuiltinOptions_LSHProjectionOptions: {
12150       auto ptr = reinterpret_cast<const LSHProjectionOptionsT *>(value);
12151       return CreateLSHProjectionOptions(_fbb, ptr, _rehasher).Union();
12152     }
12153     case BuiltinOptions_Pool2DOptions: {
12154       auto ptr = reinterpret_cast<const Pool2DOptionsT *>(value);
12155       return CreatePool2DOptions(_fbb, ptr, _rehasher).Union();
12156     }
12157     case BuiltinOptions_SVDFOptions: {
12158       auto ptr = reinterpret_cast<const SVDFOptionsT *>(value);
12159       return CreateSVDFOptions(_fbb, ptr, _rehasher).Union();
12160     }
12161     case BuiltinOptions_RNNOptions: {
12162       auto ptr = reinterpret_cast<const RNNOptionsT *>(value);
12163       return CreateRNNOptions(_fbb, ptr, _rehasher).Union();
12164     }
12165     case BuiltinOptions_FullyConnectedOptions: {
12166       auto ptr = reinterpret_cast<const FullyConnectedOptionsT *>(value);
12167       return CreateFullyConnectedOptions(_fbb, ptr, _rehasher).Union();
12168     }
12169     case BuiltinOptions_SoftmaxOptions: {
12170       auto ptr = reinterpret_cast<const SoftmaxOptionsT *>(value);
12171       return CreateSoftmaxOptions(_fbb, ptr, _rehasher).Union();
12172     }
12173     case BuiltinOptions_ConcatenationOptions: {
12174       auto ptr = reinterpret_cast<const ConcatenationOptionsT *>(value);
12175       return CreateConcatenationOptions(_fbb, ptr, _rehasher).Union();
12176     }
12177     case BuiltinOptions_AddOptions: {
12178       auto ptr = reinterpret_cast<const AddOptionsT *>(value);
12179       return CreateAddOptions(_fbb, ptr, _rehasher).Union();
12180     }
12181     case BuiltinOptions_L2NormOptions: {
12182       auto ptr = reinterpret_cast<const L2NormOptionsT *>(value);
12183       return CreateL2NormOptions(_fbb, ptr, _rehasher).Union();
12184     }
12185     case BuiltinOptions_LocalResponseNormalizationOptions: {
12186       auto ptr = reinterpret_cast<const LocalResponseNormalizationOptionsT *>(value);
12187       return CreateLocalResponseNormalizationOptions(_fbb, ptr, _rehasher).Union();
12188     }
12189     case BuiltinOptions_LSTMOptions: {
12190       auto ptr = reinterpret_cast<const LSTMOptionsT *>(value);
12191       return CreateLSTMOptions(_fbb, ptr, _rehasher).Union();
12192     }
12193     case BuiltinOptions_ResizeBilinearOptions: {
12194       auto ptr = reinterpret_cast<const ResizeBilinearOptionsT *>(value);
12195       return CreateResizeBilinearOptions(_fbb, ptr, _rehasher).Union();
12196     }
12197     case BuiltinOptions_CallOptions: {
12198       auto ptr = reinterpret_cast<const CallOptionsT *>(value);
12199       return CreateCallOptions(_fbb, ptr, _rehasher).Union();
12200     }
12201     case BuiltinOptions_ReshapeOptions: {
12202       auto ptr = reinterpret_cast<const ReshapeOptionsT *>(value);
12203       return CreateReshapeOptions(_fbb, ptr, _rehasher).Union();
12204     }
12205     case BuiltinOptions_SkipGramOptions: {
12206       auto ptr = reinterpret_cast<const SkipGramOptionsT *>(value);
12207       return CreateSkipGramOptions(_fbb, ptr, _rehasher).Union();
12208     }
12209     case BuiltinOptions_SpaceToDepthOptions: {
12210       auto ptr = reinterpret_cast<const SpaceToDepthOptionsT *>(value);
12211       return CreateSpaceToDepthOptions(_fbb, ptr, _rehasher).Union();
12212     }
12213     case BuiltinOptions_EmbeddingLookupSparseOptions: {
12214       auto ptr = reinterpret_cast<const EmbeddingLookupSparseOptionsT *>(value);
12215       return CreateEmbeddingLookupSparseOptions(_fbb, ptr, _rehasher).Union();
12216     }
12217     case BuiltinOptions_MulOptions: {
12218       auto ptr = reinterpret_cast<const MulOptionsT *>(value);
12219       return CreateMulOptions(_fbb, ptr, _rehasher).Union();
12220     }
12221     case BuiltinOptions_PadOptions: {
12222       auto ptr = reinterpret_cast<const PadOptionsT *>(value);
12223       return CreatePadOptions(_fbb, ptr, _rehasher).Union();
12224     }
12225     case BuiltinOptions_GatherOptions: {
12226       auto ptr = reinterpret_cast<const GatherOptionsT *>(value);
12227       return CreateGatherOptions(_fbb, ptr, _rehasher).Union();
12228     }
12229     case BuiltinOptions_BatchToSpaceNDOptions: {
12230       auto ptr = reinterpret_cast<const BatchToSpaceNDOptionsT *>(value);
12231       return CreateBatchToSpaceNDOptions(_fbb, ptr, _rehasher).Union();
12232     }
12233     case BuiltinOptions_SpaceToBatchNDOptions: {
12234       auto ptr = reinterpret_cast<const SpaceToBatchNDOptionsT *>(value);
12235       return CreateSpaceToBatchNDOptions(_fbb, ptr, _rehasher).Union();
12236     }
12237     case BuiltinOptions_TransposeOptions: {
12238       auto ptr = reinterpret_cast<const TransposeOptionsT *>(value);
12239       return CreateTransposeOptions(_fbb, ptr, _rehasher).Union();
12240     }
12241     case BuiltinOptions_ReducerOptions: {
12242       auto ptr = reinterpret_cast<const ReducerOptionsT *>(value);
12243       return CreateReducerOptions(_fbb, ptr, _rehasher).Union();
12244     }
12245     case BuiltinOptions_SubOptions: {
12246       auto ptr = reinterpret_cast<const SubOptionsT *>(value);
12247       return CreateSubOptions(_fbb, ptr, _rehasher).Union();
12248     }
12249     case BuiltinOptions_DivOptions: {
12250       auto ptr = reinterpret_cast<const DivOptionsT *>(value);
12251       return CreateDivOptions(_fbb, ptr, _rehasher).Union();
12252     }
12253     case BuiltinOptions_SqueezeOptions: {
12254       auto ptr = reinterpret_cast<const SqueezeOptionsT *>(value);
12255       return CreateSqueezeOptions(_fbb, ptr, _rehasher).Union();
12256     }
12257     case BuiltinOptions_SequenceRNNOptions: {
12258       auto ptr = reinterpret_cast<const SequenceRNNOptionsT *>(value);
12259       return CreateSequenceRNNOptions(_fbb, ptr, _rehasher).Union();
12260     }
12261     case BuiltinOptions_StridedSliceOptions: {
12262       auto ptr = reinterpret_cast<const StridedSliceOptionsT *>(value);
12263       return CreateStridedSliceOptions(_fbb, ptr, _rehasher).Union();
12264     }
12265     case BuiltinOptions_ExpOptions: {
12266       auto ptr = reinterpret_cast<const ExpOptionsT *>(value);
12267       return CreateExpOptions(_fbb, ptr, _rehasher).Union();
12268     }
12269     case BuiltinOptions_TopKV2Options: {
12270       auto ptr = reinterpret_cast<const TopKV2OptionsT *>(value);
12271       return CreateTopKV2Options(_fbb, ptr, _rehasher).Union();
12272     }
12273     case BuiltinOptions_SplitOptions: {
12274       auto ptr = reinterpret_cast<const SplitOptionsT *>(value);
12275       return CreateSplitOptions(_fbb, ptr, _rehasher).Union();
12276     }
12277     case BuiltinOptions_LogSoftmaxOptions: {
12278       auto ptr = reinterpret_cast<const LogSoftmaxOptionsT *>(value);
12279       return CreateLogSoftmaxOptions(_fbb, ptr, _rehasher).Union();
12280     }
12281     case BuiltinOptions_CastOptions: {
12282       auto ptr = reinterpret_cast<const CastOptionsT *>(value);
12283       return CreateCastOptions(_fbb, ptr, _rehasher).Union();
12284     }
12285     case BuiltinOptions_DequantizeOptions: {
12286       auto ptr = reinterpret_cast<const DequantizeOptionsT *>(value);
12287       return CreateDequantizeOptions(_fbb, ptr, _rehasher).Union();
12288     }
12289     case BuiltinOptions_MaximumMinimumOptions: {
12290       auto ptr = reinterpret_cast<const MaximumMinimumOptionsT *>(value);
12291       return CreateMaximumMinimumOptions(_fbb, ptr, _rehasher).Union();
12292     }
12293     case BuiltinOptions_ArgMaxOptions: {
12294       auto ptr = reinterpret_cast<const ArgMaxOptionsT *>(value);
12295       return CreateArgMaxOptions(_fbb, ptr, _rehasher).Union();
12296     }
12297     case BuiltinOptions_LessOptions: {
12298       auto ptr = reinterpret_cast<const LessOptionsT *>(value);
12299       return CreateLessOptions(_fbb, ptr, _rehasher).Union();
12300     }
12301     case BuiltinOptions_NegOptions: {
12302       auto ptr = reinterpret_cast<const NegOptionsT *>(value);
12303       return CreateNegOptions(_fbb, ptr, _rehasher).Union();
12304     }
12305     case BuiltinOptions_PadV2Options: {
12306       auto ptr = reinterpret_cast<const PadV2OptionsT *>(value);
12307       return CreatePadV2Options(_fbb, ptr, _rehasher).Union();
12308     }
12309     case BuiltinOptions_GreaterOptions: {
12310       auto ptr = reinterpret_cast<const GreaterOptionsT *>(value);
12311       return CreateGreaterOptions(_fbb, ptr, _rehasher).Union();
12312     }
12313     case BuiltinOptions_GreaterEqualOptions: {
12314       auto ptr = reinterpret_cast<const GreaterEqualOptionsT *>(value);
12315       return CreateGreaterEqualOptions(_fbb, ptr, _rehasher).Union();
12316     }
12317     case BuiltinOptions_LessEqualOptions: {
12318       auto ptr = reinterpret_cast<const LessEqualOptionsT *>(value);
12319       return CreateLessEqualOptions(_fbb, ptr, _rehasher).Union();
12320     }
12321     case BuiltinOptions_SelectOptions: {
12322       auto ptr = reinterpret_cast<const SelectOptionsT *>(value);
12323       return CreateSelectOptions(_fbb, ptr, _rehasher).Union();
12324     }
12325     case BuiltinOptions_SliceOptions: {
12326       auto ptr = reinterpret_cast<const SliceOptionsT *>(value);
12327       return CreateSliceOptions(_fbb, ptr, _rehasher).Union();
12328     }
12329     case BuiltinOptions_TransposeConvOptions: {
12330       auto ptr = reinterpret_cast<const TransposeConvOptionsT *>(value);
12331       return CreateTransposeConvOptions(_fbb, ptr, _rehasher).Union();
12332     }
12333     case BuiltinOptions_SparseToDenseOptions: {
12334       auto ptr = reinterpret_cast<const SparseToDenseOptionsT *>(value);
12335       return CreateSparseToDenseOptions(_fbb, ptr, _rehasher).Union();
12336     }
12337     case BuiltinOptions_TileOptions: {
12338       auto ptr = reinterpret_cast<const TileOptionsT *>(value);
12339       return CreateTileOptions(_fbb, ptr, _rehasher).Union();
12340     }
12341     case BuiltinOptions_ExpandDimsOptions: {
12342       auto ptr = reinterpret_cast<const ExpandDimsOptionsT *>(value);
12343       return CreateExpandDimsOptions(_fbb, ptr, _rehasher).Union();
12344     }
12345     case BuiltinOptions_EqualOptions: {
12346       auto ptr = reinterpret_cast<const EqualOptionsT *>(value);
12347       return CreateEqualOptions(_fbb, ptr, _rehasher).Union();
12348     }
12349     case BuiltinOptions_NotEqualOptions: {
12350       auto ptr = reinterpret_cast<const NotEqualOptionsT *>(value);
12351       return CreateNotEqualOptions(_fbb, ptr, _rehasher).Union();
12352     }
12353     case BuiltinOptions_ShapeOptions: {
12354       auto ptr = reinterpret_cast<const ShapeOptionsT *>(value);
12355       return CreateShapeOptions(_fbb, ptr, _rehasher).Union();
12356     }
12357     case BuiltinOptions_PowOptions: {
12358       auto ptr = reinterpret_cast<const PowOptionsT *>(value);
12359       return CreatePowOptions(_fbb, ptr, _rehasher).Union();
12360     }
12361     case BuiltinOptions_ArgMinOptions: {
12362       auto ptr = reinterpret_cast<const ArgMinOptionsT *>(value);
12363       return CreateArgMinOptions(_fbb, ptr, _rehasher).Union();
12364     }
12365     case BuiltinOptions_FakeQuantOptions: {
12366       auto ptr = reinterpret_cast<const FakeQuantOptionsT *>(value);
12367       return CreateFakeQuantOptions(_fbb, ptr, _rehasher).Union();
12368     }
12369     case BuiltinOptions_PackOptions: {
12370       auto ptr = reinterpret_cast<const PackOptionsT *>(value);
12371       return CreatePackOptions(_fbb, ptr, _rehasher).Union();
12372     }
12373     case BuiltinOptions_LogicalOrOptions: {
12374       auto ptr = reinterpret_cast<const LogicalOrOptionsT *>(value);
12375       return CreateLogicalOrOptions(_fbb, ptr, _rehasher).Union();
12376     }
12377     case BuiltinOptions_OneHotOptions: {
12378       auto ptr = reinterpret_cast<const OneHotOptionsT *>(value);
12379       return CreateOneHotOptions(_fbb, ptr, _rehasher).Union();
12380     }
12381     case BuiltinOptions_LogicalAndOptions: {
12382       auto ptr = reinterpret_cast<const LogicalAndOptionsT *>(value);
12383       return CreateLogicalAndOptions(_fbb, ptr, _rehasher).Union();
12384     }
12385     case BuiltinOptions_LogicalNotOptions: {
12386       auto ptr = reinterpret_cast<const LogicalNotOptionsT *>(value);
12387       return CreateLogicalNotOptions(_fbb, ptr, _rehasher).Union();
12388     }
12389     case BuiltinOptions_UnpackOptions: {
12390       auto ptr = reinterpret_cast<const UnpackOptionsT *>(value);
12391       return CreateUnpackOptions(_fbb, ptr, _rehasher).Union();
12392     }
12393     case BuiltinOptions_FloorDivOptions: {
12394       auto ptr = reinterpret_cast<const FloorDivOptionsT *>(value);
12395       return CreateFloorDivOptions(_fbb, ptr, _rehasher).Union();
12396     }
12397     case BuiltinOptions_SquareOptions: {
12398       auto ptr = reinterpret_cast<const SquareOptionsT *>(value);
12399       return CreateSquareOptions(_fbb, ptr, _rehasher).Union();
12400     }
12401     case BuiltinOptions_ZerosLikeOptions: {
12402       auto ptr = reinterpret_cast<const ZerosLikeOptionsT *>(value);
12403       return CreateZerosLikeOptions(_fbb, ptr, _rehasher).Union();
12404     }
12405     case BuiltinOptions_FillOptions: {
12406       auto ptr = reinterpret_cast<const FillOptionsT *>(value);
12407       return CreateFillOptions(_fbb, ptr, _rehasher).Union();
12408     }
12409     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
12410       auto ptr = reinterpret_cast<const BidirectionalSequenceLSTMOptionsT *>(value);
12411       return CreateBidirectionalSequenceLSTMOptions(_fbb, ptr, _rehasher).Union();
12412     }
12413     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
12414       auto ptr = reinterpret_cast<const BidirectionalSequenceRNNOptionsT *>(value);
12415       return CreateBidirectionalSequenceRNNOptions(_fbb, ptr, _rehasher).Union();
12416     }
12417     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
12418       auto ptr = reinterpret_cast<const UnidirectionalSequenceLSTMOptionsT *>(value);
12419       return CreateUnidirectionalSequenceLSTMOptions(_fbb, ptr, _rehasher).Union();
12420     }
12421     case BuiltinOptions_FloorModOptions: {
12422       auto ptr = reinterpret_cast<const FloorModOptionsT *>(value);
12423       return CreateFloorModOptions(_fbb, ptr, _rehasher).Union();
12424     }
12425     case BuiltinOptions_RangeOptions: {
12426       auto ptr = reinterpret_cast<const RangeOptionsT *>(value);
12427       return CreateRangeOptions(_fbb, ptr, _rehasher).Union();
12428     }
12429     case BuiltinOptions_ResizeNearestNeighborOptions: {
12430       auto ptr = reinterpret_cast<const ResizeNearestNeighborOptionsT *>(value);
12431       return CreateResizeNearestNeighborOptions(_fbb, ptr, _rehasher).Union();
12432     }
12433     case BuiltinOptions_LeakyReluOptions: {
12434       auto ptr = reinterpret_cast<const LeakyReluOptionsT *>(value);
12435       return CreateLeakyReluOptions(_fbb, ptr, _rehasher).Union();
12436     }
12437     case BuiltinOptions_SquaredDifferenceOptions: {
12438       auto ptr = reinterpret_cast<const SquaredDifferenceOptionsT *>(value);
12439       return CreateSquaredDifferenceOptions(_fbb, ptr, _rehasher).Union();
12440     }
12441     case BuiltinOptions_MirrorPadOptions: {
12442       auto ptr = reinterpret_cast<const MirrorPadOptionsT *>(value);
12443       return CreateMirrorPadOptions(_fbb, ptr, _rehasher).Union();
12444     }
12445     case BuiltinOptions_AbsOptions: {
12446       auto ptr = reinterpret_cast<const AbsOptionsT *>(value);
12447       return CreateAbsOptions(_fbb, ptr, _rehasher).Union();
12448     }
12449     case BuiltinOptions_SplitVOptions: {
12450       auto ptr = reinterpret_cast<const SplitVOptionsT *>(value);
12451       return CreateSplitVOptions(_fbb, ptr, _rehasher).Union();
12452     }
12453     case BuiltinOptions_UniqueOptions: {
12454       auto ptr = reinterpret_cast<const UniqueOptionsT *>(value);
12455       return CreateUniqueOptions(_fbb, ptr, _rehasher).Union();
12456     }
12457     case BuiltinOptions_ReverseV2Options: {
12458       auto ptr = reinterpret_cast<const ReverseV2OptionsT *>(value);
12459       return CreateReverseV2Options(_fbb, ptr, _rehasher).Union();
12460     }
12461     case BuiltinOptions_AddNOptions: {
12462       auto ptr = reinterpret_cast<const AddNOptionsT *>(value);
12463       return CreateAddNOptions(_fbb, ptr, _rehasher).Union();
12464     }
12465     case BuiltinOptions_GatherNdOptions: {
12466       auto ptr = reinterpret_cast<const GatherNdOptionsT *>(value);
12467       return CreateGatherNdOptions(_fbb, ptr, _rehasher).Union();
12468     }
12469     case BuiltinOptions_CosOptions: {
12470       auto ptr = reinterpret_cast<const CosOptionsT *>(value);
12471       return CreateCosOptions(_fbb, ptr, _rehasher).Union();
12472     }
12473     case BuiltinOptions_WhereOptions: {
12474       auto ptr = reinterpret_cast<const WhereOptionsT *>(value);
12475       return CreateWhereOptions(_fbb, ptr, _rehasher).Union();
12476     }
12477     case BuiltinOptions_RankOptions: {
12478       auto ptr = reinterpret_cast<const RankOptionsT *>(value);
12479       return CreateRankOptions(_fbb, ptr, _rehasher).Union();
12480     }
12481     case BuiltinOptions_ReverseSequenceOptions: {
12482       auto ptr = reinterpret_cast<const ReverseSequenceOptionsT *>(value);
12483       return CreateReverseSequenceOptions(_fbb, ptr, _rehasher).Union();
12484     }
12485     default: return 0;
12486   }
12487 }
12488 
12489 inline BuiltinOptionsUnion::BuiltinOptionsUnion(const BuiltinOptionsUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
12490   switch (type) {
12491     case BuiltinOptions_Conv2DOptions: {
12492       value = new Conv2DOptionsT(*reinterpret_cast<Conv2DOptionsT *>(u.value));
12493       break;
12494     }
12495     case BuiltinOptions_DepthwiseConv2DOptions: {
12496       value = new DepthwiseConv2DOptionsT(*reinterpret_cast<DepthwiseConv2DOptionsT *>(u.value));
12497       break;
12498     }
12499     case BuiltinOptions_ConcatEmbeddingsOptions: {
12500       value = new ConcatEmbeddingsOptionsT(*reinterpret_cast<ConcatEmbeddingsOptionsT *>(u.value));
12501       break;
12502     }
12503     case BuiltinOptions_LSHProjectionOptions: {
12504       value = new LSHProjectionOptionsT(*reinterpret_cast<LSHProjectionOptionsT *>(u.value));
12505       break;
12506     }
12507     case BuiltinOptions_Pool2DOptions: {
12508       value = new Pool2DOptionsT(*reinterpret_cast<Pool2DOptionsT *>(u.value));
12509       break;
12510     }
12511     case BuiltinOptions_SVDFOptions: {
12512       value = new SVDFOptionsT(*reinterpret_cast<SVDFOptionsT *>(u.value));
12513       break;
12514     }
12515     case BuiltinOptions_RNNOptions: {
12516       value = new RNNOptionsT(*reinterpret_cast<RNNOptionsT *>(u.value));
12517       break;
12518     }
12519     case BuiltinOptions_FullyConnectedOptions: {
12520       value = new FullyConnectedOptionsT(*reinterpret_cast<FullyConnectedOptionsT *>(u.value));
12521       break;
12522     }
12523     case BuiltinOptions_SoftmaxOptions: {
12524       value = new SoftmaxOptionsT(*reinterpret_cast<SoftmaxOptionsT *>(u.value));
12525       break;
12526     }
12527     case BuiltinOptions_ConcatenationOptions: {
12528       value = new ConcatenationOptionsT(*reinterpret_cast<ConcatenationOptionsT *>(u.value));
12529       break;
12530     }
12531     case BuiltinOptions_AddOptions: {
12532       value = new AddOptionsT(*reinterpret_cast<AddOptionsT *>(u.value));
12533       break;
12534     }
12535     case BuiltinOptions_L2NormOptions: {
12536       value = new L2NormOptionsT(*reinterpret_cast<L2NormOptionsT *>(u.value));
12537       break;
12538     }
12539     case BuiltinOptions_LocalResponseNormalizationOptions: {
12540       value = new LocalResponseNormalizationOptionsT(*reinterpret_cast<LocalResponseNormalizationOptionsT *>(u.value));
12541       break;
12542     }
12543     case BuiltinOptions_LSTMOptions: {
12544       value = new LSTMOptionsT(*reinterpret_cast<LSTMOptionsT *>(u.value));
12545       break;
12546     }
12547     case BuiltinOptions_ResizeBilinearOptions: {
12548       value = new ResizeBilinearOptionsT(*reinterpret_cast<ResizeBilinearOptionsT *>(u.value));
12549       break;
12550     }
12551     case BuiltinOptions_CallOptions: {
12552       value = new CallOptionsT(*reinterpret_cast<CallOptionsT *>(u.value));
12553       break;
12554     }
12555     case BuiltinOptions_ReshapeOptions: {
12556       value = new ReshapeOptionsT(*reinterpret_cast<ReshapeOptionsT *>(u.value));
12557       break;
12558     }
12559     case BuiltinOptions_SkipGramOptions: {
12560       value = new SkipGramOptionsT(*reinterpret_cast<SkipGramOptionsT *>(u.value));
12561       break;
12562     }
12563     case BuiltinOptions_SpaceToDepthOptions: {
12564       value = new SpaceToDepthOptionsT(*reinterpret_cast<SpaceToDepthOptionsT *>(u.value));
12565       break;
12566     }
12567     case BuiltinOptions_EmbeddingLookupSparseOptions: {
12568       value = new EmbeddingLookupSparseOptionsT(*reinterpret_cast<EmbeddingLookupSparseOptionsT *>(u.value));
12569       break;
12570     }
12571     case BuiltinOptions_MulOptions: {
12572       value = new MulOptionsT(*reinterpret_cast<MulOptionsT *>(u.value));
12573       break;
12574     }
12575     case BuiltinOptions_PadOptions: {
12576       value = new PadOptionsT(*reinterpret_cast<PadOptionsT *>(u.value));
12577       break;
12578     }
12579     case BuiltinOptions_GatherOptions: {
12580       value = new GatherOptionsT(*reinterpret_cast<GatherOptionsT *>(u.value));
12581       break;
12582     }
12583     case BuiltinOptions_BatchToSpaceNDOptions: {
12584       value = new BatchToSpaceNDOptionsT(*reinterpret_cast<BatchToSpaceNDOptionsT *>(u.value));
12585       break;
12586     }
12587     case BuiltinOptions_SpaceToBatchNDOptions: {
12588       value = new SpaceToBatchNDOptionsT(*reinterpret_cast<SpaceToBatchNDOptionsT *>(u.value));
12589       break;
12590     }
12591     case BuiltinOptions_TransposeOptions: {
12592       value = new TransposeOptionsT(*reinterpret_cast<TransposeOptionsT *>(u.value));
12593       break;
12594     }
12595     case BuiltinOptions_ReducerOptions: {
12596       value = new ReducerOptionsT(*reinterpret_cast<ReducerOptionsT *>(u.value));
12597       break;
12598     }
12599     case BuiltinOptions_SubOptions: {
12600       value = new SubOptionsT(*reinterpret_cast<SubOptionsT *>(u.value));
12601       break;
12602     }
12603     case BuiltinOptions_DivOptions: {
12604       value = new DivOptionsT(*reinterpret_cast<DivOptionsT *>(u.value));
12605       break;
12606     }
12607     case BuiltinOptions_SqueezeOptions: {
12608       value = new SqueezeOptionsT(*reinterpret_cast<SqueezeOptionsT *>(u.value));
12609       break;
12610     }
12611     case BuiltinOptions_SequenceRNNOptions: {
12612       value = new SequenceRNNOptionsT(*reinterpret_cast<SequenceRNNOptionsT *>(u.value));
12613       break;
12614     }
12615     case BuiltinOptions_StridedSliceOptions: {
12616       value = new StridedSliceOptionsT(*reinterpret_cast<StridedSliceOptionsT *>(u.value));
12617       break;
12618     }
12619     case BuiltinOptions_ExpOptions: {
12620       value = new ExpOptionsT(*reinterpret_cast<ExpOptionsT *>(u.value));
12621       break;
12622     }
12623     case BuiltinOptions_TopKV2Options: {
12624       value = new TopKV2OptionsT(*reinterpret_cast<TopKV2OptionsT *>(u.value));
12625       break;
12626     }
12627     case BuiltinOptions_SplitOptions: {
12628       value = new SplitOptionsT(*reinterpret_cast<SplitOptionsT *>(u.value));
12629       break;
12630     }
12631     case BuiltinOptions_LogSoftmaxOptions: {
12632       value = new LogSoftmaxOptionsT(*reinterpret_cast<LogSoftmaxOptionsT *>(u.value));
12633       break;
12634     }
12635     case BuiltinOptions_CastOptions: {
12636       value = new CastOptionsT(*reinterpret_cast<CastOptionsT *>(u.value));
12637       break;
12638     }
12639     case BuiltinOptions_DequantizeOptions: {
12640       value = new DequantizeOptionsT(*reinterpret_cast<DequantizeOptionsT *>(u.value));
12641       break;
12642     }
12643     case BuiltinOptions_MaximumMinimumOptions: {
12644       value = new MaximumMinimumOptionsT(*reinterpret_cast<MaximumMinimumOptionsT *>(u.value));
12645       break;
12646     }
12647     case BuiltinOptions_ArgMaxOptions: {
12648       value = new ArgMaxOptionsT(*reinterpret_cast<ArgMaxOptionsT *>(u.value));
12649       break;
12650     }
12651     case BuiltinOptions_LessOptions: {
12652       value = new LessOptionsT(*reinterpret_cast<LessOptionsT *>(u.value));
12653       break;
12654     }
12655     case BuiltinOptions_NegOptions: {
12656       value = new NegOptionsT(*reinterpret_cast<NegOptionsT *>(u.value));
12657       break;
12658     }
12659     case BuiltinOptions_PadV2Options: {
12660       value = new PadV2OptionsT(*reinterpret_cast<PadV2OptionsT *>(u.value));
12661       break;
12662     }
12663     case BuiltinOptions_GreaterOptions: {
12664       value = new GreaterOptionsT(*reinterpret_cast<GreaterOptionsT *>(u.value));
12665       break;
12666     }
12667     case BuiltinOptions_GreaterEqualOptions: {
12668       value = new GreaterEqualOptionsT(*reinterpret_cast<GreaterEqualOptionsT *>(u.value));
12669       break;
12670     }
12671     case BuiltinOptions_LessEqualOptions: {
12672       value = new LessEqualOptionsT(*reinterpret_cast<LessEqualOptionsT *>(u.value));
12673       break;
12674     }
12675     case BuiltinOptions_SelectOptions: {
12676       value = new SelectOptionsT(*reinterpret_cast<SelectOptionsT *>(u.value));
12677       break;
12678     }
12679     case BuiltinOptions_SliceOptions: {
12680       value = new SliceOptionsT(*reinterpret_cast<SliceOptionsT *>(u.value));
12681       break;
12682     }
12683     case BuiltinOptions_TransposeConvOptions: {
12684       value = new TransposeConvOptionsT(*reinterpret_cast<TransposeConvOptionsT *>(u.value));
12685       break;
12686     }
12687     case BuiltinOptions_SparseToDenseOptions: {
12688       value = new SparseToDenseOptionsT(*reinterpret_cast<SparseToDenseOptionsT *>(u.value));
12689       break;
12690     }
12691     case BuiltinOptions_TileOptions: {
12692       value = new TileOptionsT(*reinterpret_cast<TileOptionsT *>(u.value));
12693       break;
12694     }
12695     case BuiltinOptions_ExpandDimsOptions: {
12696       value = new ExpandDimsOptionsT(*reinterpret_cast<ExpandDimsOptionsT *>(u.value));
12697       break;
12698     }
12699     case BuiltinOptions_EqualOptions: {
12700       value = new EqualOptionsT(*reinterpret_cast<EqualOptionsT *>(u.value));
12701       break;
12702     }
12703     case BuiltinOptions_NotEqualOptions: {
12704       value = new NotEqualOptionsT(*reinterpret_cast<NotEqualOptionsT *>(u.value));
12705       break;
12706     }
12707     case BuiltinOptions_ShapeOptions: {
12708       value = new ShapeOptionsT(*reinterpret_cast<ShapeOptionsT *>(u.value));
12709       break;
12710     }
12711     case BuiltinOptions_PowOptions: {
12712       value = new PowOptionsT(*reinterpret_cast<PowOptionsT *>(u.value));
12713       break;
12714     }
12715     case BuiltinOptions_ArgMinOptions: {
12716       value = new ArgMinOptionsT(*reinterpret_cast<ArgMinOptionsT *>(u.value));
12717       break;
12718     }
12719     case BuiltinOptions_FakeQuantOptions: {
12720       value = new FakeQuantOptionsT(*reinterpret_cast<FakeQuantOptionsT *>(u.value));
12721       break;
12722     }
12723     case BuiltinOptions_PackOptions: {
12724       value = new PackOptionsT(*reinterpret_cast<PackOptionsT *>(u.value));
12725       break;
12726     }
12727     case BuiltinOptions_LogicalOrOptions: {
12728       value = new LogicalOrOptionsT(*reinterpret_cast<LogicalOrOptionsT *>(u.value));
12729       break;
12730     }
12731     case BuiltinOptions_OneHotOptions: {
12732       value = new OneHotOptionsT(*reinterpret_cast<OneHotOptionsT *>(u.value));
12733       break;
12734     }
12735     case BuiltinOptions_LogicalAndOptions: {
12736       value = new LogicalAndOptionsT(*reinterpret_cast<LogicalAndOptionsT *>(u.value));
12737       break;
12738     }
12739     case BuiltinOptions_LogicalNotOptions: {
12740       value = new LogicalNotOptionsT(*reinterpret_cast<LogicalNotOptionsT *>(u.value));
12741       break;
12742     }
12743     case BuiltinOptions_UnpackOptions: {
12744       value = new UnpackOptionsT(*reinterpret_cast<UnpackOptionsT *>(u.value));
12745       break;
12746     }
12747     case BuiltinOptions_FloorDivOptions: {
12748       value = new FloorDivOptionsT(*reinterpret_cast<FloorDivOptionsT *>(u.value));
12749       break;
12750     }
12751     case BuiltinOptions_SquareOptions: {
12752       value = new SquareOptionsT(*reinterpret_cast<SquareOptionsT *>(u.value));
12753       break;
12754     }
12755     case BuiltinOptions_ZerosLikeOptions: {
12756       value = new ZerosLikeOptionsT(*reinterpret_cast<ZerosLikeOptionsT *>(u.value));
12757       break;
12758     }
12759     case BuiltinOptions_FillOptions: {
12760       value = new FillOptionsT(*reinterpret_cast<FillOptionsT *>(u.value));
12761       break;
12762     }
12763     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
12764       value = new BidirectionalSequenceLSTMOptionsT(*reinterpret_cast<BidirectionalSequenceLSTMOptionsT *>(u.value));
12765       break;
12766     }
12767     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
12768       value = new BidirectionalSequenceRNNOptionsT(*reinterpret_cast<BidirectionalSequenceRNNOptionsT *>(u.value));
12769       break;
12770     }
12771     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
12772       value = new UnidirectionalSequenceLSTMOptionsT(*reinterpret_cast<UnidirectionalSequenceLSTMOptionsT *>(u.value));
12773       break;
12774     }
12775     case BuiltinOptions_FloorModOptions: {
12776       value = new FloorModOptionsT(*reinterpret_cast<FloorModOptionsT *>(u.value));
12777       break;
12778     }
12779     case BuiltinOptions_RangeOptions: {
12780       value = new RangeOptionsT(*reinterpret_cast<RangeOptionsT *>(u.value));
12781       break;
12782     }
12783     case BuiltinOptions_ResizeNearestNeighborOptions: {
12784       value = new ResizeNearestNeighborOptionsT(*reinterpret_cast<ResizeNearestNeighborOptionsT *>(u.value));
12785       break;
12786     }
12787     case BuiltinOptions_LeakyReluOptions: {
12788       value = new LeakyReluOptionsT(*reinterpret_cast<LeakyReluOptionsT *>(u.value));
12789       break;
12790     }
12791     case BuiltinOptions_SquaredDifferenceOptions: {
12792       value = new SquaredDifferenceOptionsT(*reinterpret_cast<SquaredDifferenceOptionsT *>(u.value));
12793       break;
12794     }
12795     case BuiltinOptions_MirrorPadOptions: {
12796       value = new MirrorPadOptionsT(*reinterpret_cast<MirrorPadOptionsT *>(u.value));
12797       break;
12798     }
12799     case BuiltinOptions_AbsOptions: {
12800       value = new AbsOptionsT(*reinterpret_cast<AbsOptionsT *>(u.value));
12801       break;
12802     }
12803     case BuiltinOptions_SplitVOptions: {
12804       value = new SplitVOptionsT(*reinterpret_cast<SplitVOptionsT *>(u.value));
12805       break;
12806     }
12807     case BuiltinOptions_UniqueOptions: {
12808       value = new UniqueOptionsT(*reinterpret_cast<UniqueOptionsT *>(u.value));
12809       break;
12810     }
12811     case BuiltinOptions_ReverseV2Options: {
12812       value = new ReverseV2OptionsT(*reinterpret_cast<ReverseV2OptionsT *>(u.value));
12813       break;
12814     }
12815     case BuiltinOptions_AddNOptions: {
12816       value = new AddNOptionsT(*reinterpret_cast<AddNOptionsT *>(u.value));
12817       break;
12818     }
12819     case BuiltinOptions_GatherNdOptions: {
12820       value = new GatherNdOptionsT(*reinterpret_cast<GatherNdOptionsT *>(u.value));
12821       break;
12822     }
12823     case BuiltinOptions_CosOptions: {
12824       value = new CosOptionsT(*reinterpret_cast<CosOptionsT *>(u.value));
12825       break;
12826     }
12827     case BuiltinOptions_WhereOptions: {
12828       value = new WhereOptionsT(*reinterpret_cast<WhereOptionsT *>(u.value));
12829       break;
12830     }
12831     case BuiltinOptions_RankOptions: {
12832       value = new RankOptionsT(*reinterpret_cast<RankOptionsT *>(u.value));
12833       break;
12834     }
12835     case BuiltinOptions_ReverseSequenceOptions: {
12836       value = new ReverseSequenceOptionsT(*reinterpret_cast<ReverseSequenceOptionsT *>(u.value));
12837       break;
12838     }
12839     default:
12840       break;
12841   }
12842 }
12843 
12844 inline void BuiltinOptionsUnion::Reset() {
12845   switch (type) {
12846     case BuiltinOptions_Conv2DOptions: {
12847       auto ptr = reinterpret_cast<Conv2DOptionsT *>(value);
12848       delete ptr;
12849       break;
12850     }
12851     case BuiltinOptions_DepthwiseConv2DOptions: {
12852       auto ptr = reinterpret_cast<DepthwiseConv2DOptionsT *>(value);
12853       delete ptr;
12854       break;
12855     }
12856     case BuiltinOptions_ConcatEmbeddingsOptions: {
12857       auto ptr = reinterpret_cast<ConcatEmbeddingsOptionsT *>(value);
12858       delete ptr;
12859       break;
12860     }
12861     case BuiltinOptions_LSHProjectionOptions: {
12862       auto ptr = reinterpret_cast<LSHProjectionOptionsT *>(value);
12863       delete ptr;
12864       break;
12865     }
12866     case BuiltinOptions_Pool2DOptions: {
12867       auto ptr = reinterpret_cast<Pool2DOptionsT *>(value);
12868       delete ptr;
12869       break;
12870     }
12871     case BuiltinOptions_SVDFOptions: {
12872       auto ptr = reinterpret_cast<SVDFOptionsT *>(value);
12873       delete ptr;
12874       break;
12875     }
12876     case BuiltinOptions_RNNOptions: {
12877       auto ptr = reinterpret_cast<RNNOptionsT *>(value);
12878       delete ptr;
12879       break;
12880     }
12881     case BuiltinOptions_FullyConnectedOptions: {
12882       auto ptr = reinterpret_cast<FullyConnectedOptionsT *>(value);
12883       delete ptr;
12884       break;
12885     }
12886     case BuiltinOptions_SoftmaxOptions: {
12887       auto ptr = reinterpret_cast<SoftmaxOptionsT *>(value);
12888       delete ptr;
12889       break;
12890     }
12891     case BuiltinOptions_ConcatenationOptions: {
12892       auto ptr = reinterpret_cast<ConcatenationOptionsT *>(value);
12893       delete ptr;
12894       break;
12895     }
12896     case BuiltinOptions_AddOptions: {
12897       auto ptr = reinterpret_cast<AddOptionsT *>(value);
12898       delete ptr;
12899       break;
12900     }
12901     case BuiltinOptions_L2NormOptions: {
12902       auto ptr = reinterpret_cast<L2NormOptionsT *>(value);
12903       delete ptr;
12904       break;
12905     }
12906     case BuiltinOptions_LocalResponseNormalizationOptions: {
12907       auto ptr = reinterpret_cast<LocalResponseNormalizationOptionsT *>(value);
12908       delete ptr;
12909       break;
12910     }
12911     case BuiltinOptions_LSTMOptions: {
12912       auto ptr = reinterpret_cast<LSTMOptionsT *>(value);
12913       delete ptr;
12914       break;
12915     }
12916     case BuiltinOptions_ResizeBilinearOptions: {
12917       auto ptr = reinterpret_cast<ResizeBilinearOptionsT *>(value);
12918       delete ptr;
12919       break;
12920     }
12921     case BuiltinOptions_CallOptions: {
12922       auto ptr = reinterpret_cast<CallOptionsT *>(value);
12923       delete ptr;
12924       break;
12925     }
12926     case BuiltinOptions_ReshapeOptions: {
12927       auto ptr = reinterpret_cast<ReshapeOptionsT *>(value);
12928       delete ptr;
12929       break;
12930     }
12931     case BuiltinOptions_SkipGramOptions: {
12932       auto ptr = reinterpret_cast<SkipGramOptionsT *>(value);
12933       delete ptr;
12934       break;
12935     }
12936     case BuiltinOptions_SpaceToDepthOptions: {
12937       auto ptr = reinterpret_cast<SpaceToDepthOptionsT *>(value);
12938       delete ptr;
12939       break;
12940     }
12941     case BuiltinOptions_EmbeddingLookupSparseOptions: {
12942       auto ptr = reinterpret_cast<EmbeddingLookupSparseOptionsT *>(value);
12943       delete ptr;
12944       break;
12945     }
12946     case BuiltinOptions_MulOptions: {
12947       auto ptr = reinterpret_cast<MulOptionsT *>(value);
12948       delete ptr;
12949       break;
12950     }
12951     case BuiltinOptions_PadOptions: {
12952       auto ptr = reinterpret_cast<PadOptionsT *>(value);
12953       delete ptr;
12954       break;
12955     }
12956     case BuiltinOptions_GatherOptions: {
12957       auto ptr = reinterpret_cast<GatherOptionsT *>(value);
12958       delete ptr;
12959       break;
12960     }
12961     case BuiltinOptions_BatchToSpaceNDOptions: {
12962       auto ptr = reinterpret_cast<BatchToSpaceNDOptionsT *>(value);
12963       delete ptr;
12964       break;
12965     }
12966     case BuiltinOptions_SpaceToBatchNDOptions: {
12967       auto ptr = reinterpret_cast<SpaceToBatchNDOptionsT *>(value);
12968       delete ptr;
12969       break;
12970     }
12971     case BuiltinOptions_TransposeOptions: {
12972       auto ptr = reinterpret_cast<TransposeOptionsT *>(value);
12973       delete ptr;
12974       break;
12975     }
12976     case BuiltinOptions_ReducerOptions: {
12977       auto ptr = reinterpret_cast<ReducerOptionsT *>(value);
12978       delete ptr;
12979       break;
12980     }
12981     case BuiltinOptions_SubOptions: {
12982       auto ptr = reinterpret_cast<SubOptionsT *>(value);
12983       delete ptr;
12984       break;
12985     }
12986     case BuiltinOptions_DivOptions: {
12987       auto ptr = reinterpret_cast<DivOptionsT *>(value);
12988       delete ptr;
12989       break;
12990     }
12991     case BuiltinOptions_SqueezeOptions: {
12992       auto ptr = reinterpret_cast<SqueezeOptionsT *>(value);
12993       delete ptr;
12994       break;
12995     }
12996     case BuiltinOptions_SequenceRNNOptions: {
12997       auto ptr = reinterpret_cast<SequenceRNNOptionsT *>(value);
12998       delete ptr;
12999       break;
13000     }
13001     case BuiltinOptions_StridedSliceOptions: {
13002       auto ptr = reinterpret_cast<StridedSliceOptionsT *>(value);
13003       delete ptr;
13004       break;
13005     }
13006     case BuiltinOptions_ExpOptions: {
13007       auto ptr = reinterpret_cast<ExpOptionsT *>(value);
13008       delete ptr;
13009       break;
13010     }
13011     case BuiltinOptions_TopKV2Options: {
13012       auto ptr = reinterpret_cast<TopKV2OptionsT *>(value);
13013       delete ptr;
13014       break;
13015     }
13016     case BuiltinOptions_SplitOptions: {
13017       auto ptr = reinterpret_cast<SplitOptionsT *>(value);
13018       delete ptr;
13019       break;
13020     }
13021     case BuiltinOptions_LogSoftmaxOptions: {
13022       auto ptr = reinterpret_cast<LogSoftmaxOptionsT *>(value);
13023       delete ptr;
13024       break;
13025     }
13026     case BuiltinOptions_CastOptions: {
13027       auto ptr = reinterpret_cast<CastOptionsT *>(value);
13028       delete ptr;
13029       break;
13030     }
13031     case BuiltinOptions_DequantizeOptions: {
13032       auto ptr = reinterpret_cast<DequantizeOptionsT *>(value);
13033       delete ptr;
13034       break;
13035     }
13036     case BuiltinOptions_MaximumMinimumOptions: {
13037       auto ptr = reinterpret_cast<MaximumMinimumOptionsT *>(value);
13038       delete ptr;
13039       break;
13040     }
13041     case BuiltinOptions_ArgMaxOptions: {
13042       auto ptr = reinterpret_cast<ArgMaxOptionsT *>(value);
13043       delete ptr;
13044       break;
13045     }
13046     case BuiltinOptions_LessOptions: {
13047       auto ptr = reinterpret_cast<LessOptionsT *>(value);
13048       delete ptr;
13049       break;
13050     }
13051     case BuiltinOptions_NegOptions: {
13052       auto ptr = reinterpret_cast<NegOptionsT *>(value);
13053       delete ptr;
13054       break;
13055     }
13056     case BuiltinOptions_PadV2Options: {
13057       auto ptr = reinterpret_cast<PadV2OptionsT *>(value);
13058       delete ptr;
13059       break;
13060     }
13061     case BuiltinOptions_GreaterOptions: {
13062       auto ptr = reinterpret_cast<GreaterOptionsT *>(value);
13063       delete ptr;
13064       break;
13065     }
13066     case BuiltinOptions_GreaterEqualOptions: {
13067       auto ptr = reinterpret_cast<GreaterEqualOptionsT *>(value);
13068       delete ptr;
13069       break;
13070     }
13071     case BuiltinOptions_LessEqualOptions: {
13072       auto ptr = reinterpret_cast<LessEqualOptionsT *>(value);
13073       delete ptr;
13074       break;
13075     }
13076     case BuiltinOptions_SelectOptions: {
13077       auto ptr = reinterpret_cast<SelectOptionsT *>(value);
13078       delete ptr;
13079       break;
13080     }
13081     case BuiltinOptions_SliceOptions: {
13082       auto ptr = reinterpret_cast<SliceOptionsT *>(value);
13083       delete ptr;
13084       break;
13085     }
13086     case BuiltinOptions_TransposeConvOptions: {
13087       auto ptr = reinterpret_cast<TransposeConvOptionsT *>(value);
13088       delete ptr;
13089       break;
13090     }
13091     case BuiltinOptions_SparseToDenseOptions: {
13092       auto ptr = reinterpret_cast<SparseToDenseOptionsT *>(value);
13093       delete ptr;
13094       break;
13095     }
13096     case BuiltinOptions_TileOptions: {
13097       auto ptr = reinterpret_cast<TileOptionsT *>(value);
13098       delete ptr;
13099       break;
13100     }
13101     case BuiltinOptions_ExpandDimsOptions: {
13102       auto ptr = reinterpret_cast<ExpandDimsOptionsT *>(value);
13103       delete ptr;
13104       break;
13105     }
13106     case BuiltinOptions_EqualOptions: {
13107       auto ptr = reinterpret_cast<EqualOptionsT *>(value);
13108       delete ptr;
13109       break;
13110     }
13111     case BuiltinOptions_NotEqualOptions: {
13112       auto ptr = reinterpret_cast<NotEqualOptionsT *>(value);
13113       delete ptr;
13114       break;
13115     }
13116     case BuiltinOptions_ShapeOptions: {
13117       auto ptr = reinterpret_cast<ShapeOptionsT *>(value);
13118       delete ptr;
13119       break;
13120     }
13121     case BuiltinOptions_PowOptions: {
13122       auto ptr = reinterpret_cast<PowOptionsT *>(value);
13123       delete ptr;
13124       break;
13125     }
13126     case BuiltinOptions_ArgMinOptions: {
13127       auto ptr = reinterpret_cast<ArgMinOptionsT *>(value);
13128       delete ptr;
13129       break;
13130     }
13131     case BuiltinOptions_FakeQuantOptions: {
13132       auto ptr = reinterpret_cast<FakeQuantOptionsT *>(value);
13133       delete ptr;
13134       break;
13135     }
13136     case BuiltinOptions_PackOptions: {
13137       auto ptr = reinterpret_cast<PackOptionsT *>(value);
13138       delete ptr;
13139       break;
13140     }
13141     case BuiltinOptions_LogicalOrOptions: {
13142       auto ptr = reinterpret_cast<LogicalOrOptionsT *>(value);
13143       delete ptr;
13144       break;
13145     }
13146     case BuiltinOptions_OneHotOptions: {
13147       auto ptr = reinterpret_cast<OneHotOptionsT *>(value);
13148       delete ptr;
13149       break;
13150     }
13151     case BuiltinOptions_LogicalAndOptions: {
13152       auto ptr = reinterpret_cast<LogicalAndOptionsT *>(value);
13153       delete ptr;
13154       break;
13155     }
13156     case BuiltinOptions_LogicalNotOptions: {
13157       auto ptr = reinterpret_cast<LogicalNotOptionsT *>(value);
13158       delete ptr;
13159       break;
13160     }
13161     case BuiltinOptions_UnpackOptions: {
13162       auto ptr = reinterpret_cast<UnpackOptionsT *>(value);
13163       delete ptr;
13164       break;
13165     }
13166     case BuiltinOptions_FloorDivOptions: {
13167       auto ptr = reinterpret_cast<FloorDivOptionsT *>(value);
13168       delete ptr;
13169       break;
13170     }
13171     case BuiltinOptions_SquareOptions: {
13172       auto ptr = reinterpret_cast<SquareOptionsT *>(value);
13173       delete ptr;
13174       break;
13175     }
13176     case BuiltinOptions_ZerosLikeOptions: {
13177       auto ptr = reinterpret_cast<ZerosLikeOptionsT *>(value);
13178       delete ptr;
13179       break;
13180     }
13181     case BuiltinOptions_FillOptions: {
13182       auto ptr = reinterpret_cast<FillOptionsT *>(value);
13183       delete ptr;
13184       break;
13185     }
13186     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
13187       auto ptr = reinterpret_cast<BidirectionalSequenceLSTMOptionsT *>(value);
13188       delete ptr;
13189       break;
13190     }
13191     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
13192       auto ptr = reinterpret_cast<BidirectionalSequenceRNNOptionsT *>(value);
13193       delete ptr;
13194       break;
13195     }
13196     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
13197       auto ptr = reinterpret_cast<UnidirectionalSequenceLSTMOptionsT *>(value);
13198       delete ptr;
13199       break;
13200     }
13201     case BuiltinOptions_FloorModOptions: {
13202       auto ptr = reinterpret_cast<FloorModOptionsT *>(value);
13203       delete ptr;
13204       break;
13205     }
13206     case BuiltinOptions_RangeOptions: {
13207       auto ptr = reinterpret_cast<RangeOptionsT *>(value);
13208       delete ptr;
13209       break;
13210     }
13211     case BuiltinOptions_ResizeNearestNeighborOptions: {
13212       auto ptr = reinterpret_cast<ResizeNearestNeighborOptionsT *>(value);
13213       delete ptr;
13214       break;
13215     }
13216     case BuiltinOptions_LeakyReluOptions: {
13217       auto ptr = reinterpret_cast<LeakyReluOptionsT *>(value);
13218       delete ptr;
13219       break;
13220     }
13221     case BuiltinOptions_SquaredDifferenceOptions: {
13222       auto ptr = reinterpret_cast<SquaredDifferenceOptionsT *>(value);
13223       delete ptr;
13224       break;
13225     }
13226     case BuiltinOptions_MirrorPadOptions: {
13227       auto ptr = reinterpret_cast<MirrorPadOptionsT *>(value);
13228       delete ptr;
13229       break;
13230     }
13231     case BuiltinOptions_AbsOptions: {
13232       auto ptr = reinterpret_cast<AbsOptionsT *>(value);
13233       delete ptr;
13234       break;
13235     }
13236     case BuiltinOptions_SplitVOptions: {
13237       auto ptr = reinterpret_cast<SplitVOptionsT *>(value);
13238       delete ptr;
13239       break;
13240     }
13241     case BuiltinOptions_UniqueOptions: {
13242       auto ptr = reinterpret_cast<UniqueOptionsT *>(value);
13243       delete ptr;
13244       break;
13245     }
13246     case BuiltinOptions_ReverseV2Options: {
13247       auto ptr = reinterpret_cast<ReverseV2OptionsT *>(value);
13248       delete ptr;
13249       break;
13250     }
13251     case BuiltinOptions_AddNOptions: {
13252       auto ptr = reinterpret_cast<AddNOptionsT *>(value);
13253       delete ptr;
13254       break;
13255     }
13256     case BuiltinOptions_GatherNdOptions: {
13257       auto ptr = reinterpret_cast<GatherNdOptionsT *>(value);
13258       delete ptr;
13259       break;
13260     }
13261     case BuiltinOptions_CosOptions: {
13262       auto ptr = reinterpret_cast<CosOptionsT *>(value);
13263       delete ptr;
13264       break;
13265     }
13266     case BuiltinOptions_WhereOptions: {
13267       auto ptr = reinterpret_cast<WhereOptionsT *>(value);
13268       delete ptr;
13269       break;
13270     }
13271     case BuiltinOptions_RankOptions: {
13272       auto ptr = reinterpret_cast<RankOptionsT *>(value);
13273       delete ptr;
13274       break;
13275     }
13276     case BuiltinOptions_ReverseSequenceOptions: {
13277       auto ptr = reinterpret_cast<ReverseSequenceOptionsT *>(value);
13278       delete ptr;
13279       break;
13280     }
13281     default: break;
13282   }
13283   value = nullptr;
13284   type = BuiltinOptions_NONE;
13285 }
13286 
13287 inline const tflite::Model *GetModel(const void *buf) {
13288   return flatbuffers::GetRoot<tflite::Model>(buf);
13289 }
13290 
13291 inline const tflite::Model *GetSizePrefixedModel(const void *buf) {
13292   return flatbuffers::GetSizePrefixedRoot<tflite::Model>(buf);
13293 }
13294 
13295 inline const char *ModelIdentifier() {
13296   return "TFL3";
13297 }
13298 
13299 inline bool ModelBufferHasIdentifier(const void *buf) {
13300   return flatbuffers::BufferHasIdentifier(
13301       buf, ModelIdentifier());
13302 }
13303 
13304 inline bool VerifyModelBuffer(
13305     flatbuffers::Verifier &verifier) {
13306   return verifier.VerifyBuffer<tflite::Model>(ModelIdentifier());
13307 }
13308 
13309 inline bool VerifySizePrefixedModelBuffer(
13310     flatbuffers::Verifier &verifier) {
13311   return verifier.VerifySizePrefixedBuffer<tflite::Model>(ModelIdentifier());
13312 }
13313 
13314 inline const char *ModelExtension() {
13315   return "tflite";
13316 }
13317 
13318 inline void FinishModelBuffer(
13319     flatbuffers::FlatBufferBuilder &fbb,
13320     flatbuffers::Offset<tflite::Model> root) {
13321   fbb.Finish(root, ModelIdentifier());
13322 }
13323 
13324 inline void FinishSizePrefixedModelBuffer(
13325     flatbuffers::FlatBufferBuilder &fbb,
13326     flatbuffers::Offset<tflite::Model> root) {
13327   fbb.FinishSizePrefixed(root, ModelIdentifier());
13328 }
13329 
13330 inline std::unique_ptr<ModelT> UnPackModel(
13331     const void *buf,
13332     const flatbuffers::resolver_function_t *res = nullptr) {
13333   return std::unique_ptr<ModelT>(GetModel(buf)->UnPack(res));
13334 }
13335 
13336 }  // namespace tflite
13337 
13338 #endif  // FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
13339