V1.9.1 hotfixes (#41504)

* [flutter_tools] Report iOS mDNS lookup failures to analytics (#41384)
* [flutter_tools] Adds tests of mdns analytics events (#41410)
* [flutter_tool] Add analytics events for ios-mdns fallback success/failure (#41482)
* roll ideviceinstaller, libimobiledevice, libplist, openssl & usbmuxd to signed versions (#41411)
diff --git a/bin/internal/ideviceinstaller.version b/bin/internal/ideviceinstaller.version
index 90f1492..fdcaee8 100644
--- a/bin/internal/ideviceinstaller.version
+++ b/bin/internal/ideviceinstaller.version
@@ -1 +1 @@
-ab9352110092cf651b5602301371cd00691c7e13
+73b9c81e02f83060aa44bece963a62827908de68
diff --git a/bin/internal/libimobiledevice.version b/bin/internal/libimobiledevice.version
index 0fc801b..043a9e8 100644
--- a/bin/internal/libimobiledevice.version
+++ b/bin/internal/libimobiledevice.version
@@ -1 +1 @@
-398c1208731cb887c64a31c2ae111048b079f80d
+6150fcd888a0ee8a69dd47328509ee608c2e02dc
diff --git a/bin/internal/libplist.version b/bin/internal/libplist.version
index 973064b..4a3c05c 100644
--- a/bin/internal/libplist.version
+++ b/bin/internal/libplist.version
@@ -1 +1 @@
-17546f53ac1377b0d4f45a800aaec7366ba5b6a0
+28812e5bed8621bd637b4129ab15a9c1abb9f57d
diff --git a/bin/internal/openssl.version b/bin/internal/openssl.version
index 400e36a..a69b8be 100644
--- a/bin/internal/openssl.version
+++ b/bin/internal/openssl.version
@@ -1 +1 @@
-03da376ff7504c63a1d00d57cf41bd7b7e93ff65
+2ef3f4c83bce209247479e707eebd5a84f606e28
diff --git a/bin/internal/usbmuxd.version b/bin/internal/usbmuxd.version
index d77b5cf..6252dfc 100644
--- a/bin/internal/usbmuxd.version
+++ b/bin/internal/usbmuxd.version
@@ -1 +1 @@
-60109fdef47dfe0badfb558a6a2105e8fb23660a
+eb45fd21469fa35e9bbc3b0a15a962460b8d23a2
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 6653c0c..5853818 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -393,25 +393,29 @@
           debuggingOptions.observatoryPort,
         );
         if (localUri != null) {
+          UsageEvent('ios-mdns', 'success').send();
           return LaunchResult.succeeded(observatoryUri: localUri);
         }
       } catch (error) {
-        printError('Failed to establish a debug connection with $id: $error');
+        printError('Failed to establish a debug connection with $id using mdns: $error');
       }
 
-      // Fallback to manual protocol discovery
+      // Fallback to manual protocol discovery.
+      UsageEvent('ios-mdns', 'failure').send();
       printTrace('mDNS lookup failed, attempting fallback to reading device log.');
       try {
         printTrace('Waiting for observatory port.');
         localUri = await observatoryDiscovery.uri;
         if (localUri != null) {
+          UsageEvent('ios-mdns', 'fallback-success').send();
           return LaunchResult.succeeded(observatoryUri: localUri);
         }
       } catch (error) {
-        printError('Failed to establish a debug connection with $id: $error');
+        printError('Failed to establish a debug connection with $id using logs: $error');
       } finally {
         await observatoryDiscovery?.cancel();
       }
+      UsageEvent('ios-mdns', 'fallback-failure').send();
       return LaunchResult.failed();
     } finally {
       installStatus.stop();
diff --git a/packages/flutter_tools/test/general.shard/ios/devices_test.dart b/packages/flutter_tools/test/general.shard/ios/devices_test.dart
index dba51cf..dc0e21d 100644
--- a/packages/flutter_tools/test/general.shard/ios/devices_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/devices_test.dart
@@ -18,6 +18,7 @@
 import 'package:flutter_tools/src/macos/xcode.dart';
 import 'package:flutter_tools/src/mdns_discovery.dart';
 import 'package:flutter_tools/src/project.dart';
+import 'package:flutter_tools/src/reporting/reporting.dart';
 import 'package:mockito/mockito.dart';
 import 'package:platform/platform.dart';
 import 'package:process/process.dart';
@@ -36,6 +37,7 @@
 class MockXcode extends Mock implements Xcode {}
 class MockFile extends Mock implements File {}
 class MockPortForwarder extends Mock implements DevicePortForwarder {}
+class MockUsage extends Mock implements Usage {}
 
 void main() {
   final FakePlatform macPlatform = FakePlatform.fromPlatform(const LocalPlatform());
@@ -74,6 +76,7 @@
       MockDeviceLogReader mockLogReader;
       MockMDnsObservatoryDiscovery mockMDnsObservatoryDiscovery;
       MockPortForwarder mockPortForwarder;
+      MockUsage mockUsage;
 
       const int devicePort = 499;
       const int hostPort = 42;
@@ -98,6 +101,7 @@
         mockProcessManager = MockProcessManager();
         mockLogReader = MockDeviceLogReader();
         mockPortForwarder = MockPortForwarder();
+        mockUsage = MockUsage();
 
         when(
             mockArtifacts.getArtifactPath(
@@ -154,6 +158,7 @@
           debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
           platformArgs: <String, dynamic>{},
         );
+        verify(mockUsage.sendEvent('ios-mdns', 'success')).called(1);
         expect(launchResult.started, isTrue);
         expect(launchResult.hasObservatory, isTrue);
         expect(await device.stopApp(mockApp), isFalse);
@@ -164,6 +169,7 @@
         MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
         Platform: () => macPlatform,
         ProcessManager: () => mockProcessManager,
+        Usage: () => mockUsage,
       });
 
       testUsingContext(' succeeds in debug mode when mDNS fails by falling back to manual protocol discovery', () async {
@@ -183,6 +189,8 @@
           debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
           platformArgs: <String, dynamic>{},
         );
+        verify(mockUsage.sendEvent('ios-mdns', 'failure')).called(1);
+        verify(mockUsage.sendEvent('ios-mdns', 'fallback-success')).called(1);
         expect(launchResult.started, isTrue);
         expect(launchResult.hasObservatory, isTrue);
         expect(await device.stopApp(mockApp), isFalse);
@@ -193,6 +201,7 @@
         MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
         Platform: () => macPlatform,
         ProcessManager: () => mockProcessManager,
+        Usage: () => mockUsage,
       });
 
       testUsingContext(' fails in debug mode when mDNS fails and when Observatory URI is malformed', () async {
@@ -213,6 +222,8 @@
             debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
             platformArgs: <String, dynamic>{},
         );
+        verify(mockUsage.sendEvent('ios-mdns', 'failure')).called(1);
+        verify(mockUsage.sendEvent('ios-mdns', 'fallback-failure')).called(1);
         expect(launchResult.started, isFalse);
         expect(launchResult.hasObservatory, isFalse);
       }, overrides: <Type, Generator>{
@@ -222,6 +233,7 @@
         MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
         Platform: () => macPlatform,
         ProcessManager: () => mockProcessManager,
+        Usage: () => mockUsage,
       });
 
       testUsingContext(' succeeds in release mode', () async {