fidl_fuchsia_wlan_policy_common/
fidl_fuchsia_wlan_policy_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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
11/// High level compatibility for the scan result.  Not all network security protocols
12/// are supported.  New protocols may be detected before they are connectable
13/// and deprecated protocols may explicitly be unsupported due to security and
14/// privacy concerns.
15#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
16#[repr(u32)]
17pub enum Compatibility {
18    /// Denotes that the network is supported and connections can be attempted (given
19    /// appropriate credentials when required).
20    Supported = 1,
21    /// The network uses a deprecated security protocol and is explicitly not supported.
22    DisallowedInsecure = 2,
23    /// The network uses a currently unsupported security protocol.
24    DisallowedNotSupported = 3,
25}
26
27impl Compatibility {
28    #[inline]
29    pub fn from_primitive(prim: u32) -> Option<Self> {
30        match prim {
31            1 => Some(Self::Supported),
32            2 => Some(Self::DisallowedInsecure),
33            3 => Some(Self::DisallowedNotSupported),
34            _ => None,
35        }
36    }
37
38    #[inline]
39    pub const fn into_primitive(self) -> u32 {
40        self as u32
41    }
42}
43
44/// Connection states used to update registered wlan observers.
45#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
46#[repr(u32)]
47pub enum ConnectionState {
48    /// The connection attempt was terminated due to an error.
49    Failed = 1,
50    /// The network is disconnected.
51    Disconnected = 2,
52    /// The device is attempting a connection to a network.
53    Connecting = 3,
54    /// The connection is now established.  Note: This does not make any guarantees
55    /// about higher level network reachability.
56    Connected = 4,
57}
58
59impl ConnectionState {
60    #[inline]
61    pub fn from_primitive(prim: u32) -> Option<Self> {
62        match prim {
63            1 => Some(Self::Failed),
64            2 => Some(Self::Disconnected),
65            3 => Some(Self::Connecting),
66            4 => Some(Self::Connected),
67            _ => None,
68        }
69    }
70
71    #[inline]
72    pub const fn into_primitive(self) -> u32 {
73        self as u32
74    }
75}
76
77/// Connectivity operating mode for the access point.
78#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
79#[repr(u32)]
80pub enum ConnectivityMode {
81    /// Allows for connectivity between co-located devices.  Local only access points do not
82    /// forward traffic to other network connections.
83    LocalOnly = 1,
84    /// Allows for full connectivity with traffic potentially being forwarded
85    /// to other network connections (ex., tethering mode).
86    Unrestricted = 2,
87}
88
89impl ConnectivityMode {
90    #[inline]
91    pub fn from_primitive(prim: u32) -> Option<Self> {
92        match prim {
93            1 => Some(Self::LocalOnly),
94            2 => Some(Self::Unrestricted),
95            _ => None,
96        }
97    }
98
99    #[inline]
100    pub const fn into_primitive(self) -> u32 {
101        self as u32
102    }
103}
104
105/// Disconnect and connection attempt failure status codes
106#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
107#[repr(u32)]
108pub enum DisconnectStatus {
109    /// The requested connection attempt failed due to timeout.
110    TimedOut = 1,
111    /// The requested connection attempt failed due to suspected credential failure.
112    CredentialsFailed = 2,
113    /// The existing connection was explicitly disconnected by an action of wlan
114    /// service on this device.  This can be the result of wlan connections being
115    /// disabled, network configuration being removed or a connection attempt to a
116    /// different network (as examples).
117    ConnectionStopped = 3,
118    /// The existing connection failed unexpectedly in a way that is not an
119    /// explicitly triggered disconnect by the device (or user).  Examples
120    /// of unexpected disconnections include: an underlying error (driver,
121    /// firmware, etc.), beacon loss, access point failure.
122    ConnectionFailed = 4,
123}
124
125impl DisconnectStatus {
126    #[inline]
127    pub fn from_primitive(prim: u32) -> Option<Self> {
128        match prim {
129            1 => Some(Self::TimedOut),
130            2 => Some(Self::CredentialsFailed),
131            3 => Some(Self::ConnectionStopped),
132            4 => Some(Self::ConnectionFailed),
133            _ => None,
134        }
135    }
136
137    #[inline]
138    pub const fn into_primitive(self) -> u32 {
139        self as u32
140    }
141}
142
143/// Potential error cases for saving and removing network configurations.
144#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
145#[repr(u32)]
146pub enum NetworkConfigChangeError {
147    GeneralError = 1,
148    NetworkConfigMissingFieldError = 2,
149    NetworkConfigWriteError = 3,
150    SsidEmptyError = 4,
151    CredentialLenError = 6,
152    InvalidSecurityCredentialError = 7,
153    UnsupportedCredentialError = 8,
154}
155
156impl NetworkConfigChangeError {
157    #[inline]
158    pub fn from_primitive(prim: u32) -> Option<Self> {
159        match prim {
160            1 => Some(Self::GeneralError),
161            2 => Some(Self::NetworkConfigMissingFieldError),
162            3 => Some(Self::NetworkConfigWriteError),
163            4 => Some(Self::SsidEmptyError),
164            6 => Some(Self::CredentialLenError),
165            7 => Some(Self::InvalidSecurityCredentialError),
166            8 => Some(Self::UnsupportedCredentialError),
167            _ => None,
168        }
169    }
170
171    #[inline]
172    pub const fn into_primitive(self) -> u32 {
173        self as u32
174    }
175}
176
177/// Operating band for wlan control request and status updates.
178#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
179#[repr(u32)]
180pub enum OperatingBand {
181    /// Allows for band switching depending on device operating mode and environment.
182    Any = 1,
183    /// Restricted to 2.4 GHz bands only.
184    Only24Ghz = 2,
185    /// Restricted to 5 GHz bands only.
186    Only5Ghz = 3,
187}
188
189impl OperatingBand {
190    #[inline]
191    pub fn from_primitive(prim: u32) -> Option<Self> {
192        match prim {
193            1 => Some(Self::Any),
194            2 => Some(Self::Only24Ghz),
195            3 => Some(Self::Only5Ghz),
196            _ => None,
197        }
198    }
199
200    #[inline]
201    pub const fn into_primitive(self) -> u32 {
202        self as u32
203    }
204}
205
206/// Current detailed operating state for an access point.
207#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
208#[repr(u32)]
209pub enum OperatingState {
210    /// Access point operation failed.  Access points that enter the failed state will
211    /// have one update informing registered listeners of the failure and then an
212    /// additional update with the access point removed from the list.
213    Failed = 1,
214    /// Access point operation is starting up.
215    Starting = 2,
216    /// Access point operation is active.
217    Active = 3,
218}
219
220impl OperatingState {
221    #[inline]
222    pub fn from_primitive(prim: u32) -> Option<Self> {
223        match prim {
224            1 => Some(Self::Failed),
225            2 => Some(Self::Starting),
226            3 => Some(Self::Active),
227            _ => None,
228        }
229    }
230
231    #[inline]
232    pub const fn into_primitive(self) -> u32 {
233        self as u32
234    }
235}
236
237#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
238#[repr(u32)]
239pub enum RequestStatus {
240    Acknowledged = 0,
241    RejectedNotSupported = 1,
242    RejectedIncompatibleMode = 2,
243    RejectedAlreadyInUse = 3,
244    RejectedDuplicateRequest = 4,
245}
246
247impl RequestStatus {
248    #[inline]
249    pub fn from_primitive(prim: u32) -> Option<Self> {
250        match prim {
251            0 => Some(Self::Acknowledged),
252            1 => Some(Self::RejectedNotSupported),
253            2 => Some(Self::RejectedIncompatibleMode),
254            3 => Some(Self::RejectedAlreadyInUse),
255            4 => Some(Self::RejectedDuplicateRequest),
256            _ => None,
257        }
258    }
259
260    #[inline]
261    pub const fn into_primitive(self) -> u32 {
262        self as u32
263    }
264}
265
266/// Wlan scan error codes.
267#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
268#[repr(u32)]
269pub enum ScanErrorCode {
270    /// Unexpected scan error without a specific cause.
271    GeneralError = 1,
272    /// Scan was cancelled and stopped.  This can happen due to operating state changes,
273    /// higher priority operations or conflicting requests.
274    Cancelled = 2,
275}
276
277impl ScanErrorCode {
278    #[inline]
279    pub fn from_primitive(prim: u32) -> Option<Self> {
280        match prim {
281            1 => Some(Self::GeneralError),
282            2 => Some(Self::Cancelled),
283            _ => None,
284        }
285    }
286
287    #[inline]
288    pub const fn into_primitive(self) -> u32 {
289        self as u32
290    }
291}
292
293/// High level protection type for the network.  This does not convey all details needed
294/// for the mechanism of the connection, but is primarily used to map the target network
295/// to proper scan results.
296#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
297#[repr(u32)]
298pub enum SecurityType {
299    None = 1,
300    Wep = 2,
301    Wpa = 3,
302    Wpa2 = 4,
303    Wpa3 = 5,
304}
305
306impl SecurityType {
307    #[inline]
308    pub fn from_primitive(prim: u32) -> Option<Self> {
309        match prim {
310            1 => Some(Self::None),
311            2 => Some(Self::Wep),
312            3 => Some(Self::Wpa),
313            4 => Some(Self::Wpa2),
314            5 => Some(Self::Wpa3),
315            _ => None,
316        }
317    }
318
319    #[inline]
320    pub const fn into_primitive(self) -> u32 {
321        self as u32
322    }
323}
324
325/// Wlan operating state for client connections
326#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
327#[repr(u32)]
328pub enum WlanClientState {
329    ConnectionsDisabled = 1,
330    ConnectionsEnabled = 2,
331}
332
333impl WlanClientState {
334    #[inline]
335    pub fn from_primitive(prim: u32) -> Option<Self> {
336        match prim {
337            1 => Some(Self::ConnectionsDisabled),
338            2 => Some(Self::ConnectionsEnabled),
339            _ => None,
340        }
341    }
342
343    #[inline]
344    pub const fn into_primitive(self) -> u32 {
345        self as u32
346    }
347}
348
349#[derive(Clone, Debug, PartialEq)]
350pub struct AccessPointControllerStartAccessPointRequest {
351    pub config: NetworkConfig,
352    pub mode: ConnectivityMode,
353    pub band: OperatingBand,
354}
355
356impl fidl::Persistable for AccessPointControllerStartAccessPointRequest {}
357
358#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
359pub struct AccessPointControllerStartAccessPointResponse {
360    pub status: RequestStatus,
361}
362
363impl fidl::Persistable for AccessPointControllerStartAccessPointResponse {}
364
365#[derive(Clone, Debug, PartialEq)]
366pub struct AccessPointControllerStopAccessPointRequest {
367    pub config: NetworkConfig,
368}
369
370impl fidl::Persistable for AccessPointControllerStopAccessPointRequest {}
371
372#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
373pub struct AccessPointControllerStopAccessPointResponse {
374    pub status: RequestStatus,
375}
376
377impl fidl::Persistable for AccessPointControllerStopAccessPointResponse {}
378
379#[derive(Clone, Debug, PartialEq)]
380pub struct AccessPointStateUpdatesOnAccessPointStateUpdateRequest {
381    pub access_points: Vec<AccessPointState>,
382}
383
384impl fidl::Persistable for AccessPointStateUpdatesOnAccessPointStateUpdateRequest {}
385
386#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
387pub struct ClientControllerConnectRequest {
388    pub id: NetworkIdentifier,
389}
390
391impl fidl::Persistable for ClientControllerConnectRequest {}
392
393#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
394pub struct ClientControllerConnectResponse {
395    pub status: RequestStatus,
396}
397
398impl fidl::Persistable for ClientControllerConnectResponse {}
399
400#[derive(Clone, Debug, PartialEq)]
401pub struct ClientControllerRemoveNetworkRequest {
402    pub config: NetworkConfig,
403}
404
405impl fidl::Persistable for ClientControllerRemoveNetworkRequest {}
406
407#[derive(Clone, Debug, PartialEq)]
408pub struct ClientControllerSaveNetworkRequest {
409    pub config: NetworkConfig,
410}
411
412impl fidl::Persistable for ClientControllerSaveNetworkRequest {}
413
414#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
415pub struct ClientControllerStartClientConnectionsResponse {
416    pub status: RequestStatus,
417}
418
419impl fidl::Persistable for ClientControllerStartClientConnectionsResponse {}
420
421#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
422pub struct ClientControllerStopClientConnectionsResponse {
423    pub status: RequestStatus,
424}
425
426impl fidl::Persistable for ClientControllerStopClientConnectionsResponse {}
427
428#[derive(Clone, Debug, PartialEq)]
429pub struct ClientStateUpdatesOnClientStateUpdateRequest {
430    pub summary: ClientStateSummary,
431}
432
433impl fidl::Persistable for ClientStateUpdatesOnClientStateUpdateRequest {}
434
435/// Empty struct used in place of optional values.
436#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
437pub struct Empty;
438
439impl fidl::Persistable for Empty {}
440
441#[derive(Clone, Debug, PartialEq)]
442pub struct NetworkConfigIteratorGetNextResponse {
443    pub configs: Vec<NetworkConfig>,
444}
445
446impl fidl::Persistable for NetworkConfigIteratorGetNextResponse {}
447
448/// Primary means of distinguishing between available networks - the combination of
449/// the (mostly) human recognizable name and the security type.  The security type is used
450/// to distinguish between different network protection (or lack thereof) types.
451#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
452pub struct NetworkIdentifier {
453    /// Network name, often used by users to choose between networks in the UI.
454    pub ssid: Vec<u8>,
455    /// Protection type (or not) for the network.
456    pub type_: SecurityType,
457}
458
459impl fidl::Persistable for NetworkIdentifier {}
460
461#[derive(Clone, Debug, PartialEq)]
462pub struct ScanResultIteratorGetNextResponse {
463    pub scan_results: Vec<ScanResult>,
464}
465
466impl fidl::Persistable for ScanResultIteratorGetNextResponse {}
467
468/// Information about the individual operating access points.  This includes limited
469/// information about any connected clients.
470#[derive(Clone, Debug, Default, PartialEq)]
471pub struct AccessPointState {
472    /// Current access point operating state
473    pub state: Option<OperatingState>,
474    /// Requested operating connectivity mode
475    pub mode: Option<ConnectivityMode>,
476    /// Access point operating band.
477    pub band: Option<OperatingBand>,
478    /// Access point operating frequency (in MHz).
479    pub frequency: Option<u32>,
480    /// Information about connected clients
481    pub clients: Option<ConnectedClientInformation>,
482    /// Identifying information of the access point whose state has changed.
483    pub id: Option<NetworkIdentifier>,
484    #[doc(hidden)]
485    pub __source_breaking: fidl::marker::SourceBreaking,
486}
487
488impl fidl::Persistable for AccessPointState {}
489
490/// Information for a particular ScanResult entry.
491#[derive(Clone, Debug, Default, PartialEq)]
492pub struct Bss {
493    /// MAC address for the AP interface.
494    pub bssid: Option<[u8; 6]>,
495    /// Calculated received signal strength for the beacon/probe response.
496    pub rssi: Option<i8>,
497    /// Operating frequency for this network (in MHz).
498    pub frequency: Option<u32>,
499    /// Time of the scan result relative to when the system was powered on.
500    /// See https://fuchsia.dev/fuchsia-src/concepts/time/language_support#monotonic_time
501    pub timestamp_nanos: Option<i64>,
502    #[doc(hidden)]
503    pub __source_breaking: fidl::marker::SourceBreaking,
504}
505
506impl fidl::Persistable for Bss {}
507
508/// Information about the current client state for the device.  This includes if the
509/// device will attempt to connect to access points (when applicable), any existing
510/// connections and active connection attempts and their outcomes.
511#[derive(Clone, Debug, Default, PartialEq)]
512pub struct ClientStateSummary {
513    /// State indicating whether wlan will attempt to connect to networks or not.
514    pub state: Option<WlanClientState>,
515    /// Active connections, connection attempts or failed connections.
516    pub networks: Option<Vec<NetworkState>>,
517    #[doc(hidden)]
518    pub __source_breaking: fidl::marker::SourceBreaking,
519}
520
521impl fidl::Persistable for ClientStateSummary {}
522
523/// Connected client information.  This is initially limited to the number of
524/// connected clients.
525#[derive(Clone, Debug, Default, PartialEq)]
526pub struct ConnectedClientInformation {
527    /// Number of connected clients
528    pub count: Option<u8>,
529    #[doc(hidden)]
530    pub __source_breaking: fidl::marker::SourceBreaking,
531}
532
533impl fidl::Persistable for ConnectedClientInformation {}
534
535/// Network information used to establish a connection.
536#[derive(Clone, Debug, Default, PartialEq)]
537pub struct NetworkConfig {
538    /// Identifier used to represent a specific network. No guarantee for uniqueness.
539    pub id: Option<NetworkIdentifier>,
540    /// Information needed to join a network.
541    pub credential: Option<Credential>,
542    #[doc(hidden)]
543    pub __source_breaking: fidl::marker::SourceBreaking,
544}
545
546impl fidl::Persistable for NetworkConfig {}
547
548/// Information about current network connections and attempts.
549#[derive(Clone, Debug, Default, PartialEq)]
550pub struct NetworkState {
551    /// Network id for the current connection (or attempt).
552    pub id: Option<NetworkIdentifier>,
553    /// Current state for the connection.
554    pub state: Option<ConnectionState>,
555    /// Extra information for debugging or Settings display
556    pub status: Option<DisconnectStatus>,
557    #[doc(hidden)]
558    pub __source_breaking: fidl::marker::SourceBreaking,
559}
560
561impl fidl::Persistable for NetworkState {}
562
563/// Information from an observed wlan network.  This includes the
564/// network name, security type, detected access point information and network
565/// compatibility information.
566#[derive(Clone, Debug, Default, PartialEq)]
567pub struct ScanResult {
568    /// Network properties used to distinguish between networks and to group
569    /// individual APs.
570    pub id: Option<NetworkIdentifier>,
571    /// Individual access points offering the specified network.
572    pub entries: Option<Vec<Bss>>,
573    /// Indication if the detected network is supported by the implementation.
574    pub compatibility: Option<Compatibility>,
575    #[doc(hidden)]
576    pub __source_breaking: fidl::marker::SourceBreaking,
577}
578
579impl fidl::Persistable for ScanResult {}
580
581/// Information used to verify access to a target network.
582#[derive(Clone, Debug)]
583pub enum Credential {
584    /// The network does not use credentials (open networks).
585    None(Empty),
586    /// Plaintext password (handled as binary data).
587    Password(Vec<u8>),
588    /// Hash representation of the network passphrase (handled as binary data).
589    Psk(Vec<u8>),
590    #[doc(hidden)]
591    __SourceBreaking { unknown_ordinal: u64 },
592}
593
594/// Pattern that matches an unknown `Credential` member.
595#[macro_export]
596macro_rules! CredentialUnknown {
597    () => {
598        _
599    };
600}
601
602// Custom PartialEq so that unknown variants are not equal to themselves.
603impl PartialEq for Credential {
604    fn eq(&self, other: &Self) -> bool {
605        match (self, other) {
606            (Self::None(x), Self::None(y)) => *x == *y,
607            (Self::Password(x), Self::Password(y)) => *x == *y,
608            (Self::Psk(x), Self::Psk(y)) => *x == *y,
609            _ => false,
610        }
611    }
612}
613
614impl Credential {
615    #[inline]
616    pub fn ordinal(&self) -> u64 {
617        match *self {
618            Self::None(_) => 1,
619            Self::Password(_) => 2,
620            Self::Psk(_) => 3,
621            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
622        }
623    }
624
625    #[inline]
626    pub fn unknown_variant_for_testing() -> Self {
627        Self::__SourceBreaking { unknown_ordinal: 0 }
628    }
629
630    #[inline]
631    pub fn is_unknown(&self) -> bool {
632        match self {
633            Self::__SourceBreaking { .. } => true,
634            _ => false,
635        }
636    }
637}
638
639impl fidl::Persistable for Credential {}
640
641mod internal {
642    use super::*;
643    unsafe impl fidl::encoding::TypeMarker for Compatibility {
644        type Owned = Self;
645
646        #[inline(always)]
647        fn inline_align(_context: fidl::encoding::Context) -> usize {
648            std::mem::align_of::<u32>()
649        }
650
651        #[inline(always)]
652        fn inline_size(_context: fidl::encoding::Context) -> usize {
653            std::mem::size_of::<u32>()
654        }
655
656        #[inline(always)]
657        fn encode_is_copy() -> bool {
658            true
659        }
660
661        #[inline(always)]
662        fn decode_is_copy() -> bool {
663            false
664        }
665    }
666
667    impl fidl::encoding::ValueTypeMarker for Compatibility {
668        type Borrowed<'a> = Self;
669        #[inline(always)]
670        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
671            *value
672        }
673    }
674
675    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Compatibility {
676        #[inline]
677        unsafe fn encode(
678            self,
679            encoder: &mut fidl::encoding::Encoder<'_, D>,
680            offset: usize,
681            _depth: fidl::encoding::Depth,
682        ) -> fidl::Result<()> {
683            encoder.debug_check_bounds::<Self>(offset);
684            encoder.write_num(self.into_primitive(), offset);
685            Ok(())
686        }
687    }
688
689    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Compatibility {
690        #[inline(always)]
691        fn new_empty() -> Self {
692            Self::Supported
693        }
694
695        #[inline]
696        unsafe fn decode(
697            &mut self,
698            decoder: &mut fidl::encoding::Decoder<'_, D>,
699            offset: usize,
700            _depth: fidl::encoding::Depth,
701        ) -> fidl::Result<()> {
702            decoder.debug_check_bounds::<Self>(offset);
703            let prim = decoder.read_num::<u32>(offset);
704
705            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
706            Ok(())
707        }
708    }
709    unsafe impl fidl::encoding::TypeMarker for ConnectionState {
710        type Owned = Self;
711
712        #[inline(always)]
713        fn inline_align(_context: fidl::encoding::Context) -> usize {
714            std::mem::align_of::<u32>()
715        }
716
717        #[inline(always)]
718        fn inline_size(_context: fidl::encoding::Context) -> usize {
719            std::mem::size_of::<u32>()
720        }
721
722        #[inline(always)]
723        fn encode_is_copy() -> bool {
724            true
725        }
726
727        #[inline(always)]
728        fn decode_is_copy() -> bool {
729            false
730        }
731    }
732
733    impl fidl::encoding::ValueTypeMarker for ConnectionState {
734        type Borrowed<'a> = Self;
735        #[inline(always)]
736        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
737            *value
738        }
739    }
740
741    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
742        for ConnectionState
743    {
744        #[inline]
745        unsafe fn encode(
746            self,
747            encoder: &mut fidl::encoding::Encoder<'_, D>,
748            offset: usize,
749            _depth: fidl::encoding::Depth,
750        ) -> fidl::Result<()> {
751            encoder.debug_check_bounds::<Self>(offset);
752            encoder.write_num(self.into_primitive(), offset);
753            Ok(())
754        }
755    }
756
757    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionState {
758        #[inline(always)]
759        fn new_empty() -> Self {
760            Self::Failed
761        }
762
763        #[inline]
764        unsafe fn decode(
765            &mut self,
766            decoder: &mut fidl::encoding::Decoder<'_, D>,
767            offset: usize,
768            _depth: fidl::encoding::Depth,
769        ) -> fidl::Result<()> {
770            decoder.debug_check_bounds::<Self>(offset);
771            let prim = decoder.read_num::<u32>(offset);
772
773            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
774            Ok(())
775        }
776    }
777    unsafe impl fidl::encoding::TypeMarker for ConnectivityMode {
778        type Owned = Self;
779
780        #[inline(always)]
781        fn inline_align(_context: fidl::encoding::Context) -> usize {
782            std::mem::align_of::<u32>()
783        }
784
785        #[inline(always)]
786        fn inline_size(_context: fidl::encoding::Context) -> usize {
787            std::mem::size_of::<u32>()
788        }
789
790        #[inline(always)]
791        fn encode_is_copy() -> bool {
792            true
793        }
794
795        #[inline(always)]
796        fn decode_is_copy() -> bool {
797            false
798        }
799    }
800
801    impl fidl::encoding::ValueTypeMarker for ConnectivityMode {
802        type Borrowed<'a> = Self;
803        #[inline(always)]
804        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
805            *value
806        }
807    }
808
809    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
810        for ConnectivityMode
811    {
812        #[inline]
813        unsafe fn encode(
814            self,
815            encoder: &mut fidl::encoding::Encoder<'_, D>,
816            offset: usize,
817            _depth: fidl::encoding::Depth,
818        ) -> fidl::Result<()> {
819            encoder.debug_check_bounds::<Self>(offset);
820            encoder.write_num(self.into_primitive(), offset);
821            Ok(())
822        }
823    }
824
825    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityMode {
826        #[inline(always)]
827        fn new_empty() -> Self {
828            Self::LocalOnly
829        }
830
831        #[inline]
832        unsafe fn decode(
833            &mut self,
834            decoder: &mut fidl::encoding::Decoder<'_, D>,
835            offset: usize,
836            _depth: fidl::encoding::Depth,
837        ) -> fidl::Result<()> {
838            decoder.debug_check_bounds::<Self>(offset);
839            let prim = decoder.read_num::<u32>(offset);
840
841            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
842            Ok(())
843        }
844    }
845    unsafe impl fidl::encoding::TypeMarker for DisconnectStatus {
846        type Owned = Self;
847
848        #[inline(always)]
849        fn inline_align(_context: fidl::encoding::Context) -> usize {
850            std::mem::align_of::<u32>()
851        }
852
853        #[inline(always)]
854        fn inline_size(_context: fidl::encoding::Context) -> usize {
855            std::mem::size_of::<u32>()
856        }
857
858        #[inline(always)]
859        fn encode_is_copy() -> bool {
860            true
861        }
862
863        #[inline(always)]
864        fn decode_is_copy() -> bool {
865            false
866        }
867    }
868
869    impl fidl::encoding::ValueTypeMarker for DisconnectStatus {
870        type Borrowed<'a> = Self;
871        #[inline(always)]
872        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
873            *value
874        }
875    }
876
877    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
878        for DisconnectStatus
879    {
880        #[inline]
881        unsafe fn encode(
882            self,
883            encoder: &mut fidl::encoding::Encoder<'_, D>,
884            offset: usize,
885            _depth: fidl::encoding::Depth,
886        ) -> fidl::Result<()> {
887            encoder.debug_check_bounds::<Self>(offset);
888            encoder.write_num(self.into_primitive(), offset);
889            Ok(())
890        }
891    }
892
893    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisconnectStatus {
894        #[inline(always)]
895        fn new_empty() -> Self {
896            Self::TimedOut
897        }
898
899        #[inline]
900        unsafe fn decode(
901            &mut self,
902            decoder: &mut fidl::encoding::Decoder<'_, D>,
903            offset: usize,
904            _depth: fidl::encoding::Depth,
905        ) -> fidl::Result<()> {
906            decoder.debug_check_bounds::<Self>(offset);
907            let prim = decoder.read_num::<u32>(offset);
908
909            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
910            Ok(())
911        }
912    }
913    unsafe impl fidl::encoding::TypeMarker for NetworkConfigChangeError {
914        type Owned = Self;
915
916        #[inline(always)]
917        fn inline_align(_context: fidl::encoding::Context) -> usize {
918            std::mem::align_of::<u32>()
919        }
920
921        #[inline(always)]
922        fn inline_size(_context: fidl::encoding::Context) -> usize {
923            std::mem::size_of::<u32>()
924        }
925
926        #[inline(always)]
927        fn encode_is_copy() -> bool {
928            true
929        }
930
931        #[inline(always)]
932        fn decode_is_copy() -> bool {
933            false
934        }
935    }
936
937    impl fidl::encoding::ValueTypeMarker for NetworkConfigChangeError {
938        type Borrowed<'a> = Self;
939        #[inline(always)]
940        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
941            *value
942        }
943    }
944
945    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
946        for NetworkConfigChangeError
947    {
948        #[inline]
949        unsafe fn encode(
950            self,
951            encoder: &mut fidl::encoding::Encoder<'_, D>,
952            offset: usize,
953            _depth: fidl::encoding::Depth,
954        ) -> fidl::Result<()> {
955            encoder.debug_check_bounds::<Self>(offset);
956            encoder.write_num(self.into_primitive(), offset);
957            Ok(())
958        }
959    }
960
961    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
962        for NetworkConfigChangeError
963    {
964        #[inline(always)]
965        fn new_empty() -> Self {
966            Self::GeneralError
967        }
968
969        #[inline]
970        unsafe fn decode(
971            &mut self,
972            decoder: &mut fidl::encoding::Decoder<'_, D>,
973            offset: usize,
974            _depth: fidl::encoding::Depth,
975        ) -> fidl::Result<()> {
976            decoder.debug_check_bounds::<Self>(offset);
977            let prim = decoder.read_num::<u32>(offset);
978
979            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
980            Ok(())
981        }
982    }
983    unsafe impl fidl::encoding::TypeMarker for OperatingBand {
984        type Owned = Self;
985
986        #[inline(always)]
987        fn inline_align(_context: fidl::encoding::Context) -> usize {
988            std::mem::align_of::<u32>()
989        }
990
991        #[inline(always)]
992        fn inline_size(_context: fidl::encoding::Context) -> usize {
993            std::mem::size_of::<u32>()
994        }
995
996        #[inline(always)]
997        fn encode_is_copy() -> bool {
998            true
999        }
1000
1001        #[inline(always)]
1002        fn decode_is_copy() -> bool {
1003            false
1004        }
1005    }
1006
1007    impl fidl::encoding::ValueTypeMarker for OperatingBand {
1008        type Borrowed<'a> = Self;
1009        #[inline(always)]
1010        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1011            *value
1012        }
1013    }
1014
1015    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for OperatingBand {
1016        #[inline]
1017        unsafe fn encode(
1018            self,
1019            encoder: &mut fidl::encoding::Encoder<'_, D>,
1020            offset: usize,
1021            _depth: fidl::encoding::Depth,
1022        ) -> fidl::Result<()> {
1023            encoder.debug_check_bounds::<Self>(offset);
1024            encoder.write_num(self.into_primitive(), offset);
1025            Ok(())
1026        }
1027    }
1028
1029    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperatingBand {
1030        #[inline(always)]
1031        fn new_empty() -> Self {
1032            Self::Any
1033        }
1034
1035        #[inline]
1036        unsafe fn decode(
1037            &mut self,
1038            decoder: &mut fidl::encoding::Decoder<'_, D>,
1039            offset: usize,
1040            _depth: fidl::encoding::Depth,
1041        ) -> fidl::Result<()> {
1042            decoder.debug_check_bounds::<Self>(offset);
1043            let prim = decoder.read_num::<u32>(offset);
1044
1045            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1046            Ok(())
1047        }
1048    }
1049    unsafe impl fidl::encoding::TypeMarker for OperatingState {
1050        type Owned = Self;
1051
1052        #[inline(always)]
1053        fn inline_align(_context: fidl::encoding::Context) -> usize {
1054            std::mem::align_of::<u32>()
1055        }
1056
1057        #[inline(always)]
1058        fn inline_size(_context: fidl::encoding::Context) -> usize {
1059            std::mem::size_of::<u32>()
1060        }
1061
1062        #[inline(always)]
1063        fn encode_is_copy() -> bool {
1064            true
1065        }
1066
1067        #[inline(always)]
1068        fn decode_is_copy() -> bool {
1069            false
1070        }
1071    }
1072
1073    impl fidl::encoding::ValueTypeMarker for OperatingState {
1074        type Borrowed<'a> = Self;
1075        #[inline(always)]
1076        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1077            *value
1078        }
1079    }
1080
1081    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for OperatingState {
1082        #[inline]
1083        unsafe fn encode(
1084            self,
1085            encoder: &mut fidl::encoding::Encoder<'_, D>,
1086            offset: usize,
1087            _depth: fidl::encoding::Depth,
1088        ) -> fidl::Result<()> {
1089            encoder.debug_check_bounds::<Self>(offset);
1090            encoder.write_num(self.into_primitive(), offset);
1091            Ok(())
1092        }
1093    }
1094
1095    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperatingState {
1096        #[inline(always)]
1097        fn new_empty() -> Self {
1098            Self::Failed
1099        }
1100
1101        #[inline]
1102        unsafe fn decode(
1103            &mut self,
1104            decoder: &mut fidl::encoding::Decoder<'_, D>,
1105            offset: usize,
1106            _depth: fidl::encoding::Depth,
1107        ) -> fidl::Result<()> {
1108            decoder.debug_check_bounds::<Self>(offset);
1109            let prim = decoder.read_num::<u32>(offset);
1110
1111            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1112            Ok(())
1113        }
1114    }
1115    unsafe impl fidl::encoding::TypeMarker for RequestStatus {
1116        type Owned = Self;
1117
1118        #[inline(always)]
1119        fn inline_align(_context: fidl::encoding::Context) -> usize {
1120            std::mem::align_of::<u32>()
1121        }
1122
1123        #[inline(always)]
1124        fn inline_size(_context: fidl::encoding::Context) -> usize {
1125            std::mem::size_of::<u32>()
1126        }
1127
1128        #[inline(always)]
1129        fn encode_is_copy() -> bool {
1130            true
1131        }
1132
1133        #[inline(always)]
1134        fn decode_is_copy() -> bool {
1135            false
1136        }
1137    }
1138
1139    impl fidl::encoding::ValueTypeMarker for RequestStatus {
1140        type Borrowed<'a> = Self;
1141        #[inline(always)]
1142        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1143            *value
1144        }
1145    }
1146
1147    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RequestStatus {
1148        #[inline]
1149        unsafe fn encode(
1150            self,
1151            encoder: &mut fidl::encoding::Encoder<'_, D>,
1152            offset: usize,
1153            _depth: fidl::encoding::Depth,
1154        ) -> fidl::Result<()> {
1155            encoder.debug_check_bounds::<Self>(offset);
1156            encoder.write_num(self.into_primitive(), offset);
1157            Ok(())
1158        }
1159    }
1160
1161    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RequestStatus {
1162        #[inline(always)]
1163        fn new_empty() -> Self {
1164            Self::Acknowledged
1165        }
1166
1167        #[inline]
1168        unsafe fn decode(
1169            &mut self,
1170            decoder: &mut fidl::encoding::Decoder<'_, D>,
1171            offset: usize,
1172            _depth: fidl::encoding::Depth,
1173        ) -> fidl::Result<()> {
1174            decoder.debug_check_bounds::<Self>(offset);
1175            let prim = decoder.read_num::<u32>(offset);
1176
1177            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1178            Ok(())
1179        }
1180    }
1181    unsafe impl fidl::encoding::TypeMarker for ScanErrorCode {
1182        type Owned = Self;
1183
1184        #[inline(always)]
1185        fn inline_align(_context: fidl::encoding::Context) -> usize {
1186            std::mem::align_of::<u32>()
1187        }
1188
1189        #[inline(always)]
1190        fn inline_size(_context: fidl::encoding::Context) -> usize {
1191            std::mem::size_of::<u32>()
1192        }
1193
1194        #[inline(always)]
1195        fn encode_is_copy() -> bool {
1196            true
1197        }
1198
1199        #[inline(always)]
1200        fn decode_is_copy() -> bool {
1201            false
1202        }
1203    }
1204
1205    impl fidl::encoding::ValueTypeMarker for ScanErrorCode {
1206        type Borrowed<'a> = Self;
1207        #[inline(always)]
1208        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1209            *value
1210        }
1211    }
1212
1213    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanErrorCode {
1214        #[inline]
1215        unsafe fn encode(
1216            self,
1217            encoder: &mut fidl::encoding::Encoder<'_, D>,
1218            offset: usize,
1219            _depth: fidl::encoding::Depth,
1220        ) -> fidl::Result<()> {
1221            encoder.debug_check_bounds::<Self>(offset);
1222            encoder.write_num(self.into_primitive(), offset);
1223            Ok(())
1224        }
1225    }
1226
1227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanErrorCode {
1228        #[inline(always)]
1229        fn new_empty() -> Self {
1230            Self::GeneralError
1231        }
1232
1233        #[inline]
1234        unsafe fn decode(
1235            &mut self,
1236            decoder: &mut fidl::encoding::Decoder<'_, D>,
1237            offset: usize,
1238            _depth: fidl::encoding::Depth,
1239        ) -> fidl::Result<()> {
1240            decoder.debug_check_bounds::<Self>(offset);
1241            let prim = decoder.read_num::<u32>(offset);
1242
1243            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1244            Ok(())
1245        }
1246    }
1247    unsafe impl fidl::encoding::TypeMarker for SecurityType {
1248        type Owned = Self;
1249
1250        #[inline(always)]
1251        fn inline_align(_context: fidl::encoding::Context) -> usize {
1252            std::mem::align_of::<u32>()
1253        }
1254
1255        #[inline(always)]
1256        fn inline_size(_context: fidl::encoding::Context) -> usize {
1257            std::mem::size_of::<u32>()
1258        }
1259
1260        #[inline(always)]
1261        fn encode_is_copy() -> bool {
1262            true
1263        }
1264
1265        #[inline(always)]
1266        fn decode_is_copy() -> bool {
1267            false
1268        }
1269    }
1270
1271    impl fidl::encoding::ValueTypeMarker for SecurityType {
1272        type Borrowed<'a> = Self;
1273        #[inline(always)]
1274        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1275            *value
1276        }
1277    }
1278
1279    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SecurityType {
1280        #[inline]
1281        unsafe fn encode(
1282            self,
1283            encoder: &mut fidl::encoding::Encoder<'_, D>,
1284            offset: usize,
1285            _depth: fidl::encoding::Depth,
1286        ) -> fidl::Result<()> {
1287            encoder.debug_check_bounds::<Self>(offset);
1288            encoder.write_num(self.into_primitive(), offset);
1289            Ok(())
1290        }
1291    }
1292
1293    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityType {
1294        #[inline(always)]
1295        fn new_empty() -> Self {
1296            Self::None
1297        }
1298
1299        #[inline]
1300        unsafe fn decode(
1301            &mut self,
1302            decoder: &mut fidl::encoding::Decoder<'_, D>,
1303            offset: usize,
1304            _depth: fidl::encoding::Depth,
1305        ) -> fidl::Result<()> {
1306            decoder.debug_check_bounds::<Self>(offset);
1307            let prim = decoder.read_num::<u32>(offset);
1308
1309            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1310            Ok(())
1311        }
1312    }
1313    unsafe impl fidl::encoding::TypeMarker for WlanClientState {
1314        type Owned = Self;
1315
1316        #[inline(always)]
1317        fn inline_align(_context: fidl::encoding::Context) -> usize {
1318            std::mem::align_of::<u32>()
1319        }
1320
1321        #[inline(always)]
1322        fn inline_size(_context: fidl::encoding::Context) -> usize {
1323            std::mem::size_of::<u32>()
1324        }
1325
1326        #[inline(always)]
1327        fn encode_is_copy() -> bool {
1328            true
1329        }
1330
1331        #[inline(always)]
1332        fn decode_is_copy() -> bool {
1333            false
1334        }
1335    }
1336
1337    impl fidl::encoding::ValueTypeMarker for WlanClientState {
1338        type Borrowed<'a> = Self;
1339        #[inline(always)]
1340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1341            *value
1342        }
1343    }
1344
1345    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1346        for WlanClientState
1347    {
1348        #[inline]
1349        unsafe fn encode(
1350            self,
1351            encoder: &mut fidl::encoding::Encoder<'_, D>,
1352            offset: usize,
1353            _depth: fidl::encoding::Depth,
1354        ) -> fidl::Result<()> {
1355            encoder.debug_check_bounds::<Self>(offset);
1356            encoder.write_num(self.into_primitive(), offset);
1357            Ok(())
1358        }
1359    }
1360
1361    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanClientState {
1362        #[inline(always)]
1363        fn new_empty() -> Self {
1364            Self::ConnectionsDisabled
1365        }
1366
1367        #[inline]
1368        unsafe fn decode(
1369            &mut self,
1370            decoder: &mut fidl::encoding::Decoder<'_, D>,
1371            offset: usize,
1372            _depth: fidl::encoding::Depth,
1373        ) -> fidl::Result<()> {
1374            decoder.debug_check_bounds::<Self>(offset);
1375            let prim = decoder.read_num::<u32>(offset);
1376
1377            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1378            Ok(())
1379        }
1380    }
1381
1382    impl fidl::encoding::ValueTypeMarker for AccessPointControllerStartAccessPointRequest {
1383        type Borrowed<'a> = &'a Self;
1384        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1385            value
1386        }
1387    }
1388
1389    unsafe impl fidl::encoding::TypeMarker for AccessPointControllerStartAccessPointRequest {
1390        type Owned = Self;
1391
1392        #[inline(always)]
1393        fn inline_align(_context: fidl::encoding::Context) -> usize {
1394            8
1395        }
1396
1397        #[inline(always)]
1398        fn inline_size(_context: fidl::encoding::Context) -> usize {
1399            24
1400        }
1401    }
1402
1403    unsafe impl<D: fidl::encoding::ResourceDialect>
1404        fidl::encoding::Encode<AccessPointControllerStartAccessPointRequest, D>
1405        for &AccessPointControllerStartAccessPointRequest
1406    {
1407        #[inline]
1408        unsafe fn encode(
1409            self,
1410            encoder: &mut fidl::encoding::Encoder<'_, D>,
1411            offset: usize,
1412            _depth: fidl::encoding::Depth,
1413        ) -> fidl::Result<()> {
1414            encoder.debug_check_bounds::<AccessPointControllerStartAccessPointRequest>(offset);
1415            // Delegate to tuple encoding.
1416            fidl::encoding::Encode::<AccessPointControllerStartAccessPointRequest, D>::encode(
1417                (
1418                    <NetworkConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),
1419                    <ConnectivityMode as fidl::encoding::ValueTypeMarker>::borrow(&self.mode),
1420                    <OperatingBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
1421                ),
1422                encoder,
1423                offset,
1424                _depth,
1425            )
1426        }
1427    }
1428    unsafe impl<
1429            D: fidl::encoding::ResourceDialect,
1430            T0: fidl::encoding::Encode<NetworkConfig, D>,
1431            T1: fidl::encoding::Encode<ConnectivityMode, D>,
1432            T2: fidl::encoding::Encode<OperatingBand, D>,
1433        > fidl::encoding::Encode<AccessPointControllerStartAccessPointRequest, D> for (T0, T1, T2)
1434    {
1435        #[inline]
1436        unsafe fn encode(
1437            self,
1438            encoder: &mut fidl::encoding::Encoder<'_, D>,
1439            offset: usize,
1440            depth: fidl::encoding::Depth,
1441        ) -> fidl::Result<()> {
1442            encoder.debug_check_bounds::<AccessPointControllerStartAccessPointRequest>(offset);
1443            // Zero out padding regions. There's no need to apply masks
1444            // because the unmasked parts will be overwritten by fields.
1445            // Write the fields.
1446            self.0.encode(encoder, offset + 0, depth)?;
1447            self.1.encode(encoder, offset + 16, depth)?;
1448            self.2.encode(encoder, offset + 20, depth)?;
1449            Ok(())
1450        }
1451    }
1452
1453    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1454        for AccessPointControllerStartAccessPointRequest
1455    {
1456        #[inline(always)]
1457        fn new_empty() -> Self {
1458            Self {
1459                config: fidl::new_empty!(NetworkConfig, D),
1460                mode: fidl::new_empty!(ConnectivityMode, D),
1461                band: fidl::new_empty!(OperatingBand, D),
1462            }
1463        }
1464
1465        #[inline]
1466        unsafe fn decode(
1467            &mut self,
1468            decoder: &mut fidl::encoding::Decoder<'_, D>,
1469            offset: usize,
1470            _depth: fidl::encoding::Depth,
1471        ) -> fidl::Result<()> {
1472            decoder.debug_check_bounds::<Self>(offset);
1473            // Verify that padding bytes are zero.
1474            fidl::decode!(NetworkConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
1475            fidl::decode!(ConnectivityMode, D, &mut self.mode, decoder, offset + 16, _depth)?;
1476            fidl::decode!(OperatingBand, D, &mut self.band, decoder, offset + 20, _depth)?;
1477            Ok(())
1478        }
1479    }
1480
1481    impl fidl::encoding::ValueTypeMarker for AccessPointControllerStartAccessPointResponse {
1482        type Borrowed<'a> = &'a Self;
1483        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1484            value
1485        }
1486    }
1487
1488    unsafe impl fidl::encoding::TypeMarker for AccessPointControllerStartAccessPointResponse {
1489        type Owned = Self;
1490
1491        #[inline(always)]
1492        fn inline_align(_context: fidl::encoding::Context) -> usize {
1493            4
1494        }
1495
1496        #[inline(always)]
1497        fn inline_size(_context: fidl::encoding::Context) -> usize {
1498            4
1499        }
1500    }
1501
1502    unsafe impl<D: fidl::encoding::ResourceDialect>
1503        fidl::encoding::Encode<AccessPointControllerStartAccessPointResponse, D>
1504        for &AccessPointControllerStartAccessPointResponse
1505    {
1506        #[inline]
1507        unsafe fn encode(
1508            self,
1509            encoder: &mut fidl::encoding::Encoder<'_, D>,
1510            offset: usize,
1511            _depth: fidl::encoding::Depth,
1512        ) -> fidl::Result<()> {
1513            encoder.debug_check_bounds::<AccessPointControllerStartAccessPointResponse>(offset);
1514            // Delegate to tuple encoding.
1515            fidl::encoding::Encode::<AccessPointControllerStartAccessPointResponse, D>::encode(
1516                (<RequestStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
1517                encoder,
1518                offset,
1519                _depth,
1520            )
1521        }
1522    }
1523    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RequestStatus, D>>
1524        fidl::encoding::Encode<AccessPointControllerStartAccessPointResponse, D> for (T0,)
1525    {
1526        #[inline]
1527        unsafe fn encode(
1528            self,
1529            encoder: &mut fidl::encoding::Encoder<'_, D>,
1530            offset: usize,
1531            depth: fidl::encoding::Depth,
1532        ) -> fidl::Result<()> {
1533            encoder.debug_check_bounds::<AccessPointControllerStartAccessPointResponse>(offset);
1534            // Zero out padding regions. There's no need to apply masks
1535            // because the unmasked parts will be overwritten by fields.
1536            // Write the fields.
1537            self.0.encode(encoder, offset + 0, depth)?;
1538            Ok(())
1539        }
1540    }
1541
1542    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1543        for AccessPointControllerStartAccessPointResponse
1544    {
1545        #[inline(always)]
1546        fn new_empty() -> Self {
1547            Self { status: fidl::new_empty!(RequestStatus, D) }
1548        }
1549
1550        #[inline]
1551        unsafe fn decode(
1552            &mut self,
1553            decoder: &mut fidl::encoding::Decoder<'_, D>,
1554            offset: usize,
1555            _depth: fidl::encoding::Depth,
1556        ) -> fidl::Result<()> {
1557            decoder.debug_check_bounds::<Self>(offset);
1558            // Verify that padding bytes are zero.
1559            fidl::decode!(RequestStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
1560            Ok(())
1561        }
1562    }
1563
1564    impl fidl::encoding::ValueTypeMarker for AccessPointControllerStopAccessPointRequest {
1565        type Borrowed<'a> = &'a Self;
1566        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1567            value
1568        }
1569    }
1570
1571    unsafe impl fidl::encoding::TypeMarker for AccessPointControllerStopAccessPointRequest {
1572        type Owned = Self;
1573
1574        #[inline(always)]
1575        fn inline_align(_context: fidl::encoding::Context) -> usize {
1576            8
1577        }
1578
1579        #[inline(always)]
1580        fn inline_size(_context: fidl::encoding::Context) -> usize {
1581            16
1582        }
1583    }
1584
1585    unsafe impl<D: fidl::encoding::ResourceDialect>
1586        fidl::encoding::Encode<AccessPointControllerStopAccessPointRequest, D>
1587        for &AccessPointControllerStopAccessPointRequest
1588    {
1589        #[inline]
1590        unsafe fn encode(
1591            self,
1592            encoder: &mut fidl::encoding::Encoder<'_, D>,
1593            offset: usize,
1594            _depth: fidl::encoding::Depth,
1595        ) -> fidl::Result<()> {
1596            encoder.debug_check_bounds::<AccessPointControllerStopAccessPointRequest>(offset);
1597            // Delegate to tuple encoding.
1598            fidl::encoding::Encode::<AccessPointControllerStopAccessPointRequest, D>::encode(
1599                (<NetworkConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
1600                encoder,
1601                offset,
1602                _depth,
1603            )
1604        }
1605    }
1606    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<NetworkConfig, D>>
1607        fidl::encoding::Encode<AccessPointControllerStopAccessPointRequest, D> for (T0,)
1608    {
1609        #[inline]
1610        unsafe fn encode(
1611            self,
1612            encoder: &mut fidl::encoding::Encoder<'_, D>,
1613            offset: usize,
1614            depth: fidl::encoding::Depth,
1615        ) -> fidl::Result<()> {
1616            encoder.debug_check_bounds::<AccessPointControllerStopAccessPointRequest>(offset);
1617            // Zero out padding regions. There's no need to apply masks
1618            // because the unmasked parts will be overwritten by fields.
1619            // Write the fields.
1620            self.0.encode(encoder, offset + 0, depth)?;
1621            Ok(())
1622        }
1623    }
1624
1625    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1626        for AccessPointControllerStopAccessPointRequest
1627    {
1628        #[inline(always)]
1629        fn new_empty() -> Self {
1630            Self { config: fidl::new_empty!(NetworkConfig, D) }
1631        }
1632
1633        #[inline]
1634        unsafe fn decode(
1635            &mut self,
1636            decoder: &mut fidl::encoding::Decoder<'_, D>,
1637            offset: usize,
1638            _depth: fidl::encoding::Depth,
1639        ) -> fidl::Result<()> {
1640            decoder.debug_check_bounds::<Self>(offset);
1641            // Verify that padding bytes are zero.
1642            fidl::decode!(NetworkConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
1643            Ok(())
1644        }
1645    }
1646
1647    impl fidl::encoding::ValueTypeMarker for AccessPointControllerStopAccessPointResponse {
1648        type Borrowed<'a> = &'a Self;
1649        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1650            value
1651        }
1652    }
1653
1654    unsafe impl fidl::encoding::TypeMarker for AccessPointControllerStopAccessPointResponse {
1655        type Owned = Self;
1656
1657        #[inline(always)]
1658        fn inline_align(_context: fidl::encoding::Context) -> usize {
1659            4
1660        }
1661
1662        #[inline(always)]
1663        fn inline_size(_context: fidl::encoding::Context) -> usize {
1664            4
1665        }
1666    }
1667
1668    unsafe impl<D: fidl::encoding::ResourceDialect>
1669        fidl::encoding::Encode<AccessPointControllerStopAccessPointResponse, D>
1670        for &AccessPointControllerStopAccessPointResponse
1671    {
1672        #[inline]
1673        unsafe fn encode(
1674            self,
1675            encoder: &mut fidl::encoding::Encoder<'_, D>,
1676            offset: usize,
1677            _depth: fidl::encoding::Depth,
1678        ) -> fidl::Result<()> {
1679            encoder.debug_check_bounds::<AccessPointControllerStopAccessPointResponse>(offset);
1680            // Delegate to tuple encoding.
1681            fidl::encoding::Encode::<AccessPointControllerStopAccessPointResponse, D>::encode(
1682                (<RequestStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
1683                encoder,
1684                offset,
1685                _depth,
1686            )
1687        }
1688    }
1689    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RequestStatus, D>>
1690        fidl::encoding::Encode<AccessPointControllerStopAccessPointResponse, D> for (T0,)
1691    {
1692        #[inline]
1693        unsafe fn encode(
1694            self,
1695            encoder: &mut fidl::encoding::Encoder<'_, D>,
1696            offset: usize,
1697            depth: fidl::encoding::Depth,
1698        ) -> fidl::Result<()> {
1699            encoder.debug_check_bounds::<AccessPointControllerStopAccessPointResponse>(offset);
1700            // Zero out padding regions. There's no need to apply masks
1701            // because the unmasked parts will be overwritten by fields.
1702            // Write the fields.
1703            self.0.encode(encoder, offset + 0, depth)?;
1704            Ok(())
1705        }
1706    }
1707
1708    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1709        for AccessPointControllerStopAccessPointResponse
1710    {
1711        #[inline(always)]
1712        fn new_empty() -> Self {
1713            Self { status: fidl::new_empty!(RequestStatus, D) }
1714        }
1715
1716        #[inline]
1717        unsafe fn decode(
1718            &mut self,
1719            decoder: &mut fidl::encoding::Decoder<'_, D>,
1720            offset: usize,
1721            _depth: fidl::encoding::Depth,
1722        ) -> fidl::Result<()> {
1723            decoder.debug_check_bounds::<Self>(offset);
1724            // Verify that padding bytes are zero.
1725            fidl::decode!(RequestStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
1726            Ok(())
1727        }
1728    }
1729
1730    impl fidl::encoding::ValueTypeMarker for AccessPointStateUpdatesOnAccessPointStateUpdateRequest {
1731        type Borrowed<'a> = &'a Self;
1732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1733            value
1734        }
1735    }
1736
1737    unsafe impl fidl::encoding::TypeMarker for AccessPointStateUpdatesOnAccessPointStateUpdateRequest {
1738        type Owned = Self;
1739
1740        #[inline(always)]
1741        fn inline_align(_context: fidl::encoding::Context) -> usize {
1742            8
1743        }
1744
1745        #[inline(always)]
1746        fn inline_size(_context: fidl::encoding::Context) -> usize {
1747            16
1748        }
1749    }
1750
1751    unsafe impl<D: fidl::encoding::ResourceDialect>
1752        fidl::encoding::Encode<AccessPointStateUpdatesOnAccessPointStateUpdateRequest, D>
1753        for &AccessPointStateUpdatesOnAccessPointStateUpdateRequest
1754    {
1755        #[inline]
1756        unsafe fn encode(
1757            self,
1758            encoder: &mut fidl::encoding::Encoder<'_, D>,
1759            offset: usize,
1760            _depth: fidl::encoding::Depth,
1761        ) -> fidl::Result<()> {
1762            encoder.debug_check_bounds::<AccessPointStateUpdatesOnAccessPointStateUpdateRequest>(
1763                offset,
1764            );
1765            // Delegate to tuple encoding.
1766            fidl::encoding::Encode::<AccessPointStateUpdatesOnAccessPointStateUpdateRequest, D>::encode(
1767                (
1768                    <fidl::encoding::UnboundedVector<AccessPointState> as fidl::encoding::ValueTypeMarker>::borrow(&self.access_points),
1769                ),
1770                encoder, offset, _depth
1771            )
1772        }
1773    }
1774    unsafe impl<
1775            D: fidl::encoding::ResourceDialect,
1776            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<AccessPointState>, D>,
1777        > fidl::encoding::Encode<AccessPointStateUpdatesOnAccessPointStateUpdateRequest, D>
1778        for (T0,)
1779    {
1780        #[inline]
1781        unsafe fn encode(
1782            self,
1783            encoder: &mut fidl::encoding::Encoder<'_, D>,
1784            offset: usize,
1785            depth: fidl::encoding::Depth,
1786        ) -> fidl::Result<()> {
1787            encoder.debug_check_bounds::<AccessPointStateUpdatesOnAccessPointStateUpdateRequest>(
1788                offset,
1789            );
1790            // Zero out padding regions. There's no need to apply masks
1791            // because the unmasked parts will be overwritten by fields.
1792            // Write the fields.
1793            self.0.encode(encoder, offset + 0, depth)?;
1794            Ok(())
1795        }
1796    }
1797
1798    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1799        for AccessPointStateUpdatesOnAccessPointStateUpdateRequest
1800    {
1801        #[inline(always)]
1802        fn new_empty() -> Self {
1803            Self {
1804                access_points: fidl::new_empty!(
1805                    fidl::encoding::UnboundedVector<AccessPointState>,
1806                    D
1807                ),
1808            }
1809        }
1810
1811        #[inline]
1812        unsafe fn decode(
1813            &mut self,
1814            decoder: &mut fidl::encoding::Decoder<'_, D>,
1815            offset: usize,
1816            _depth: fidl::encoding::Depth,
1817        ) -> fidl::Result<()> {
1818            decoder.debug_check_bounds::<Self>(offset);
1819            // Verify that padding bytes are zero.
1820            fidl::decode!(
1821                fidl::encoding::UnboundedVector<AccessPointState>,
1822                D,
1823                &mut self.access_points,
1824                decoder,
1825                offset + 0,
1826                _depth
1827            )?;
1828            Ok(())
1829        }
1830    }
1831
1832    impl fidl::encoding::ValueTypeMarker for ClientControllerConnectRequest {
1833        type Borrowed<'a> = &'a Self;
1834        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1835            value
1836        }
1837    }
1838
1839    unsafe impl fidl::encoding::TypeMarker for ClientControllerConnectRequest {
1840        type Owned = Self;
1841
1842        #[inline(always)]
1843        fn inline_align(_context: fidl::encoding::Context) -> usize {
1844            8
1845        }
1846
1847        #[inline(always)]
1848        fn inline_size(_context: fidl::encoding::Context) -> usize {
1849            24
1850        }
1851    }
1852
1853    unsafe impl<D: fidl::encoding::ResourceDialect>
1854        fidl::encoding::Encode<ClientControllerConnectRequest, D>
1855        for &ClientControllerConnectRequest
1856    {
1857        #[inline]
1858        unsafe fn encode(
1859            self,
1860            encoder: &mut fidl::encoding::Encoder<'_, D>,
1861            offset: usize,
1862            _depth: fidl::encoding::Depth,
1863        ) -> fidl::Result<()> {
1864            encoder.debug_check_bounds::<ClientControllerConnectRequest>(offset);
1865            // Delegate to tuple encoding.
1866            fidl::encoding::Encode::<ClientControllerConnectRequest, D>::encode(
1867                (<NetworkIdentifier as fidl::encoding::ValueTypeMarker>::borrow(&self.id),),
1868                encoder,
1869                offset,
1870                _depth,
1871            )
1872        }
1873    }
1874    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<NetworkIdentifier, D>>
1875        fidl::encoding::Encode<ClientControllerConnectRequest, D> for (T0,)
1876    {
1877        #[inline]
1878        unsafe fn encode(
1879            self,
1880            encoder: &mut fidl::encoding::Encoder<'_, D>,
1881            offset: usize,
1882            depth: fidl::encoding::Depth,
1883        ) -> fidl::Result<()> {
1884            encoder.debug_check_bounds::<ClientControllerConnectRequest>(offset);
1885            // Zero out padding regions. There's no need to apply masks
1886            // because the unmasked parts will be overwritten by fields.
1887            // Write the fields.
1888            self.0.encode(encoder, offset + 0, depth)?;
1889            Ok(())
1890        }
1891    }
1892
1893    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1894        for ClientControllerConnectRequest
1895    {
1896        #[inline(always)]
1897        fn new_empty() -> Self {
1898            Self { id: fidl::new_empty!(NetworkIdentifier, D) }
1899        }
1900
1901        #[inline]
1902        unsafe fn decode(
1903            &mut self,
1904            decoder: &mut fidl::encoding::Decoder<'_, D>,
1905            offset: usize,
1906            _depth: fidl::encoding::Depth,
1907        ) -> fidl::Result<()> {
1908            decoder.debug_check_bounds::<Self>(offset);
1909            // Verify that padding bytes are zero.
1910            fidl::decode!(NetworkIdentifier, D, &mut self.id, decoder, offset + 0, _depth)?;
1911            Ok(())
1912        }
1913    }
1914
1915    impl fidl::encoding::ValueTypeMarker for ClientControllerConnectResponse {
1916        type Borrowed<'a> = &'a Self;
1917        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1918            value
1919        }
1920    }
1921
1922    unsafe impl fidl::encoding::TypeMarker for ClientControllerConnectResponse {
1923        type Owned = Self;
1924
1925        #[inline(always)]
1926        fn inline_align(_context: fidl::encoding::Context) -> usize {
1927            4
1928        }
1929
1930        #[inline(always)]
1931        fn inline_size(_context: fidl::encoding::Context) -> usize {
1932            4
1933        }
1934    }
1935
1936    unsafe impl<D: fidl::encoding::ResourceDialect>
1937        fidl::encoding::Encode<ClientControllerConnectResponse, D>
1938        for &ClientControllerConnectResponse
1939    {
1940        #[inline]
1941        unsafe fn encode(
1942            self,
1943            encoder: &mut fidl::encoding::Encoder<'_, D>,
1944            offset: usize,
1945            _depth: fidl::encoding::Depth,
1946        ) -> fidl::Result<()> {
1947            encoder.debug_check_bounds::<ClientControllerConnectResponse>(offset);
1948            // Delegate to tuple encoding.
1949            fidl::encoding::Encode::<ClientControllerConnectResponse, D>::encode(
1950                (<RequestStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
1951                encoder,
1952                offset,
1953                _depth,
1954            )
1955        }
1956    }
1957    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RequestStatus, D>>
1958        fidl::encoding::Encode<ClientControllerConnectResponse, D> for (T0,)
1959    {
1960        #[inline]
1961        unsafe fn encode(
1962            self,
1963            encoder: &mut fidl::encoding::Encoder<'_, D>,
1964            offset: usize,
1965            depth: fidl::encoding::Depth,
1966        ) -> fidl::Result<()> {
1967            encoder.debug_check_bounds::<ClientControllerConnectResponse>(offset);
1968            // Zero out padding regions. There's no need to apply masks
1969            // because the unmasked parts will be overwritten by fields.
1970            // Write the fields.
1971            self.0.encode(encoder, offset + 0, depth)?;
1972            Ok(())
1973        }
1974    }
1975
1976    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1977        for ClientControllerConnectResponse
1978    {
1979        #[inline(always)]
1980        fn new_empty() -> Self {
1981            Self { status: fidl::new_empty!(RequestStatus, D) }
1982        }
1983
1984        #[inline]
1985        unsafe fn decode(
1986            &mut self,
1987            decoder: &mut fidl::encoding::Decoder<'_, D>,
1988            offset: usize,
1989            _depth: fidl::encoding::Depth,
1990        ) -> fidl::Result<()> {
1991            decoder.debug_check_bounds::<Self>(offset);
1992            // Verify that padding bytes are zero.
1993            fidl::decode!(RequestStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
1994            Ok(())
1995        }
1996    }
1997
1998    impl fidl::encoding::ValueTypeMarker for ClientControllerRemoveNetworkRequest {
1999        type Borrowed<'a> = &'a Self;
2000        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2001            value
2002        }
2003    }
2004
2005    unsafe impl fidl::encoding::TypeMarker for ClientControllerRemoveNetworkRequest {
2006        type Owned = Self;
2007
2008        #[inline(always)]
2009        fn inline_align(_context: fidl::encoding::Context) -> usize {
2010            8
2011        }
2012
2013        #[inline(always)]
2014        fn inline_size(_context: fidl::encoding::Context) -> usize {
2015            16
2016        }
2017    }
2018
2019    unsafe impl<D: fidl::encoding::ResourceDialect>
2020        fidl::encoding::Encode<ClientControllerRemoveNetworkRequest, D>
2021        for &ClientControllerRemoveNetworkRequest
2022    {
2023        #[inline]
2024        unsafe fn encode(
2025            self,
2026            encoder: &mut fidl::encoding::Encoder<'_, D>,
2027            offset: usize,
2028            _depth: fidl::encoding::Depth,
2029        ) -> fidl::Result<()> {
2030            encoder.debug_check_bounds::<ClientControllerRemoveNetworkRequest>(offset);
2031            // Delegate to tuple encoding.
2032            fidl::encoding::Encode::<ClientControllerRemoveNetworkRequest, D>::encode(
2033                (<NetworkConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2034                encoder,
2035                offset,
2036                _depth,
2037            )
2038        }
2039    }
2040    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<NetworkConfig, D>>
2041        fidl::encoding::Encode<ClientControllerRemoveNetworkRequest, D> for (T0,)
2042    {
2043        #[inline]
2044        unsafe fn encode(
2045            self,
2046            encoder: &mut fidl::encoding::Encoder<'_, D>,
2047            offset: usize,
2048            depth: fidl::encoding::Depth,
2049        ) -> fidl::Result<()> {
2050            encoder.debug_check_bounds::<ClientControllerRemoveNetworkRequest>(offset);
2051            // Zero out padding regions. There's no need to apply masks
2052            // because the unmasked parts will be overwritten by fields.
2053            // Write the fields.
2054            self.0.encode(encoder, offset + 0, depth)?;
2055            Ok(())
2056        }
2057    }
2058
2059    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2060        for ClientControllerRemoveNetworkRequest
2061    {
2062        #[inline(always)]
2063        fn new_empty() -> Self {
2064            Self { config: fidl::new_empty!(NetworkConfig, D) }
2065        }
2066
2067        #[inline]
2068        unsafe fn decode(
2069            &mut self,
2070            decoder: &mut fidl::encoding::Decoder<'_, D>,
2071            offset: usize,
2072            _depth: fidl::encoding::Depth,
2073        ) -> fidl::Result<()> {
2074            decoder.debug_check_bounds::<Self>(offset);
2075            // Verify that padding bytes are zero.
2076            fidl::decode!(NetworkConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
2077            Ok(())
2078        }
2079    }
2080
2081    impl fidl::encoding::ValueTypeMarker for ClientControllerSaveNetworkRequest {
2082        type Borrowed<'a> = &'a Self;
2083        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2084            value
2085        }
2086    }
2087
2088    unsafe impl fidl::encoding::TypeMarker for ClientControllerSaveNetworkRequest {
2089        type Owned = Self;
2090
2091        #[inline(always)]
2092        fn inline_align(_context: fidl::encoding::Context) -> usize {
2093            8
2094        }
2095
2096        #[inline(always)]
2097        fn inline_size(_context: fidl::encoding::Context) -> usize {
2098            16
2099        }
2100    }
2101
2102    unsafe impl<D: fidl::encoding::ResourceDialect>
2103        fidl::encoding::Encode<ClientControllerSaveNetworkRequest, D>
2104        for &ClientControllerSaveNetworkRequest
2105    {
2106        #[inline]
2107        unsafe fn encode(
2108            self,
2109            encoder: &mut fidl::encoding::Encoder<'_, D>,
2110            offset: usize,
2111            _depth: fidl::encoding::Depth,
2112        ) -> fidl::Result<()> {
2113            encoder.debug_check_bounds::<ClientControllerSaveNetworkRequest>(offset);
2114            // Delegate to tuple encoding.
2115            fidl::encoding::Encode::<ClientControllerSaveNetworkRequest, D>::encode(
2116                (<NetworkConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2117                encoder,
2118                offset,
2119                _depth,
2120            )
2121        }
2122    }
2123    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<NetworkConfig, D>>
2124        fidl::encoding::Encode<ClientControllerSaveNetworkRequest, D> for (T0,)
2125    {
2126        #[inline]
2127        unsafe fn encode(
2128            self,
2129            encoder: &mut fidl::encoding::Encoder<'_, D>,
2130            offset: usize,
2131            depth: fidl::encoding::Depth,
2132        ) -> fidl::Result<()> {
2133            encoder.debug_check_bounds::<ClientControllerSaveNetworkRequest>(offset);
2134            // Zero out padding regions. There's no need to apply masks
2135            // because the unmasked parts will be overwritten by fields.
2136            // Write the fields.
2137            self.0.encode(encoder, offset + 0, depth)?;
2138            Ok(())
2139        }
2140    }
2141
2142    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2143        for ClientControllerSaveNetworkRequest
2144    {
2145        #[inline(always)]
2146        fn new_empty() -> Self {
2147            Self { config: fidl::new_empty!(NetworkConfig, D) }
2148        }
2149
2150        #[inline]
2151        unsafe fn decode(
2152            &mut self,
2153            decoder: &mut fidl::encoding::Decoder<'_, D>,
2154            offset: usize,
2155            _depth: fidl::encoding::Depth,
2156        ) -> fidl::Result<()> {
2157            decoder.debug_check_bounds::<Self>(offset);
2158            // Verify that padding bytes are zero.
2159            fidl::decode!(NetworkConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
2160            Ok(())
2161        }
2162    }
2163
2164    impl fidl::encoding::ValueTypeMarker for ClientControllerStartClientConnectionsResponse {
2165        type Borrowed<'a> = &'a Self;
2166        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2167            value
2168        }
2169    }
2170
2171    unsafe impl fidl::encoding::TypeMarker for ClientControllerStartClientConnectionsResponse {
2172        type Owned = Self;
2173
2174        #[inline(always)]
2175        fn inline_align(_context: fidl::encoding::Context) -> usize {
2176            4
2177        }
2178
2179        #[inline(always)]
2180        fn inline_size(_context: fidl::encoding::Context) -> usize {
2181            4
2182        }
2183    }
2184
2185    unsafe impl<D: fidl::encoding::ResourceDialect>
2186        fidl::encoding::Encode<ClientControllerStartClientConnectionsResponse, D>
2187        for &ClientControllerStartClientConnectionsResponse
2188    {
2189        #[inline]
2190        unsafe fn encode(
2191            self,
2192            encoder: &mut fidl::encoding::Encoder<'_, D>,
2193            offset: usize,
2194            _depth: fidl::encoding::Depth,
2195        ) -> fidl::Result<()> {
2196            encoder.debug_check_bounds::<ClientControllerStartClientConnectionsResponse>(offset);
2197            // Delegate to tuple encoding.
2198            fidl::encoding::Encode::<ClientControllerStartClientConnectionsResponse, D>::encode(
2199                (<RequestStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
2200                encoder,
2201                offset,
2202                _depth,
2203            )
2204        }
2205    }
2206    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RequestStatus, D>>
2207        fidl::encoding::Encode<ClientControllerStartClientConnectionsResponse, D> for (T0,)
2208    {
2209        #[inline]
2210        unsafe fn encode(
2211            self,
2212            encoder: &mut fidl::encoding::Encoder<'_, D>,
2213            offset: usize,
2214            depth: fidl::encoding::Depth,
2215        ) -> fidl::Result<()> {
2216            encoder.debug_check_bounds::<ClientControllerStartClientConnectionsResponse>(offset);
2217            // Zero out padding regions. There's no need to apply masks
2218            // because the unmasked parts will be overwritten by fields.
2219            // Write the fields.
2220            self.0.encode(encoder, offset + 0, depth)?;
2221            Ok(())
2222        }
2223    }
2224
2225    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2226        for ClientControllerStartClientConnectionsResponse
2227    {
2228        #[inline(always)]
2229        fn new_empty() -> Self {
2230            Self { status: fidl::new_empty!(RequestStatus, D) }
2231        }
2232
2233        #[inline]
2234        unsafe fn decode(
2235            &mut self,
2236            decoder: &mut fidl::encoding::Decoder<'_, D>,
2237            offset: usize,
2238            _depth: fidl::encoding::Depth,
2239        ) -> fidl::Result<()> {
2240            decoder.debug_check_bounds::<Self>(offset);
2241            // Verify that padding bytes are zero.
2242            fidl::decode!(RequestStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
2243            Ok(())
2244        }
2245    }
2246
2247    impl fidl::encoding::ValueTypeMarker for ClientControllerStopClientConnectionsResponse {
2248        type Borrowed<'a> = &'a Self;
2249        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2250            value
2251        }
2252    }
2253
2254    unsafe impl fidl::encoding::TypeMarker for ClientControllerStopClientConnectionsResponse {
2255        type Owned = Self;
2256
2257        #[inline(always)]
2258        fn inline_align(_context: fidl::encoding::Context) -> usize {
2259            4
2260        }
2261
2262        #[inline(always)]
2263        fn inline_size(_context: fidl::encoding::Context) -> usize {
2264            4
2265        }
2266    }
2267
2268    unsafe impl<D: fidl::encoding::ResourceDialect>
2269        fidl::encoding::Encode<ClientControllerStopClientConnectionsResponse, D>
2270        for &ClientControllerStopClientConnectionsResponse
2271    {
2272        #[inline]
2273        unsafe fn encode(
2274            self,
2275            encoder: &mut fidl::encoding::Encoder<'_, D>,
2276            offset: usize,
2277            _depth: fidl::encoding::Depth,
2278        ) -> fidl::Result<()> {
2279            encoder.debug_check_bounds::<ClientControllerStopClientConnectionsResponse>(offset);
2280            // Delegate to tuple encoding.
2281            fidl::encoding::Encode::<ClientControllerStopClientConnectionsResponse, D>::encode(
2282                (<RequestStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
2283                encoder,
2284                offset,
2285                _depth,
2286            )
2287        }
2288    }
2289    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RequestStatus, D>>
2290        fidl::encoding::Encode<ClientControllerStopClientConnectionsResponse, D> for (T0,)
2291    {
2292        #[inline]
2293        unsafe fn encode(
2294            self,
2295            encoder: &mut fidl::encoding::Encoder<'_, D>,
2296            offset: usize,
2297            depth: fidl::encoding::Depth,
2298        ) -> fidl::Result<()> {
2299            encoder.debug_check_bounds::<ClientControllerStopClientConnectionsResponse>(offset);
2300            // Zero out padding regions. There's no need to apply masks
2301            // because the unmasked parts will be overwritten by fields.
2302            // Write the fields.
2303            self.0.encode(encoder, offset + 0, depth)?;
2304            Ok(())
2305        }
2306    }
2307
2308    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2309        for ClientControllerStopClientConnectionsResponse
2310    {
2311        #[inline(always)]
2312        fn new_empty() -> Self {
2313            Self { status: fidl::new_empty!(RequestStatus, D) }
2314        }
2315
2316        #[inline]
2317        unsafe fn decode(
2318            &mut self,
2319            decoder: &mut fidl::encoding::Decoder<'_, D>,
2320            offset: usize,
2321            _depth: fidl::encoding::Depth,
2322        ) -> fidl::Result<()> {
2323            decoder.debug_check_bounds::<Self>(offset);
2324            // Verify that padding bytes are zero.
2325            fidl::decode!(RequestStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
2326            Ok(())
2327        }
2328    }
2329
2330    impl fidl::encoding::ValueTypeMarker for ClientStateUpdatesOnClientStateUpdateRequest {
2331        type Borrowed<'a> = &'a Self;
2332        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2333            value
2334        }
2335    }
2336
2337    unsafe impl fidl::encoding::TypeMarker for ClientStateUpdatesOnClientStateUpdateRequest {
2338        type Owned = Self;
2339
2340        #[inline(always)]
2341        fn inline_align(_context: fidl::encoding::Context) -> usize {
2342            8
2343        }
2344
2345        #[inline(always)]
2346        fn inline_size(_context: fidl::encoding::Context) -> usize {
2347            16
2348        }
2349    }
2350
2351    unsafe impl<D: fidl::encoding::ResourceDialect>
2352        fidl::encoding::Encode<ClientStateUpdatesOnClientStateUpdateRequest, D>
2353        for &ClientStateUpdatesOnClientStateUpdateRequest
2354    {
2355        #[inline]
2356        unsafe fn encode(
2357            self,
2358            encoder: &mut fidl::encoding::Encoder<'_, D>,
2359            offset: usize,
2360            _depth: fidl::encoding::Depth,
2361        ) -> fidl::Result<()> {
2362            encoder.debug_check_bounds::<ClientStateUpdatesOnClientStateUpdateRequest>(offset);
2363            // Delegate to tuple encoding.
2364            fidl::encoding::Encode::<ClientStateUpdatesOnClientStateUpdateRequest, D>::encode(
2365                (<ClientStateSummary as fidl::encoding::ValueTypeMarker>::borrow(&self.summary),),
2366                encoder,
2367                offset,
2368                _depth,
2369            )
2370        }
2371    }
2372    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ClientStateSummary, D>>
2373        fidl::encoding::Encode<ClientStateUpdatesOnClientStateUpdateRequest, D> for (T0,)
2374    {
2375        #[inline]
2376        unsafe fn encode(
2377            self,
2378            encoder: &mut fidl::encoding::Encoder<'_, D>,
2379            offset: usize,
2380            depth: fidl::encoding::Depth,
2381        ) -> fidl::Result<()> {
2382            encoder.debug_check_bounds::<ClientStateUpdatesOnClientStateUpdateRequest>(offset);
2383            // Zero out padding regions. There's no need to apply masks
2384            // because the unmasked parts will be overwritten by fields.
2385            // Write the fields.
2386            self.0.encode(encoder, offset + 0, depth)?;
2387            Ok(())
2388        }
2389    }
2390
2391    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2392        for ClientStateUpdatesOnClientStateUpdateRequest
2393    {
2394        #[inline(always)]
2395        fn new_empty() -> Self {
2396            Self { summary: fidl::new_empty!(ClientStateSummary, D) }
2397        }
2398
2399        #[inline]
2400        unsafe fn decode(
2401            &mut self,
2402            decoder: &mut fidl::encoding::Decoder<'_, D>,
2403            offset: usize,
2404            _depth: fidl::encoding::Depth,
2405        ) -> fidl::Result<()> {
2406            decoder.debug_check_bounds::<Self>(offset);
2407            // Verify that padding bytes are zero.
2408            fidl::decode!(ClientStateSummary, D, &mut self.summary, decoder, offset + 0, _depth)?;
2409            Ok(())
2410        }
2411    }
2412
2413    impl fidl::encoding::ValueTypeMarker for Empty {
2414        type Borrowed<'a> = &'a Self;
2415        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2416            value
2417        }
2418    }
2419
2420    unsafe impl fidl::encoding::TypeMarker for Empty {
2421        type Owned = Self;
2422
2423        #[inline(always)]
2424        fn inline_align(_context: fidl::encoding::Context) -> usize {
2425            1
2426        }
2427
2428        #[inline(always)]
2429        fn inline_size(_context: fidl::encoding::Context) -> usize {
2430            1
2431        }
2432    }
2433
2434    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
2435        #[inline]
2436        unsafe fn encode(
2437            self,
2438            encoder: &mut fidl::encoding::Encoder<'_, D>,
2439            offset: usize,
2440            _depth: fidl::encoding::Depth,
2441        ) -> fidl::Result<()> {
2442            encoder.debug_check_bounds::<Empty>(offset);
2443            encoder.write_num(0u8, offset);
2444            Ok(())
2445        }
2446    }
2447
2448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
2449        #[inline(always)]
2450        fn new_empty() -> Self {
2451            Self
2452        }
2453
2454        #[inline]
2455        unsafe fn decode(
2456            &mut self,
2457            decoder: &mut fidl::encoding::Decoder<'_, D>,
2458            offset: usize,
2459            _depth: fidl::encoding::Depth,
2460        ) -> fidl::Result<()> {
2461            decoder.debug_check_bounds::<Self>(offset);
2462            match decoder.read_num::<u8>(offset) {
2463                0 => Ok(()),
2464                _ => Err(fidl::Error::Invalid),
2465            }
2466        }
2467    }
2468
2469    impl fidl::encoding::ValueTypeMarker for NetworkConfigIteratorGetNextResponse {
2470        type Borrowed<'a> = &'a Self;
2471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2472            value
2473        }
2474    }
2475
2476    unsafe impl fidl::encoding::TypeMarker for NetworkConfigIteratorGetNextResponse {
2477        type Owned = Self;
2478
2479        #[inline(always)]
2480        fn inline_align(_context: fidl::encoding::Context) -> usize {
2481            8
2482        }
2483
2484        #[inline(always)]
2485        fn inline_size(_context: fidl::encoding::Context) -> usize {
2486            16
2487        }
2488    }
2489
2490    unsafe impl<D: fidl::encoding::ResourceDialect>
2491        fidl::encoding::Encode<NetworkConfigIteratorGetNextResponse, D>
2492        for &NetworkConfigIteratorGetNextResponse
2493    {
2494        #[inline]
2495        unsafe fn encode(
2496            self,
2497            encoder: &mut fidl::encoding::Encoder<'_, D>,
2498            offset: usize,
2499            _depth: fidl::encoding::Depth,
2500        ) -> fidl::Result<()> {
2501            encoder.debug_check_bounds::<NetworkConfigIteratorGetNextResponse>(offset);
2502            // Delegate to tuple encoding.
2503            fidl::encoding::Encode::<NetworkConfigIteratorGetNextResponse, D>::encode(
2504                (
2505                    <fidl::encoding::UnboundedVector<NetworkConfig> as fidl::encoding::ValueTypeMarker>::borrow(&self.configs),
2506                ),
2507                encoder, offset, _depth
2508            )
2509        }
2510    }
2511    unsafe impl<
2512            D: fidl::encoding::ResourceDialect,
2513            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NetworkConfig>, D>,
2514        > fidl::encoding::Encode<NetworkConfigIteratorGetNextResponse, D> for (T0,)
2515    {
2516        #[inline]
2517        unsafe fn encode(
2518            self,
2519            encoder: &mut fidl::encoding::Encoder<'_, D>,
2520            offset: usize,
2521            depth: fidl::encoding::Depth,
2522        ) -> fidl::Result<()> {
2523            encoder.debug_check_bounds::<NetworkConfigIteratorGetNextResponse>(offset);
2524            // Zero out padding regions. There's no need to apply masks
2525            // because the unmasked parts will be overwritten by fields.
2526            // Write the fields.
2527            self.0.encode(encoder, offset + 0, depth)?;
2528            Ok(())
2529        }
2530    }
2531
2532    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2533        for NetworkConfigIteratorGetNextResponse
2534    {
2535        #[inline(always)]
2536        fn new_empty() -> Self {
2537            Self { configs: fidl::new_empty!(fidl::encoding::UnboundedVector<NetworkConfig>, D) }
2538        }
2539
2540        #[inline]
2541        unsafe fn decode(
2542            &mut self,
2543            decoder: &mut fidl::encoding::Decoder<'_, D>,
2544            offset: usize,
2545            _depth: fidl::encoding::Depth,
2546        ) -> fidl::Result<()> {
2547            decoder.debug_check_bounds::<Self>(offset);
2548            // Verify that padding bytes are zero.
2549            fidl::decode!(
2550                fidl::encoding::UnboundedVector<NetworkConfig>,
2551                D,
2552                &mut self.configs,
2553                decoder,
2554                offset + 0,
2555                _depth
2556            )?;
2557            Ok(())
2558        }
2559    }
2560
2561    impl fidl::encoding::ValueTypeMarker for NetworkIdentifier {
2562        type Borrowed<'a> = &'a Self;
2563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2564            value
2565        }
2566    }
2567
2568    unsafe impl fidl::encoding::TypeMarker for NetworkIdentifier {
2569        type Owned = Self;
2570
2571        #[inline(always)]
2572        fn inline_align(_context: fidl::encoding::Context) -> usize {
2573            8
2574        }
2575
2576        #[inline(always)]
2577        fn inline_size(_context: fidl::encoding::Context) -> usize {
2578            24
2579        }
2580    }
2581
2582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkIdentifier, D>
2583        for &NetworkIdentifier
2584    {
2585        #[inline]
2586        unsafe fn encode(
2587            self,
2588            encoder: &mut fidl::encoding::Encoder<'_, D>,
2589            offset: usize,
2590            _depth: fidl::encoding::Depth,
2591        ) -> fidl::Result<()> {
2592            encoder.debug_check_bounds::<NetworkIdentifier>(offset);
2593            // Delegate to tuple encoding.
2594            fidl::encoding::Encode::<NetworkIdentifier, D>::encode(
2595                (
2596                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
2597                        &self.ssid,
2598                    ),
2599                    <SecurityType as fidl::encoding::ValueTypeMarker>::borrow(&self.type_),
2600                ),
2601                encoder,
2602                offset,
2603                _depth,
2604            )
2605        }
2606    }
2607    unsafe impl<
2608            D: fidl::encoding::ResourceDialect,
2609            T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
2610            T1: fidl::encoding::Encode<SecurityType, D>,
2611        > fidl::encoding::Encode<NetworkIdentifier, D> for (T0, T1)
2612    {
2613        #[inline]
2614        unsafe fn encode(
2615            self,
2616            encoder: &mut fidl::encoding::Encoder<'_, D>,
2617            offset: usize,
2618            depth: fidl::encoding::Depth,
2619        ) -> fidl::Result<()> {
2620            encoder.debug_check_bounds::<NetworkIdentifier>(offset);
2621            // Zero out padding regions. There's no need to apply masks
2622            // because the unmasked parts will be overwritten by fields.
2623            unsafe {
2624                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2625                (ptr as *mut u64).write_unaligned(0);
2626            }
2627            // Write the fields.
2628            self.0.encode(encoder, offset + 0, depth)?;
2629            self.1.encode(encoder, offset + 16, depth)?;
2630            Ok(())
2631        }
2632    }
2633
2634    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkIdentifier {
2635        #[inline(always)]
2636        fn new_empty() -> Self {
2637            Self {
2638                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
2639                type_: fidl::new_empty!(SecurityType, D),
2640            }
2641        }
2642
2643        #[inline]
2644        unsafe fn decode(
2645            &mut self,
2646            decoder: &mut fidl::encoding::Decoder<'_, D>,
2647            offset: usize,
2648            _depth: fidl::encoding::Depth,
2649        ) -> fidl::Result<()> {
2650            decoder.debug_check_bounds::<Self>(offset);
2651            // Verify that padding bytes are zero.
2652            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2653            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2654            let mask = 0xffffffff00000000u64;
2655            let maskedval = padval & mask;
2656            if maskedval != 0 {
2657                return Err(fidl::Error::NonZeroPadding {
2658                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2659                });
2660            }
2661            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
2662            fidl::decode!(SecurityType, D, &mut self.type_, decoder, offset + 16, _depth)?;
2663            Ok(())
2664        }
2665    }
2666
2667    impl fidl::encoding::ValueTypeMarker for ScanResultIteratorGetNextResponse {
2668        type Borrowed<'a> = &'a Self;
2669        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2670            value
2671        }
2672    }
2673
2674    unsafe impl fidl::encoding::TypeMarker for ScanResultIteratorGetNextResponse {
2675        type Owned = Self;
2676
2677        #[inline(always)]
2678        fn inline_align(_context: fidl::encoding::Context) -> usize {
2679            8
2680        }
2681
2682        #[inline(always)]
2683        fn inline_size(_context: fidl::encoding::Context) -> usize {
2684            16
2685        }
2686    }
2687
2688    unsafe impl<D: fidl::encoding::ResourceDialect>
2689        fidl::encoding::Encode<ScanResultIteratorGetNextResponse, D>
2690        for &ScanResultIteratorGetNextResponse
2691    {
2692        #[inline]
2693        unsafe fn encode(
2694            self,
2695            encoder: &mut fidl::encoding::Encoder<'_, D>,
2696            offset: usize,
2697            _depth: fidl::encoding::Depth,
2698        ) -> fidl::Result<()> {
2699            encoder.debug_check_bounds::<ScanResultIteratorGetNextResponse>(offset);
2700            // Delegate to tuple encoding.
2701            fidl::encoding::Encode::<ScanResultIteratorGetNextResponse, D>::encode(
2702                (
2703                    <fidl::encoding::UnboundedVector<ScanResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_results),
2704                ),
2705                encoder, offset, _depth
2706            )
2707        }
2708    }
2709    unsafe impl<
2710            D: fidl::encoding::ResourceDialect,
2711            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<ScanResult>, D>,
2712        > fidl::encoding::Encode<ScanResultIteratorGetNextResponse, D> for (T0,)
2713    {
2714        #[inline]
2715        unsafe fn encode(
2716            self,
2717            encoder: &mut fidl::encoding::Encoder<'_, D>,
2718            offset: usize,
2719            depth: fidl::encoding::Depth,
2720        ) -> fidl::Result<()> {
2721            encoder.debug_check_bounds::<ScanResultIteratorGetNextResponse>(offset);
2722            // Zero out padding regions. There's no need to apply masks
2723            // because the unmasked parts will be overwritten by fields.
2724            // Write the fields.
2725            self.0.encode(encoder, offset + 0, depth)?;
2726            Ok(())
2727        }
2728    }
2729
2730    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2731        for ScanResultIteratorGetNextResponse
2732    {
2733        #[inline(always)]
2734        fn new_empty() -> Self {
2735            Self { scan_results: fidl::new_empty!(fidl::encoding::UnboundedVector<ScanResult>, D) }
2736        }
2737
2738        #[inline]
2739        unsafe fn decode(
2740            &mut self,
2741            decoder: &mut fidl::encoding::Decoder<'_, D>,
2742            offset: usize,
2743            _depth: fidl::encoding::Depth,
2744        ) -> fidl::Result<()> {
2745            decoder.debug_check_bounds::<Self>(offset);
2746            // Verify that padding bytes are zero.
2747            fidl::decode!(
2748                fidl::encoding::UnboundedVector<ScanResult>,
2749                D,
2750                &mut self.scan_results,
2751                decoder,
2752                offset + 0,
2753                _depth
2754            )?;
2755            Ok(())
2756        }
2757    }
2758
2759    impl AccessPointState {
2760        #[inline(always)]
2761        fn max_ordinal_present(&self) -> u64 {
2762            if let Some(_) = self.id {
2763                return 6;
2764            }
2765            if let Some(_) = self.clients {
2766                return 5;
2767            }
2768            if let Some(_) = self.frequency {
2769                return 4;
2770            }
2771            if let Some(_) = self.band {
2772                return 3;
2773            }
2774            if let Some(_) = self.mode {
2775                return 2;
2776            }
2777            if let Some(_) = self.state {
2778                return 1;
2779            }
2780            0
2781        }
2782    }
2783
2784    impl fidl::encoding::ValueTypeMarker for AccessPointState {
2785        type Borrowed<'a> = &'a Self;
2786        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2787            value
2788        }
2789    }
2790
2791    unsafe impl fidl::encoding::TypeMarker for AccessPointState {
2792        type Owned = Self;
2793
2794        #[inline(always)]
2795        fn inline_align(_context: fidl::encoding::Context) -> usize {
2796            8
2797        }
2798
2799        #[inline(always)]
2800        fn inline_size(_context: fidl::encoding::Context) -> usize {
2801            16
2802        }
2803    }
2804
2805    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AccessPointState, D>
2806        for &AccessPointState
2807    {
2808        unsafe fn encode(
2809            self,
2810            encoder: &mut fidl::encoding::Encoder<'_, D>,
2811            offset: usize,
2812            mut depth: fidl::encoding::Depth,
2813        ) -> fidl::Result<()> {
2814            encoder.debug_check_bounds::<AccessPointState>(offset);
2815            // Vector header
2816            let max_ordinal: u64 = self.max_ordinal_present();
2817            encoder.write_num(max_ordinal, offset);
2818            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2819            // Calling encoder.out_of_line_offset(0) is not allowed.
2820            if max_ordinal == 0 {
2821                return Ok(());
2822            }
2823            depth.increment()?;
2824            let envelope_size = 8;
2825            let bytes_len = max_ordinal as usize * envelope_size;
2826            #[allow(unused_variables)]
2827            let offset = encoder.out_of_line_offset(bytes_len);
2828            let mut _prev_end_offset: usize = 0;
2829            if 1 > max_ordinal {
2830                return Ok(());
2831            }
2832
2833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2834            // are envelope_size bytes.
2835            let cur_offset: usize = (1 - 1) * envelope_size;
2836
2837            // Zero reserved fields.
2838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2839
2840            // Safety:
2841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2843            //   envelope_size bytes, there is always sufficient room.
2844            fidl::encoding::encode_in_envelope_optional::<OperatingState, D>(
2845                self.state
2846                    .as_ref()
2847                    .map(<OperatingState as fidl::encoding::ValueTypeMarker>::borrow),
2848                encoder,
2849                offset + cur_offset,
2850                depth,
2851            )?;
2852
2853            _prev_end_offset = cur_offset + envelope_size;
2854            if 2 > max_ordinal {
2855                return Ok(());
2856            }
2857
2858            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2859            // are envelope_size bytes.
2860            let cur_offset: usize = (2 - 1) * envelope_size;
2861
2862            // Zero reserved fields.
2863            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2864
2865            // Safety:
2866            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2867            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2868            //   envelope_size bytes, there is always sufficient room.
2869            fidl::encoding::encode_in_envelope_optional::<ConnectivityMode, D>(
2870                self.mode
2871                    .as_ref()
2872                    .map(<ConnectivityMode as fidl::encoding::ValueTypeMarker>::borrow),
2873                encoder,
2874                offset + cur_offset,
2875                depth,
2876            )?;
2877
2878            _prev_end_offset = cur_offset + envelope_size;
2879            if 3 > max_ordinal {
2880                return Ok(());
2881            }
2882
2883            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2884            // are envelope_size bytes.
2885            let cur_offset: usize = (3 - 1) * envelope_size;
2886
2887            // Zero reserved fields.
2888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2889
2890            // Safety:
2891            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2892            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2893            //   envelope_size bytes, there is always sufficient room.
2894            fidl::encoding::encode_in_envelope_optional::<OperatingBand, D>(
2895                self.band.as_ref().map(<OperatingBand as fidl::encoding::ValueTypeMarker>::borrow),
2896                encoder,
2897                offset + cur_offset,
2898                depth,
2899            )?;
2900
2901            _prev_end_offset = cur_offset + envelope_size;
2902            if 4 > max_ordinal {
2903                return Ok(());
2904            }
2905
2906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2907            // are envelope_size bytes.
2908            let cur_offset: usize = (4 - 1) * envelope_size;
2909
2910            // Zero reserved fields.
2911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2912
2913            // Safety:
2914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2916            //   envelope_size bytes, there is always sufficient room.
2917            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2918                self.frequency.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2919                encoder,
2920                offset + cur_offset,
2921                depth,
2922            )?;
2923
2924            _prev_end_offset = cur_offset + envelope_size;
2925            if 5 > max_ordinal {
2926                return Ok(());
2927            }
2928
2929            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2930            // are envelope_size bytes.
2931            let cur_offset: usize = (5 - 1) * envelope_size;
2932
2933            // Zero reserved fields.
2934            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2935
2936            // Safety:
2937            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2938            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2939            //   envelope_size bytes, there is always sufficient room.
2940            fidl::encoding::encode_in_envelope_optional::<ConnectedClientInformation, D>(
2941                self.clients
2942                    .as_ref()
2943                    .map(<ConnectedClientInformation as fidl::encoding::ValueTypeMarker>::borrow),
2944                encoder,
2945                offset + cur_offset,
2946                depth,
2947            )?;
2948
2949            _prev_end_offset = cur_offset + envelope_size;
2950            if 6 > max_ordinal {
2951                return Ok(());
2952            }
2953
2954            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2955            // are envelope_size bytes.
2956            let cur_offset: usize = (6 - 1) * envelope_size;
2957
2958            // Zero reserved fields.
2959            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2960
2961            // Safety:
2962            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2963            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2964            //   envelope_size bytes, there is always sufficient room.
2965            fidl::encoding::encode_in_envelope_optional::<NetworkIdentifier, D>(
2966                self.id
2967                    .as_ref()
2968                    .map(<NetworkIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
2969                encoder,
2970                offset + cur_offset,
2971                depth,
2972            )?;
2973
2974            _prev_end_offset = cur_offset + envelope_size;
2975
2976            Ok(())
2977        }
2978    }
2979
2980    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AccessPointState {
2981        #[inline(always)]
2982        fn new_empty() -> Self {
2983            Self::default()
2984        }
2985
2986        unsafe fn decode(
2987            &mut self,
2988            decoder: &mut fidl::encoding::Decoder<'_, D>,
2989            offset: usize,
2990            mut depth: fidl::encoding::Depth,
2991        ) -> fidl::Result<()> {
2992            decoder.debug_check_bounds::<Self>(offset);
2993            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2994                None => return Err(fidl::Error::NotNullable),
2995                Some(len) => len,
2996            };
2997            // Calling decoder.out_of_line_offset(0) is not allowed.
2998            if len == 0 {
2999                return Ok(());
3000            };
3001            depth.increment()?;
3002            let envelope_size = 8;
3003            let bytes_len = len * envelope_size;
3004            let offset = decoder.out_of_line_offset(bytes_len)?;
3005            // Decode the envelope for each type.
3006            let mut _next_ordinal_to_read = 0;
3007            let mut next_offset = offset;
3008            let end_offset = offset + bytes_len;
3009            _next_ordinal_to_read += 1;
3010            if next_offset >= end_offset {
3011                return Ok(());
3012            }
3013
3014            // Decode unknown envelopes for gaps in ordinals.
3015            while _next_ordinal_to_read < 1 {
3016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3017                _next_ordinal_to_read += 1;
3018                next_offset += envelope_size;
3019            }
3020
3021            let next_out_of_line = decoder.next_out_of_line();
3022            let handles_before = decoder.remaining_handles();
3023            if let Some((inlined, num_bytes, num_handles)) =
3024                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3025            {
3026                let member_inline_size =
3027                    <OperatingState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3028                if inlined != (member_inline_size <= 4) {
3029                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3030                }
3031                let inner_offset;
3032                let mut inner_depth = depth.clone();
3033                if inlined {
3034                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3035                    inner_offset = next_offset;
3036                } else {
3037                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3038                    inner_depth.increment()?;
3039                }
3040                let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(OperatingState, D));
3041                fidl::decode!(OperatingState, D, val_ref, decoder, inner_offset, inner_depth)?;
3042                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3043                {
3044                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3045                }
3046                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3047                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3048                }
3049            }
3050
3051            next_offset += envelope_size;
3052            _next_ordinal_to_read += 1;
3053            if next_offset >= end_offset {
3054                return Ok(());
3055            }
3056
3057            // Decode unknown envelopes for gaps in ordinals.
3058            while _next_ordinal_to_read < 2 {
3059                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3060                _next_ordinal_to_read += 1;
3061                next_offset += envelope_size;
3062            }
3063
3064            let next_out_of_line = decoder.next_out_of_line();
3065            let handles_before = decoder.remaining_handles();
3066            if let Some((inlined, num_bytes, num_handles)) =
3067                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3068            {
3069                let member_inline_size =
3070                    <ConnectivityMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3071                if inlined != (member_inline_size <= 4) {
3072                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3073                }
3074                let inner_offset;
3075                let mut inner_depth = depth.clone();
3076                if inlined {
3077                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3078                    inner_offset = next_offset;
3079                } else {
3080                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3081                    inner_depth.increment()?;
3082                }
3083                let val_ref =
3084                    self.mode.get_or_insert_with(|| fidl::new_empty!(ConnectivityMode, D));
3085                fidl::decode!(ConnectivityMode, D, val_ref, decoder, inner_offset, inner_depth)?;
3086                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3087                {
3088                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3089                }
3090                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3091                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3092                }
3093            }
3094
3095            next_offset += envelope_size;
3096            _next_ordinal_to_read += 1;
3097            if next_offset >= end_offset {
3098                return Ok(());
3099            }
3100
3101            // Decode unknown envelopes for gaps in ordinals.
3102            while _next_ordinal_to_read < 3 {
3103                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3104                _next_ordinal_to_read += 1;
3105                next_offset += envelope_size;
3106            }
3107
3108            let next_out_of_line = decoder.next_out_of_line();
3109            let handles_before = decoder.remaining_handles();
3110            if let Some((inlined, num_bytes, num_handles)) =
3111                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3112            {
3113                let member_inline_size =
3114                    <OperatingBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3115                if inlined != (member_inline_size <= 4) {
3116                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3117                }
3118                let inner_offset;
3119                let mut inner_depth = depth.clone();
3120                if inlined {
3121                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3122                    inner_offset = next_offset;
3123                } else {
3124                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3125                    inner_depth.increment()?;
3126                }
3127                let val_ref = self.band.get_or_insert_with(|| fidl::new_empty!(OperatingBand, D));
3128                fidl::decode!(OperatingBand, D, val_ref, decoder, inner_offset, inner_depth)?;
3129                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3130                {
3131                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3132                }
3133                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3134                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3135                }
3136            }
3137
3138            next_offset += envelope_size;
3139            _next_ordinal_to_read += 1;
3140            if next_offset >= end_offset {
3141                return Ok(());
3142            }
3143
3144            // Decode unknown envelopes for gaps in ordinals.
3145            while _next_ordinal_to_read < 4 {
3146                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3147                _next_ordinal_to_read += 1;
3148                next_offset += envelope_size;
3149            }
3150
3151            let next_out_of_line = decoder.next_out_of_line();
3152            let handles_before = decoder.remaining_handles();
3153            if let Some((inlined, num_bytes, num_handles)) =
3154                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3155            {
3156                let member_inline_size =
3157                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3158                if inlined != (member_inline_size <= 4) {
3159                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3160                }
3161                let inner_offset;
3162                let mut inner_depth = depth.clone();
3163                if inlined {
3164                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3165                    inner_offset = next_offset;
3166                } else {
3167                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3168                    inner_depth.increment()?;
3169                }
3170                let val_ref = self.frequency.get_or_insert_with(|| fidl::new_empty!(u32, D));
3171                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3172                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3173                {
3174                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3175                }
3176                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3177                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3178                }
3179            }
3180
3181            next_offset += envelope_size;
3182            _next_ordinal_to_read += 1;
3183            if next_offset >= end_offset {
3184                return Ok(());
3185            }
3186
3187            // Decode unknown envelopes for gaps in ordinals.
3188            while _next_ordinal_to_read < 5 {
3189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3190                _next_ordinal_to_read += 1;
3191                next_offset += envelope_size;
3192            }
3193
3194            let next_out_of_line = decoder.next_out_of_line();
3195            let handles_before = decoder.remaining_handles();
3196            if let Some((inlined, num_bytes, num_handles)) =
3197                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3198            {
3199                let member_inline_size =
3200                    <ConnectedClientInformation as fidl::encoding::TypeMarker>::inline_size(
3201                        decoder.context,
3202                    );
3203                if inlined != (member_inline_size <= 4) {
3204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3205                }
3206                let inner_offset;
3207                let mut inner_depth = depth.clone();
3208                if inlined {
3209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3210                    inner_offset = next_offset;
3211                } else {
3212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3213                    inner_depth.increment()?;
3214                }
3215                let val_ref = self
3216                    .clients
3217                    .get_or_insert_with(|| fidl::new_empty!(ConnectedClientInformation, D));
3218                fidl::decode!(
3219                    ConnectedClientInformation,
3220                    D,
3221                    val_ref,
3222                    decoder,
3223                    inner_offset,
3224                    inner_depth
3225                )?;
3226                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3227                {
3228                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3229                }
3230                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3231                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3232                }
3233            }
3234
3235            next_offset += envelope_size;
3236            _next_ordinal_to_read += 1;
3237            if next_offset >= end_offset {
3238                return Ok(());
3239            }
3240
3241            // Decode unknown envelopes for gaps in ordinals.
3242            while _next_ordinal_to_read < 6 {
3243                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3244                _next_ordinal_to_read += 1;
3245                next_offset += envelope_size;
3246            }
3247
3248            let next_out_of_line = decoder.next_out_of_line();
3249            let handles_before = decoder.remaining_handles();
3250            if let Some((inlined, num_bytes, num_handles)) =
3251                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3252            {
3253                let member_inline_size =
3254                    <NetworkIdentifier as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3255                if inlined != (member_inline_size <= 4) {
3256                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3257                }
3258                let inner_offset;
3259                let mut inner_depth = depth.clone();
3260                if inlined {
3261                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3262                    inner_offset = next_offset;
3263                } else {
3264                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3265                    inner_depth.increment()?;
3266                }
3267                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(NetworkIdentifier, D));
3268                fidl::decode!(NetworkIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
3269                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3270                {
3271                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3272                }
3273                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3274                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3275                }
3276            }
3277
3278            next_offset += envelope_size;
3279
3280            // Decode the remaining unknown envelopes.
3281            while next_offset < end_offset {
3282                _next_ordinal_to_read += 1;
3283                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3284                next_offset += envelope_size;
3285            }
3286
3287            Ok(())
3288        }
3289    }
3290
3291    impl Bss {
3292        #[inline(always)]
3293        fn max_ordinal_present(&self) -> u64 {
3294            if let Some(_) = self.timestamp_nanos {
3295                return 4;
3296            }
3297            if let Some(_) = self.frequency {
3298                return 3;
3299            }
3300            if let Some(_) = self.rssi {
3301                return 2;
3302            }
3303            if let Some(_) = self.bssid {
3304                return 1;
3305            }
3306            0
3307        }
3308    }
3309
3310    impl fidl::encoding::ValueTypeMarker for Bss {
3311        type Borrowed<'a> = &'a Self;
3312        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3313            value
3314        }
3315    }
3316
3317    unsafe impl fidl::encoding::TypeMarker for Bss {
3318        type Owned = Self;
3319
3320        #[inline(always)]
3321        fn inline_align(_context: fidl::encoding::Context) -> usize {
3322            8
3323        }
3324
3325        #[inline(always)]
3326        fn inline_size(_context: fidl::encoding::Context) -> usize {
3327            16
3328        }
3329    }
3330
3331    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Bss, D> for &Bss {
3332        unsafe fn encode(
3333            self,
3334            encoder: &mut fidl::encoding::Encoder<'_, D>,
3335            offset: usize,
3336            mut depth: fidl::encoding::Depth,
3337        ) -> fidl::Result<()> {
3338            encoder.debug_check_bounds::<Bss>(offset);
3339            // Vector header
3340            let max_ordinal: u64 = self.max_ordinal_present();
3341            encoder.write_num(max_ordinal, offset);
3342            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3343            // Calling encoder.out_of_line_offset(0) is not allowed.
3344            if max_ordinal == 0 {
3345                return Ok(());
3346            }
3347            depth.increment()?;
3348            let envelope_size = 8;
3349            let bytes_len = max_ordinal as usize * envelope_size;
3350            #[allow(unused_variables)]
3351            let offset = encoder.out_of_line_offset(bytes_len);
3352            let mut _prev_end_offset: usize = 0;
3353            if 1 > max_ordinal {
3354                return Ok(());
3355            }
3356
3357            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3358            // are envelope_size bytes.
3359            let cur_offset: usize = (1 - 1) * envelope_size;
3360
3361            // Zero reserved fields.
3362            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3363
3364            // Safety:
3365            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3366            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3367            //   envelope_size bytes, there is always sufficient room.
3368            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3369                self.bssid
3370                    .as_ref()
3371                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3372                encoder,
3373                offset + cur_offset,
3374                depth,
3375            )?;
3376
3377            _prev_end_offset = cur_offset + envelope_size;
3378            if 2 > max_ordinal {
3379                return Ok(());
3380            }
3381
3382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3383            // are envelope_size bytes.
3384            let cur_offset: usize = (2 - 1) * envelope_size;
3385
3386            // Zero reserved fields.
3387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3388
3389            // Safety:
3390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3392            //   envelope_size bytes, there is always sufficient room.
3393            fidl::encoding::encode_in_envelope_optional::<i8, D>(
3394                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3395                encoder,
3396                offset + cur_offset,
3397                depth,
3398            )?;
3399
3400            _prev_end_offset = cur_offset + envelope_size;
3401            if 3 > max_ordinal {
3402                return Ok(());
3403            }
3404
3405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3406            // are envelope_size bytes.
3407            let cur_offset: usize = (3 - 1) * envelope_size;
3408
3409            // Zero reserved fields.
3410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3411
3412            // Safety:
3413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3415            //   envelope_size bytes, there is always sufficient room.
3416            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3417                self.frequency.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3418                encoder,
3419                offset + cur_offset,
3420                depth,
3421            )?;
3422
3423            _prev_end_offset = cur_offset + envelope_size;
3424            if 4 > max_ordinal {
3425                return Ok(());
3426            }
3427
3428            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3429            // are envelope_size bytes.
3430            let cur_offset: usize = (4 - 1) * envelope_size;
3431
3432            // Zero reserved fields.
3433            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3434
3435            // Safety:
3436            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3437            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3438            //   envelope_size bytes, there is always sufficient room.
3439            fidl::encoding::encode_in_envelope_optional::<i64, D>(
3440                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3441                encoder,
3442                offset + cur_offset,
3443                depth,
3444            )?;
3445
3446            _prev_end_offset = cur_offset + envelope_size;
3447
3448            Ok(())
3449        }
3450    }
3451
3452    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Bss {
3453        #[inline(always)]
3454        fn new_empty() -> Self {
3455            Self::default()
3456        }
3457
3458        unsafe fn decode(
3459            &mut self,
3460            decoder: &mut fidl::encoding::Decoder<'_, D>,
3461            offset: usize,
3462            mut depth: fidl::encoding::Depth,
3463        ) -> fidl::Result<()> {
3464            decoder.debug_check_bounds::<Self>(offset);
3465            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3466                None => return Err(fidl::Error::NotNullable),
3467                Some(len) => len,
3468            };
3469            // Calling decoder.out_of_line_offset(0) is not allowed.
3470            if len == 0 {
3471                return Ok(());
3472            };
3473            depth.increment()?;
3474            let envelope_size = 8;
3475            let bytes_len = len * envelope_size;
3476            let offset = decoder.out_of_line_offset(bytes_len)?;
3477            // Decode the envelope for each type.
3478            let mut _next_ordinal_to_read = 0;
3479            let mut next_offset = offset;
3480            let end_offset = offset + bytes_len;
3481            _next_ordinal_to_read += 1;
3482            if next_offset >= end_offset {
3483                return Ok(());
3484            }
3485
3486            // Decode unknown envelopes for gaps in ordinals.
3487            while _next_ordinal_to_read < 1 {
3488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3489                _next_ordinal_to_read += 1;
3490                next_offset += envelope_size;
3491            }
3492
3493            let next_out_of_line = decoder.next_out_of_line();
3494            let handles_before = decoder.remaining_handles();
3495            if let Some((inlined, num_bytes, num_handles)) =
3496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3497            {
3498                let member_inline_size =
3499                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3500                        decoder.context,
3501                    );
3502                if inlined != (member_inline_size <= 4) {
3503                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3504                }
3505                let inner_offset;
3506                let mut inner_depth = depth.clone();
3507                if inlined {
3508                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3509                    inner_offset = next_offset;
3510                } else {
3511                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3512                    inner_depth.increment()?;
3513                }
3514                let val_ref = self
3515                    .bssid
3516                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3517                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3518                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3519                {
3520                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3521                }
3522                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3523                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3524                }
3525            }
3526
3527            next_offset += envelope_size;
3528            _next_ordinal_to_read += 1;
3529            if next_offset >= end_offset {
3530                return Ok(());
3531            }
3532
3533            // Decode unknown envelopes for gaps in ordinals.
3534            while _next_ordinal_to_read < 2 {
3535                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3536                _next_ordinal_to_read += 1;
3537                next_offset += envelope_size;
3538            }
3539
3540            let next_out_of_line = decoder.next_out_of_line();
3541            let handles_before = decoder.remaining_handles();
3542            if let Some((inlined, num_bytes, num_handles)) =
3543                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3544            {
3545                let member_inline_size =
3546                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3547                if inlined != (member_inline_size <= 4) {
3548                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3549                }
3550                let inner_offset;
3551                let mut inner_depth = depth.clone();
3552                if inlined {
3553                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3554                    inner_offset = next_offset;
3555                } else {
3556                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3557                    inner_depth.increment()?;
3558                }
3559                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3560                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3562                {
3563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3564                }
3565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3567                }
3568            }
3569
3570            next_offset += envelope_size;
3571            _next_ordinal_to_read += 1;
3572            if next_offset >= end_offset {
3573                return Ok(());
3574            }
3575
3576            // Decode unknown envelopes for gaps in ordinals.
3577            while _next_ordinal_to_read < 3 {
3578                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3579                _next_ordinal_to_read += 1;
3580                next_offset += envelope_size;
3581            }
3582
3583            let next_out_of_line = decoder.next_out_of_line();
3584            let handles_before = decoder.remaining_handles();
3585            if let Some((inlined, num_bytes, num_handles)) =
3586                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3587            {
3588                let member_inline_size =
3589                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3590                if inlined != (member_inline_size <= 4) {
3591                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3592                }
3593                let inner_offset;
3594                let mut inner_depth = depth.clone();
3595                if inlined {
3596                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3597                    inner_offset = next_offset;
3598                } else {
3599                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3600                    inner_depth.increment()?;
3601                }
3602                let val_ref = self.frequency.get_or_insert_with(|| fidl::new_empty!(u32, D));
3603                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3604                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3605                {
3606                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3607                }
3608                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3609                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3610                }
3611            }
3612
3613            next_offset += envelope_size;
3614            _next_ordinal_to_read += 1;
3615            if next_offset >= end_offset {
3616                return Ok(());
3617            }
3618
3619            // Decode unknown envelopes for gaps in ordinals.
3620            while _next_ordinal_to_read < 4 {
3621                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3622                _next_ordinal_to_read += 1;
3623                next_offset += envelope_size;
3624            }
3625
3626            let next_out_of_line = decoder.next_out_of_line();
3627            let handles_before = decoder.remaining_handles();
3628            if let Some((inlined, num_bytes, num_handles)) =
3629                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3630            {
3631                let member_inline_size =
3632                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3633                if inlined != (member_inline_size <= 4) {
3634                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3635                }
3636                let inner_offset;
3637                let mut inner_depth = depth.clone();
3638                if inlined {
3639                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3640                    inner_offset = next_offset;
3641                } else {
3642                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3643                    inner_depth.increment()?;
3644                }
3645                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
3646                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3647                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3648                {
3649                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3650                }
3651                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3652                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3653                }
3654            }
3655
3656            next_offset += envelope_size;
3657
3658            // Decode the remaining unknown envelopes.
3659            while next_offset < end_offset {
3660                _next_ordinal_to_read += 1;
3661                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3662                next_offset += envelope_size;
3663            }
3664
3665            Ok(())
3666        }
3667    }
3668
3669    impl ClientStateSummary {
3670        #[inline(always)]
3671        fn max_ordinal_present(&self) -> u64 {
3672            if let Some(_) = self.networks {
3673                return 2;
3674            }
3675            if let Some(_) = self.state {
3676                return 1;
3677            }
3678            0
3679        }
3680    }
3681
3682    impl fidl::encoding::ValueTypeMarker for ClientStateSummary {
3683        type Borrowed<'a> = &'a Self;
3684        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3685            value
3686        }
3687    }
3688
3689    unsafe impl fidl::encoding::TypeMarker for ClientStateSummary {
3690        type Owned = Self;
3691
3692        #[inline(always)]
3693        fn inline_align(_context: fidl::encoding::Context) -> usize {
3694            8
3695        }
3696
3697        #[inline(always)]
3698        fn inline_size(_context: fidl::encoding::Context) -> usize {
3699            16
3700        }
3701    }
3702
3703    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ClientStateSummary, D>
3704        for &ClientStateSummary
3705    {
3706        unsafe fn encode(
3707            self,
3708            encoder: &mut fidl::encoding::Encoder<'_, D>,
3709            offset: usize,
3710            mut depth: fidl::encoding::Depth,
3711        ) -> fidl::Result<()> {
3712            encoder.debug_check_bounds::<ClientStateSummary>(offset);
3713            // Vector header
3714            let max_ordinal: u64 = self.max_ordinal_present();
3715            encoder.write_num(max_ordinal, offset);
3716            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3717            // Calling encoder.out_of_line_offset(0) is not allowed.
3718            if max_ordinal == 0 {
3719                return Ok(());
3720            }
3721            depth.increment()?;
3722            let envelope_size = 8;
3723            let bytes_len = max_ordinal as usize * envelope_size;
3724            #[allow(unused_variables)]
3725            let offset = encoder.out_of_line_offset(bytes_len);
3726            let mut _prev_end_offset: usize = 0;
3727            if 1 > max_ordinal {
3728                return Ok(());
3729            }
3730
3731            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3732            // are envelope_size bytes.
3733            let cur_offset: usize = (1 - 1) * envelope_size;
3734
3735            // Zero reserved fields.
3736            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3737
3738            // Safety:
3739            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3740            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3741            //   envelope_size bytes, there is always sufficient room.
3742            fidl::encoding::encode_in_envelope_optional::<WlanClientState, D>(
3743                self.state
3744                    .as_ref()
3745                    .map(<WlanClientState as fidl::encoding::ValueTypeMarker>::borrow),
3746                encoder,
3747                offset + cur_offset,
3748                depth,
3749            )?;
3750
3751            _prev_end_offset = cur_offset + envelope_size;
3752            if 2 > max_ordinal {
3753                return Ok(());
3754            }
3755
3756            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3757            // are envelope_size bytes.
3758            let cur_offset: usize = (2 - 1) * envelope_size;
3759
3760            // Zero reserved fields.
3761            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3762
3763            // Safety:
3764            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3765            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3766            //   envelope_size bytes, there is always sufficient room.
3767            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NetworkState>, D>(
3768            self.networks.as_ref().map(<fidl::encoding::UnboundedVector<NetworkState> as fidl::encoding::ValueTypeMarker>::borrow),
3769            encoder, offset + cur_offset, depth
3770        )?;
3771
3772            _prev_end_offset = cur_offset + envelope_size;
3773
3774            Ok(())
3775        }
3776    }
3777
3778    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ClientStateSummary {
3779        #[inline(always)]
3780        fn new_empty() -> Self {
3781            Self::default()
3782        }
3783
3784        unsafe fn decode(
3785            &mut self,
3786            decoder: &mut fidl::encoding::Decoder<'_, D>,
3787            offset: usize,
3788            mut depth: fidl::encoding::Depth,
3789        ) -> fidl::Result<()> {
3790            decoder.debug_check_bounds::<Self>(offset);
3791            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3792                None => return Err(fidl::Error::NotNullable),
3793                Some(len) => len,
3794            };
3795            // Calling decoder.out_of_line_offset(0) is not allowed.
3796            if len == 0 {
3797                return Ok(());
3798            };
3799            depth.increment()?;
3800            let envelope_size = 8;
3801            let bytes_len = len * envelope_size;
3802            let offset = decoder.out_of_line_offset(bytes_len)?;
3803            // Decode the envelope for each type.
3804            let mut _next_ordinal_to_read = 0;
3805            let mut next_offset = offset;
3806            let end_offset = offset + bytes_len;
3807            _next_ordinal_to_read += 1;
3808            if next_offset >= end_offset {
3809                return Ok(());
3810            }
3811
3812            // Decode unknown envelopes for gaps in ordinals.
3813            while _next_ordinal_to_read < 1 {
3814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3815                _next_ordinal_to_read += 1;
3816                next_offset += envelope_size;
3817            }
3818
3819            let next_out_of_line = decoder.next_out_of_line();
3820            let handles_before = decoder.remaining_handles();
3821            if let Some((inlined, num_bytes, num_handles)) =
3822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3823            {
3824                let member_inline_size =
3825                    <WlanClientState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3826                if inlined != (member_inline_size <= 4) {
3827                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3828                }
3829                let inner_offset;
3830                let mut inner_depth = depth.clone();
3831                if inlined {
3832                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3833                    inner_offset = next_offset;
3834                } else {
3835                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3836                    inner_depth.increment()?;
3837                }
3838                let val_ref =
3839                    self.state.get_or_insert_with(|| fidl::new_empty!(WlanClientState, D));
3840                fidl::decode!(WlanClientState, D, val_ref, decoder, inner_offset, inner_depth)?;
3841                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3842                {
3843                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3844                }
3845                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3846                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3847                }
3848            }
3849
3850            next_offset += envelope_size;
3851            _next_ordinal_to_read += 1;
3852            if next_offset >= end_offset {
3853                return Ok(());
3854            }
3855
3856            // Decode unknown envelopes for gaps in ordinals.
3857            while _next_ordinal_to_read < 2 {
3858                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3859                _next_ordinal_to_read += 1;
3860                next_offset += envelope_size;
3861            }
3862
3863            let next_out_of_line = decoder.next_out_of_line();
3864            let handles_before = decoder.remaining_handles();
3865            if let Some((inlined, num_bytes, num_handles)) =
3866                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3867            {
3868                let member_inline_size = <fidl::encoding::UnboundedVector<NetworkState> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3869                if inlined != (member_inline_size <= 4) {
3870                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3871                }
3872                let inner_offset;
3873                let mut inner_depth = depth.clone();
3874                if inlined {
3875                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3876                    inner_offset = next_offset;
3877                } else {
3878                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3879                    inner_depth.increment()?;
3880                }
3881                let val_ref = self.networks.get_or_insert_with(|| {
3882                    fidl::new_empty!(fidl::encoding::UnboundedVector<NetworkState>, D)
3883                });
3884                fidl::decode!(
3885                    fidl::encoding::UnboundedVector<NetworkState>,
3886                    D,
3887                    val_ref,
3888                    decoder,
3889                    inner_offset,
3890                    inner_depth
3891                )?;
3892                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3893                {
3894                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3895                }
3896                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3897                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3898                }
3899            }
3900
3901            next_offset += envelope_size;
3902
3903            // Decode the remaining unknown envelopes.
3904            while next_offset < end_offset {
3905                _next_ordinal_to_read += 1;
3906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3907                next_offset += envelope_size;
3908            }
3909
3910            Ok(())
3911        }
3912    }
3913
3914    impl ConnectedClientInformation {
3915        #[inline(always)]
3916        fn max_ordinal_present(&self) -> u64 {
3917            if let Some(_) = self.count {
3918                return 1;
3919            }
3920            0
3921        }
3922    }
3923
3924    impl fidl::encoding::ValueTypeMarker for ConnectedClientInformation {
3925        type Borrowed<'a> = &'a Self;
3926        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3927            value
3928        }
3929    }
3930
3931    unsafe impl fidl::encoding::TypeMarker for ConnectedClientInformation {
3932        type Owned = Self;
3933
3934        #[inline(always)]
3935        fn inline_align(_context: fidl::encoding::Context) -> usize {
3936            8
3937        }
3938
3939        #[inline(always)]
3940        fn inline_size(_context: fidl::encoding::Context) -> usize {
3941            16
3942        }
3943    }
3944
3945    unsafe impl<D: fidl::encoding::ResourceDialect>
3946        fidl::encoding::Encode<ConnectedClientInformation, D> for &ConnectedClientInformation
3947    {
3948        unsafe fn encode(
3949            self,
3950            encoder: &mut fidl::encoding::Encoder<'_, D>,
3951            offset: usize,
3952            mut depth: fidl::encoding::Depth,
3953        ) -> fidl::Result<()> {
3954            encoder.debug_check_bounds::<ConnectedClientInformation>(offset);
3955            // Vector header
3956            let max_ordinal: u64 = self.max_ordinal_present();
3957            encoder.write_num(max_ordinal, offset);
3958            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3959            // Calling encoder.out_of_line_offset(0) is not allowed.
3960            if max_ordinal == 0 {
3961                return Ok(());
3962            }
3963            depth.increment()?;
3964            let envelope_size = 8;
3965            let bytes_len = max_ordinal as usize * envelope_size;
3966            #[allow(unused_variables)]
3967            let offset = encoder.out_of_line_offset(bytes_len);
3968            let mut _prev_end_offset: usize = 0;
3969            if 1 > max_ordinal {
3970                return Ok(());
3971            }
3972
3973            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3974            // are envelope_size bytes.
3975            let cur_offset: usize = (1 - 1) * envelope_size;
3976
3977            // Zero reserved fields.
3978            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3979
3980            // Safety:
3981            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3982            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3983            //   envelope_size bytes, there is always sufficient room.
3984            fidl::encoding::encode_in_envelope_optional::<u8, D>(
3985                self.count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3986                encoder,
3987                offset + cur_offset,
3988                depth,
3989            )?;
3990
3991            _prev_end_offset = cur_offset + envelope_size;
3992
3993            Ok(())
3994        }
3995    }
3996
3997    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3998        for ConnectedClientInformation
3999    {
4000        #[inline(always)]
4001        fn new_empty() -> Self {
4002            Self::default()
4003        }
4004
4005        unsafe fn decode(
4006            &mut self,
4007            decoder: &mut fidl::encoding::Decoder<'_, D>,
4008            offset: usize,
4009            mut depth: fidl::encoding::Depth,
4010        ) -> fidl::Result<()> {
4011            decoder.debug_check_bounds::<Self>(offset);
4012            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4013                None => return Err(fidl::Error::NotNullable),
4014                Some(len) => len,
4015            };
4016            // Calling decoder.out_of_line_offset(0) is not allowed.
4017            if len == 0 {
4018                return Ok(());
4019            };
4020            depth.increment()?;
4021            let envelope_size = 8;
4022            let bytes_len = len * envelope_size;
4023            let offset = decoder.out_of_line_offset(bytes_len)?;
4024            // Decode the envelope for each type.
4025            let mut _next_ordinal_to_read = 0;
4026            let mut next_offset = offset;
4027            let end_offset = offset + bytes_len;
4028            _next_ordinal_to_read += 1;
4029            if next_offset >= end_offset {
4030                return Ok(());
4031            }
4032
4033            // Decode unknown envelopes for gaps in ordinals.
4034            while _next_ordinal_to_read < 1 {
4035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4036                _next_ordinal_to_read += 1;
4037                next_offset += envelope_size;
4038            }
4039
4040            let next_out_of_line = decoder.next_out_of_line();
4041            let handles_before = decoder.remaining_handles();
4042            if let Some((inlined, num_bytes, num_handles)) =
4043                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4044            {
4045                let member_inline_size =
4046                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4047                if inlined != (member_inline_size <= 4) {
4048                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4049                }
4050                let inner_offset;
4051                let mut inner_depth = depth.clone();
4052                if inlined {
4053                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4054                    inner_offset = next_offset;
4055                } else {
4056                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4057                    inner_depth.increment()?;
4058                }
4059                let val_ref = self.count.get_or_insert_with(|| fidl::new_empty!(u8, D));
4060                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4061                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4062                {
4063                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4064                }
4065                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4066                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4067                }
4068            }
4069
4070            next_offset += envelope_size;
4071
4072            // Decode the remaining unknown envelopes.
4073            while next_offset < end_offset {
4074                _next_ordinal_to_read += 1;
4075                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4076                next_offset += envelope_size;
4077            }
4078
4079            Ok(())
4080        }
4081    }
4082
4083    impl NetworkConfig {
4084        #[inline(always)]
4085        fn max_ordinal_present(&self) -> u64 {
4086            if let Some(_) = self.credential {
4087                return 2;
4088            }
4089            if let Some(_) = self.id {
4090                return 1;
4091            }
4092            0
4093        }
4094    }
4095
4096    impl fidl::encoding::ValueTypeMarker for NetworkConfig {
4097        type Borrowed<'a> = &'a Self;
4098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4099            value
4100        }
4101    }
4102
4103    unsafe impl fidl::encoding::TypeMarker for NetworkConfig {
4104        type Owned = Self;
4105
4106        #[inline(always)]
4107        fn inline_align(_context: fidl::encoding::Context) -> usize {
4108            8
4109        }
4110
4111        #[inline(always)]
4112        fn inline_size(_context: fidl::encoding::Context) -> usize {
4113            16
4114        }
4115    }
4116
4117    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkConfig, D>
4118        for &NetworkConfig
4119    {
4120        unsafe fn encode(
4121            self,
4122            encoder: &mut fidl::encoding::Encoder<'_, D>,
4123            offset: usize,
4124            mut depth: fidl::encoding::Depth,
4125        ) -> fidl::Result<()> {
4126            encoder.debug_check_bounds::<NetworkConfig>(offset);
4127            // Vector header
4128            let max_ordinal: u64 = self.max_ordinal_present();
4129            encoder.write_num(max_ordinal, offset);
4130            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4131            // Calling encoder.out_of_line_offset(0) is not allowed.
4132            if max_ordinal == 0 {
4133                return Ok(());
4134            }
4135            depth.increment()?;
4136            let envelope_size = 8;
4137            let bytes_len = max_ordinal as usize * envelope_size;
4138            #[allow(unused_variables)]
4139            let offset = encoder.out_of_line_offset(bytes_len);
4140            let mut _prev_end_offset: usize = 0;
4141            if 1 > max_ordinal {
4142                return Ok(());
4143            }
4144
4145            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4146            // are envelope_size bytes.
4147            let cur_offset: usize = (1 - 1) * envelope_size;
4148
4149            // Zero reserved fields.
4150            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4151
4152            // Safety:
4153            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4154            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4155            //   envelope_size bytes, there is always sufficient room.
4156            fidl::encoding::encode_in_envelope_optional::<NetworkIdentifier, D>(
4157                self.id
4158                    .as_ref()
4159                    .map(<NetworkIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
4160                encoder,
4161                offset + cur_offset,
4162                depth,
4163            )?;
4164
4165            _prev_end_offset = cur_offset + envelope_size;
4166            if 2 > max_ordinal {
4167                return Ok(());
4168            }
4169
4170            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4171            // are envelope_size bytes.
4172            let cur_offset: usize = (2 - 1) * envelope_size;
4173
4174            // Zero reserved fields.
4175            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4176
4177            // Safety:
4178            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4179            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4180            //   envelope_size bytes, there is always sufficient room.
4181            fidl::encoding::encode_in_envelope_optional::<Credential, D>(
4182                self.credential
4183                    .as_ref()
4184                    .map(<Credential as fidl::encoding::ValueTypeMarker>::borrow),
4185                encoder,
4186                offset + cur_offset,
4187                depth,
4188            )?;
4189
4190            _prev_end_offset = cur_offset + envelope_size;
4191
4192            Ok(())
4193        }
4194    }
4195
4196    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkConfig {
4197        #[inline(always)]
4198        fn new_empty() -> Self {
4199            Self::default()
4200        }
4201
4202        unsafe fn decode(
4203            &mut self,
4204            decoder: &mut fidl::encoding::Decoder<'_, D>,
4205            offset: usize,
4206            mut depth: fidl::encoding::Depth,
4207        ) -> fidl::Result<()> {
4208            decoder.debug_check_bounds::<Self>(offset);
4209            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4210                None => return Err(fidl::Error::NotNullable),
4211                Some(len) => len,
4212            };
4213            // Calling decoder.out_of_line_offset(0) is not allowed.
4214            if len == 0 {
4215                return Ok(());
4216            };
4217            depth.increment()?;
4218            let envelope_size = 8;
4219            let bytes_len = len * envelope_size;
4220            let offset = decoder.out_of_line_offset(bytes_len)?;
4221            // Decode the envelope for each type.
4222            let mut _next_ordinal_to_read = 0;
4223            let mut next_offset = offset;
4224            let end_offset = offset + bytes_len;
4225            _next_ordinal_to_read += 1;
4226            if next_offset >= end_offset {
4227                return Ok(());
4228            }
4229
4230            // Decode unknown envelopes for gaps in ordinals.
4231            while _next_ordinal_to_read < 1 {
4232                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4233                _next_ordinal_to_read += 1;
4234                next_offset += envelope_size;
4235            }
4236
4237            let next_out_of_line = decoder.next_out_of_line();
4238            let handles_before = decoder.remaining_handles();
4239            if let Some((inlined, num_bytes, num_handles)) =
4240                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4241            {
4242                let member_inline_size =
4243                    <NetworkIdentifier as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4244                if inlined != (member_inline_size <= 4) {
4245                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4246                }
4247                let inner_offset;
4248                let mut inner_depth = depth.clone();
4249                if inlined {
4250                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4251                    inner_offset = next_offset;
4252                } else {
4253                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4254                    inner_depth.increment()?;
4255                }
4256                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(NetworkIdentifier, D));
4257                fidl::decode!(NetworkIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
4258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4259                {
4260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4261                }
4262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4264                }
4265            }
4266
4267            next_offset += envelope_size;
4268            _next_ordinal_to_read += 1;
4269            if next_offset >= end_offset {
4270                return Ok(());
4271            }
4272
4273            // Decode unknown envelopes for gaps in ordinals.
4274            while _next_ordinal_to_read < 2 {
4275                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4276                _next_ordinal_to_read += 1;
4277                next_offset += envelope_size;
4278            }
4279
4280            let next_out_of_line = decoder.next_out_of_line();
4281            let handles_before = decoder.remaining_handles();
4282            if let Some((inlined, num_bytes, num_handles)) =
4283                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4284            {
4285                let member_inline_size =
4286                    <Credential as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4287                if inlined != (member_inline_size <= 4) {
4288                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4289                }
4290                let inner_offset;
4291                let mut inner_depth = depth.clone();
4292                if inlined {
4293                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4294                    inner_offset = next_offset;
4295                } else {
4296                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4297                    inner_depth.increment()?;
4298                }
4299                let val_ref =
4300                    self.credential.get_or_insert_with(|| fidl::new_empty!(Credential, D));
4301                fidl::decode!(Credential, D, val_ref, decoder, inner_offset, inner_depth)?;
4302                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4303                {
4304                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4305                }
4306                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4307                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4308                }
4309            }
4310
4311            next_offset += envelope_size;
4312
4313            // Decode the remaining unknown envelopes.
4314            while next_offset < end_offset {
4315                _next_ordinal_to_read += 1;
4316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4317                next_offset += envelope_size;
4318            }
4319
4320            Ok(())
4321        }
4322    }
4323
4324    impl NetworkState {
4325        #[inline(always)]
4326        fn max_ordinal_present(&self) -> u64 {
4327            if let Some(_) = self.status {
4328                return 3;
4329            }
4330            if let Some(_) = self.state {
4331                return 2;
4332            }
4333            if let Some(_) = self.id {
4334                return 1;
4335            }
4336            0
4337        }
4338    }
4339
4340    impl fidl::encoding::ValueTypeMarker for NetworkState {
4341        type Borrowed<'a> = &'a Self;
4342        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4343            value
4344        }
4345    }
4346
4347    unsafe impl fidl::encoding::TypeMarker for NetworkState {
4348        type Owned = Self;
4349
4350        #[inline(always)]
4351        fn inline_align(_context: fidl::encoding::Context) -> usize {
4352            8
4353        }
4354
4355        #[inline(always)]
4356        fn inline_size(_context: fidl::encoding::Context) -> usize {
4357            16
4358        }
4359    }
4360
4361    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkState, D>
4362        for &NetworkState
4363    {
4364        unsafe fn encode(
4365            self,
4366            encoder: &mut fidl::encoding::Encoder<'_, D>,
4367            offset: usize,
4368            mut depth: fidl::encoding::Depth,
4369        ) -> fidl::Result<()> {
4370            encoder.debug_check_bounds::<NetworkState>(offset);
4371            // Vector header
4372            let max_ordinal: u64 = self.max_ordinal_present();
4373            encoder.write_num(max_ordinal, offset);
4374            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4375            // Calling encoder.out_of_line_offset(0) is not allowed.
4376            if max_ordinal == 0 {
4377                return Ok(());
4378            }
4379            depth.increment()?;
4380            let envelope_size = 8;
4381            let bytes_len = max_ordinal as usize * envelope_size;
4382            #[allow(unused_variables)]
4383            let offset = encoder.out_of_line_offset(bytes_len);
4384            let mut _prev_end_offset: usize = 0;
4385            if 1 > max_ordinal {
4386                return Ok(());
4387            }
4388
4389            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4390            // are envelope_size bytes.
4391            let cur_offset: usize = (1 - 1) * envelope_size;
4392
4393            // Zero reserved fields.
4394            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4395
4396            // Safety:
4397            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4398            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4399            //   envelope_size bytes, there is always sufficient room.
4400            fidl::encoding::encode_in_envelope_optional::<NetworkIdentifier, D>(
4401                self.id
4402                    .as_ref()
4403                    .map(<NetworkIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
4404                encoder,
4405                offset + cur_offset,
4406                depth,
4407            )?;
4408
4409            _prev_end_offset = cur_offset + envelope_size;
4410            if 2 > max_ordinal {
4411                return Ok(());
4412            }
4413
4414            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4415            // are envelope_size bytes.
4416            let cur_offset: usize = (2 - 1) * envelope_size;
4417
4418            // Zero reserved fields.
4419            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4420
4421            // Safety:
4422            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4423            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4424            //   envelope_size bytes, there is always sufficient room.
4425            fidl::encoding::encode_in_envelope_optional::<ConnectionState, D>(
4426                self.state
4427                    .as_ref()
4428                    .map(<ConnectionState as fidl::encoding::ValueTypeMarker>::borrow),
4429                encoder,
4430                offset + cur_offset,
4431                depth,
4432            )?;
4433
4434            _prev_end_offset = cur_offset + envelope_size;
4435            if 3 > max_ordinal {
4436                return Ok(());
4437            }
4438
4439            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4440            // are envelope_size bytes.
4441            let cur_offset: usize = (3 - 1) * envelope_size;
4442
4443            // Zero reserved fields.
4444            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4445
4446            // Safety:
4447            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4448            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4449            //   envelope_size bytes, there is always sufficient room.
4450            fidl::encoding::encode_in_envelope_optional::<DisconnectStatus, D>(
4451                self.status
4452                    .as_ref()
4453                    .map(<DisconnectStatus as fidl::encoding::ValueTypeMarker>::borrow),
4454                encoder,
4455                offset + cur_offset,
4456                depth,
4457            )?;
4458
4459            _prev_end_offset = cur_offset + envelope_size;
4460
4461            Ok(())
4462        }
4463    }
4464
4465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkState {
4466        #[inline(always)]
4467        fn new_empty() -> Self {
4468            Self::default()
4469        }
4470
4471        unsafe fn decode(
4472            &mut self,
4473            decoder: &mut fidl::encoding::Decoder<'_, D>,
4474            offset: usize,
4475            mut depth: fidl::encoding::Depth,
4476        ) -> fidl::Result<()> {
4477            decoder.debug_check_bounds::<Self>(offset);
4478            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4479                None => return Err(fidl::Error::NotNullable),
4480                Some(len) => len,
4481            };
4482            // Calling decoder.out_of_line_offset(0) is not allowed.
4483            if len == 0 {
4484                return Ok(());
4485            };
4486            depth.increment()?;
4487            let envelope_size = 8;
4488            let bytes_len = len * envelope_size;
4489            let offset = decoder.out_of_line_offset(bytes_len)?;
4490            // Decode the envelope for each type.
4491            let mut _next_ordinal_to_read = 0;
4492            let mut next_offset = offset;
4493            let end_offset = offset + bytes_len;
4494            _next_ordinal_to_read += 1;
4495            if next_offset >= end_offset {
4496                return Ok(());
4497            }
4498
4499            // Decode unknown envelopes for gaps in ordinals.
4500            while _next_ordinal_to_read < 1 {
4501                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4502                _next_ordinal_to_read += 1;
4503                next_offset += envelope_size;
4504            }
4505
4506            let next_out_of_line = decoder.next_out_of_line();
4507            let handles_before = decoder.remaining_handles();
4508            if let Some((inlined, num_bytes, num_handles)) =
4509                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4510            {
4511                let member_inline_size =
4512                    <NetworkIdentifier as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4513                if inlined != (member_inline_size <= 4) {
4514                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4515                }
4516                let inner_offset;
4517                let mut inner_depth = depth.clone();
4518                if inlined {
4519                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4520                    inner_offset = next_offset;
4521                } else {
4522                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4523                    inner_depth.increment()?;
4524                }
4525                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(NetworkIdentifier, D));
4526                fidl::decode!(NetworkIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
4527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4528                {
4529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4530                }
4531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4533                }
4534            }
4535
4536            next_offset += envelope_size;
4537            _next_ordinal_to_read += 1;
4538            if next_offset >= end_offset {
4539                return Ok(());
4540            }
4541
4542            // Decode unknown envelopes for gaps in ordinals.
4543            while _next_ordinal_to_read < 2 {
4544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4545                _next_ordinal_to_read += 1;
4546                next_offset += envelope_size;
4547            }
4548
4549            let next_out_of_line = decoder.next_out_of_line();
4550            let handles_before = decoder.remaining_handles();
4551            if let Some((inlined, num_bytes, num_handles)) =
4552                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4553            {
4554                let member_inline_size =
4555                    <ConnectionState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4556                if inlined != (member_inline_size <= 4) {
4557                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4558                }
4559                let inner_offset;
4560                let mut inner_depth = depth.clone();
4561                if inlined {
4562                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4563                    inner_offset = next_offset;
4564                } else {
4565                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4566                    inner_depth.increment()?;
4567                }
4568                let val_ref =
4569                    self.state.get_or_insert_with(|| fidl::new_empty!(ConnectionState, D));
4570                fidl::decode!(ConnectionState, D, val_ref, decoder, inner_offset, inner_depth)?;
4571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4572                {
4573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4574                }
4575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4577                }
4578            }
4579
4580            next_offset += envelope_size;
4581            _next_ordinal_to_read += 1;
4582            if next_offset >= end_offset {
4583                return Ok(());
4584            }
4585
4586            // Decode unknown envelopes for gaps in ordinals.
4587            while _next_ordinal_to_read < 3 {
4588                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4589                _next_ordinal_to_read += 1;
4590                next_offset += envelope_size;
4591            }
4592
4593            let next_out_of_line = decoder.next_out_of_line();
4594            let handles_before = decoder.remaining_handles();
4595            if let Some((inlined, num_bytes, num_handles)) =
4596                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4597            {
4598                let member_inline_size =
4599                    <DisconnectStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4600                if inlined != (member_inline_size <= 4) {
4601                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4602                }
4603                let inner_offset;
4604                let mut inner_depth = depth.clone();
4605                if inlined {
4606                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4607                    inner_offset = next_offset;
4608                } else {
4609                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4610                    inner_depth.increment()?;
4611                }
4612                let val_ref =
4613                    self.status.get_or_insert_with(|| fidl::new_empty!(DisconnectStatus, D));
4614                fidl::decode!(DisconnectStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
4615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4616                {
4617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4618                }
4619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4621                }
4622            }
4623
4624            next_offset += envelope_size;
4625
4626            // Decode the remaining unknown envelopes.
4627            while next_offset < end_offset {
4628                _next_ordinal_to_read += 1;
4629                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4630                next_offset += envelope_size;
4631            }
4632
4633            Ok(())
4634        }
4635    }
4636
4637    impl ScanResult {
4638        #[inline(always)]
4639        fn max_ordinal_present(&self) -> u64 {
4640            if let Some(_) = self.compatibility {
4641                return 3;
4642            }
4643            if let Some(_) = self.entries {
4644                return 2;
4645            }
4646            if let Some(_) = self.id {
4647                return 1;
4648            }
4649            0
4650        }
4651    }
4652
4653    impl fidl::encoding::ValueTypeMarker for ScanResult {
4654        type Borrowed<'a> = &'a Self;
4655        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4656            value
4657        }
4658    }
4659
4660    unsafe impl fidl::encoding::TypeMarker for ScanResult {
4661        type Owned = Self;
4662
4663        #[inline(always)]
4664        fn inline_align(_context: fidl::encoding::Context) -> usize {
4665            8
4666        }
4667
4668        #[inline(always)]
4669        fn inline_size(_context: fidl::encoding::Context) -> usize {
4670            16
4671        }
4672    }
4673
4674    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
4675        for &ScanResult
4676    {
4677        unsafe fn encode(
4678            self,
4679            encoder: &mut fidl::encoding::Encoder<'_, D>,
4680            offset: usize,
4681            mut depth: fidl::encoding::Depth,
4682        ) -> fidl::Result<()> {
4683            encoder.debug_check_bounds::<ScanResult>(offset);
4684            // Vector header
4685            let max_ordinal: u64 = self.max_ordinal_present();
4686            encoder.write_num(max_ordinal, offset);
4687            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4688            // Calling encoder.out_of_line_offset(0) is not allowed.
4689            if max_ordinal == 0 {
4690                return Ok(());
4691            }
4692            depth.increment()?;
4693            let envelope_size = 8;
4694            let bytes_len = max_ordinal as usize * envelope_size;
4695            #[allow(unused_variables)]
4696            let offset = encoder.out_of_line_offset(bytes_len);
4697            let mut _prev_end_offset: usize = 0;
4698            if 1 > max_ordinal {
4699                return Ok(());
4700            }
4701
4702            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4703            // are envelope_size bytes.
4704            let cur_offset: usize = (1 - 1) * envelope_size;
4705
4706            // Zero reserved fields.
4707            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4708
4709            // Safety:
4710            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4711            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4712            //   envelope_size bytes, there is always sufficient room.
4713            fidl::encoding::encode_in_envelope_optional::<NetworkIdentifier, D>(
4714                self.id
4715                    .as_ref()
4716                    .map(<NetworkIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
4717                encoder,
4718                offset + cur_offset,
4719                depth,
4720            )?;
4721
4722            _prev_end_offset = cur_offset + envelope_size;
4723            if 2 > max_ordinal {
4724                return Ok(());
4725            }
4726
4727            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4728            // are envelope_size bytes.
4729            let cur_offset: usize = (2 - 1) * envelope_size;
4730
4731            // Zero reserved fields.
4732            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4733
4734            // Safety:
4735            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4736            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4737            //   envelope_size bytes, there is always sufficient room.
4738            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Bss>, D>(
4739            self.entries.as_ref().map(<fidl::encoding::UnboundedVector<Bss> as fidl::encoding::ValueTypeMarker>::borrow),
4740            encoder, offset + cur_offset, depth
4741        )?;
4742
4743            _prev_end_offset = cur_offset + envelope_size;
4744            if 3 > max_ordinal {
4745                return Ok(());
4746            }
4747
4748            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4749            // are envelope_size bytes.
4750            let cur_offset: usize = (3 - 1) * envelope_size;
4751
4752            // Zero reserved fields.
4753            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4754
4755            // Safety:
4756            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4757            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4758            //   envelope_size bytes, there is always sufficient room.
4759            fidl::encoding::encode_in_envelope_optional::<Compatibility, D>(
4760                self.compatibility
4761                    .as_ref()
4762                    .map(<Compatibility as fidl::encoding::ValueTypeMarker>::borrow),
4763                encoder,
4764                offset + cur_offset,
4765                depth,
4766            )?;
4767
4768            _prev_end_offset = cur_offset + envelope_size;
4769
4770            Ok(())
4771        }
4772    }
4773
4774    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
4775        #[inline(always)]
4776        fn new_empty() -> Self {
4777            Self::default()
4778        }
4779
4780        unsafe fn decode(
4781            &mut self,
4782            decoder: &mut fidl::encoding::Decoder<'_, D>,
4783            offset: usize,
4784            mut depth: fidl::encoding::Depth,
4785        ) -> fidl::Result<()> {
4786            decoder.debug_check_bounds::<Self>(offset);
4787            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4788                None => return Err(fidl::Error::NotNullable),
4789                Some(len) => len,
4790            };
4791            // Calling decoder.out_of_line_offset(0) is not allowed.
4792            if len == 0 {
4793                return Ok(());
4794            };
4795            depth.increment()?;
4796            let envelope_size = 8;
4797            let bytes_len = len * envelope_size;
4798            let offset = decoder.out_of_line_offset(bytes_len)?;
4799            // Decode the envelope for each type.
4800            let mut _next_ordinal_to_read = 0;
4801            let mut next_offset = offset;
4802            let end_offset = offset + bytes_len;
4803            _next_ordinal_to_read += 1;
4804            if next_offset >= end_offset {
4805                return Ok(());
4806            }
4807
4808            // Decode unknown envelopes for gaps in ordinals.
4809            while _next_ordinal_to_read < 1 {
4810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4811                _next_ordinal_to_read += 1;
4812                next_offset += envelope_size;
4813            }
4814
4815            let next_out_of_line = decoder.next_out_of_line();
4816            let handles_before = decoder.remaining_handles();
4817            if let Some((inlined, num_bytes, num_handles)) =
4818                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4819            {
4820                let member_inline_size =
4821                    <NetworkIdentifier as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4822                if inlined != (member_inline_size <= 4) {
4823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4824                }
4825                let inner_offset;
4826                let mut inner_depth = depth.clone();
4827                if inlined {
4828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4829                    inner_offset = next_offset;
4830                } else {
4831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4832                    inner_depth.increment()?;
4833                }
4834                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(NetworkIdentifier, D));
4835                fidl::decode!(NetworkIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
4836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4837                {
4838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4839                }
4840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4842                }
4843            }
4844
4845            next_offset += envelope_size;
4846            _next_ordinal_to_read += 1;
4847            if next_offset >= end_offset {
4848                return Ok(());
4849            }
4850
4851            // Decode unknown envelopes for gaps in ordinals.
4852            while _next_ordinal_to_read < 2 {
4853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4854                _next_ordinal_to_read += 1;
4855                next_offset += envelope_size;
4856            }
4857
4858            let next_out_of_line = decoder.next_out_of_line();
4859            let handles_before = decoder.remaining_handles();
4860            if let Some((inlined, num_bytes, num_handles)) =
4861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4862            {
4863                let member_inline_size = <fidl::encoding::UnboundedVector<Bss> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4864                if inlined != (member_inline_size <= 4) {
4865                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4866                }
4867                let inner_offset;
4868                let mut inner_depth = depth.clone();
4869                if inlined {
4870                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4871                    inner_offset = next_offset;
4872                } else {
4873                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4874                    inner_depth.increment()?;
4875                }
4876                let val_ref = self.entries.get_or_insert_with(|| {
4877                    fidl::new_empty!(fidl::encoding::UnboundedVector<Bss>, D)
4878                });
4879                fidl::decode!(
4880                    fidl::encoding::UnboundedVector<Bss>,
4881                    D,
4882                    val_ref,
4883                    decoder,
4884                    inner_offset,
4885                    inner_depth
4886                )?;
4887                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4888                {
4889                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4890                }
4891                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4892                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4893                }
4894            }
4895
4896            next_offset += envelope_size;
4897            _next_ordinal_to_read += 1;
4898            if next_offset >= end_offset {
4899                return Ok(());
4900            }
4901
4902            // Decode unknown envelopes for gaps in ordinals.
4903            while _next_ordinal_to_read < 3 {
4904                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4905                _next_ordinal_to_read += 1;
4906                next_offset += envelope_size;
4907            }
4908
4909            let next_out_of_line = decoder.next_out_of_line();
4910            let handles_before = decoder.remaining_handles();
4911            if let Some((inlined, num_bytes, num_handles)) =
4912                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4913            {
4914                let member_inline_size =
4915                    <Compatibility as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4916                if inlined != (member_inline_size <= 4) {
4917                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4918                }
4919                let inner_offset;
4920                let mut inner_depth = depth.clone();
4921                if inlined {
4922                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4923                    inner_offset = next_offset;
4924                } else {
4925                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4926                    inner_depth.increment()?;
4927                }
4928                let val_ref =
4929                    self.compatibility.get_or_insert_with(|| fidl::new_empty!(Compatibility, D));
4930                fidl::decode!(Compatibility, D, val_ref, decoder, inner_offset, inner_depth)?;
4931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4932                {
4933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4934                }
4935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4937                }
4938            }
4939
4940            next_offset += envelope_size;
4941
4942            // Decode the remaining unknown envelopes.
4943            while next_offset < end_offset {
4944                _next_ordinal_to_read += 1;
4945                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4946                next_offset += envelope_size;
4947            }
4948
4949            Ok(())
4950        }
4951    }
4952
4953    impl fidl::encoding::ValueTypeMarker for Credential {
4954        type Borrowed<'a> = &'a Self;
4955        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4956            value
4957        }
4958    }
4959
4960    unsafe impl fidl::encoding::TypeMarker for Credential {
4961        type Owned = Self;
4962
4963        #[inline(always)]
4964        fn inline_align(_context: fidl::encoding::Context) -> usize {
4965            8
4966        }
4967
4968        #[inline(always)]
4969        fn inline_size(_context: fidl::encoding::Context) -> usize {
4970            16
4971        }
4972    }
4973
4974    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Credential, D>
4975        for &Credential
4976    {
4977        #[inline]
4978        unsafe fn encode(
4979            self,
4980            encoder: &mut fidl::encoding::Encoder<'_, D>,
4981            offset: usize,
4982            _depth: fidl::encoding::Depth,
4983        ) -> fidl::Result<()> {
4984            encoder.debug_check_bounds::<Credential>(offset);
4985            encoder.write_num::<u64>(self.ordinal(), offset);
4986            match self {
4987            Credential::None(ref val) => {
4988                fidl::encoding::encode_in_envelope::<Empty, D>(
4989                    <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
4990                    encoder, offset + 8, _depth
4991                )
4992            }
4993            Credential::Password(ref val) => {
4994                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
4995                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
4996                    encoder, offset + 8, _depth
4997                )
4998            }
4999            Credential::Psk(ref val) => {
5000                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
5001                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
5002                    encoder, offset + 8, _depth
5003                )
5004            }
5005            Credential::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
5006        }
5007        }
5008    }
5009
5010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Credential {
5011        #[inline(always)]
5012        fn new_empty() -> Self {
5013            Self::__SourceBreaking { unknown_ordinal: 0 }
5014        }
5015
5016        #[inline]
5017        unsafe fn decode(
5018            &mut self,
5019            decoder: &mut fidl::encoding::Decoder<'_, D>,
5020            offset: usize,
5021            mut depth: fidl::encoding::Depth,
5022        ) -> fidl::Result<()> {
5023            decoder.debug_check_bounds::<Self>(offset);
5024            #[allow(unused_variables)]
5025            let next_out_of_line = decoder.next_out_of_line();
5026            let handles_before = decoder.remaining_handles();
5027            let (ordinal, inlined, num_bytes, num_handles) =
5028                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5029
5030            let member_inline_size = match ordinal {
5031                1 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5032                2 => {
5033                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(
5034                        decoder.context,
5035                    )
5036                }
5037                3 => {
5038                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(
5039                        decoder.context,
5040                    )
5041                }
5042                0 => return Err(fidl::Error::UnknownUnionTag),
5043                _ => num_bytes as usize,
5044            };
5045
5046            if inlined != (member_inline_size <= 4) {
5047                return Err(fidl::Error::InvalidInlineBitInEnvelope);
5048            }
5049            let _inner_offset;
5050            if inlined {
5051                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5052                _inner_offset = offset + 8;
5053            } else {
5054                depth.increment()?;
5055                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5056            }
5057            match ordinal {
5058                1 => {
5059                    #[allow(irrefutable_let_patterns)]
5060                    if let Credential::None(_) = self {
5061                        // Do nothing, read the value into the object
5062                    } else {
5063                        // Initialize `self` to the right variant
5064                        *self = Credential::None(fidl::new_empty!(Empty, D));
5065                    }
5066                    #[allow(irrefutable_let_patterns)]
5067                    if let Credential::None(ref mut val) = self {
5068                        fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
5069                    } else {
5070                        unreachable!()
5071                    }
5072                }
5073                2 => {
5074                    #[allow(irrefutable_let_patterns)]
5075                    if let Credential::Password(_) = self {
5076                        // Do nothing, read the value into the object
5077                    } else {
5078                        // Initialize `self` to the right variant
5079                        *self = Credential::Password(fidl::new_empty!(
5080                            fidl::encoding::UnboundedVector<u8>,
5081                            D
5082                        ));
5083                    }
5084                    #[allow(irrefutable_let_patterns)]
5085                    if let Credential::Password(ref mut val) = self {
5086                        fidl::decode!(
5087                            fidl::encoding::UnboundedVector<u8>,
5088                            D,
5089                            val,
5090                            decoder,
5091                            _inner_offset,
5092                            depth
5093                        )?;
5094                    } else {
5095                        unreachable!()
5096                    }
5097                }
5098                3 => {
5099                    #[allow(irrefutable_let_patterns)]
5100                    if let Credential::Psk(_) = self {
5101                        // Do nothing, read the value into the object
5102                    } else {
5103                        // Initialize `self` to the right variant
5104                        *self = Credential::Psk(fidl::new_empty!(
5105                            fidl::encoding::UnboundedVector<u8>,
5106                            D
5107                        ));
5108                    }
5109                    #[allow(irrefutable_let_patterns)]
5110                    if let Credential::Psk(ref mut val) = self {
5111                        fidl::decode!(
5112                            fidl::encoding::UnboundedVector<u8>,
5113                            D,
5114                            val,
5115                            decoder,
5116                            _inner_offset,
5117                            depth
5118                        )?;
5119                    } else {
5120                        unreachable!()
5121                    }
5122                }
5123                #[allow(deprecated)]
5124                ordinal => {
5125                    for _ in 0..num_handles {
5126                        decoder.drop_next_handle()?;
5127                    }
5128                    *self = Credential::__SourceBreaking { unknown_ordinal: ordinal };
5129                }
5130            }
5131            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5132                return Err(fidl::Error::InvalidNumBytesInEnvelope);
5133            }
5134            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5135                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5136            }
5137            Ok(())
5138        }
5139    }
5140}