1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type Mat3 = [f32; 9];
14
15pub type Point2 = [f32; 2];
18
19pub type RelativeMotion = [f32; 2];
23
24pub type RelativeMotionRange = [fidl_fuchsia_input_report__common::Axis; 2];
27
28pub const MOUSE_MAX_EVENT: u32 = 128;
29
30pub const TOUCH_MAX_EVENT: u32 = 128;
31
32#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
59#[repr(u32)]
60pub enum EventPhase {
61    Add = 1,
63    Change = 2,
65    Remove = 3,
67    Cancel = 4,
69}
70
71impl EventPhase {
72    #[inline]
73    pub fn from_primitive(prim: u32) -> Option<Self> {
74        match prim {
75            1 => Some(Self::Add),
76            2 => Some(Self::Change),
77            3 => Some(Self::Remove),
78            4 => Some(Self::Cancel),
79            _ => None,
80        }
81    }
82
83    #[inline]
84    pub const fn into_primitive(self) -> u32 {
85        self as u32
86    }
87}
88
89#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
91#[repr(u32)]
92pub enum MouseViewStatus {
93    Entered = 1,
95    Exited = 2,
97}
98
99impl MouseViewStatus {
100    #[inline]
101    pub fn from_primitive(prim: u32) -> Option<Self> {
102        match prim {
103            1 => Some(Self::Entered),
104            2 => Some(Self::Exited),
105            _ => None,
106        }
107    }
108
109    #[inline]
110    pub const fn into_primitive(self) -> u32 {
111        self as u32
112    }
113}
114
115#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
117#[repr(u32)]
118pub enum TouchInteractionStatus {
119    Denied = 1,
121    Granted = 2,
123}
124
125impl TouchInteractionStatus {
126    #[inline]
127    pub fn from_primitive(prim: u32) -> Option<Self> {
128        match prim {
129            1 => Some(Self::Denied),
130            2 => Some(Self::Granted),
131            _ => None,
132        }
133    }
134
135    #[inline]
136    pub const fn into_primitive(self) -> u32 {
137        self as u32
138    }
139}
140
141#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
148#[repr(u32)]
149pub enum TouchResponseType {
150    No = 1,
154    Maybe = 2,
158    MaybePrioritize = 3,
163    MaybeSuppress = 4,
168    MaybePrioritizeSuppress = 5,
175    Hold = 6,
180    HoldSuppress = 7,
186    Yes = 8,
191    YesPrioritize = 9,
196}
197
198impl TouchResponseType {
199    #[inline]
200    pub fn from_primitive(prim: u32) -> Option<Self> {
201        match prim {
202            1 => Some(Self::No),
203            2 => Some(Self::Maybe),
204            3 => Some(Self::MaybePrioritize),
205            4 => Some(Self::MaybeSuppress),
206            5 => Some(Self::MaybePrioritizeSuppress),
207            6 => Some(Self::Hold),
208            7 => Some(Self::HoldSuppress),
209            8 => Some(Self::Yes),
210            9 => Some(Self::YesPrioritize),
211            _ => None,
212        }
213    }
214
215    #[inline]
216    pub const fn into_primitive(self) -> u32 {
217        self as u32
218    }
219}
220
221#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
226pub struct MouseEventStreamInfo {
227    pub device_id: u32,
229    pub status: MouseViewStatus,
231}
232
233impl fidl::Persistable for MouseEventStreamInfo {}
234
235#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
238pub struct Rectangle {
239    pub min: [f32; 2],
243    pub max: [f32; 2],
247}
248
249impl fidl::Persistable for Rectangle {}
250
251#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
272#[repr(C)]
273pub struct TouchInteractionId {
274    pub device_id: u32,
277    pub pointer_id: u32,
281    pub interaction_id: u32,
284}
285
286impl fidl::Persistable for TouchInteractionId {}
287
288#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
291pub struct TouchInteractionResult {
292    pub interaction: TouchInteractionId,
294    pub status: TouchInteractionStatus,
296}
297
298impl fidl::Persistable for TouchInteractionResult {}
299
300#[derive(Clone, Debug, PartialEq)]
301pub struct TouchSourceUpdateResponseRequest {
302    pub interaction: TouchInteractionId,
303    pub response: TouchResponse,
304}
305
306impl fidl::Persistable for TouchSourceUpdateResponseRequest {}
307
308#[derive(Clone, Debug, PartialEq)]
309pub struct TouchSourceWatchRequest {
310    pub responses: Vec<TouchResponse>,
311}
312
313impl fidl::Persistable for TouchSourceWatchRequest {}
314
315#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
328pub struct ViewParameters {
329    pub view: Rectangle,
334    pub viewport: Rectangle,
343    pub viewport_to_view_transform: [f32; 9],
346}
347
348impl fidl::Persistable for ViewParameters {}
349
350#[derive(Clone, Debug, Default, PartialEq)]
352pub struct MouseDeviceInfo {
353    pub id: Option<u32>,
356    pub scroll_v_range: Option<fidl_fuchsia_input_report__common::Axis>,
358    pub scroll_h_range: Option<fidl_fuchsia_input_report__common::Axis>,
360    pub buttons: Option<Vec<u8>>,
362    pub relative_motion_range: Option<[fidl_fuchsia_input_report__common::Axis; 2]>,
364    #[doc(hidden)]
365    pub __source_breaking: fidl::marker::SourceBreaking,
366}
367
368impl fidl::Persistable for MouseDeviceInfo {}
369
370#[derive(Clone, Debug, Default, PartialEq)]
378pub struct MousePointerSample {
379    pub device_id: Option<u32>,
382    pub position_in_viewport: Option<[f32; 2]>,
385    pub scroll_v: Option<i64>,
387    pub scroll_h: Option<i64>,
389    pub pressed_buttons: Option<Vec<u8>>,
391    pub relative_motion: Option<[f32; 2]>,
394    pub scroll_v_physical_pixel: Option<f64>,
397    pub scroll_h_physical_pixel: Option<f64>,
400    pub is_precision_scroll: Option<bool>,
404    #[doc(hidden)]
405    pub __source_breaking: fidl::marker::SourceBreaking,
406}
407
408impl fidl::Persistable for MousePointerSample {}
409
410#[derive(Clone, Debug, Default, PartialEq)]
412pub struct TouchDeviceInfo {
413    pub id: Option<u32>,
418    #[doc(hidden)]
419    pub __source_breaking: fidl::marker::SourceBreaking,
420}
421
422impl fidl::Persistable for TouchDeviceInfo {}
423
424#[derive(Clone, Debug, Default, PartialEq)]
427pub struct TouchPointerSample {
428    pub interaction: Option<TouchInteractionId>,
430    pub phase: Option<EventPhase>,
432    pub position_in_viewport: Option<[f32; 2]>,
434    #[doc(hidden)]
435    pub __source_breaking: fidl::marker::SourceBreaking,
436}
437
438impl fidl::Persistable for TouchPointerSample {}
439
440#[derive(Clone, Debug, Default, PartialEq)]
445pub struct TouchResponse {
446    pub response_type: Option<TouchResponseType>,
449    pub trace_flow_id: Option<u64>,
452    #[doc(hidden)]
453    pub __source_breaking: fidl::marker::SourceBreaking,
454}
455
456impl fidl::Persistable for TouchResponse {}
457
458pub mod mouse_source_ordinals {
459    pub const WATCH: u64 = 0x5b1f6e917ac1abb4;
460}
461
462pub mod touch_source_ordinals {
463    pub const WATCH: u64 = 0x38453127dd0fc7d;
464    pub const UPDATE_RESPONSE: u64 = 0x6c746a313b39898a;
465}
466
467mod internal {
468    use super::*;
469    unsafe impl fidl::encoding::TypeMarker for EventPhase {
470        type Owned = Self;
471
472        #[inline(always)]
473        fn inline_align(_context: fidl::encoding::Context) -> usize {
474            std::mem::align_of::<u32>()
475        }
476
477        #[inline(always)]
478        fn inline_size(_context: fidl::encoding::Context) -> usize {
479            std::mem::size_of::<u32>()
480        }
481
482        #[inline(always)]
483        fn encode_is_copy() -> bool {
484            true
485        }
486
487        #[inline(always)]
488        fn decode_is_copy() -> bool {
489            false
490        }
491    }
492
493    impl fidl::encoding::ValueTypeMarker for EventPhase {
494        type Borrowed<'a> = Self;
495        #[inline(always)]
496        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
497            *value
498        }
499    }
500
501    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EventPhase {
502        #[inline]
503        unsafe fn encode(
504            self,
505            encoder: &mut fidl::encoding::Encoder<'_, D>,
506            offset: usize,
507            _depth: fidl::encoding::Depth,
508        ) -> fidl::Result<()> {
509            encoder.debug_check_bounds::<Self>(offset);
510            encoder.write_num(self.into_primitive(), offset);
511            Ok(())
512        }
513    }
514
515    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventPhase {
516        #[inline(always)]
517        fn new_empty() -> Self {
518            Self::Add
519        }
520
521        #[inline]
522        unsafe fn decode(
523            &mut self,
524            decoder: &mut fidl::encoding::Decoder<'_, D>,
525            offset: usize,
526            _depth: fidl::encoding::Depth,
527        ) -> fidl::Result<()> {
528            decoder.debug_check_bounds::<Self>(offset);
529            let prim = decoder.read_num::<u32>(offset);
530
531            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
532            Ok(())
533        }
534    }
535    unsafe impl fidl::encoding::TypeMarker for MouseViewStatus {
536        type Owned = Self;
537
538        #[inline(always)]
539        fn inline_align(_context: fidl::encoding::Context) -> usize {
540            std::mem::align_of::<u32>()
541        }
542
543        #[inline(always)]
544        fn inline_size(_context: fidl::encoding::Context) -> usize {
545            std::mem::size_of::<u32>()
546        }
547
548        #[inline(always)]
549        fn encode_is_copy() -> bool {
550            true
551        }
552
553        #[inline(always)]
554        fn decode_is_copy() -> bool {
555            false
556        }
557    }
558
559    impl fidl::encoding::ValueTypeMarker for MouseViewStatus {
560        type Borrowed<'a> = Self;
561        #[inline(always)]
562        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
563            *value
564        }
565    }
566
567    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
568        for MouseViewStatus
569    {
570        #[inline]
571        unsafe fn encode(
572            self,
573            encoder: &mut fidl::encoding::Encoder<'_, D>,
574            offset: usize,
575            _depth: fidl::encoding::Depth,
576        ) -> fidl::Result<()> {
577            encoder.debug_check_bounds::<Self>(offset);
578            encoder.write_num(self.into_primitive(), offset);
579            Ok(())
580        }
581    }
582
583    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseViewStatus {
584        #[inline(always)]
585        fn new_empty() -> Self {
586            Self::Entered
587        }
588
589        #[inline]
590        unsafe fn decode(
591            &mut self,
592            decoder: &mut fidl::encoding::Decoder<'_, D>,
593            offset: usize,
594            _depth: fidl::encoding::Depth,
595        ) -> fidl::Result<()> {
596            decoder.debug_check_bounds::<Self>(offset);
597            let prim = decoder.read_num::<u32>(offset);
598
599            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
600            Ok(())
601        }
602    }
603    unsafe impl fidl::encoding::TypeMarker for TouchInteractionStatus {
604        type Owned = Self;
605
606        #[inline(always)]
607        fn inline_align(_context: fidl::encoding::Context) -> usize {
608            std::mem::align_of::<u32>()
609        }
610
611        #[inline(always)]
612        fn inline_size(_context: fidl::encoding::Context) -> usize {
613            std::mem::size_of::<u32>()
614        }
615
616        #[inline(always)]
617        fn encode_is_copy() -> bool {
618            true
619        }
620
621        #[inline(always)]
622        fn decode_is_copy() -> bool {
623            false
624        }
625    }
626
627    impl fidl::encoding::ValueTypeMarker for TouchInteractionStatus {
628        type Borrowed<'a> = Self;
629        #[inline(always)]
630        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
631            *value
632        }
633    }
634
635    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
636        for TouchInteractionStatus
637    {
638        #[inline]
639        unsafe fn encode(
640            self,
641            encoder: &mut fidl::encoding::Encoder<'_, D>,
642            offset: usize,
643            _depth: fidl::encoding::Depth,
644        ) -> fidl::Result<()> {
645            encoder.debug_check_bounds::<Self>(offset);
646            encoder.write_num(self.into_primitive(), offset);
647            Ok(())
648        }
649    }
650
651    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
652        for TouchInteractionStatus
653    {
654        #[inline(always)]
655        fn new_empty() -> Self {
656            Self::Denied
657        }
658
659        #[inline]
660        unsafe fn decode(
661            &mut self,
662            decoder: &mut fidl::encoding::Decoder<'_, D>,
663            offset: usize,
664            _depth: fidl::encoding::Depth,
665        ) -> fidl::Result<()> {
666            decoder.debug_check_bounds::<Self>(offset);
667            let prim = decoder.read_num::<u32>(offset);
668
669            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
670            Ok(())
671        }
672    }
673    unsafe impl fidl::encoding::TypeMarker for TouchResponseType {
674        type Owned = Self;
675
676        #[inline(always)]
677        fn inline_align(_context: fidl::encoding::Context) -> usize {
678            std::mem::align_of::<u32>()
679        }
680
681        #[inline(always)]
682        fn inline_size(_context: fidl::encoding::Context) -> usize {
683            std::mem::size_of::<u32>()
684        }
685
686        #[inline(always)]
687        fn encode_is_copy() -> bool {
688            true
689        }
690
691        #[inline(always)]
692        fn decode_is_copy() -> bool {
693            false
694        }
695    }
696
697    impl fidl::encoding::ValueTypeMarker for TouchResponseType {
698        type Borrowed<'a> = Self;
699        #[inline(always)]
700        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
701            *value
702        }
703    }
704
705    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
706        for TouchResponseType
707    {
708        #[inline]
709        unsafe fn encode(
710            self,
711            encoder: &mut fidl::encoding::Encoder<'_, D>,
712            offset: usize,
713            _depth: fidl::encoding::Depth,
714        ) -> fidl::Result<()> {
715            encoder.debug_check_bounds::<Self>(offset);
716            encoder.write_num(self.into_primitive(), offset);
717            Ok(())
718        }
719    }
720
721    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchResponseType {
722        #[inline(always)]
723        fn new_empty() -> Self {
724            Self::No
725        }
726
727        #[inline]
728        unsafe fn decode(
729            &mut self,
730            decoder: &mut fidl::encoding::Decoder<'_, D>,
731            offset: usize,
732            _depth: fidl::encoding::Depth,
733        ) -> fidl::Result<()> {
734            decoder.debug_check_bounds::<Self>(offset);
735            let prim = decoder.read_num::<u32>(offset);
736
737            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
738            Ok(())
739        }
740    }
741
742    impl fidl::encoding::ValueTypeMarker for MouseEventStreamInfo {
743        type Borrowed<'a> = &'a Self;
744        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
745            value
746        }
747    }
748
749    unsafe impl fidl::encoding::TypeMarker for MouseEventStreamInfo {
750        type Owned = Self;
751
752        #[inline(always)]
753        fn inline_align(_context: fidl::encoding::Context) -> usize {
754            4
755        }
756
757        #[inline(always)]
758        fn inline_size(_context: fidl::encoding::Context) -> usize {
759            8
760        }
761    }
762
763    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MouseEventStreamInfo, D>
764        for &MouseEventStreamInfo
765    {
766        #[inline]
767        unsafe fn encode(
768            self,
769            encoder: &mut fidl::encoding::Encoder<'_, D>,
770            offset: usize,
771            _depth: fidl::encoding::Depth,
772        ) -> fidl::Result<()> {
773            encoder.debug_check_bounds::<MouseEventStreamInfo>(offset);
774            fidl::encoding::Encode::<MouseEventStreamInfo, D>::encode(
776                (
777                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.device_id),
778                    <MouseViewStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
779                ),
780                encoder,
781                offset,
782                _depth,
783            )
784        }
785    }
786    unsafe impl<
787        D: fidl::encoding::ResourceDialect,
788        T0: fidl::encoding::Encode<u32, D>,
789        T1: fidl::encoding::Encode<MouseViewStatus, D>,
790    > fidl::encoding::Encode<MouseEventStreamInfo, D> for (T0, T1)
791    {
792        #[inline]
793        unsafe fn encode(
794            self,
795            encoder: &mut fidl::encoding::Encoder<'_, D>,
796            offset: usize,
797            depth: fidl::encoding::Depth,
798        ) -> fidl::Result<()> {
799            encoder.debug_check_bounds::<MouseEventStreamInfo>(offset);
800            self.0.encode(encoder, offset + 0, depth)?;
804            self.1.encode(encoder, offset + 4, depth)?;
805            Ok(())
806        }
807    }
808
809    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseEventStreamInfo {
810        #[inline(always)]
811        fn new_empty() -> Self {
812            Self {
813                device_id: fidl::new_empty!(u32, D),
814                status: fidl::new_empty!(MouseViewStatus, D),
815            }
816        }
817
818        #[inline]
819        unsafe fn decode(
820            &mut self,
821            decoder: &mut fidl::encoding::Decoder<'_, D>,
822            offset: usize,
823            _depth: fidl::encoding::Depth,
824        ) -> fidl::Result<()> {
825            decoder.debug_check_bounds::<Self>(offset);
826            fidl::decode!(u32, D, &mut self.device_id, decoder, offset + 0, _depth)?;
828            fidl::decode!(MouseViewStatus, D, &mut self.status, decoder, offset + 4, _depth)?;
829            Ok(())
830        }
831    }
832
833    impl fidl::encoding::ValueTypeMarker for Rectangle {
834        type Borrowed<'a> = &'a Self;
835        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
836            value
837        }
838    }
839
840    unsafe impl fidl::encoding::TypeMarker for Rectangle {
841        type Owned = Self;
842
843        #[inline(always)]
844        fn inline_align(_context: fidl::encoding::Context) -> usize {
845            4
846        }
847
848        #[inline(always)]
849        fn inline_size(_context: fidl::encoding::Context) -> usize {
850            16
851        }
852    }
853
854    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Rectangle, D>
855        for &Rectangle
856    {
857        #[inline]
858        unsafe fn encode(
859            self,
860            encoder: &mut fidl::encoding::Encoder<'_, D>,
861            offset: usize,
862            _depth: fidl::encoding::Depth,
863        ) -> fidl::Result<()> {
864            encoder.debug_check_bounds::<Rectangle>(offset);
865            fidl::encoding::Encode::<Rectangle, D>::encode(
867                (
868                    <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow(
869                        &self.min,
870                    ),
871                    <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow(
872                        &self.max,
873                    ),
874                ),
875                encoder,
876                offset,
877                _depth,
878            )
879        }
880    }
881    unsafe impl<
882        D: fidl::encoding::ResourceDialect,
883        T0: fidl::encoding::Encode<fidl::encoding::Array<f32, 2>, D>,
884        T1: fidl::encoding::Encode<fidl::encoding::Array<f32, 2>, D>,
885    > fidl::encoding::Encode<Rectangle, D> for (T0, T1)
886    {
887        #[inline]
888        unsafe fn encode(
889            self,
890            encoder: &mut fidl::encoding::Encoder<'_, D>,
891            offset: usize,
892            depth: fidl::encoding::Depth,
893        ) -> fidl::Result<()> {
894            encoder.debug_check_bounds::<Rectangle>(offset);
895            self.0.encode(encoder, offset + 0, depth)?;
899            self.1.encode(encoder, offset + 8, depth)?;
900            Ok(())
901        }
902    }
903
904    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Rectangle {
905        #[inline(always)]
906        fn new_empty() -> Self {
907            Self {
908                min: fidl::new_empty!(fidl::encoding::Array<f32, 2>, D),
909                max: fidl::new_empty!(fidl::encoding::Array<f32, 2>, D),
910            }
911        }
912
913        #[inline]
914        unsafe fn decode(
915            &mut self,
916            decoder: &mut fidl::encoding::Decoder<'_, D>,
917            offset: usize,
918            _depth: fidl::encoding::Depth,
919        ) -> fidl::Result<()> {
920            decoder.debug_check_bounds::<Self>(offset);
921            fidl::decode!(fidl::encoding::Array<f32, 2>, D, &mut self.min, decoder, offset + 0, _depth)?;
923            fidl::decode!(fidl::encoding::Array<f32, 2>, D, &mut self.max, decoder, offset + 8, _depth)?;
924            Ok(())
925        }
926    }
927
928    impl fidl::encoding::ValueTypeMarker for TouchInteractionId {
929        type Borrowed<'a> = &'a Self;
930        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
931            value
932        }
933    }
934
935    unsafe impl fidl::encoding::TypeMarker for TouchInteractionId {
936        type Owned = Self;
937
938        #[inline(always)]
939        fn inline_align(_context: fidl::encoding::Context) -> usize {
940            4
941        }
942
943        #[inline(always)]
944        fn inline_size(_context: fidl::encoding::Context) -> usize {
945            12
946        }
947        #[inline(always)]
948        fn encode_is_copy() -> bool {
949            true
950        }
951
952        #[inline(always)]
953        fn decode_is_copy() -> bool {
954            true
955        }
956    }
957
958    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchInteractionId, D>
959        for &TouchInteractionId
960    {
961        #[inline]
962        unsafe fn encode(
963            self,
964            encoder: &mut fidl::encoding::Encoder<'_, D>,
965            offset: usize,
966            _depth: fidl::encoding::Depth,
967        ) -> fidl::Result<()> {
968            encoder.debug_check_bounds::<TouchInteractionId>(offset);
969            unsafe {
970                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
972                (buf_ptr as *mut TouchInteractionId)
973                    .write_unaligned((self as *const TouchInteractionId).read());
974                }
977            Ok(())
978        }
979    }
980    unsafe impl<
981        D: fidl::encoding::ResourceDialect,
982        T0: fidl::encoding::Encode<u32, D>,
983        T1: fidl::encoding::Encode<u32, D>,
984        T2: fidl::encoding::Encode<u32, D>,
985    > fidl::encoding::Encode<TouchInteractionId, D> for (T0, T1, T2)
986    {
987        #[inline]
988        unsafe fn encode(
989            self,
990            encoder: &mut fidl::encoding::Encoder<'_, D>,
991            offset: usize,
992            depth: fidl::encoding::Depth,
993        ) -> fidl::Result<()> {
994            encoder.debug_check_bounds::<TouchInteractionId>(offset);
995            self.0.encode(encoder, offset + 0, depth)?;
999            self.1.encode(encoder, offset + 4, depth)?;
1000            self.2.encode(encoder, offset + 8, depth)?;
1001            Ok(())
1002        }
1003    }
1004
1005    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchInteractionId {
1006        #[inline(always)]
1007        fn new_empty() -> Self {
1008            Self {
1009                device_id: fidl::new_empty!(u32, D),
1010                pointer_id: fidl::new_empty!(u32, D),
1011                interaction_id: fidl::new_empty!(u32, D),
1012            }
1013        }
1014
1015        #[inline]
1016        unsafe fn decode(
1017            &mut self,
1018            decoder: &mut fidl::encoding::Decoder<'_, D>,
1019            offset: usize,
1020            _depth: fidl::encoding::Depth,
1021        ) -> fidl::Result<()> {
1022            decoder.debug_check_bounds::<Self>(offset);
1023            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1024            unsafe {
1027                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1028            }
1029            Ok(())
1030        }
1031    }
1032
1033    impl fidl::encoding::ValueTypeMarker for TouchInteractionResult {
1034        type Borrowed<'a> = &'a Self;
1035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1036            value
1037        }
1038    }
1039
1040    unsafe impl fidl::encoding::TypeMarker for TouchInteractionResult {
1041        type Owned = Self;
1042
1043        #[inline(always)]
1044        fn inline_align(_context: fidl::encoding::Context) -> usize {
1045            4
1046        }
1047
1048        #[inline(always)]
1049        fn inline_size(_context: fidl::encoding::Context) -> usize {
1050            16
1051        }
1052    }
1053
1054    unsafe impl<D: fidl::encoding::ResourceDialect>
1055        fidl::encoding::Encode<TouchInteractionResult, D> for &TouchInteractionResult
1056    {
1057        #[inline]
1058        unsafe fn encode(
1059            self,
1060            encoder: &mut fidl::encoding::Encoder<'_, D>,
1061            offset: usize,
1062            _depth: fidl::encoding::Depth,
1063        ) -> fidl::Result<()> {
1064            encoder.debug_check_bounds::<TouchInteractionResult>(offset);
1065            fidl::encoding::Encode::<TouchInteractionResult, D>::encode(
1067                (
1068                    <TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow(
1069                        &self.interaction,
1070                    ),
1071                    <TouchInteractionStatus as fidl::encoding::ValueTypeMarker>::borrow(
1072                        &self.status,
1073                    ),
1074                ),
1075                encoder,
1076                offset,
1077                _depth,
1078            )
1079        }
1080    }
1081    unsafe impl<
1082        D: fidl::encoding::ResourceDialect,
1083        T0: fidl::encoding::Encode<TouchInteractionId, D>,
1084        T1: fidl::encoding::Encode<TouchInteractionStatus, D>,
1085    > fidl::encoding::Encode<TouchInteractionResult, D> for (T0, T1)
1086    {
1087        #[inline]
1088        unsafe fn encode(
1089            self,
1090            encoder: &mut fidl::encoding::Encoder<'_, D>,
1091            offset: usize,
1092            depth: fidl::encoding::Depth,
1093        ) -> fidl::Result<()> {
1094            encoder.debug_check_bounds::<TouchInteractionResult>(offset);
1095            self.0.encode(encoder, offset + 0, depth)?;
1099            self.1.encode(encoder, offset + 12, depth)?;
1100            Ok(())
1101        }
1102    }
1103
1104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1105        for TouchInteractionResult
1106    {
1107        #[inline(always)]
1108        fn new_empty() -> Self {
1109            Self {
1110                interaction: fidl::new_empty!(TouchInteractionId, D),
1111                status: fidl::new_empty!(TouchInteractionStatus, D),
1112            }
1113        }
1114
1115        #[inline]
1116        unsafe fn decode(
1117            &mut self,
1118            decoder: &mut fidl::encoding::Decoder<'_, D>,
1119            offset: usize,
1120            _depth: fidl::encoding::Depth,
1121        ) -> fidl::Result<()> {
1122            decoder.debug_check_bounds::<Self>(offset);
1123            fidl::decode!(
1125                TouchInteractionId,
1126                D,
1127                &mut self.interaction,
1128                decoder,
1129                offset + 0,
1130                _depth
1131            )?;
1132            fidl::decode!(
1133                TouchInteractionStatus,
1134                D,
1135                &mut self.status,
1136                decoder,
1137                offset + 12,
1138                _depth
1139            )?;
1140            Ok(())
1141        }
1142    }
1143
1144    impl fidl::encoding::ValueTypeMarker for TouchSourceUpdateResponseRequest {
1145        type Borrowed<'a> = &'a Self;
1146        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1147            value
1148        }
1149    }
1150
1151    unsafe impl fidl::encoding::TypeMarker for TouchSourceUpdateResponseRequest {
1152        type Owned = Self;
1153
1154        #[inline(always)]
1155        fn inline_align(_context: fidl::encoding::Context) -> usize {
1156            8
1157        }
1158
1159        #[inline(always)]
1160        fn inline_size(_context: fidl::encoding::Context) -> usize {
1161            32
1162        }
1163    }
1164
1165    unsafe impl<D: fidl::encoding::ResourceDialect>
1166        fidl::encoding::Encode<TouchSourceUpdateResponseRequest, D>
1167        for &TouchSourceUpdateResponseRequest
1168    {
1169        #[inline]
1170        unsafe fn encode(
1171            self,
1172            encoder: &mut fidl::encoding::Encoder<'_, D>,
1173            offset: usize,
1174            _depth: fidl::encoding::Depth,
1175        ) -> fidl::Result<()> {
1176            encoder.debug_check_bounds::<TouchSourceUpdateResponseRequest>(offset);
1177            fidl::encoding::Encode::<TouchSourceUpdateResponseRequest, D>::encode(
1179                (
1180                    <TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow(
1181                        &self.interaction,
1182                    ),
1183                    <TouchResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),
1184                ),
1185                encoder,
1186                offset,
1187                _depth,
1188            )
1189        }
1190    }
1191    unsafe impl<
1192        D: fidl::encoding::ResourceDialect,
1193        T0: fidl::encoding::Encode<TouchInteractionId, D>,
1194        T1: fidl::encoding::Encode<TouchResponse, D>,
1195    > fidl::encoding::Encode<TouchSourceUpdateResponseRequest, D> for (T0, T1)
1196    {
1197        #[inline]
1198        unsafe fn encode(
1199            self,
1200            encoder: &mut fidl::encoding::Encoder<'_, D>,
1201            offset: usize,
1202            depth: fidl::encoding::Depth,
1203        ) -> fidl::Result<()> {
1204            encoder.debug_check_bounds::<TouchSourceUpdateResponseRequest>(offset);
1205            unsafe {
1208                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1209                (ptr as *mut u64).write_unaligned(0);
1210            }
1211            self.0.encode(encoder, offset + 0, depth)?;
1213            self.1.encode(encoder, offset + 16, depth)?;
1214            Ok(())
1215        }
1216    }
1217
1218    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1219        for TouchSourceUpdateResponseRequest
1220    {
1221        #[inline(always)]
1222        fn new_empty() -> Self {
1223            Self {
1224                interaction: fidl::new_empty!(TouchInteractionId, D),
1225                response: fidl::new_empty!(TouchResponse, D),
1226            }
1227        }
1228
1229        #[inline]
1230        unsafe fn decode(
1231            &mut self,
1232            decoder: &mut fidl::encoding::Decoder<'_, D>,
1233            offset: usize,
1234            _depth: fidl::encoding::Depth,
1235        ) -> fidl::Result<()> {
1236            decoder.debug_check_bounds::<Self>(offset);
1237            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
1239            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1240            let mask = 0xffffffff00000000u64;
1241            let maskedval = padval & mask;
1242            if maskedval != 0 {
1243                return Err(fidl::Error::NonZeroPadding {
1244                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1245                });
1246            }
1247            fidl::decode!(
1248                TouchInteractionId,
1249                D,
1250                &mut self.interaction,
1251                decoder,
1252                offset + 0,
1253                _depth
1254            )?;
1255            fidl::decode!(TouchResponse, D, &mut self.response, decoder, offset + 16, _depth)?;
1256            Ok(())
1257        }
1258    }
1259
1260    impl fidl::encoding::ValueTypeMarker for TouchSourceWatchRequest {
1261        type Borrowed<'a> = &'a Self;
1262        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1263            value
1264        }
1265    }
1266
1267    unsafe impl fidl::encoding::TypeMarker for TouchSourceWatchRequest {
1268        type Owned = Self;
1269
1270        #[inline(always)]
1271        fn inline_align(_context: fidl::encoding::Context) -> usize {
1272            8
1273        }
1274
1275        #[inline(always)]
1276        fn inline_size(_context: fidl::encoding::Context) -> usize {
1277            16
1278        }
1279    }
1280
1281    unsafe impl<D: fidl::encoding::ResourceDialect>
1282        fidl::encoding::Encode<TouchSourceWatchRequest, D> for &TouchSourceWatchRequest
1283    {
1284        #[inline]
1285        unsafe fn encode(
1286            self,
1287            encoder: &mut fidl::encoding::Encoder<'_, D>,
1288            offset: usize,
1289            _depth: fidl::encoding::Depth,
1290        ) -> fidl::Result<()> {
1291            encoder.debug_check_bounds::<TouchSourceWatchRequest>(offset);
1292            fidl::encoding::Encode::<TouchSourceWatchRequest, D>::encode(
1294                (
1295                    <fidl::encoding::Vector<TouchResponse, 128> as fidl::encoding::ValueTypeMarker>::borrow(&self.responses),
1296                ),
1297                encoder, offset, _depth
1298            )
1299        }
1300    }
1301    unsafe impl<
1302        D: fidl::encoding::ResourceDialect,
1303        T0: fidl::encoding::Encode<fidl::encoding::Vector<TouchResponse, 128>, D>,
1304    > fidl::encoding::Encode<TouchSourceWatchRequest, D> for (T0,)
1305    {
1306        #[inline]
1307        unsafe fn encode(
1308            self,
1309            encoder: &mut fidl::encoding::Encoder<'_, D>,
1310            offset: usize,
1311            depth: fidl::encoding::Depth,
1312        ) -> fidl::Result<()> {
1313            encoder.debug_check_bounds::<TouchSourceWatchRequest>(offset);
1314            self.0.encode(encoder, offset + 0, depth)?;
1318            Ok(())
1319        }
1320    }
1321
1322    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1323        for TouchSourceWatchRequest
1324    {
1325        #[inline(always)]
1326        fn new_empty() -> Self {
1327            Self { responses: fidl::new_empty!(fidl::encoding::Vector<TouchResponse, 128>, D) }
1328        }
1329
1330        #[inline]
1331        unsafe fn decode(
1332            &mut self,
1333            decoder: &mut fidl::encoding::Decoder<'_, D>,
1334            offset: usize,
1335            _depth: fidl::encoding::Depth,
1336        ) -> fidl::Result<()> {
1337            decoder.debug_check_bounds::<Self>(offset);
1338            fidl::decode!(fidl::encoding::Vector<TouchResponse, 128>, D, &mut self.responses, decoder, offset + 0, _depth)?;
1340            Ok(())
1341        }
1342    }
1343
1344    impl fidl::encoding::ValueTypeMarker for ViewParameters {
1345        type Borrowed<'a> = &'a Self;
1346        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1347            value
1348        }
1349    }
1350
1351    unsafe impl fidl::encoding::TypeMarker for ViewParameters {
1352        type Owned = Self;
1353
1354        #[inline(always)]
1355        fn inline_align(_context: fidl::encoding::Context) -> usize {
1356            4
1357        }
1358
1359        #[inline(always)]
1360        fn inline_size(_context: fidl::encoding::Context) -> usize {
1361            68
1362        }
1363    }
1364
1365    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ViewParameters, D>
1366        for &ViewParameters
1367    {
1368        #[inline]
1369        unsafe fn encode(
1370            self,
1371            encoder: &mut fidl::encoding::Encoder<'_, D>,
1372            offset: usize,
1373            _depth: fidl::encoding::Depth,
1374        ) -> fidl::Result<()> {
1375            encoder.debug_check_bounds::<ViewParameters>(offset);
1376            fidl::encoding::Encode::<ViewParameters, D>::encode(
1378                (
1379                    <Rectangle as fidl::encoding::ValueTypeMarker>::borrow(&self.view),
1380                    <Rectangle as fidl::encoding::ValueTypeMarker>::borrow(&self.viewport),
1381                    <fidl::encoding::Array<f32, 9> as fidl::encoding::ValueTypeMarker>::borrow(
1382                        &self.viewport_to_view_transform,
1383                    ),
1384                ),
1385                encoder,
1386                offset,
1387                _depth,
1388            )
1389        }
1390    }
1391    unsafe impl<
1392        D: fidl::encoding::ResourceDialect,
1393        T0: fidl::encoding::Encode<Rectangle, D>,
1394        T1: fidl::encoding::Encode<Rectangle, D>,
1395        T2: fidl::encoding::Encode<fidl::encoding::Array<f32, 9>, D>,
1396    > fidl::encoding::Encode<ViewParameters, D> for (T0, T1, T2)
1397    {
1398        #[inline]
1399        unsafe fn encode(
1400            self,
1401            encoder: &mut fidl::encoding::Encoder<'_, D>,
1402            offset: usize,
1403            depth: fidl::encoding::Depth,
1404        ) -> fidl::Result<()> {
1405            encoder.debug_check_bounds::<ViewParameters>(offset);
1406            self.0.encode(encoder, offset + 0, depth)?;
1410            self.1.encode(encoder, offset + 16, depth)?;
1411            self.2.encode(encoder, offset + 32, depth)?;
1412            Ok(())
1413        }
1414    }
1415
1416    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ViewParameters {
1417        #[inline(always)]
1418        fn new_empty() -> Self {
1419            Self {
1420                view: fidl::new_empty!(Rectangle, D),
1421                viewport: fidl::new_empty!(Rectangle, D),
1422                viewport_to_view_transform: fidl::new_empty!(fidl::encoding::Array<f32, 9>, D),
1423            }
1424        }
1425
1426        #[inline]
1427        unsafe fn decode(
1428            &mut self,
1429            decoder: &mut fidl::encoding::Decoder<'_, D>,
1430            offset: usize,
1431            _depth: fidl::encoding::Depth,
1432        ) -> fidl::Result<()> {
1433            decoder.debug_check_bounds::<Self>(offset);
1434            fidl::decode!(Rectangle, D, &mut self.view, decoder, offset + 0, _depth)?;
1436            fidl::decode!(Rectangle, D, &mut self.viewport, decoder, offset + 16, _depth)?;
1437            fidl::decode!(fidl::encoding::Array<f32, 9>, D, &mut self.viewport_to_view_transform, decoder, offset + 32, _depth)?;
1438            Ok(())
1439        }
1440    }
1441
1442    impl MouseDeviceInfo {
1443        #[inline(always)]
1444        fn max_ordinal_present(&self) -> u64 {
1445            if let Some(_) = self.relative_motion_range {
1446                return 5;
1447            }
1448            if let Some(_) = self.buttons {
1449                return 4;
1450            }
1451            if let Some(_) = self.scroll_h_range {
1452                return 3;
1453            }
1454            if let Some(_) = self.scroll_v_range {
1455                return 2;
1456            }
1457            if let Some(_) = self.id {
1458                return 1;
1459            }
1460            0
1461        }
1462    }
1463
1464    impl fidl::encoding::ValueTypeMarker for MouseDeviceInfo {
1465        type Borrowed<'a> = &'a Self;
1466        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1467            value
1468        }
1469    }
1470
1471    unsafe impl fidl::encoding::TypeMarker for MouseDeviceInfo {
1472        type Owned = Self;
1473
1474        #[inline(always)]
1475        fn inline_align(_context: fidl::encoding::Context) -> usize {
1476            8
1477        }
1478
1479        #[inline(always)]
1480        fn inline_size(_context: fidl::encoding::Context) -> usize {
1481            16
1482        }
1483    }
1484
1485    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MouseDeviceInfo, D>
1486        for &MouseDeviceInfo
1487    {
1488        unsafe fn encode(
1489            self,
1490            encoder: &mut fidl::encoding::Encoder<'_, D>,
1491            offset: usize,
1492            mut depth: fidl::encoding::Depth,
1493        ) -> fidl::Result<()> {
1494            encoder.debug_check_bounds::<MouseDeviceInfo>(offset);
1495            let max_ordinal: u64 = self.max_ordinal_present();
1497            encoder.write_num(max_ordinal, offset);
1498            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1499            if max_ordinal == 0 {
1501                return Ok(());
1502            }
1503            depth.increment()?;
1504            let envelope_size = 8;
1505            let bytes_len = max_ordinal as usize * envelope_size;
1506            #[allow(unused_variables)]
1507            let offset = encoder.out_of_line_offset(bytes_len);
1508            let mut _prev_end_offset: usize = 0;
1509            if 1 > max_ordinal {
1510                return Ok(());
1511            }
1512
1513            let cur_offset: usize = (1 - 1) * envelope_size;
1516
1517            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1519
1520            fidl::encoding::encode_in_envelope_optional::<u32, D>(
1525                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1526                encoder,
1527                offset + cur_offset,
1528                depth,
1529            )?;
1530
1531            _prev_end_offset = cur_offset + envelope_size;
1532            if 2 > max_ordinal {
1533                return Ok(());
1534            }
1535
1536            let cur_offset: usize = (2 - 1) * envelope_size;
1539
1540            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1542
1543            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_input_report__common::Axis, D>(
1548            self.scroll_v_range.as_ref().map(<fidl_fuchsia_input_report__common::Axis as fidl::encoding::ValueTypeMarker>::borrow),
1549            encoder, offset + cur_offset, depth
1550        )?;
1551
1552            _prev_end_offset = cur_offset + envelope_size;
1553            if 3 > max_ordinal {
1554                return Ok(());
1555            }
1556
1557            let cur_offset: usize = (3 - 1) * envelope_size;
1560
1561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1563
1564            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_input_report__common::Axis, D>(
1569            self.scroll_h_range.as_ref().map(<fidl_fuchsia_input_report__common::Axis as fidl::encoding::ValueTypeMarker>::borrow),
1570            encoder, offset + cur_offset, depth
1571        )?;
1572
1573            _prev_end_offset = cur_offset + envelope_size;
1574            if 4 > max_ordinal {
1575                return Ok(());
1576            }
1577
1578            let cur_offset: usize = (4 - 1) * envelope_size;
1581
1582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1584
1585            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
1590                self.buttons.as_ref().map(
1591                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
1592                ),
1593                encoder,
1594                offset + cur_offset,
1595                depth,
1596            )?;
1597
1598            _prev_end_offset = cur_offset + envelope_size;
1599            if 5 > max_ordinal {
1600                return Ok(());
1601            }
1602
1603            let cur_offset: usize = (5 - 1) * envelope_size;
1606
1607            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1609
1610            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<fidl_fuchsia_input_report__common::Axis, 2>, D>(
1615            self.relative_motion_range.as_ref().map(<fidl::encoding::Array<fidl_fuchsia_input_report__common::Axis, 2> as fidl::encoding::ValueTypeMarker>::borrow),
1616            encoder, offset + cur_offset, depth
1617        )?;
1618
1619            _prev_end_offset = cur_offset + envelope_size;
1620
1621            Ok(())
1622        }
1623    }
1624
1625    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseDeviceInfo {
1626        #[inline(always)]
1627        fn new_empty() -> Self {
1628            Self::default()
1629        }
1630
1631        unsafe fn decode(
1632            &mut self,
1633            decoder: &mut fidl::encoding::Decoder<'_, D>,
1634            offset: usize,
1635            mut depth: fidl::encoding::Depth,
1636        ) -> fidl::Result<()> {
1637            decoder.debug_check_bounds::<Self>(offset);
1638            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1639                None => return Err(fidl::Error::NotNullable),
1640                Some(len) => len,
1641            };
1642            if len == 0 {
1644                return Ok(());
1645            };
1646            depth.increment()?;
1647            let envelope_size = 8;
1648            let bytes_len = len * envelope_size;
1649            let offset = decoder.out_of_line_offset(bytes_len)?;
1650            let mut _next_ordinal_to_read = 0;
1652            let mut next_offset = offset;
1653            let end_offset = offset + bytes_len;
1654            _next_ordinal_to_read += 1;
1655            if next_offset >= end_offset {
1656                return Ok(());
1657            }
1658
1659            while _next_ordinal_to_read < 1 {
1661                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1662                _next_ordinal_to_read += 1;
1663                next_offset += envelope_size;
1664            }
1665
1666            let next_out_of_line = decoder.next_out_of_line();
1667            let handles_before = decoder.remaining_handles();
1668            if let Some((inlined, num_bytes, num_handles)) =
1669                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1670            {
1671                let member_inline_size =
1672                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1673                if inlined != (member_inline_size <= 4) {
1674                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1675                }
1676                let inner_offset;
1677                let mut inner_depth = depth.clone();
1678                if inlined {
1679                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1680                    inner_offset = next_offset;
1681                } else {
1682                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1683                    inner_depth.increment()?;
1684                }
1685                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1686                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1687                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1688                {
1689                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1690                }
1691                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1692                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1693                }
1694            }
1695
1696            next_offset += envelope_size;
1697            _next_ordinal_to_read += 1;
1698            if next_offset >= end_offset {
1699                return Ok(());
1700            }
1701
1702            while _next_ordinal_to_read < 2 {
1704                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1705                _next_ordinal_to_read += 1;
1706                next_offset += envelope_size;
1707            }
1708
1709            let next_out_of_line = decoder.next_out_of_line();
1710            let handles_before = decoder.remaining_handles();
1711            if let Some((inlined, num_bytes, num_handles)) =
1712                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1713            {
1714                let member_inline_size = <fidl_fuchsia_input_report__common::Axis as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1715                if inlined != (member_inline_size <= 4) {
1716                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1717                }
1718                let inner_offset;
1719                let mut inner_depth = depth.clone();
1720                if inlined {
1721                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1722                    inner_offset = next_offset;
1723                } else {
1724                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1725                    inner_depth.increment()?;
1726                }
1727                let val_ref = self.scroll_v_range.get_or_insert_with(|| {
1728                    fidl::new_empty!(fidl_fuchsia_input_report__common::Axis, D)
1729                });
1730                fidl::decode!(
1731                    fidl_fuchsia_input_report__common::Axis,
1732                    D,
1733                    val_ref,
1734                    decoder,
1735                    inner_offset,
1736                    inner_depth
1737                )?;
1738                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1739                {
1740                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1741                }
1742                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1743                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1744                }
1745            }
1746
1747            next_offset += envelope_size;
1748            _next_ordinal_to_read += 1;
1749            if next_offset >= end_offset {
1750                return Ok(());
1751            }
1752
1753            while _next_ordinal_to_read < 3 {
1755                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1756                _next_ordinal_to_read += 1;
1757                next_offset += envelope_size;
1758            }
1759
1760            let next_out_of_line = decoder.next_out_of_line();
1761            let handles_before = decoder.remaining_handles();
1762            if let Some((inlined, num_bytes, num_handles)) =
1763                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1764            {
1765                let member_inline_size = <fidl_fuchsia_input_report__common::Axis as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1766                if inlined != (member_inline_size <= 4) {
1767                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1768                }
1769                let inner_offset;
1770                let mut inner_depth = depth.clone();
1771                if inlined {
1772                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1773                    inner_offset = next_offset;
1774                } else {
1775                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1776                    inner_depth.increment()?;
1777                }
1778                let val_ref = self.scroll_h_range.get_or_insert_with(|| {
1779                    fidl::new_empty!(fidl_fuchsia_input_report__common::Axis, D)
1780                });
1781                fidl::decode!(
1782                    fidl_fuchsia_input_report__common::Axis,
1783                    D,
1784                    val_ref,
1785                    decoder,
1786                    inner_offset,
1787                    inner_depth
1788                )?;
1789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1790                {
1791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1792                }
1793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1795                }
1796            }
1797
1798            next_offset += envelope_size;
1799            _next_ordinal_to_read += 1;
1800            if next_offset >= end_offset {
1801                return Ok(());
1802            }
1803
1804            while _next_ordinal_to_read < 4 {
1806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1807                _next_ordinal_to_read += 1;
1808                next_offset += envelope_size;
1809            }
1810
1811            let next_out_of_line = decoder.next_out_of_line();
1812            let handles_before = decoder.remaining_handles();
1813            if let Some((inlined, num_bytes, num_handles)) =
1814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1815            {
1816                let member_inline_size =
1817                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1818                        decoder.context,
1819                    );
1820                if inlined != (member_inline_size <= 4) {
1821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1822                }
1823                let inner_offset;
1824                let mut inner_depth = depth.clone();
1825                if inlined {
1826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1827                    inner_offset = next_offset;
1828                } else {
1829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1830                    inner_depth.increment()?;
1831                }
1832                let val_ref = self
1833                    .buttons
1834                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1835                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1837                {
1838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1839                }
1840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1842                }
1843            }
1844
1845            next_offset += envelope_size;
1846            _next_ordinal_to_read += 1;
1847            if next_offset >= end_offset {
1848                return Ok(());
1849            }
1850
1851            while _next_ordinal_to_read < 5 {
1853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1854                _next_ordinal_to_read += 1;
1855                next_offset += envelope_size;
1856            }
1857
1858            let next_out_of_line = decoder.next_out_of_line();
1859            let handles_before = decoder.remaining_handles();
1860            if let Some((inlined, num_bytes, num_handles)) =
1861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1862            {
1863                let member_inline_size = <fidl::encoding::Array<
1864                    fidl_fuchsia_input_report__common::Axis,
1865                    2,
1866                > as fidl::encoding::TypeMarker>::inline_size(
1867                    decoder.context
1868                );
1869                if inlined != (member_inline_size <= 4) {
1870                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1871                }
1872                let inner_offset;
1873                let mut inner_depth = depth.clone();
1874                if inlined {
1875                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1876                    inner_offset = next_offset;
1877                } else {
1878                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1879                    inner_depth.increment()?;
1880                }
1881                let val_ref =
1882                self.relative_motion_range.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<fidl_fuchsia_input_report__common::Axis, 2>, D));
1883                fidl::decode!(fidl::encoding::Array<fidl_fuchsia_input_report__common::Axis, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1885                {
1886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1887                }
1888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1890                }
1891            }
1892
1893            next_offset += envelope_size;
1894
1895            while next_offset < end_offset {
1897                _next_ordinal_to_read += 1;
1898                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1899                next_offset += envelope_size;
1900            }
1901
1902            Ok(())
1903        }
1904    }
1905
1906    impl MousePointerSample {
1907        #[inline(always)]
1908        fn max_ordinal_present(&self) -> u64 {
1909            if let Some(_) = self.is_precision_scroll {
1910                return 9;
1911            }
1912            if let Some(_) = self.scroll_h_physical_pixel {
1913                return 8;
1914            }
1915            if let Some(_) = self.scroll_v_physical_pixel {
1916                return 7;
1917            }
1918            if let Some(_) = self.relative_motion {
1919                return 6;
1920            }
1921            if let Some(_) = self.pressed_buttons {
1922                return 5;
1923            }
1924            if let Some(_) = self.scroll_h {
1925                return 4;
1926            }
1927            if let Some(_) = self.scroll_v {
1928                return 3;
1929            }
1930            if let Some(_) = self.position_in_viewport {
1931                return 2;
1932            }
1933            if let Some(_) = self.device_id {
1934                return 1;
1935            }
1936            0
1937        }
1938    }
1939
1940    impl fidl::encoding::ValueTypeMarker for MousePointerSample {
1941        type Borrowed<'a> = &'a Self;
1942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1943            value
1944        }
1945    }
1946
1947    unsafe impl fidl::encoding::TypeMarker for MousePointerSample {
1948        type Owned = Self;
1949
1950        #[inline(always)]
1951        fn inline_align(_context: fidl::encoding::Context) -> usize {
1952            8
1953        }
1954
1955        #[inline(always)]
1956        fn inline_size(_context: fidl::encoding::Context) -> usize {
1957            16
1958        }
1959    }
1960
1961    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MousePointerSample, D>
1962        for &MousePointerSample
1963    {
1964        unsafe fn encode(
1965            self,
1966            encoder: &mut fidl::encoding::Encoder<'_, D>,
1967            offset: usize,
1968            mut depth: fidl::encoding::Depth,
1969        ) -> fidl::Result<()> {
1970            encoder.debug_check_bounds::<MousePointerSample>(offset);
1971            let max_ordinal: u64 = self.max_ordinal_present();
1973            encoder.write_num(max_ordinal, offset);
1974            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1975            if max_ordinal == 0 {
1977                return Ok(());
1978            }
1979            depth.increment()?;
1980            let envelope_size = 8;
1981            let bytes_len = max_ordinal as usize * envelope_size;
1982            #[allow(unused_variables)]
1983            let offset = encoder.out_of_line_offset(bytes_len);
1984            let mut _prev_end_offset: usize = 0;
1985            if 1 > max_ordinal {
1986                return Ok(());
1987            }
1988
1989            let cur_offset: usize = (1 - 1) * envelope_size;
1992
1993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1995
1996            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2001                self.device_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2002                encoder,
2003                offset + cur_offset,
2004                depth,
2005            )?;
2006
2007            _prev_end_offset = cur_offset + envelope_size;
2008            if 2 > max_ordinal {
2009                return Ok(());
2010            }
2011
2012            let cur_offset: usize = (2 - 1) * envelope_size;
2015
2016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2018
2019            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2024                self.position_in_viewport.as_ref().map(
2025                    <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2026                ),
2027                encoder,
2028                offset + cur_offset,
2029                depth,
2030            )?;
2031
2032            _prev_end_offset = cur_offset + envelope_size;
2033            if 3 > max_ordinal {
2034                return Ok(());
2035            }
2036
2037            let cur_offset: usize = (3 - 1) * envelope_size;
2040
2041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2043
2044            fidl::encoding::encode_in_envelope_optional::<i64, D>(
2049                self.scroll_v.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2050                encoder,
2051                offset + cur_offset,
2052                depth,
2053            )?;
2054
2055            _prev_end_offset = cur_offset + envelope_size;
2056            if 4 > max_ordinal {
2057                return Ok(());
2058            }
2059
2060            let cur_offset: usize = (4 - 1) * envelope_size;
2063
2064            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2066
2067            fidl::encoding::encode_in_envelope_optional::<i64, D>(
2072                self.scroll_h.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2073                encoder,
2074                offset + cur_offset,
2075                depth,
2076            )?;
2077
2078            _prev_end_offset = cur_offset + envelope_size;
2079            if 5 > max_ordinal {
2080                return Ok(());
2081            }
2082
2083            let cur_offset: usize = (5 - 1) * envelope_size;
2086
2087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2089
2090            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
2095                self.pressed_buttons.as_ref().map(
2096                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
2097                ),
2098                encoder,
2099                offset + cur_offset,
2100                depth,
2101            )?;
2102
2103            _prev_end_offset = cur_offset + envelope_size;
2104            if 6 > max_ordinal {
2105                return Ok(());
2106            }
2107
2108            let cur_offset: usize = (6 - 1) * envelope_size;
2111
2112            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2114
2115            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2120                self.relative_motion.as_ref().map(
2121                    <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2122                ),
2123                encoder,
2124                offset + cur_offset,
2125                depth,
2126            )?;
2127
2128            _prev_end_offset = cur_offset + envelope_size;
2129            if 7 > max_ordinal {
2130                return Ok(());
2131            }
2132
2133            let cur_offset: usize = (7 - 1) * envelope_size;
2136
2137            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2139
2140            fidl::encoding::encode_in_envelope_optional::<f64, D>(
2145                self.scroll_v_physical_pixel
2146                    .as_ref()
2147                    .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
2148                encoder,
2149                offset + cur_offset,
2150                depth,
2151            )?;
2152
2153            _prev_end_offset = cur_offset + envelope_size;
2154            if 8 > max_ordinal {
2155                return Ok(());
2156            }
2157
2158            let cur_offset: usize = (8 - 1) * envelope_size;
2161
2162            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2164
2165            fidl::encoding::encode_in_envelope_optional::<f64, D>(
2170                self.scroll_h_physical_pixel
2171                    .as_ref()
2172                    .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
2173                encoder,
2174                offset + cur_offset,
2175                depth,
2176            )?;
2177
2178            _prev_end_offset = cur_offset + envelope_size;
2179            if 9 > max_ordinal {
2180                return Ok(());
2181            }
2182
2183            let cur_offset: usize = (9 - 1) * envelope_size;
2186
2187            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2189
2190            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2195                self.is_precision_scroll
2196                    .as_ref()
2197                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2198                encoder,
2199                offset + cur_offset,
2200                depth,
2201            )?;
2202
2203            _prev_end_offset = cur_offset + envelope_size;
2204
2205            Ok(())
2206        }
2207    }
2208
2209    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MousePointerSample {
2210        #[inline(always)]
2211        fn new_empty() -> Self {
2212            Self::default()
2213        }
2214
2215        unsafe fn decode(
2216            &mut self,
2217            decoder: &mut fidl::encoding::Decoder<'_, D>,
2218            offset: usize,
2219            mut depth: fidl::encoding::Depth,
2220        ) -> fidl::Result<()> {
2221            decoder.debug_check_bounds::<Self>(offset);
2222            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2223                None => return Err(fidl::Error::NotNullable),
2224                Some(len) => len,
2225            };
2226            if len == 0 {
2228                return Ok(());
2229            };
2230            depth.increment()?;
2231            let envelope_size = 8;
2232            let bytes_len = len * envelope_size;
2233            let offset = decoder.out_of_line_offset(bytes_len)?;
2234            let mut _next_ordinal_to_read = 0;
2236            let mut next_offset = offset;
2237            let end_offset = offset + bytes_len;
2238            _next_ordinal_to_read += 1;
2239            if next_offset >= end_offset {
2240                return Ok(());
2241            }
2242
2243            while _next_ordinal_to_read < 1 {
2245                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2246                _next_ordinal_to_read += 1;
2247                next_offset += envelope_size;
2248            }
2249
2250            let next_out_of_line = decoder.next_out_of_line();
2251            let handles_before = decoder.remaining_handles();
2252            if let Some((inlined, num_bytes, num_handles)) =
2253                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2254            {
2255                let member_inline_size =
2256                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2257                if inlined != (member_inline_size <= 4) {
2258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2259                }
2260                let inner_offset;
2261                let mut inner_depth = depth.clone();
2262                if inlined {
2263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2264                    inner_offset = next_offset;
2265                } else {
2266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2267                    inner_depth.increment()?;
2268                }
2269                let val_ref = self.device_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2270                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2272                {
2273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2274                }
2275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2277                }
2278            }
2279
2280            next_offset += envelope_size;
2281            _next_ordinal_to_read += 1;
2282            if next_offset >= end_offset {
2283                return Ok(());
2284            }
2285
2286            while _next_ordinal_to_read < 2 {
2288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2289                _next_ordinal_to_read += 1;
2290                next_offset += envelope_size;
2291            }
2292
2293            let next_out_of_line = decoder.next_out_of_line();
2294            let handles_before = decoder.remaining_handles();
2295            if let Some((inlined, num_bytes, num_handles)) =
2296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2297            {
2298                let member_inline_size =
2299                    <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
2300                        decoder.context,
2301                    );
2302                if inlined != (member_inline_size <= 4) {
2303                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2304                }
2305                let inner_offset;
2306                let mut inner_depth = depth.clone();
2307                if inlined {
2308                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2309                    inner_offset = next_offset;
2310                } else {
2311                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2312                    inner_depth.increment()?;
2313                }
2314                let val_ref = self
2315                    .position_in_viewport
2316                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
2317                fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
2318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2319                {
2320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2321                }
2322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2324                }
2325            }
2326
2327            next_offset += envelope_size;
2328            _next_ordinal_to_read += 1;
2329            if next_offset >= end_offset {
2330                return Ok(());
2331            }
2332
2333            while _next_ordinal_to_read < 3 {
2335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2336                _next_ordinal_to_read += 1;
2337                next_offset += envelope_size;
2338            }
2339
2340            let next_out_of_line = decoder.next_out_of_line();
2341            let handles_before = decoder.remaining_handles();
2342            if let Some((inlined, num_bytes, num_handles)) =
2343                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2344            {
2345                let member_inline_size =
2346                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2347                if inlined != (member_inline_size <= 4) {
2348                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2349                }
2350                let inner_offset;
2351                let mut inner_depth = depth.clone();
2352                if inlined {
2353                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2354                    inner_offset = next_offset;
2355                } else {
2356                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2357                    inner_depth.increment()?;
2358                }
2359                let val_ref = self.scroll_v.get_or_insert_with(|| fidl::new_empty!(i64, D));
2360                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2361                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2362                {
2363                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2364                }
2365                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2366                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2367                }
2368            }
2369
2370            next_offset += envelope_size;
2371            _next_ordinal_to_read += 1;
2372            if next_offset >= end_offset {
2373                return Ok(());
2374            }
2375
2376            while _next_ordinal_to_read < 4 {
2378                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2379                _next_ordinal_to_read += 1;
2380                next_offset += envelope_size;
2381            }
2382
2383            let next_out_of_line = decoder.next_out_of_line();
2384            let handles_before = decoder.remaining_handles();
2385            if let Some((inlined, num_bytes, num_handles)) =
2386                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2387            {
2388                let member_inline_size =
2389                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2390                if inlined != (member_inline_size <= 4) {
2391                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2392                }
2393                let inner_offset;
2394                let mut inner_depth = depth.clone();
2395                if inlined {
2396                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2397                    inner_offset = next_offset;
2398                } else {
2399                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2400                    inner_depth.increment()?;
2401                }
2402                let val_ref = self.scroll_h.get_or_insert_with(|| fidl::new_empty!(i64, D));
2403                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2404                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2405                {
2406                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2407                }
2408                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2409                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2410                }
2411            }
2412
2413            next_offset += envelope_size;
2414            _next_ordinal_to_read += 1;
2415            if next_offset >= end_offset {
2416                return Ok(());
2417            }
2418
2419            while _next_ordinal_to_read < 5 {
2421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2422                _next_ordinal_to_read += 1;
2423                next_offset += envelope_size;
2424            }
2425
2426            let next_out_of_line = decoder.next_out_of_line();
2427            let handles_before = decoder.remaining_handles();
2428            if let Some((inlined, num_bytes, num_handles)) =
2429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2430            {
2431                let member_inline_size =
2432                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
2433                        decoder.context,
2434                    );
2435                if inlined != (member_inline_size <= 4) {
2436                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2437                }
2438                let inner_offset;
2439                let mut inner_depth = depth.clone();
2440                if inlined {
2441                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2442                    inner_offset = next_offset;
2443                } else {
2444                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2445                    inner_depth.increment()?;
2446                }
2447                let val_ref = self
2448                    .pressed_buttons
2449                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
2450                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2452                {
2453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2454                }
2455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2457                }
2458            }
2459
2460            next_offset += envelope_size;
2461            _next_ordinal_to_read += 1;
2462            if next_offset >= end_offset {
2463                return Ok(());
2464            }
2465
2466            while _next_ordinal_to_read < 6 {
2468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2469                _next_ordinal_to_read += 1;
2470                next_offset += envelope_size;
2471            }
2472
2473            let next_out_of_line = decoder.next_out_of_line();
2474            let handles_before = decoder.remaining_handles();
2475            if let Some((inlined, num_bytes, num_handles)) =
2476                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2477            {
2478                let member_inline_size =
2479                    <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
2480                        decoder.context,
2481                    );
2482                if inlined != (member_inline_size <= 4) {
2483                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2484                }
2485                let inner_offset;
2486                let mut inner_depth = depth.clone();
2487                if inlined {
2488                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2489                    inner_offset = next_offset;
2490                } else {
2491                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2492                    inner_depth.increment()?;
2493                }
2494                let val_ref = self
2495                    .relative_motion
2496                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
2497                fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
2498                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2499                {
2500                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2501                }
2502                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2503                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2504                }
2505            }
2506
2507            next_offset += envelope_size;
2508            _next_ordinal_to_read += 1;
2509            if next_offset >= end_offset {
2510                return Ok(());
2511            }
2512
2513            while _next_ordinal_to_read < 7 {
2515                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2516                _next_ordinal_to_read += 1;
2517                next_offset += envelope_size;
2518            }
2519
2520            let next_out_of_line = decoder.next_out_of_line();
2521            let handles_before = decoder.remaining_handles();
2522            if let Some((inlined, num_bytes, num_handles)) =
2523                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2524            {
2525                let member_inline_size =
2526                    <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2527                if inlined != (member_inline_size <= 4) {
2528                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2529                }
2530                let inner_offset;
2531                let mut inner_depth = depth.clone();
2532                if inlined {
2533                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2534                    inner_offset = next_offset;
2535                } else {
2536                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2537                    inner_depth.increment()?;
2538                }
2539                let val_ref =
2540                    self.scroll_v_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
2541                fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
2542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2543                {
2544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2545                }
2546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2548                }
2549            }
2550
2551            next_offset += envelope_size;
2552            _next_ordinal_to_read += 1;
2553            if next_offset >= end_offset {
2554                return Ok(());
2555            }
2556
2557            while _next_ordinal_to_read < 8 {
2559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2560                _next_ordinal_to_read += 1;
2561                next_offset += envelope_size;
2562            }
2563
2564            let next_out_of_line = decoder.next_out_of_line();
2565            let handles_before = decoder.remaining_handles();
2566            if let Some((inlined, num_bytes, num_handles)) =
2567                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2568            {
2569                let member_inline_size =
2570                    <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2571                if inlined != (member_inline_size <= 4) {
2572                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2573                }
2574                let inner_offset;
2575                let mut inner_depth = depth.clone();
2576                if inlined {
2577                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2578                    inner_offset = next_offset;
2579                } else {
2580                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2581                    inner_depth.increment()?;
2582                }
2583                let val_ref =
2584                    self.scroll_h_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
2585                fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
2586                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2587                {
2588                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2589                }
2590                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2591                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2592                }
2593            }
2594
2595            next_offset += envelope_size;
2596            _next_ordinal_to_read += 1;
2597            if next_offset >= end_offset {
2598                return Ok(());
2599            }
2600
2601            while _next_ordinal_to_read < 9 {
2603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2604                _next_ordinal_to_read += 1;
2605                next_offset += envelope_size;
2606            }
2607
2608            let next_out_of_line = decoder.next_out_of_line();
2609            let handles_before = decoder.remaining_handles();
2610            if let Some((inlined, num_bytes, num_handles)) =
2611                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2612            {
2613                let member_inline_size =
2614                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2615                if inlined != (member_inline_size <= 4) {
2616                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2617                }
2618                let inner_offset;
2619                let mut inner_depth = depth.clone();
2620                if inlined {
2621                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2622                    inner_offset = next_offset;
2623                } else {
2624                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2625                    inner_depth.increment()?;
2626                }
2627                let val_ref =
2628                    self.is_precision_scroll.get_or_insert_with(|| fidl::new_empty!(bool, D));
2629                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2630                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2631                {
2632                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2633                }
2634                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2635                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2636                }
2637            }
2638
2639            next_offset += envelope_size;
2640
2641            while next_offset < end_offset {
2643                _next_ordinal_to_read += 1;
2644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2645                next_offset += envelope_size;
2646            }
2647
2648            Ok(())
2649        }
2650    }
2651
2652    impl TouchDeviceInfo {
2653        #[inline(always)]
2654        fn max_ordinal_present(&self) -> u64 {
2655            if let Some(_) = self.id {
2656                return 1;
2657            }
2658            0
2659        }
2660    }
2661
2662    impl fidl::encoding::ValueTypeMarker for TouchDeviceInfo {
2663        type Borrowed<'a> = &'a Self;
2664        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2665            value
2666        }
2667    }
2668
2669    unsafe impl fidl::encoding::TypeMarker for TouchDeviceInfo {
2670        type Owned = Self;
2671
2672        #[inline(always)]
2673        fn inline_align(_context: fidl::encoding::Context) -> usize {
2674            8
2675        }
2676
2677        #[inline(always)]
2678        fn inline_size(_context: fidl::encoding::Context) -> usize {
2679            16
2680        }
2681    }
2682
2683    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchDeviceInfo, D>
2684        for &TouchDeviceInfo
2685    {
2686        unsafe fn encode(
2687            self,
2688            encoder: &mut fidl::encoding::Encoder<'_, D>,
2689            offset: usize,
2690            mut depth: fidl::encoding::Depth,
2691        ) -> fidl::Result<()> {
2692            encoder.debug_check_bounds::<TouchDeviceInfo>(offset);
2693            let max_ordinal: u64 = self.max_ordinal_present();
2695            encoder.write_num(max_ordinal, offset);
2696            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2697            if max_ordinal == 0 {
2699                return Ok(());
2700            }
2701            depth.increment()?;
2702            let envelope_size = 8;
2703            let bytes_len = max_ordinal as usize * envelope_size;
2704            #[allow(unused_variables)]
2705            let offset = encoder.out_of_line_offset(bytes_len);
2706            let mut _prev_end_offset: usize = 0;
2707            if 1 > max_ordinal {
2708                return Ok(());
2709            }
2710
2711            let cur_offset: usize = (1 - 1) * envelope_size;
2714
2715            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2717
2718            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2723                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2724                encoder,
2725                offset + cur_offset,
2726                depth,
2727            )?;
2728
2729            _prev_end_offset = cur_offset + envelope_size;
2730
2731            Ok(())
2732        }
2733    }
2734
2735    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchDeviceInfo {
2736        #[inline(always)]
2737        fn new_empty() -> Self {
2738            Self::default()
2739        }
2740
2741        unsafe fn decode(
2742            &mut self,
2743            decoder: &mut fidl::encoding::Decoder<'_, D>,
2744            offset: usize,
2745            mut depth: fidl::encoding::Depth,
2746        ) -> fidl::Result<()> {
2747            decoder.debug_check_bounds::<Self>(offset);
2748            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2749                None => return Err(fidl::Error::NotNullable),
2750                Some(len) => len,
2751            };
2752            if len == 0 {
2754                return Ok(());
2755            };
2756            depth.increment()?;
2757            let envelope_size = 8;
2758            let bytes_len = len * envelope_size;
2759            let offset = decoder.out_of_line_offset(bytes_len)?;
2760            let mut _next_ordinal_to_read = 0;
2762            let mut next_offset = offset;
2763            let end_offset = offset + bytes_len;
2764            _next_ordinal_to_read += 1;
2765            if next_offset >= end_offset {
2766                return Ok(());
2767            }
2768
2769            while _next_ordinal_to_read < 1 {
2771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2772                _next_ordinal_to_read += 1;
2773                next_offset += envelope_size;
2774            }
2775
2776            let next_out_of_line = decoder.next_out_of_line();
2777            let handles_before = decoder.remaining_handles();
2778            if let Some((inlined, num_bytes, num_handles)) =
2779                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2780            {
2781                let member_inline_size =
2782                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2783                if inlined != (member_inline_size <= 4) {
2784                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2785                }
2786                let inner_offset;
2787                let mut inner_depth = depth.clone();
2788                if inlined {
2789                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2790                    inner_offset = next_offset;
2791                } else {
2792                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2793                    inner_depth.increment()?;
2794                }
2795                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2796                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2798                {
2799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2800                }
2801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2803                }
2804            }
2805
2806            next_offset += envelope_size;
2807
2808            while next_offset < end_offset {
2810                _next_ordinal_to_read += 1;
2811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2812                next_offset += envelope_size;
2813            }
2814
2815            Ok(())
2816        }
2817    }
2818
2819    impl TouchPointerSample {
2820        #[inline(always)]
2821        fn max_ordinal_present(&self) -> u64 {
2822            if let Some(_) = self.position_in_viewport {
2823                return 3;
2824            }
2825            if let Some(_) = self.phase {
2826                return 2;
2827            }
2828            if let Some(_) = self.interaction {
2829                return 1;
2830            }
2831            0
2832        }
2833    }
2834
2835    impl fidl::encoding::ValueTypeMarker for TouchPointerSample {
2836        type Borrowed<'a> = &'a Self;
2837        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2838            value
2839        }
2840    }
2841
2842    unsafe impl fidl::encoding::TypeMarker for TouchPointerSample {
2843        type Owned = Self;
2844
2845        #[inline(always)]
2846        fn inline_align(_context: fidl::encoding::Context) -> usize {
2847            8
2848        }
2849
2850        #[inline(always)]
2851        fn inline_size(_context: fidl::encoding::Context) -> usize {
2852            16
2853        }
2854    }
2855
2856    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchPointerSample, D>
2857        for &TouchPointerSample
2858    {
2859        unsafe fn encode(
2860            self,
2861            encoder: &mut fidl::encoding::Encoder<'_, D>,
2862            offset: usize,
2863            mut depth: fidl::encoding::Depth,
2864        ) -> fidl::Result<()> {
2865            encoder.debug_check_bounds::<TouchPointerSample>(offset);
2866            let max_ordinal: u64 = self.max_ordinal_present();
2868            encoder.write_num(max_ordinal, offset);
2869            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2870            if max_ordinal == 0 {
2872                return Ok(());
2873            }
2874            depth.increment()?;
2875            let envelope_size = 8;
2876            let bytes_len = max_ordinal as usize * envelope_size;
2877            #[allow(unused_variables)]
2878            let offset = encoder.out_of_line_offset(bytes_len);
2879            let mut _prev_end_offset: usize = 0;
2880            if 1 > max_ordinal {
2881                return Ok(());
2882            }
2883
2884            let cur_offset: usize = (1 - 1) * envelope_size;
2887
2888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2890
2891            fidl::encoding::encode_in_envelope_optional::<TouchInteractionId, D>(
2896                self.interaction
2897                    .as_ref()
2898                    .map(<TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow),
2899                encoder,
2900                offset + cur_offset,
2901                depth,
2902            )?;
2903
2904            _prev_end_offset = cur_offset + envelope_size;
2905            if 2 > max_ordinal {
2906                return Ok(());
2907            }
2908
2909            let cur_offset: usize = (2 - 1) * envelope_size;
2912
2913            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2915
2916            fidl::encoding::encode_in_envelope_optional::<EventPhase, D>(
2921                self.phase.as_ref().map(<EventPhase as fidl::encoding::ValueTypeMarker>::borrow),
2922                encoder,
2923                offset + cur_offset,
2924                depth,
2925            )?;
2926
2927            _prev_end_offset = cur_offset + envelope_size;
2928            if 3 > max_ordinal {
2929                return Ok(());
2930            }
2931
2932            let cur_offset: usize = (3 - 1) * envelope_size;
2935
2936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2938
2939            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2944                self.position_in_viewport.as_ref().map(
2945                    <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2946                ),
2947                encoder,
2948                offset + cur_offset,
2949                depth,
2950            )?;
2951
2952            _prev_end_offset = cur_offset + envelope_size;
2953
2954            Ok(())
2955        }
2956    }
2957
2958    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchPointerSample {
2959        #[inline(always)]
2960        fn new_empty() -> Self {
2961            Self::default()
2962        }
2963
2964        unsafe fn decode(
2965            &mut self,
2966            decoder: &mut fidl::encoding::Decoder<'_, D>,
2967            offset: usize,
2968            mut depth: fidl::encoding::Depth,
2969        ) -> fidl::Result<()> {
2970            decoder.debug_check_bounds::<Self>(offset);
2971            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2972                None => return Err(fidl::Error::NotNullable),
2973                Some(len) => len,
2974            };
2975            if len == 0 {
2977                return Ok(());
2978            };
2979            depth.increment()?;
2980            let envelope_size = 8;
2981            let bytes_len = len * envelope_size;
2982            let offset = decoder.out_of_line_offset(bytes_len)?;
2983            let mut _next_ordinal_to_read = 0;
2985            let mut next_offset = offset;
2986            let end_offset = offset + bytes_len;
2987            _next_ordinal_to_read += 1;
2988            if next_offset >= end_offset {
2989                return Ok(());
2990            }
2991
2992            while _next_ordinal_to_read < 1 {
2994                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2995                _next_ordinal_to_read += 1;
2996                next_offset += envelope_size;
2997            }
2998
2999            let next_out_of_line = decoder.next_out_of_line();
3000            let handles_before = decoder.remaining_handles();
3001            if let Some((inlined, num_bytes, num_handles)) =
3002                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3003            {
3004                let member_inline_size =
3005                    <TouchInteractionId as fidl::encoding::TypeMarker>::inline_size(
3006                        decoder.context,
3007                    );
3008                if inlined != (member_inline_size <= 4) {
3009                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3010                }
3011                let inner_offset;
3012                let mut inner_depth = depth.clone();
3013                if inlined {
3014                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3015                    inner_offset = next_offset;
3016                } else {
3017                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3018                    inner_depth.increment()?;
3019                }
3020                let val_ref =
3021                    self.interaction.get_or_insert_with(|| fidl::new_empty!(TouchInteractionId, D));
3022                fidl::decode!(TouchInteractionId, D, val_ref, decoder, inner_offset, inner_depth)?;
3023                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3024                {
3025                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3026                }
3027                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3028                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3029                }
3030            }
3031
3032            next_offset += envelope_size;
3033            _next_ordinal_to_read += 1;
3034            if next_offset >= end_offset {
3035                return Ok(());
3036            }
3037
3038            while _next_ordinal_to_read < 2 {
3040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3041                _next_ordinal_to_read += 1;
3042                next_offset += envelope_size;
3043            }
3044
3045            let next_out_of_line = decoder.next_out_of_line();
3046            let handles_before = decoder.remaining_handles();
3047            if let Some((inlined, num_bytes, num_handles)) =
3048                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3049            {
3050                let member_inline_size =
3051                    <EventPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3052                if inlined != (member_inline_size <= 4) {
3053                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3054                }
3055                let inner_offset;
3056                let mut inner_depth = depth.clone();
3057                if inlined {
3058                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3059                    inner_offset = next_offset;
3060                } else {
3061                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3062                    inner_depth.increment()?;
3063                }
3064                let val_ref = self.phase.get_or_insert_with(|| fidl::new_empty!(EventPhase, D));
3065                fidl::decode!(EventPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
3066                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3067                {
3068                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3069                }
3070                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3071                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3072                }
3073            }
3074
3075            next_offset += envelope_size;
3076            _next_ordinal_to_read += 1;
3077            if next_offset >= end_offset {
3078                return Ok(());
3079            }
3080
3081            while _next_ordinal_to_read < 3 {
3083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3084                _next_ordinal_to_read += 1;
3085                next_offset += envelope_size;
3086            }
3087
3088            let next_out_of_line = decoder.next_out_of_line();
3089            let handles_before = decoder.remaining_handles();
3090            if let Some((inlined, num_bytes, num_handles)) =
3091                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3092            {
3093                let member_inline_size =
3094                    <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
3095                        decoder.context,
3096                    );
3097                if inlined != (member_inline_size <= 4) {
3098                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3099                }
3100                let inner_offset;
3101                let mut inner_depth = depth.clone();
3102                if inlined {
3103                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3104                    inner_offset = next_offset;
3105                } else {
3106                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3107                    inner_depth.increment()?;
3108                }
3109                let val_ref = self
3110                    .position_in_viewport
3111                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
3112                fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
3113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3114                {
3115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3116                }
3117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3119                }
3120            }
3121
3122            next_offset += envelope_size;
3123
3124            while next_offset < end_offset {
3126                _next_ordinal_to_read += 1;
3127                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3128                next_offset += envelope_size;
3129            }
3130
3131            Ok(())
3132        }
3133    }
3134
3135    impl TouchResponse {
3136        #[inline(always)]
3137        fn max_ordinal_present(&self) -> u64 {
3138            if let Some(_) = self.trace_flow_id {
3139                return 2;
3140            }
3141            if let Some(_) = self.response_type {
3142                return 1;
3143            }
3144            0
3145        }
3146    }
3147
3148    impl fidl::encoding::ValueTypeMarker for TouchResponse {
3149        type Borrowed<'a> = &'a Self;
3150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3151            value
3152        }
3153    }
3154
3155    unsafe impl fidl::encoding::TypeMarker for TouchResponse {
3156        type Owned = Self;
3157
3158        #[inline(always)]
3159        fn inline_align(_context: fidl::encoding::Context) -> usize {
3160            8
3161        }
3162
3163        #[inline(always)]
3164        fn inline_size(_context: fidl::encoding::Context) -> usize {
3165            16
3166        }
3167    }
3168
3169    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchResponse, D>
3170        for &TouchResponse
3171    {
3172        unsafe fn encode(
3173            self,
3174            encoder: &mut fidl::encoding::Encoder<'_, D>,
3175            offset: usize,
3176            mut depth: fidl::encoding::Depth,
3177        ) -> fidl::Result<()> {
3178            encoder.debug_check_bounds::<TouchResponse>(offset);
3179            let max_ordinal: u64 = self.max_ordinal_present();
3181            encoder.write_num(max_ordinal, offset);
3182            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3183            if max_ordinal == 0 {
3185                return Ok(());
3186            }
3187            depth.increment()?;
3188            let envelope_size = 8;
3189            let bytes_len = max_ordinal as usize * envelope_size;
3190            #[allow(unused_variables)]
3191            let offset = encoder.out_of_line_offset(bytes_len);
3192            let mut _prev_end_offset: usize = 0;
3193            if 1 > max_ordinal {
3194                return Ok(());
3195            }
3196
3197            let cur_offset: usize = (1 - 1) * envelope_size;
3200
3201            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3203
3204            fidl::encoding::encode_in_envelope_optional::<TouchResponseType, D>(
3209                self.response_type
3210                    .as_ref()
3211                    .map(<TouchResponseType as fidl::encoding::ValueTypeMarker>::borrow),
3212                encoder,
3213                offset + cur_offset,
3214                depth,
3215            )?;
3216
3217            _prev_end_offset = cur_offset + envelope_size;
3218            if 2 > max_ordinal {
3219                return Ok(());
3220            }
3221
3222            let cur_offset: usize = (2 - 1) * envelope_size;
3225
3226            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3228
3229            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3234                self.trace_flow_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3235                encoder,
3236                offset + cur_offset,
3237                depth,
3238            )?;
3239
3240            _prev_end_offset = cur_offset + envelope_size;
3241
3242            Ok(())
3243        }
3244    }
3245
3246    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchResponse {
3247        #[inline(always)]
3248        fn new_empty() -> Self {
3249            Self::default()
3250        }
3251
3252        unsafe fn decode(
3253            &mut self,
3254            decoder: &mut fidl::encoding::Decoder<'_, D>,
3255            offset: usize,
3256            mut depth: fidl::encoding::Depth,
3257        ) -> fidl::Result<()> {
3258            decoder.debug_check_bounds::<Self>(offset);
3259            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3260                None => return Err(fidl::Error::NotNullable),
3261                Some(len) => len,
3262            };
3263            if len == 0 {
3265                return Ok(());
3266            };
3267            depth.increment()?;
3268            let envelope_size = 8;
3269            let bytes_len = len * envelope_size;
3270            let offset = decoder.out_of_line_offset(bytes_len)?;
3271            let mut _next_ordinal_to_read = 0;
3273            let mut next_offset = offset;
3274            let end_offset = offset + bytes_len;
3275            _next_ordinal_to_read += 1;
3276            if next_offset >= end_offset {
3277                return Ok(());
3278            }
3279
3280            while _next_ordinal_to_read < 1 {
3282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3283                _next_ordinal_to_read += 1;
3284                next_offset += envelope_size;
3285            }
3286
3287            let next_out_of_line = decoder.next_out_of_line();
3288            let handles_before = decoder.remaining_handles();
3289            if let Some((inlined, num_bytes, num_handles)) =
3290                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3291            {
3292                let member_inline_size =
3293                    <TouchResponseType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3294                if inlined != (member_inline_size <= 4) {
3295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3296                }
3297                let inner_offset;
3298                let mut inner_depth = depth.clone();
3299                if inlined {
3300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3301                    inner_offset = next_offset;
3302                } else {
3303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3304                    inner_depth.increment()?;
3305                }
3306                let val_ref = self
3307                    .response_type
3308                    .get_or_insert_with(|| fidl::new_empty!(TouchResponseType, D));
3309                fidl::decode!(TouchResponseType, D, val_ref, decoder, inner_offset, inner_depth)?;
3310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3311                {
3312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3313                }
3314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3316                }
3317            }
3318
3319            next_offset += envelope_size;
3320            _next_ordinal_to_read += 1;
3321            if next_offset >= end_offset {
3322                return Ok(());
3323            }
3324
3325            while _next_ordinal_to_read < 2 {
3327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3328                _next_ordinal_to_read += 1;
3329                next_offset += envelope_size;
3330            }
3331
3332            let next_out_of_line = decoder.next_out_of_line();
3333            let handles_before = decoder.remaining_handles();
3334            if let Some((inlined, num_bytes, num_handles)) =
3335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3336            {
3337                let member_inline_size =
3338                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3339                if inlined != (member_inline_size <= 4) {
3340                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3341                }
3342                let inner_offset;
3343                let mut inner_depth = depth.clone();
3344                if inlined {
3345                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3346                    inner_offset = next_offset;
3347                } else {
3348                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3349                    inner_depth.increment()?;
3350                }
3351                let val_ref = self.trace_flow_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3352                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3353                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3354                {
3355                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3356                }
3357                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3358                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3359                }
3360            }
3361
3362            next_offset += envelope_size;
3363
3364            while next_offset < end_offset {
3366                _next_ordinal_to_read += 1;
3367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3368                next_offset += envelope_size;
3369            }
3370
3371            Ok(())
3372        }
3373    }
3374}