From 3de1718bfb4e0a2a9f70ccd245a4f6c604aa455c Mon Sep 17 00:00:00 2001 From: Axel Zuziak <31246956+axelzuziak-gogo@users.noreply.github.com> Date: Tue, 1 Dec 2020 14:27:34 +0100 Subject: [PATCH] refactor: ios test artifacts cleanup #1345 (#1350) #1345 - iOS Tests artifacts cleanup Changes: * renamed some variables inside flankScripts/ios * added scripts for generating IPA file instead of .xctestrun for gameloop example * reorganised test artefacts (removed unused files, moved them to correct directories * renamed *FlankMultiTestTargetsExample* to *FlankTestPlansExample* // CC: @jan-gogo * changed all references to old test artefacts * rebuilded EarlGrey example with compatible Xcode version Previously: Screenshot 2020-11-25 at 13 36 07 Now: Screenshot 2020-11-25 at 13 28 07 ## Test Plan > How do we know the code works? 1. If you want to easily notice that artifact generation is working correctly you can clear your linked local `test_artifacts` directory. 1. Run `flankScripts shell ops ios`, this command should generate all ios artifacts one by one, and copy each to local `test_artifacts` dir. 1. Make sure the console log doesn't show any error. 1. Make sure the `test_artifacts` directory is containing the following directories: [ EarlGreyExample, FlankExample, FlankGameLoopExample, FlankTestPlansExample ] 1. Run tests manually on each ios project and make sure the results are the same as expected (This step should be widely detailed and updated!!!). ## Checklist - [x] Documented - [x] Unit tested --- .gitignore | 1 + docs/test_artifacts.md | 66 ++ flank-scripts/.gitignore | 1 + flank-scripts/README.md | 24 +- flank-scripts/bash/buildFlankScripts.bat | 2 +- flank-scripts/bash/buildFlankScripts.sh | 2 +- flank-scripts/bash/flankScripts | 2 +- flank-scripts/build.gradle.kts | 6 +- .../flank/scripts/shell/ios/BuildExample.kt | 32 +- .../flank/scripts/shell/ios/BuildFtl.kt | 6 +- .../scripts/shell/ios/IosBuildCommand.kt | 34 +- .../scripts/shell/ios/SetupIosEnvCommand.kt | 4 +- .../shell/ops/BuildEarlGreyExampleCommand.kt | 6 +- .../shell/ops/BuildFlankExampleCommand.kt | 2 +- .../shell/ops/BuildGameLoopExampleCommand.kt | 35 + .../flank/scripts/shell/ops/BuildIosIPA.kt | 56 ++ .../{BuildIos.kt => BuildIosTestArtifacts.kt} | 38 +- .../shell/ops/BuildTestPlansExample.kt | 32 + .../flank/scripts/shell/ops/IosOpsCommand.kt | 15 + .../flank/scripts/shell/ops/OpsCommand.kt | 3 + .../flank/scripts/utils/DownloadSoftware.kt | 9 +- test_projects/ios/FlankExample/ops.sh | 6 +- .../flankgameloop/AppDelegate.swift | 2 +- .../ipa/DistributionSummary.plist | 53 -- .../ipa/ExportOptions.plist | 18 - .../ipa/FlankGameLoopExample.ipa | Bin 43206 -> 0 bytes .../FlankGameLoopExample/ipa/Packaging.log | 882 ------------------ .../contents.xcworkspacedata | 7 - .../AllTests.xctestplan | 15 +- .../project.pbxproj | 58 +- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/AllTests.xcscheme | 6 +- .../FlankMultiTestTargetsExample.xcscheme | 22 +- .../xcschemes/SecondUITests.xcscheme | 2 +- .../xcshareddata/xcschemes/UITests.xcscheme | 2 +- .../FlankTestPlansExample}/AppDelegate.swift | 0 .../Assets/Base.lproj/LaunchScreen.storyboard | 0 .../Assets/Base.lproj/Main.storyboard | 0 .../FlankTestPlansExample}/Info.plist | 0 .../SceneDelegate.swift | 0 .../ViewController.swift | 0 .../SecondUITests/Info.plist | 0 .../SecondUITests/SecondUITestsClass.swift} | 12 +- .../UITests/Info.plist | 0 .../UITests/UITestsClass.swift} | 12 +- test_runner/build.gradle.kts | 2 +- .../main/kotlin/ftl/config/FtlConstants.kt | 2 +- .../test/kotlin/ftl/args/IosArgsFileTest.kt | 4 +- .../src/test/kotlin/ftl/args/IosArgsTest.kt | 8 +- .../kotlin/ftl/fixtures/flank.ios.gcs.yml | 2 +- .../test/kotlin/ftl/fixtures/flank.ios.yml | 4 +- .../test/kotlin/ftl/fixtures/flank2.ios.yml | 6 +- .../src/test/kotlin/ftl/fixtures/ios.yml | 4 +- .../test/kotlin/ftl/fixtures/ios_catalog.json | 4 +- .../kotlin/ftl/fixtures/simple-ios-flank.yml | 4 +- .../test/kotlin/ftl/gc/GcIosTestMatrixTest.kt | 26 +- .../ios/xctest/RewriteXcTestRunV2KtTest.kt | 6 +- .../src/test/kotlin/ftl/ios/xctest/Util.kt | 48 +- .../xctest/common/FindTestsForTargetKtTest.kt | 2 +- .../src/test/kotlin/ftl/test/util/LocalGcs.kt | 4 +- 61 files changed, 460 insertions(+), 1146 deletions(-) create mode 100644 flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildGameLoopExampleCommand.kt create mode 100644 flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosIPA.kt rename flank-scripts/src/main/kotlin/flank/scripts/shell/ops/{BuildIos.kt => BuildIosTestArtifacts.kt} (73%) create mode 100644 flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildTestPlansExample.kt create mode 100644 flank-scripts/src/main/kotlin/flank/scripts/shell/ops/IosOpsCommand.kt delete mode 100644 test_projects/ios/FlankGameLoopExample/ipa/DistributionSummary.plist delete mode 100644 test_projects/ios/FlankGameLoopExample/ipa/ExportOptions.plist delete mode 100644 test_projects/ios/FlankGameLoopExample/ipa/FlankGameLoopExample.ipa delete mode 100644 test_projects/ios/FlankGameLoopExample/ipa/Packaging.log delete mode 100644 test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename test_projects/ios/{FlankMultiTestTargetsExample => FlankTestPlansExample}/AllTests.xctestplan (76%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/project.pbxproj (89%) create mode 100644 test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/xcshareddata/xcschemes/AllTests.xcscheme (91%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme (79%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/xcshareddata/xcschemes/SecondUITests.xcscheme (95%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj => FlankTestPlansExample/FlankTestPlansExample.xcodeproj}/xcshareddata/xcschemes/UITests.xcscheme (95%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/AppDelegate.swift (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/Assets/Base.lproj/LaunchScreen.storyboard (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/Assets/Base.lproj/Main.storyboard (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/Info.plist (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/SceneDelegate.swift (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/FlankMultiTestTargetsExample => FlankTestPlansExample/FlankTestPlansExample}/ViewController.swift (100%) rename test_projects/ios/{FlankMultiTestTargetsExample => FlankTestPlansExample}/SecondUITests/Info.plist (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/UITests/UITests.swift => FlankTestPlansExample/SecondUITests/SecondUITestsClass.swift} (64%) rename test_projects/ios/{FlankMultiTestTargetsExample => FlankTestPlansExample}/UITests/Info.plist (100%) rename test_projects/ios/{FlankMultiTestTargetsExample/SecondUITests/SecondUITests.swift => FlankTestPlansExample/UITests/UITestsClass.swift} (64%) diff --git a/.gitignore b/.gitignore index bdbd704dfb..e3ffefe4ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.iml .idea/ build/ +Build/ out/ .DS_Store .gradle/ diff --git a/docs/test_artifacts.md b/docs/test_artifacts.md index 5c1baddccf..6adce93665 100644 --- a/docs/test_artifacts.md +++ b/docs/test_artifacts.md @@ -74,3 +74,69 @@ To export path to your local flank repository just source [.env](../.env) file. > As a developer I want to remove test artifacts * Run `flankScripts testArtifacts remove` this will remove the remote copy of test artifacts for current working branch. + + +## iOS test artifacts + +Currently we have 4 different iOS test projects: + +1. EarlGreyExample +2. FlankExample +3. FlankGameLoopExample +4. FlankTestPlansExample + +Source code of each of them is located under: [test_projects/ios](../test_projects/ios) + +Test artifacts for each project contains: +* build output in Debug-iphoneos +* zipped build output in PROJECT_NAME.zip, +* .xctestrun file for each test target + +### EarlGreyExample + +This project is basically clone of [EarlGrey](https://github.com/google/EarlGrey). +Source project contains two test targets: EarlGreyExampleSwiftTests, EarlGreyExampleTests. + +#### Generate +Run: `flankScripts shell ops build_earl_grey_example`. + +#### Source Code +[test_projects/ios/EarlGreyExample](../test_projects/ios/EarlGreyExample) + + +### FlankExample + +Simple project with two test targets: FlankExampleTests, FlankExampleSecondTests. + +#### Generate +Run: `flankScripts shell ops build_flank_example`. + +#### Source Code +[test_projects/ios/EarlGreyExample](../test_projects/ios/FlankExample) + + +### FlankGameLoopExample + +Simple SpriteKit app to test gameloop mode. It doesn't contain any test target, so test artifacts contains only IPA file. + +#### Generate +Run: `flankScripts shell ops build_ios_gameloop_example`. + +#### Source Code +[test_projects/ios/EarlGreyExample](../test_projects/ios/FlankGameLoopExample) + +⚠️ NOTE: Generating IPA requires Apple distribution certificate therefore for now it's not possible to generate it without correct Apple Developer Account. +`build_ios_gameloop_example` is excluded when building all iOS artifacts: +```bash +update_test_artifacts ios +``` + +### FlankTestPlansExample + +iOS project with XCTestPlans. Contains `AllTests` test plan. Generated .xctestrun is using V2 format. More details about test plans: [docs/feature/ios_test_plans.md](feature/ios_test_plans.md) + +#### Generate +Run: `flankScripts shell ops build_ios_testplans_example`. + +#### Source Code +[test_projects/ios/EarlGreyExample](../test_projects/ios/FlankTestPlansExample) diff --git a/flank-scripts/.gitignore b/flank-scripts/.gitignore index 794348b845..f7c742d13e 100644 --- a/flank-scripts/.gitignore +++ b/flank-scripts/.gitignore @@ -6,6 +6,7 @@ # Package Files # flankScripts.jar +flank-scripts.jar *.war *.nar *.ear diff --git a/flank-scripts/README.md b/flank-scripts/README.md index 22f4e5b9a5..993fa4278e 100644 --- a/flank-scripts/README.md +++ b/flank-scripts/README.md @@ -209,27 +209,27 @@ Run ftl locally ios app Contains tasks related to building sample apps with tests. These tasks are : - `go` Build go app with tests - - `ios` Build ios app with tests + - `build_earl_grey_example` Build ios earl grey example app with tests + - `build_ios_gameloop_example` Build ios game loop example app + - `build_ios_testplans_example` Build ios test plans example app + - `build_flank_example` Build ios flank example app with tests + - `ios` Build all ios tests artifacts - `android` Build android apks with tests ##### `go` Build go app with tests ##### `build_earl_grey_example` -Build ios earl grey example app with tests - -| Option | Short option | Description | -|------------|--------------|--------------------------| -| --generate | -g | Make build | -| --copy | -c | Copy output files to tmp | +Build ios [Earlgrey example](../docs/test_artifacts.md#earlgreyexample) app and copy output to the test artifacts directory ##### `build_flank_example` -Build ios flank example app with tests +Build ios [Flank example](../docs/test_artifacts.md#flankexample) app and copy output to the test artifacts directory -| Option | Short option | Description | -|------------|--------------|--------------------------| -| --generate | -g | Make build | -| --copy | -c | Copy output files to tmp | +##### `build_ios_gameloop_example` +Build ios [Game loop example](../docs/test_artifacts.md#flankgameloopexample) app and copy .IPA to the test artifacts directory + +##### `build_ios_testplans_example` +Build ios [Test plans example](../docs/test_artifacts.md#flanktestplansexample) app and copy output to the test artifacts directory ##### `android` Build android apks with tests diff --git a/flank-scripts/bash/buildFlankScripts.bat b/flank-scripts/bash/buildFlankScripts.bat index 333793742f..6895e2eeef 100755 --- a/flank-scripts/bash/buildFlankScripts.bat +++ b/flank-scripts/bash/buildFlankScripts.bat @@ -4,4 +4,4 @@ SET FLANK_SCRIPTS=%DIR%\.. SET GRADLE_EXECUTABLE_PATH=%FLANK_SCRIPTS%\.. CALL %GRADLE_EXECUTABLE_PATH%\gradlew.bat flank-scripts:clean flank-scripts:assemble flank-scripts:shadowJar -copy %FLANK_SCRIPTS%\build\libs\flankScripts.jar %DIR%\flankScripts.jar +copy %FLANK_SCRIPTS%\build\libs\flank-scripts.jar %DIR%\flank-scripts.jar diff --git a/flank-scripts/bash/buildFlankScripts.sh b/flank-scripts/bash/buildFlankScripts.sh index dcf74fa19f..c612ff95b3 100755 --- a/flank-scripts/bash/buildFlankScripts.sh +++ b/flank-scripts/bash/buildFlankScripts.sh @@ -5,4 +5,4 @@ DIR=`dirname "$BASH_SOURCE"` FLANK_SCRIPTS="$DIR/.." "$FLANK_SCRIPTS/../gradlew" :flank-scripts:clean :flank-scripts:assemble :flank-scripts:shadowJar -cp "$FLANK_SCRIPTS"/build/libs/flankScripts.jar "$DIR/flankScripts.jar" +cp "$FLANK_SCRIPTS"/build/libs/flank-scripts.jar "$DIR/flank-scripts.jar" diff --git a/flank-scripts/bash/flankScripts b/flank-scripts/bash/flankScripts index 1158f7255d..d315dc37e0 100755 --- a/flank-scripts/bash/flankScripts +++ b/flank-scripts/bash/flankScripts @@ -1,7 +1,7 @@ #!/usr/bin/env bash dir=$(dirname "$BASH_SOURCE") -scriptsJar="$dir/flankScripts.jar" +scriptsJar="$dir/flank-scripts.jar" if [ ! -f "$scriptsJar" ]; then "$dir/buildFlankScripts.sh" diff --git a/flank-scripts/build.gradle.kts b/flank-scripts/build.gradle.kts index 05f83074df..66a18244aa 100644 --- a/flank-scripts/build.gradle.kts +++ b/flank-scripts/build.gradle.kts @@ -27,7 +27,7 @@ shadowJar.apply { } } // .. -version = "1.0.0" +version = "1.1.0" group = "com.github.flank" application { @@ -146,13 +146,13 @@ tasks.withType { kotlinOptions. val prepareJar by tasks.registering(Copy::class) { dependsOn("shadowJar") from("$buildDir/libs") - include("flankScripts.jar") + include("flank-scripts.jar") into("$projectDir/bash") } tasks.register("download") { val sourceUrl = "https://dl.bintray.com/flank/maven/com/github/flank/$artifactID/$version/$artifactID-$version.jar" - val destinationFile = Paths.get("bash", "flankScripts.jar").toFile() + val destinationFile = Paths.get("bash", "flank-scripts.jar").toFile() ant.invokeMethod("get", mapOf("src" to sourceUrl, "dest" to destinationFile)) } diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildExample.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildExample.kt index bdbf611155..c2490b3c9f 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildExample.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildExample.kt @@ -4,9 +4,11 @@ package flank.scripts.shell.ios import com.github.ajalt.clikt.core.CliktCommand import flank.scripts.shell.utils.currentPath import flank.scripts.shell.utils.failIfWindows +import flank.scripts.shell.utils.iOSTestProjectsPath import flank.scripts.shell.utils.pipe import flank.scripts.utils.archive import flank.scripts.utils.downloadXcPrettyIfNeeded +import flank.scripts.utils.installPodsIfNeeded import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths @@ -22,26 +24,36 @@ object BuildExampleCommand : CliktCommand(name = "iosBuildExample", help = "Buil } private fun buildExample() { - val dataPath: Path = Paths.get(currentPath.toString(), "dd_tmp").apply { + val projectPath: Path = Paths.get(iOSTestProjectsPath, EARLGREY_EXAMPLE) + val buildPath: Path = Paths.get(projectPath.toString(), "build").apply { toFile().deleteRecursively() } - val xcodeCommandSwiftTests = createIosBuildCommand( - dataPath.toString(), - "./EarlGreyExample.xcworkspace", - "EarlGreyExampleSwiftTests" + val xcodeCommandSwiftTests = createXcodeBuildForTestingCommand( + buildDir = buildPath.toString(), + scheme = "EarlGreyExampleSwiftTests", + workspace = Paths.get(projectPath.toString(), "EarlGreyExample.xcworkspace").toString(), + useLegacyBuildSystem = true ) + + installPodsIfNeeded(path = projectPath) xcodeCommandSwiftTests pipe "xcpretty" - val xcodeCommandTests = createIosBuildCommand(dataPath.toString(), "./EarlGreyExample.xcworkspace", "EarlGreyExampleTests") + val xcodeCommandTests = createXcodeBuildForTestingCommand( + buildDir = buildPath.toString(), + scheme = "EarlGreyExampleTests", + workspace = Paths.get(projectPath.toString(), "EarlGreyExample.xcworkspace").toString(), + useLegacyBuildSystem = true + ) + xcodeCommandTests pipe "xcpretty" - copyExampleOutputFiles(dataPath.toString()) + copyExampleOutputFiles(buildPath.toString()) } -private fun copyExampleOutputFiles(dataPath: String) { +private fun copyExampleOutputFiles(buildPath: String) { val archiveFileName = "earlgrey_example.zip" - val buildProductPath = Paths.get(dataPath, "Build", "Products") + val buildProductPath = Paths.get(buildPath, "Build", "Products") Files.walk(Paths.get("")) .filter { it.fileName.toString().endsWith("-iphoneos") || it.fileName.toString().endsWith(".xctestrun") } @@ -55,3 +67,5 @@ private fun copyExampleOutputFiles(dataPath: String) { StandardCopyOption.REPLACE_EXISTING ) } + +private const val EARLGREY_EXAMPLE = "EarlGreyExample" diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildFtl.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildFtl.kt index 8b355490e0..6ede1220b9 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildFtl.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/BuildFtl.kt @@ -22,7 +22,11 @@ private fun buildFtl() { val dataPath = Paths.get("", "dd_tmp").apply { toFile().deleteRecursively() }.toString() - val xcodeCommand = createIosBuildCommand(dataPath, "./EarlGreyExample.xcworkspace", "\"EarlGreyExampleSwiftTests\"") + val xcodeCommand = createXcodeBuildForTestingCommand( + buildDir = dataPath, + scheme = "\"EarlGreyExampleSwiftTests\"", + useLegacyBuildSystem = true + ) xcodeCommand pipe "xcpretty" copyFtlOutputFiles(dataPath) diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/IosBuildCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/IosBuildCommand.kt index 947fe99784..618724b388 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/IosBuildCommand.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/IosBuildCommand.kt @@ -1,10 +1,42 @@ package flank.scripts.shell.ios -fun createIosBuildCommand(buildDir: String, workspace: String, scheme: String, project: String = "") = +fun createXcodeBuildForTestingCommand( + buildDir: String, + scheme: String, + project: String = "", + workspace: String = "", + useLegacyBuildSystem: Boolean +) = "xcodebuild build-for-testing" + " -allowProvisioningUpdates" + (if (workspace.isBlank()) "" else " -workspace $workspace") + (if (project.isBlank()) "" else " -project $project") + " -scheme $scheme" + + (if (useLegacyBuildSystem) " -UseModernBuildSystem=NO" else "") + " -derivedDataPath $buildDir" + " -sdk iphoneos" + +fun createXcodeArchiveCommand( + archivePath: String, + scheme: String, + project: String = "", + workspace: String = "" +) = + "xcodebuild" + + " -allowProvisioningUpdates" + + (if (workspace.isBlank()) "" else " -workspace $workspace") + + (if (project.isBlank()) "" else " -project $project") + + " -scheme $scheme" + + " archive" + + " -archivePath $archivePath" + +fun createXcodeExportArchiveCommand( + archivePath: String, + exportOptionsPlistPath: String, + exportPath: String = "" +) = + "xcodebuild -exportArchive" + + " -allowProvisioningUpdates" + + " -archivePath $archivePath" + + " -exportOptionsPlist $exportOptionsPlistPath" + + " -exportPath $exportPath" diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/SetupIosEnvCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/SetupIosEnvCommand.kt index 47eac9ee68..b7d2f160a6 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/SetupIosEnvCommand.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ios/SetupIosEnvCommand.kt @@ -5,13 +5,13 @@ import flank.scripts.shell.ops.EARL_GREY_EXAMPLE import flank.scripts.shell.utils.failIfWindows import flank.scripts.shell.utils.iOSTestProjectsPath import flank.scripts.utils.downloadCocoaPodsIfNeeded -import flank.scripts.utils.installPods +import flank.scripts.utils.installPodsIfNeeded import java.nio.file.Paths object SetupIosEnvCommand : CliktCommand(name = "setup_ios_env", help = "Build ios app with tests") { override fun run() { failIfWindows() downloadCocoaPodsIfNeeded() - installPods(Paths.get(iOSTestProjectsPath, EARL_GREY_EXAMPLE)) + installPodsIfNeeded(Paths.get(iOSTestProjectsPath, EARL_GREY_EXAMPLE)) } } diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildEarlGreyExampleCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildEarlGreyExampleCommand.kt index 8f92a88303..8da01cfa1d 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildEarlGreyExampleCommand.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildEarlGreyExampleCommand.kt @@ -25,8 +25,10 @@ object BuildEarlGreyExampleCommand : CliktCommand(name = "build_earl_grey_exampl ), useWorkspace = true, generate = generate ?: true, - copy = copy ?: true - ).generateIos() + copy = copy ?: true, + copyXCTestFiles = copy ?: true, + useLegacyBuildSystem = true + ).generateIosTestArtifacts() } } diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildFlankExampleCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildFlankExampleCommand.kt index 5cd940f831..873339867e 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildFlankExampleCommand.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildFlankExampleCommand.kt @@ -25,7 +25,7 @@ object BuildFlankExampleCommand : CliktCommand(name = "build_flank_example", hel useWorkspace = false, generate = generate ?: true, copy = copy ?: true - ).generateIos() + ).generateIosTestArtifacts() } } diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildGameLoopExampleCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildGameLoopExampleCommand.kt new file mode 100644 index 0000000000..d77902d2f5 --- /dev/null +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildGameLoopExampleCommand.kt @@ -0,0 +1,35 @@ +package flank.scripts.shell.ops + +import com.github.ajalt.clikt.core.CliktCommand +import com.github.ajalt.clikt.parameters.options.flag +import com.github.ajalt.clikt.parameters.options.option +import flank.scripts.shell.utils.failIfWindows +import flank.scripts.shell.utils.iOSTestProjectsPath +import java.nio.file.Paths + +object BuildGameLoopExampleCommand : CliktCommand( + name = "build_ios_gameloop_example", + help = "Build ios game loop example app" +) { + + private val generate: Boolean? by option(help = "Make build").flag("-g", default = true) + + private val copy: Boolean? by option(help = "Copy output files to tmp").flag("-c", default = true) + + override fun run() { + failIfWindows() + + IosBuildConfiguration( + projectPath = Paths.get(iOSTestProjectsPath, FLANK_GAME_LOOP_EXAMPLE).toString(), + projectName = FLANK_GAME_LOOP_EXAMPLE, + buildConfigurations = listOf( + IosTestBuildConfiguration(FLANK_GAME_LOOP_EXAMPLE, "tests"), + ), + useWorkspace = false, + generate = generate ?: true, + copy = copy ?: true + ).generateIPA() + } +} + +private const val FLANK_GAME_LOOP_EXAMPLE = "FlankGameLoopExample" diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosIPA.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosIPA.kt new file mode 100644 index 0000000000..71055673f2 --- /dev/null +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosIPA.kt @@ -0,0 +1,56 @@ +package flank.scripts.shell.ops + +import flank.scripts.shell.ios.createXcodeArchiveCommand +import flank.scripts.shell.ios.createXcodeExportArchiveCommand +import flank.scripts.shell.utils.flankFixturesIosTmpPath +import flank.scripts.shell.utils.pipe +import flank.scripts.utils.downloadCocoaPodsIfNeeded +import flank.scripts.utils.downloadXcPrettyIfNeeded +import flank.scripts.utils.installPodsIfNeeded +import java.nio.file.Path +import java.nio.file.Paths + +fun IosBuildConfiguration.generateIPA() { + downloadCocoaPodsIfNeeded() + installPodsIfNeeded(Paths.get(projectPath)) + downloadXcPrettyIfNeeded() + if (generate) archiveProject() +} + +private fun IosBuildConfiguration.archiveProject() = Paths.get(projectPath, "Build") + .runXcodeArchiveBuilds(this) + .resolve("ipa") + .copyIPAFile(this) + +private fun Path.runXcodeArchiveBuilds(configuration: IosBuildConfiguration) = apply { + toFile().deleteRecursively() + val parent = toFile().parent + val workspace = + if (configuration.useWorkspace) Paths.get(parent, configuration.workspaceName).toString() + else "" + + val project = if (configuration.useWorkspace) "" + else Paths.get(parent, "${configuration.projectName}.xcodeproj").toString() + configuration.buildConfigurations.forEach { + val archiveCommand = createXcodeArchiveCommand( + "${toString()}/${it.scheme}.xcarchive", + scheme = it.scheme, + project = project, + workspace = workspace + ) + + val exportArchiveCommand = createXcodeExportArchiveCommand( + archivePath = "${toString()}/${it.scheme}.xcarchive", + exportOptionsPlistPath = Paths.get(parent, "exportOptions.plist").toString(), + exportPath = "${toString()}/ipa/" + ) + archiveCommand pipe "xcpretty" + exportArchiveCommand pipe "xcpretty" + } +} + +private fun Path.copyIPAFile(configuration: IosBuildConfiguration) { + toFile().walk().filter { it.name.endsWith(".ipa") }.forEach { + it.copyTo(Paths.get(flankFixturesIosTmpPath, configuration.projectName, it.name).toFile(), true) + } +} diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIos.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosTestArtifacts.kt similarity index 73% rename from flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIos.kt rename to flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosTestArtifacts.kt index d10e9ccc33..8cccb87e84 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIos.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildIosTestArtifacts.kt @@ -1,28 +1,31 @@ package flank.scripts.shell.ops -import flank.scripts.shell.ios.createIosBuildCommand +import flank.scripts.shell.ios.createXcodeBuildForTestingCommand import flank.scripts.shell.utils.flankFixturesIosTmpPath import flank.scripts.shell.utils.pipe import flank.scripts.utils.archive import flank.scripts.utils.downloadCocoaPodsIfNeeded import flank.scripts.utils.downloadXcPrettyIfNeeded -import flank.scripts.utils.installPods +import flank.scripts.utils.installPodsIfNeeded import java.io.File import java.nio.file.Path import java.nio.file.Paths -fun IosBuildConfiguration.generateIos() { +fun IosBuildConfiguration.generateIosTestArtifacts() { downloadCocoaPodsIfNeeded() - installPods(Paths.get(projectPath)) + installPodsIfNeeded(Paths.get(projectPath)) downloadXcPrettyIfNeeded() - if (generate) buildEarlGreyExample() + if (generate) buildProject() } -private fun IosBuildConfiguration.buildEarlGreyExample() = Paths.get(projectPath, "Build") +private fun IosBuildConfiguration.buildProject() = Paths.get(projectPath, "Build") .runBuilds(this) + .resolve("Build") .resolve("Products") .apply { renameXctestFiles().filterFilesToCopy().archiveProject(projectName).copyIosProductFiles(projectName) } - .copyTestFiles(this) + .let { + if (this.copyXCTestFiles) it.copyTestFiles(this) + } private fun Path.runBuilds(configuration: IosBuildConfiguration) = apply { toFile().deleteRecursively() @@ -34,11 +37,12 @@ private fun Path.runBuilds(configuration: IosBuildConfiguration) = apply { val project = if (configuration.useWorkspace) "" else Paths.get(parent, "${configuration.projectName}.xcodeproj").toString() configuration.buildConfigurations.forEach { - val buildCommand = createIosBuildCommand( - parent, - workspace, + val buildCommand = createXcodeBuildForTestingCommand( + toString(), scheme = it.scheme, - project, + project = project, + workspace = workspace, + useLegacyBuildSystem = configuration.useLegacyBuildSystem ) buildCommand pipe "xcpretty" } @@ -69,9 +73,9 @@ private fun Sequence.copyIosProductFiles(projectName: String) = forEach { } private fun Path.copyTestFiles(configuration: IosBuildConfiguration) = toString().takeIf { configuration.copy }?.let { productsDirectory -> - val appDirectory = Paths.get(productsDirectory, "Debug-iphoneos").toFile().findTestDirectories() + val appDirectory = Paths.get(productsDirectory, "Debug-iphoneos").toFile().findXCTestDirectories() appDirectory.forEach { - it.walk().filter { it.isFile && it.extension == "" }.forEach { testFile -> + it.walk().filter { it.isFile && it.extension == "" && !it.name.contains("CodeResources") }.forEach { testFile -> configuration.copyTestFile(testFile) } } @@ -82,7 +86,7 @@ private fun IosBuildConfiguration.copyTestFile( ) = fileToCopy.copyTo(Paths.get(flankFixturesIosTmpPath, projectName, fileToCopy.name).toFile(), true) -private fun File.findTestDirectories() = walk().filter { it.isDirectory && it.name.endsWith(".xctest") } +private fun File.findXCTestDirectories() = walk().filter { it.isDirectory && it.name.endsWith(".xctest") } data class IosBuildConfiguration( val projectPath: String, @@ -90,10 +94,12 @@ data class IosBuildConfiguration( val buildConfigurations: List, val useWorkspace: Boolean = false, val generate: Boolean = true, - val copy: Boolean = true + val copy: Boolean = true, + val copyXCTestFiles: Boolean = false, + val useLegacyBuildSystem: Boolean = false ) data class IosTestBuildConfiguration(val scheme: String, val outputDirectoryName: String) -private val IosBuildConfiguration.workspaceName + val IosBuildConfiguration.workspaceName get() = "$projectName.xcworkspace" diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildTestPlansExample.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildTestPlansExample.kt new file mode 100644 index 0000000000..916bb5f4ac --- /dev/null +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/BuildTestPlansExample.kt @@ -0,0 +1,32 @@ +package flank.scripts.shell.ops + +import com.github.ajalt.clikt.core.CliktCommand +import com.github.ajalt.clikt.parameters.options.flag +import com.github.ajalt.clikt.parameters.options.option +import flank.scripts.shell.utils.failIfWindows +import flank.scripts.shell.utils.iOSTestProjectsPath +import java.nio.file.Paths + +object BuildTestPlansExample : CliktCommand(name = "build_ios_testplans_example", help = "Build ios test plans example app") { + + private val generate: Boolean? by option(help = "Make build").flag("-g", default = true) + + private val copy: Boolean? by option(help = "Copy output files to tmp").flag("-c", default = true) + + override fun run() { + failIfWindows() + + IosBuildConfiguration( + projectPath = Paths.get(iOSTestProjectsPath, FLANK_TEST_PLANS_EXAMPLE).toString(), + projectName = FLANK_TEST_PLANS_EXAMPLE, + buildConfigurations = listOf( + IosTestBuildConfiguration("AllTests", "AllTests"), + ), + useWorkspace = false, + generate = generate ?: true, + copy = copy ?: true + ).generateIosTestArtifacts() + } +} + +private const val FLANK_TEST_PLANS_EXAMPLE = "FlankTestPlansExample" diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/IosOpsCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/IosOpsCommand.kt new file mode 100644 index 0000000000..d2753333cb --- /dev/null +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/IosOpsCommand.kt @@ -0,0 +1,15 @@ +package flank.scripts.shell.ops + +import com.github.ajalt.clikt.core.CliktCommand + +object IosOpsCommand : CliktCommand( + name = "ios", + help = "Build ios test artifacts" +) { + + override fun run() = listOf( + BuildEarlGreyExampleCommand, + BuildTestPlansExample, + BuildFlankExampleCommand + ).forEach(CliktCommand::run) +} diff --git a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/OpsCommand.kt b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/OpsCommand.kt index c13d24ab81..55bd47c547 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/OpsCommand.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/shell/ops/OpsCommand.kt @@ -8,7 +8,10 @@ object OpsCommand : CliktCommand(name = "ops", help = "Contains all ops command: subcommands( AndroidOpsCommand, BuildEarlGreyExampleCommand, + BuildGameLoopExampleCommand, + BuildTestPlansExample, BuildFlankExampleCommand, + IosOpsCommand, GoOpsCommand ) } diff --git a/flank-scripts/src/main/kotlin/flank/scripts/utils/DownloadSoftware.kt b/flank-scripts/src/main/kotlin/flank/scripts/utils/DownloadSoftware.kt index ca67f9a98d..b0ef93e09b 100644 --- a/flank-scripts/src/main/kotlin/flank/scripts/utils/DownloadSoftware.kt +++ b/flank-scripts/src/main/kotlin/flank/scripts/utils/DownloadSoftware.kt @@ -3,15 +3,16 @@ package flank.scripts.utils import java.nio.file.Path fun downloadXcPrettyIfNeeded() { - "xcpretty".checkAndInstallIfNeed("gem install xcpretty") + "xcpretty".checkAndInstallIfNeed("gem install xcpretty --user-install") } fun downloadCocoaPodsIfNeeded() { - "xcpretty".checkAndInstallIfNeed("gem install cocoapods -v 1.9.3") + "pod".checkAndInstallIfNeed("gem install cocoapods -v 1.9.3 --user-install") } -fun installPods(path: Path) { - "pod install --project-directory=$path --verbose".runCommand() +fun installPodsIfNeeded(path: Path) { + if (path.toFile().listFiles().map { it.name }.contains("Podfile")) + "pod install --project-directory=$path --verbose".runCommand() } fun checkIfPipInstalled() { diff --git a/test_projects/ios/FlankExample/ops.sh b/test_projects/ios/FlankExample/ops.sh index efdd90998f..899eb011a8 100644 --- a/test_projects/ios/FlankExample/ops.sh +++ b/test_projects/ios/FlankExample/ops.sh @@ -28,11 +28,11 @@ function flank_ios_example() { # xcodebuild generates .xctestrun files names in format: PROJECTNAME_platform_version_architecture.xctestrun, code below removes "_platform_version_architecture" part mv -f "$productsDir/"*.xctestrun "$productsDir/FlankExampleTests.xctestrun" - mkdir -p "$FLANK_FIXTURES_TMP/ios/flank_ios_example/" + mkdir -p "$FLANK_FIXTURES_TMP/ios/FlankExample/" - cp -Rf "$productsDir"/*-iphoneos "$FLANK_FIXTURES_TMP/ios/flank_ios_example/" + cp -Rf "$productsDir"/*-iphoneos "$FLANK_FIXTURES_TMP/ios/FlankExample/" - cp "$productsDir"/*.xctestrun "$FLANK_FIXTURES_TMP/ios/flank_ios_example/" + cp "$productsDir"/*.xctestrun "$FLANK_FIXTURES_TMP/ios/FlankExample/" ;; esac done diff --git a/test_projects/ios/FlankGameLoopExample/flankgameloop/AppDelegate.swift b/test_projects/ios/FlankGameLoopExample/flankgameloop/AppDelegate.swift index e9e6b84fc4..8fee616824 100644 --- a/test_projects/ios/FlankGameLoopExample/flankgameloop/AppDelegate.swift +++ b/test_projects/ios/FlankGameLoopExample/flankgameloop/AppDelegate.swift @@ -7,7 +7,7 @@ import UIKit -@main +@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? diff --git a/test_projects/ios/FlankGameLoopExample/ipa/DistributionSummary.plist b/test_projects/ios/FlankGameLoopExample/ipa/DistributionSummary.plist deleted file mode 100644 index 719d2679c0..0000000000 --- a/test_projects/ios/FlankGameLoopExample/ipa/DistributionSummary.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - FlankGameLoopExample.ipa - - - architectures - - arm64 - - certificate - - SHA1 - 8D0B1E4D3E6B2C8DC40B88081C4B47B35DC8EA32 - dateExpires - 12/11/2021 - type - Apple Distribution - - entitlements - - application-identifier - L2UF9MLSM6.io.gogoapps.flankgameloop - com.apple.developer.team-identifier - L2UF9MLSM6 - get-task-allow - - keychain-access-groups - - L2UF9MLSM6.io.gogoapps.flankgameloop - - - name - FlankGameLoopExample.app - profile - - UUID - 2ae4df9b-e4ab-494a-8d61-80d08ca668ad - name - iOS Team Ad Hoc Provisioning Profile: io.gogoapps.flankgameloop - - team - - id - L2UF9MLSM6 - name - - - - - - diff --git a/test_projects/ios/FlankGameLoopExample/ipa/ExportOptions.plist b/test_projects/ios/FlankGameLoopExample/ipa/ExportOptions.plist deleted file mode 100644 index 58ca335f20..0000000000 --- a/test_projects/ios/FlankGameLoopExample/ipa/ExportOptions.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - compileBitcode - - method - ad-hoc - signingStyle - automatic - stripSwiftSymbols - - teamID - L2UF9MLSM6 - thinning - <none> - - diff --git a/test_projects/ios/FlankGameLoopExample/ipa/FlankGameLoopExample.ipa b/test_projects/ios/FlankGameLoopExample/ipa/FlankGameLoopExample.ipa deleted file mode 100644 index 1b7d85ed2179ca66783f3b265f3f9e502abf5465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43206 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 XdW`@H^{b&kdU<=j>@nv2`u6_-0p{2j diff --git a/test_projects/ios/FlankGameLoopExample/ipa/Packaging.log b/test_projects/ios/FlankGameLoopExample/ipa/Packaging.log deleted file mode 100644 index 06272fd24b..0000000000 --- a/test_projects/ios/FlankGameLoopExample/ipa/Packaging.log +++ /dev/null @@ -1,882 +0,0 @@ -2020-11-23 12:31:54 +0000 [MT] Initial pipeline context: '> - Chain (13, self inclusive): - '> - '> - '> - '> - '> - '> - '> - '> - '> - - - - - -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionCreateDestRootStep -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionCopyItemStep -2020-11-23 12:31:54 +0000 [MT] Running /usr/bin/ditto '-V' '/Users/zuziakaxel/dev/gogo/flank/test_projects/ios/FlankGameLoopExample/build/gameloop.xcarchive/Products/Applications/FlankGameLoopExample.app' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app' -2020-11-23 12:31:54 +0000 >>> Copying /Users/zuziakaxel/dev/gogo/flank/test_projects/ios/FlankGameLoopExample/build/gameloop.xcarchive/Products/Applications/FlankGameLoopExample.app -2020-11-23 12:31:54 +0000 copying file ./_CodeSignature/CodeResources ... -2020-11-23 12:31:54 +0000 3399 bytes for ./_CodeSignature/CodeResources -2020-11-23 12:31:54 +0000 copying file ./FlankGameLoopExample ... -368544 bytes for ./FlankGameLoopExample -2020-11-23 12:31:54 +0000 copying file ./Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib ... -2020-11-23 12:31:54 +0000 948 bytes for ./Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib -2020-11-23 12:31:54 +0000 copying file ./Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib ... -2020-11-23 12:31:54 +0000 1298 bytes for ./Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib -copying file ./Base.lproj/Main.storyboardc/Info.plist ... -2020-11-23 12:31:54 +0000 258 bytes for ./Base.lproj/Main.storyboardc/Info.plist -2020-11-23 12:31:54 +0000 copying file ./GameScene.sks ... -2020-11-23 12:31:54 +0000 4694 bytes for ./GameScene.sks -copying file ./embedded.mobileprovision ... -2020-11-23 12:31:54 +0000 7394 bytes for ./embedded.mobileprovision -2020-11-23 12:31:54 +0000 copying file ./Info.plist ... -2020-11-23 12:31:54 +0000 1307 bytes for ./Info.plist -copying file ./Actions.sks ... -2020-11-23 12:31:54 +0000 1892 bytes for ./Actions.sks -copying file ./PkgInfo ... -2020-11-23 12:31:54 +0000 8 bytes for ./PkgInfo -2020-11-23 12:31:54 +0000 [MT] /usr/bin/ditto exited with 0 -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionEmbedProfileStep -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionInfoPlistStep -2020-11-23 12:31:54 +0000 [MT] Skipping step: IDEDistributionInfoPlistStep because it said so -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionAppThinningPlistStep -2020-11-23 12:31:54 +0000 [MT] Skipping step: IDEDistributionAppThinningPlistStep because it said so -2020-11-23 12:31:54 +0000 [MT] Processing step: IDEDistributionCompileBitcodeStep -2020-11-23 12:31:54 +0000 [MT] Running /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root' '--json' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool-json-filepath-~~~HTr4kE' '--output' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.~~~vfqiYR' '--toolchain' '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr' '--platforms' '/Applications/Xcode.app/Contents/Developer/Platforms' '--app-store-tools-build-version' '12B45b' '--compile-bitcode' -2020-11-23 12:31:54 +0000 ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20] -2020-11-23 12:31:54 +0000 /Library/Ruby/Gems/2.6.0/gems/CFPropertyList-3.0.2/lib/cfpropertylist/rbCFPropertyList.rb:83: warning: assigned but unused variable - temp -2020-11-23 12:31:54 +0000 Ignoring ffi-1.12.2 because its extensions are not built. Try: gem pristine ffi --version 1.12.2 -2020-11-23 12:31:55 +0000 OS X 11.1 20C5048k -2020-11-23 12:31:55 +0000 ENV: {"JAVA_HOME"=>"/Users/zuziakaxel/Library/Java/JavaVirtualMachines/openjdk-14.0.2/Contents/Home", "SSH_AUTH_SOCK"=>"/private/tmp/com.apple.launchd.UZtRQUXQck/Listeners", "FLANK_PROJECT_ID"=>"flank-open-source", "PAGER"=>"less", "SHELL"=>"/bin/zsh", "LESS"=>"-R", "__CFBundleIdentifier"=>"com.apple.Terminal", "ANDROID_SDK_ROOT"=>"/Users/zuziakaxel/Library/Android/sdk", "XPC_SERVICE_NAME"=>"0", "POD_LOCAL_HOME"=>"/Users/zuziakaxel/.cocoapods/repos", "TERM_PROGRAM_VERSION"=>"440", "GOOGLE_CLOUD_PROJECT"=>"flank-open-source", "LANG"=>"en_US.UTF-8", "HOME"=>"/Users/zuziakaxel", "PWD"=>"/Users/zuziakaxel/dev/gogo/flank/test_projects/ios/FlankGameLoopExample", "LC_ALL"=>"en_US.UTF-8", "icloud"=>"~/Library/Mobile\\ Documents/com~apple~CloudDocs", "TMPDIR"=>"/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/", "SHLVL"=>"2", "XPC_FLAGS"=>"0x0", "PATH"=>"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Tools:/usr/bin:/bin:/usr/sbin:/sbin", "TERM"=>"xterm-256color", "WORKON_HOME"=>"/Users/zuziakaxel/Envs", "GITHUB_TOKEN"=>"6fe729f37094fd10cf07a4a69f594ad29bd58d5f", "TERM_PROGRAM"=>"Apple_Terminal", "LSCOLORS"=>"Gxfxcxdxbxegedabagacad", "USER"=>"zuziakaxel", "TERM_SESSION_ID"=>"E5064C45-222C-42B5-B7F3-CFC65DAD6461", "ZSH"=>"/Users/zuziakaxel/.oh-my-zsh", "LOGNAME"=>"zuziakaxel", "_"=>"/usr/bin/xcodebuild", "LC_CTYPE"=>"UTF-8", "__CF_USER_TEXT_ENCODING"=>"0x1F5:0x0:0x0"} -ARGV: ["/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root", "--json", "/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool-json-filepath-~~~HTr4kE", "--output", "/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.~~~vfqiYR", "--toolchain", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr", "--platforms", "/Applications/Xcode.app/Contents/Developer/Platforms", "--app-store-tools-build-version", "12B45b", "--compile-bitcode"] -2020-11-23 12:31:55 +0000 IPA contents: -2020-11-23 12:31:55 +0000 /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Actions.sks -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/Info.plist -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/FlankGameLoopExample -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/GameScene.sks -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/Info.plist -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/PkgInfo -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/_CodeSignature -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/_CodeSignature/CodeResources -/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/embedded.mobileprovision - -2020-11-23 12:31:55 +0000 Platform thinningVariants for 'appletvos' -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j105aap", :productType=>"AppleTV6,2", :displayName=>"Apple TV 4K"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>3840, :artworkDisplayGamut=>"P3", :artworkDynamicDisplayMode=>"1080pSDR", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j33ap", :productType=>"AppleTV3,1", :displayName=>"AppleTV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j33ap", :productType=>"AppleTV3,1", :displayName=>"AppleTV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j33iap", :productType=>"AppleTV3,2", :displayName=>"AppleTV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j33iap", :productType=>"AppleTV3,2", :displayName=>"AppleTV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j42dap", :productType=>"AppleTV5,3", :displayName=>"Apple TV"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j105aap", :productType=>"AppleTV6,2", :displayName=>"Apple TV 4K"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>3840, :artworkDisplayGamut=>"P3", :artworkDynamicDisplayMode=>"1080pSDR", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j105aap", :productType=>"AppleTV6,2", :displayName=>"Apple TV 4K"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>3840, :artworkDisplayGamut=>"P3", :artworkDynamicDisplayMode=>"1080pSDR", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j105aap", :productType=>"AppleTV6,2", :displayName=>"Apple TV 4K"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>3840, :artworkDisplayGamut=>"P3", :artworkDynamicDisplayMode=>"1080pSDR", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j105aap", :productType=>"AppleTV6,2", :displayName=>"Apple TV 4K"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"tv", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>3840, :artworkDisplayGamut=>"P3", :artworkDynamicDisplayMode=>"1080pSDR", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -warning: Configuration issue: platform AppleTVSimulator.platform doesn't have any non-simulator SDKs; ignoring it -2020-11-23 12:31:55 +0000 Platform thinningVariants for 'watchos' -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n111sap", :productType=>"Watch3,1", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n111bap", :productType=>"Watch3,2", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n121sap", :productType=>"Watch3,3", :displayName=>"Apple Watch Series 3 (GPS) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n121bap", :productType=>"Watch3,4", :displayName=>"Apple Watch Series 3 (GPS) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n131sap", :productType=>"Watch4,1", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n131bap", :productType=>"Watch4,2", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n141sap", :productType=>"Watch4,3", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n141bap", :productType=>"Watch4,4", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n144sap", :productType=>"Watch5,1", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n140bap", :productType=>"Watch5,10", :displayName=>"Apple Watch SE (GPS)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n142sap", :productType=>"Watch5,11", :displayName=>"Apple Watch SE (GPS + Cellular)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n142bap", :productType=>"Watch5,12", :displayName=>"Apple Watch SE (GPS + Cellular)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n144bap", :productType=>"Watch5,2", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n146sap", :productType=>"Watch5,3", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n146bap", :productType=>"Watch5,4", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n140sap", :productType=>"Watch5,9", :displayName=>"Apple Watch SE (GPS)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n157sap", :productType=>"Watch6,1", :displayName=>"Apple Watch Series 6 (GPS)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>15, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n157bap", :productType=>"Watch6,2", :displayName=>"Apple Watch Series 6 (GPS)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>15, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n158sap", :productType=>"Watch6,3", :displayName=>"Apple Watch Series 6 (GPS + Cellular)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>15, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n158bap", :productType=>"Watch6,4", :displayName=>"Apple Watch Series 6 (GPS + Cellular)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>15, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n27aap", :productType=>"Watch1,1", :displayName=>"Apple Watch (1st generation) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n28aap", :productType=>"Watch1,2", :displayName=>"Apple Watch (1st generation) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n74ap", :productType=>"Watch2,3", :displayName=>"Apple Watch Series 2 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n74ap", :productType=>"Watch2,3", :displayName=>"Apple Watch Series 2 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n75ap", :productType=>"Watch2,4", :displayName=>"Apple Watch Series 2 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n75ap", :productType=>"Watch2,4", :displayName=>"Apple Watch Series 2 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n27dap", :productType=>"Watch2,6", :displayName=>"Apple Watch Series 1 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatch -2020-11-23 12:31:55 +0000 App=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n27dap", :productType=>"Watch2,6", :displayName=>"Apple Watch Series 1 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n28dap", :productType=>"Watch2,7", :displayName=>"Apple Watch Series 1 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n28dap", :productType=>"Watch2,7", :displayName=>"Apple Watch Series 1 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n111sap", :productType=>"Watch3,1", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n111sap", :productType=>"Watch3,1", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n111bap", :productType=>"Watch3,2", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n111bap", :productType=>"Watch3,2", :displayName=>"Apple Watch Series 3 (GPS + Cellular) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass= -2020-11-23 12:31:55 +0000 >"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n121sap", :productType=>"Watch3,3", :displayName=>"Apple Watch Series 3 (GPS) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n121sap", :productType=>"Watch3,3", :displayName=>"Apple Watch Series 3 (GPS) 38mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>320, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n121bap", :productType=>"Watch3,4", :displayName=>"Apple Watch Series 3 (GPS) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n121bap", :productType=>"Watch3,4", :displayName=>"Apple Watch Series 3 (GPS) 42mm"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"armv7k", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>384, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n131sap", :productType=>"Watch4,1", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL2,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n131sap", :productType=>"Watch4,1", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n131bap", :productType=>"Watch4,2", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"wat -2020-11-23 12:31:55 +0000 ch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL2,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n131bap", :productType=>"Watch4,2", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n141sap", :productType=>"Watch4,3", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL2,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n141sap", :productType=>"Watch4,3", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n141bap", :productType=>"Watch4,4", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL2,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n141bap", :productType=>"Watch4,4", :displayName=>"Apple Watch Series 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n144sap", :productType=>"Watch5,1", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 - {:device=>{:target=>"n144bap", :productType=>"Watch5,2", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n146sap", :productType=>"Watch5,3", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n146bap", :productType=>"Watch5,4", :displayName=>"Apple Watch Series 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"watch", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>390, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -warning: Configuration issue: platform WatchSimulator.platform doesn't have any non-simulator SDKs; ignoring it -2020-11-23 12:31:55 +0000 Platform thinningVariants for 'iphoneos' -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j210ap", :productType=>"iPad11,1", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j211ap", :productType=>"iPad11,2", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j217ap", :productType=>"iPad11,3", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j218ap", :productType=>"iPad11,4", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j171aap", :productType=>"iPad11,6", :displayName=>"iPad (8th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2160, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j172aap", :productType=>"iPad11,7", :displayName=>"iPad (8th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2160, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j307ap", :productType=>"iPad13,1", :displayName=>"iPad Air (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2360, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j308ap", :productType=>"iPad13,2", :displayName=>"iPad Air (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2360, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j71tap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j72tap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j171ap", :productType=>"iPad7,11", :displayName=>"iPad (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j172ap", :productType=>"iPad7,12", :displayName=>"iPad (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j71bap", :productType=>"iPad7,5", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j72bap", :productType=>"iPad7,6", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j317ap", :productType=>"iPad8,1", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j418ap", :productType=>"iPad8,10", :displayName=>"iPad Pro (11-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j420ap", :productType=>"iPad8,11", :displayName=>"iPad Pro (12.9-inch) (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j421ap", :productType=>"iPad8,12", :displayName=>"iPad Pro (12.9-inch) (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j317xap", :productType=>"iPad8,2", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j318ap", :productType=>"iPad8,3", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j318xap", :productType=>"iPad8,4", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j320ap", :productType=>"iPad8,5", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j320xap", :productType=>"iPad8,6", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j321ap", :productType=>"iPad8,7", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j321xap", :productType=>"iPad8,8", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j417ap", :productType=>"iPad8,9", :displayName=>"iPad Pro (11-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d20ap", :productType=>"iPhone10,1", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d21ap", :productType=>"iPhone10,2", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d22ap", :productType=>"iPhone10,3", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d201ap", :productType=>"iPhone10,4", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d211ap", :productType=>"iPhone10,5", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d221ap", :productType=>"iPhone10,6", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d321ap", :productType=>"iPhone11,2", :displayName=>"iPhone XS"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d331ap", :productType=>"iPhone11,4", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d331pap", :productType=>"iPhone11,6", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n841ap", :productType=>"iPhone11,8", :displayName=>"iPhone XR"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n104ap", :productType=>"iPhone12,1", :displayName=>"iPhone 11"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d421ap", :productType=>"iPhone12,3", :displayName=>"iPhone 11 Pro"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d431ap", :productType=>"iPhone12,5", :displayName=>"iPhone 11 Pro Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d79ap", :productType=>"iPhone12,8", :displayName=>"iPhone SE (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d52gap", :productType=>"iPhone13,1", :displayName=>"iPhone 12 mini"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2340, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d53gap", :productType=>"iPhone13,2", :displayName=>"iPhone 12"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2532, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d53pap", :productType=>"iPhone13,3", :displayName=>"iPhone 12 Pro"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2532, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d54pap", :productType=>"iPhone13,4", :displayName=>"iPhone 12 Pro Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2778, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE7", :gfxFeatureSetFallbacks=>["APPLE6", "APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n112ap", :productType=>"iPod9,1", :displayName=>"iPod touch (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j129aap", :productType=>"MacFamily20,1", :displayName=>"Mac"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>32401, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>16, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j210ap", :productType=>"iPad11,1", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j210ap", :productType=>"iPad11,1", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j211ap", :productType=>"iPad11,2", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j211ap", :productType=>"iPad11,2", :displayName=>"iPad mini (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j217ap", :productType=>"iPad11,3", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j217ap", :productType=>"iPad11,3", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j218ap", :productType=>"iPad11,4", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j218ap", :productType=>"iPad11,4", :displayName=>"iPad Air (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"k93ap", :productType=>"iPad2,1", :displayName=>"iPad 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"k94ap", :productType=>"iPad2,2", :displayName=>"iPad 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"k95ap", :productType=>"iPad2,3", :displayName=>"iPad 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"k93aap", :productType=>"iPad2,4", :displayName=>"iPad 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p105ap", :productType=>"iPad2,5", :displayName=>"iPad mini"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"p106ap", :productType=>"iPad2,6", :displayName=>"iPad mini"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p107ap", :productType=>"iPad2,7", :displayName=>"iPad mini"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>1, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j1ap", :productType=>"iPad3,1", :displayName=>"iPad (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j2ap", :productType=>"iPad3,2", :displayName=>"iPad (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j2aap", :productType=>"iPad3,3", :displayName=>"iPad (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p101ap", :productType=>"iPad3,4", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p101ap", :productType=>"iPad3,4", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p102ap", :productType=>"iPad3,5", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p102ap", :productType=>"iPad3,5", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p103ap", :productType=>"iPad3,6", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"p103ap", :productType=>"iPad3,6", :displayName=>"iPad (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71ap", :productType=>"iPad4,1", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71ap", :productType=>"iPad4,1", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71ap", :productType=>"iPad4,1", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71ap", :productType=>"iPad4,1", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71ap", :productType=>"iPad4,1", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72ap", :productType=>"iPad4,2", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72ap", :productType=>"iPad4,2", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72ap", :productType=>"iPad4,2", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artwork -2020-11-23 12:31:55 +0000 DisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72ap", :productType=>"iPad4,2", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72ap", :productType=>"iPad4,2", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j73ap", :productType=>"iPad4,3", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j73ap", :productType=>"iPad4,3", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j73ap", :productType=>"iPad4,3", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j73ap", :productType=>"iPad4,3", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j73ap", :productType=>"iPad4,3", :displayName=>"iPad Air"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>fals -2020-11-23 12:31:55 +0000 e, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85ap", :productType=>"iPad4,4", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85ap", :productType=>"iPad4,4", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85ap", :productType=>"iPad4,4", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85ap", :productType=>"iPad4,4", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85ap", :productType=>"iPad4,4", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86ap", :productType=>"iPad4,5", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86ap", :productType=>"iPad4,5", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86ap", :prod -2020-11-23 12:31:55 +0000 uctType=>"iPad4,5", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86ap", :productType=>"iPad4,5", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86ap", :productType=>"iPad4,5", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87ap", :productType=>"iPad4,6", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87ap", :productType=>"iPad4,6", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87ap", :productType=>"iPad4,6", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87ap", :productType=>"iPad4,6", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87ap", :productType=>"iPad4,6", :displayName=>"iPad mini 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :arch -2020-11-23 12:31:55 +0000 itecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85map", :productType=>"iPad4,7", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85map", :productType=>"iPad4,7", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85map", :productType=>"iPad4,7", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85map", :productType=>"iPad4,7", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j85map", :productType=>"iPad4,7", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86map", :productType=>"iPad4,8", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86map", :productType=>"iPad4,8", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemory -2020-11-23 12:31:55 +0000 Class=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86map", :productType=>"iPad4,8", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86map", :productType=>"iPad4,8", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j86map", :productType=>"iPad4,8", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87map", :productType=>"iPad4,9", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87map", :productType=>"iPad4,9", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87map", :productType=>"iPad4,9", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87map", :productType=>"iPad4,9", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :sup -2020-11-23 12:31:55 +0000 portsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j87map", :productType=>"iPad4,9", :displayName=>"iPad mini 3"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j96ap", :productType=>"iPad5,1", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat -2020-11-23 12:31:55 +0000 2=>false}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j97ap", :productType=>"iPad5,2", :displayName=>"iPad mini 4"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayNa -2020-11-23 12:31:55 +0000 me=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j81ap", :productType=>"iPad5,3", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeployme -2020-11-23 12:31:55 +0000 ntTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j82ap", :productType=>"iPad5,4", :displayName=>"iPad Air 2"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE2", :gfxFeatureSetFallbacks=>["APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71sap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j71tap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71tap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71tap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71tap", :productType=>"iPad6,11", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFor -2020-11-23 12:31:55 +0000 mat2=>false}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72sap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j72tap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72tap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72tap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0 -2020-11-23 12:31:55 +0000 "], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72tap", :productType=>"iPad6,12", :displayName=>"iPad (5th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j127ap", :productType=>"iPad6,3", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j128ap", :productType=>"iPad6,4", :displayName=>"iPad Pro (9.7-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j98aap", :productType=>"iPad6,7", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j99aap", :productType=>"iPad6,8", :displayName=>"iPad Pro (12.9-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j120ap", :productType=>"iPad7,1", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j171ap", :productType=>"iPad7,11", :displayName=>"iPad (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j172ap", :productType=>"iPad7,12", :displayName=>"iPad (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j121ap", :productType=>"iPad7,2", :displayName=>"iPad Pro (12.9-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j207ap", :productType=>"iPad7,3", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j208ap", :productType=>"iPad7,4", :displayName=>"iPad Pro (10.5-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2224, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j71bap", :productType=>"iPad7,5", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71bap", :productType=>"iPad7,5", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71bap", :productType=>"iPad7,5", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j71bap", :productType=>"iPad7,5", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j72bap", :productType=>"iPad7,6", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j72bap", :productType=>"iPad7,6", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72bap", :productType=>"iPad7,6", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j72bap", :productType=>"iPad7,6", :displayName=>"iPad (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j317ap", :productType=>"iPad8,1", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j317ap", :productType=>"iPad8,1", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j317ap", :productType=>"iPad8,1", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j418ap", :productType=>"iPad8,10", :displayName=>"iPad Pro (11-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j420ap", :productType=>"iPad8,11", :displayName=>"iPad Pro (12.9-inch) (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j421ap", :productType=>"iPad8,12", :displayName=>"iPad Pro (12.9-inch) (4th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j317xap", :productType=>"iPad8,2", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j317xap", :productType=>"iPad8,2", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j317xap", :productType=>"iPad8,2", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j318ap", :productType=>"iPad8,3", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j318ap", :productType=>"iPad8,3", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j318ap", :productType=>"iPad8,3", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j318xap", :productType=>"iPad8,4", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j318xap", :productType=>"iPad8,4", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j318xap", :productType=>"iPad8,4", :displayName=>"iPad Pro (11-inch)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j320ap", :productType=>"iPad8,5", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j320ap", :productType=>"iPad8,5", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j320ap", :productType=>"iPad8,5", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j320xap", :productType=>"iPad8,6", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j320xap", :productType=>"iPad8,6", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j320xap", :productType=>"iPad8,6", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j321ap", :productType=>"iPad8,7", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j321ap", :productType=>"iPad8,7", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j321ap", :productType=>"iPad8,7", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j321xap", :productType=>"iPad8,8", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"j321xap", :productType=>"iPad8,8", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"j321xap", :productType=>"iPad8,8", :displayName=>"iPad Pro (12.9-inch) (3rd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2732, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"j417ap", :productType=>"iPad8,9", :displayName=>"iPad Pro (11-inch) (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"pad", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>2388, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>6, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d20ap", :productType=>"iPhone10,1", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d20ap", :productType=>"iPhone10,1", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d20ap", :productType=>"iPhone10,1", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d20ap", :productType=>"iPhone10,1", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d21ap", :productType=>"iPhone10,2", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d21ap", :productType=>"iPhone10,2", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d21ap", :productType=>"iPhone10,2", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d21ap", :productType=>"iPhone10,2", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d22ap", :productType=>"iPhone10,3", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d22ap", :productType=>"iPhone10,3", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d22ap", :productType=>"iPhone10,3", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d22ap", :productType=>"iPhone10,3", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d201ap", :productType=>"iPhone10,4", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d201ap", :productType=>"iPhone10,4", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d201ap", :productType=>"iPhone10,4", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d201ap", :productType=>"iPhone10,4", :displayName=>"iPhone 8"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d211ap", :productType=>"iPhone10,5", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d211ap", :productType=>"iPhone10,5", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d211ap", :productType=>"iPhone10,5", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d211ap", :productType=>"iPhone10,5", :displayName=>"iPhone 8 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d221ap", :productType=>"iPhone10,6", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d221ap", :productType=>"iPhone10,6", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d221ap", :productType=>"iPhone10,6", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL4,1", :gfxFeatureSetFallbacks=>["MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d221ap", :productType=>"iPhone10,6", :displayName=>"iPhone X"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE4", :gfxFeatureSetFallbacks=>["APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d321ap", :productType=>"iPhone11,2", :displayName=>"iPhone XS"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d321ap", :productType=>"iPhone11,2", :displayName=>"iPhone XS"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d321ap", :productType=>"iPhone11,2", :displayName=>"iPhone XS"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d331ap", :productType=>"iPhone11,4", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d331ap", :productType=>"iPhone11,4", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d331ap", :productType=>"iPhone11,4", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d331pap", :productType=>"iPhone11,6", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d331pap", :productType=>"iPhone11,6", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d331pap", :productType=>"iPhone11,6", :displayName=>"iPhone XS Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n841ap", :productType=>"iPhone11,8", :displayName=>"iPhone XR"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n841ap", :productType=>"iPhone11,8", :displayName=>"iPhone XR"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL5,1", :gfxFeatureSetFallbacks=>["MTL4,1", "MTL3,2", "MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n841ap", :productType=>"iPhone11,8", :displayName=>"iPhone XR"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE5", :gfxFeatureSetFallbacks=>["APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n104ap", :productType=>"iPhone12,1", :displayName=>"iPhone 11"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>1792, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"d421ap", :productType=>"iPhone12,3", :displayName=>"iPhone 11 Pro"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2436, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d431ap", :productType=>"iPhone12,5", :displayName=>"iPhone 11 Pro Max"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>2688, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>3, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d79ap", :productType=>"iPhone12,8", :displayName=>"iPhone SE (2nd generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64e", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE6", :gfxFeatureSetFallbacks=>["APPLE5", "APPLE4", "APPLE3", "APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n94ap", :productType=>"iPhone4,1", :displayName=>"iPhone 4S"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n41ap", :productType=>"iPhone5,1", :displayName=>"iPhone 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n41ap", :productType=>"iPhone5,1", :displayName=>"iPhone 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n42ap", :productType=>"iPhone5,2", :displayName=>"iPhone 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n42ap", :productType=>"iPhone5,2", :displayName=>"iPhone 5"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n48ap", :productType=>"iPhone5,3", :displayName=>"iPhone 5c"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n48ap", :productType=>"iPhone5,3", :displayName=>"iPhone 5c"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n49ap", :productType=>"iPhone5,4", :displayName=>"iPhone 5c"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n49ap", :productType=>"iPhone5,4", :displayName=>"iPhone 5c"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7s", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n51ap", :productType=>"iPhone6,1", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n51ap", :productType=>"iPhone6,1", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n51ap", :productType=>"iPhone6,1", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n51ap", :productType=>"iPhone6,1", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n51ap", :productType=>"iPhone6,1", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n53ap", :productType=>"iPhone6,2", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n53ap", :productType=>"iPhone6,2", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n53ap", :productType=>"iPhone6,2", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n53ap", :productType=>"iPhone6,2", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n53ap", :productType=>"iPhone6,2", :displayName=>"iPhone 5s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL1,2", :gfxFeatureSetFallbacks=>["GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n56ap", :productType=>"iPhone7,1", :displayName=>"iPhone 6 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n56ap", :productType=>"iPhone7,1", :displayName=>"iPhone 6 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n56ap", :productType=>"iPhone7,1", :displayName=>"iPhone 6 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n56ap", :productType=>"iPhone7,1", :displayName=>"iPhone 6 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n56ap", :productType=>"iPhone7,1", :displayName=>"iPhone 6 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n61ap", :productType=>"iPhone7,2", :displayName=>"iPhone 6"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n61ap", :productType=>"iPhone7,2", :displayName=>"iPhone 6"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n61ap", :productType=>"iPhone7,2", :displayName=>"iPhone 6"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n61ap", :productType=>"iPhone7,2", :displayName=>"iPhone 6"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n61ap", :productType=>"iPhone7,2", :displayName=>"iPhone 6"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n71map", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :ar -2020-11-23 12:31:55 +0000 tworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n71ap", :productType=>"iPhone8,1", :displayName=>"iPhone 6s"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n66map", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3 -2020-11-23 12:31:55 +0000 , :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n66ap", :productType=>"iPhone8,2", :displayName=>"iPhone 6s Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWa -2020-11-23 12:31:55 +0000 tchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69uap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=># -2020-11-23 12:31:55 +0000 , :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n69ap", :productType=>"iPhone8,4", :displayName=>"iPhone SE (1st generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureS -2020-11-23 12:31:55 +0000 etFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d10ap", :productType=>"iPhone9,1", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d11ap", :productType=>"iPhone9,2", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:dep -2020-11-23 12:31:55 +0000 loymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d101ap", :productType=>"iPhone9,3", :displayName=>"iPhone 7"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>2, :artworkDevSubtype=>569, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["AP -2020-11-23 12:31:55 +0000 PLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car", "watch"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"d111ap", :productType=>"iPhone9,4", :displayName=>"iPhone 7 Plus"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>["car"], :artworkScaleFactor=>3, :artworkDevSubtype=>570, :artworkDisplayGamut=>"P3", :devPerfMemoryClass=>4, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} - {:device=>{:target=>"n78ap", :productType=>"iPod5,1", :displayName=>"iPod touch"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"armv7", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>0, :gfxFeatureSetClass=>"GLES2,0", :gfxFeatureSetFallbacks=>[], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n102ap", :productType=>"iPod7,1", :displayName=>"iPod touch (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n102ap", :productType=>"iPod7,1", :displayName=>"iPod touch (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} -2020-11-23 12:31:55 +0000 {:device=>{:target=>"n102ap", :productType=>"iPod7,1", :displayName=>"iPod touch (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n102ap", :productType=>"iPod7,1", :displayName=>"iPod touch (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n102ap", :productType=>"iPod7,1", :displayName=>"iPod touch (6th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>false, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>1, :gfxFeatureSetClass=>"MTL2,2", :gfxFeatureSetFallbacks=>["MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>false, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n112ap", :productType=>"iPod9,1", :displayName=>"iPod touch (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"MTL3,2", :gfxFeatureSetFallbacks=>["MTL3,1", "MTL2,2", "MTL1,2", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>true, :supportsEmbeddedUniversalWatchApp=>true, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>false}} - {:device=>{:target=>"n112ap", :productType=>"iPod9,1", :displayName=>"iPod touch (7th generation)"}, :traits=>{:deploymentTarget=>#, :passDeploymentTargetToAssetutil=>true, :architecture=>"arm64", :artworkDevIdiom=>"phone", :artworkHostedIdioms=>[], :artworkScaleFactor=>2, :artworkDevSubtype=>568, :artworkDisplayGamut=>"sRGB", :devPerfMemoryClass=>2, :gfxFeatureSetClass=>"APPLE3", :gfxFeatureSetFallbacks=>["APPLE3v1", "APPLE2", "APPLE1", "GLES2,0"], :featuresToRemove=>[], :supportsEmbeddedWatchApp=>false, :supportsEmbeddedUniversalWatchApp=>false, :hasSwiftRuntime=>true, :supportsEncryptionFormat2=>true}} -2020-11-23 12:31:55 +0000 warning: Configuration issue: platform iPhoneSimulator.platform doesn't have any non-simulator SDKs; ignoring it -2020-11-23 12:31:55 +0000 Scanning IPA... -2020-11-23 12:31:55 +0000 Complete LinkageGraph: - FlankGameLoopExample.app/FlankGameLoopExample arm64 -> - -2020-11-23 12:31:55 +0000 Root IPAs: -["/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root"] -Validating IPA structure... -2020-11-23 12:31:55 +0000 Compiling bitcode... -2020-11-23 12:31:55 +0000 FlankGameLoopExample.app (identifier: io.gogoapps.flankgameloop, platform: iphoneos) - mh_execute 'FlankGameLoopExample.app/FlankGameLoopExample'... -2020-11-23 12:31:55 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app -2020-11-23 12:31:55 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app -2020-11-23 12:31:55 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app -2020-11-23 12:31:55 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/FlankGameLoopExample /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample -2020-11-23 12:31:55 +0000 .arm64 (compile) - Compiling bitcode for arm64... -2020-11-23 12:31:55 +0000 Compiling arm64 bitcode in 'FlankGameLoopExample' -2020-11-23 12:31:55 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app -2020-11-23 12:31:56 +0000 $ /Applications/Xcode.app/Contents/Developer/usr/bin/python3 /Applications/Xcode.app/Contents/Developer/usr/bin/bitcode-build-tool -v -t /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin --sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk -o /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample --generate-dsym /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample.dSYM --strip-swift-symbols /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample - Status: pid 16045 exit 0 - Stdout: - SDK path: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk - SDK version: 14.2 - PATH: ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin', '/Applications/Xcode.app/Contents/Developer/usr/bin'] - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo - MachoInfo: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo', '-info', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample'] - -= Output =- - Non-fat file: /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample is architecture: arm64 - Exited with 0 - - Command took 0 seconds - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dwarfdump - GetUUID: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dwarfdump', '-u', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample'] - -= Output =- - UUID: 71515402-A864-3520-985A-9C0020398A13 (arm64) /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample - Exited with 0 - - Command took 0 seconds - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/segedit - ExtractXAR: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/segedit', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample', '-extract', '__LLVM', '__bundle', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/FlankGameLoopExampledpcwevd5/FlankGameLoopExample.arm64.xar'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Bitcode bundle version: 1.0 - Setting platform to: iOS - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - Swift: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc', '-frontend', '-emit-object', '-target', 'arm64-apple-ios13.0', '-Xllvm', '-aarch64-use-tbi', '-O', '-disable-llvm-optzns', '-module-name', 'FlankGameLoopExample', '1.bc', '-o', '1.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Swift: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_ -2020-11-23 12:31:56 +0000 gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc', '-frontend', '-emit-object', '-target', 'arm64-apple-ios13.0', '-Xllvm', '-aarch64-use-tbi', '-O', '-disable-llvm-optzns', '-module-name', 'FlankGameLoopExample', '2.bc', '-o', '2.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Swift: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc', '-frontend', '-emit-object', '-target', 'arm64-apple-ios13.0', '-Xllvm', '-aarch64-use-tbi', '-O', '-disable-llvm-optzns', '-module-name', 'FlankGameLoopExample', '3.bc', '-o', '3.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Swift: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc', '-frontend', '-emit-object', '-target', 'arm64-apple-ios13.0', '-Xllvm', '-aarch64-use-tbi', '-O', '-disable-llvm-optzns', '-module-name', 'FlankGameLoopExample', '4.bc', '-o', '4.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Clang: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang', '-cc1', '-triple', 'arm64-apple-ios7.0.0', '-emit-obj', '-disable-llvm-passes', '-faligned-alloc-unavailable', '-target-sdk-version=14.2', '-target-abi', 'darwinpcs', '-O2', '-x', 'ir', '5', '-o', '5.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Clang: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang', '-cc1', '-triple', 'arm64-apple-ios7.0.0', '-emit-obj', '-disable-llvm-passes', '-faligned-alloc-unavailable', '-target-sdk-version=14.2', '-target-abi', 'darwinpcs', '-O2', '-x', 'ir', '6', '-o', '6.o'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/Foundation.framework/Foundation.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/libobjc.A.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/libSystem.B.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/SpriteKit.framework/SpriteKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/UIKit.framework/UIKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCore.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreFoundation.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreGraphics.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreImage.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftDarwin.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPho -2020-11-23 12:31:56 +0000 neOS14.2.sdk/usr/lib/swift/libswiftDispatch.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftFoundation.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftGLKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftGameplayKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftMetal.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftModelIO.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftObjectiveC.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftQuartzCore.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftSceneKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftSpriteKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftUIKit.tbd - Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftsimd.tbd - Ld: cd /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/tempv_gax5_m - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld', '-arch', 'arm64', '-execute', '-platform_version', 'ios', '13.0', '14.2', '-e', '_main', '-rpath', '@executable_path/Frameworks', '-executable_path', '/Users/zuziakaxel/Library/Developer/Xcode/DerivedData/FlankGameLoopExample-ctttwdecncwnhdgjmkmmdknazrrs/Build/Intermediates.noindex/ArchiveIntermediates/FlankGameLoopExample/InstallationBuildProductsLocation/Applications/FlankGameLoopExample.app/FlankGameLoopExample', '-dead_strip', '-syslibroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk', '-sdk_version', '14.2', '-filelist', '/private/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/FlankGameLoopExampledpcwevd5/FlankGameLoopExample.arm64.out.LinkFileList', '-ignore_auto_link', '-allow_dead_duplicates', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/Foundation.framework/Foundation.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/libobjc.A.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/libSystem.B.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/SpriteKit.framework/SpriteKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks/UIKit.framework/UIKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCore.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreFoundation.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreGraphics.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneO -2020-11-23 12:31:56 +0000 S.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftCoreImage.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftDarwin.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftDispatch.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftFoundation.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftGLKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftGameplayKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftMetal.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftModelIO.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftObjectiveC.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftQuartzCore.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftSceneKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftSpriteKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftUIKit.tbd', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/lib/swift/libswiftsimd.tbd', '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.ios.a', '-o', '/private/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/FlankGameLoopExampledpcwevd5/FlankGameLoopExample.arm64.out'] - -= Output =- - ld: warning: -sdk_version and -platform_version are not compatible, ignoring -sdk_version - Exited with 0 - - Command took 0 seconds - Cannot generate useful dsym from input macho file: /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-in/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample - GetUUID: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dwarfdump', '-u', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample'] - -= Output =- - UUID: 85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5 (arm64) /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample - Exited with 0 - - Command took 0 seconds - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil - Dsymutil: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample', '-o', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample.dSYM'] - -= Output =- - Exited with 0 - - Command took 0 seconds - Using: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip - StripSymbols: cd / - ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip', '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-160 -2020-11-23 12:31:56 +0000 20-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample'] - -= Output =- - Exited with 0 - - Command took 0 seconds - - Stderr: - - -2020-11-23 12:31:56 +0000 bitcode-build-tool built /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample arm64:85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5 from arm64:71515402-A864-3520-985A-9C0020398A13 -2020-11-23 12:31:56 +0000 $ /Applications/Xcode.app/Contents/Developer/usr/bin/symbols -failIfMissingDsym -symbolsPackageDir /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/symcache-FlankGameLoopExample20201123-16020-1nuuoxb /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample - Status: pid 16067 exit 0 - Stdout: - /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample [arm64, 0.003710 seconds]: - - Stderr: - - -2020-11-23 12:31:56 +0000 SymbolsStore: Added .symbols for 85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5: /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/symcache-FlankGameLoopExample20201123-16020-1nuuoxb/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.symbols -2020-11-23 12:31:56 +0000 Renaming '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample.dSYM' -> '85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.dSYM') -2020-11-23 12:31:56 +0000 $ mv /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample.dSYM /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.dSYM -2020-11-23 12:31:56 +0000 SymbolsStore: Added .dSYM for 85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5: /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.dSYM -2020-11-23 12:31:56 +0000 Reassembling FlankGameLoopExample.app/FlankGameLoopExample [arm64] -2020-11-23 12:31:56 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/universal-MachOs/Payload/FlankGameLoopExample.app -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/universal-MachOs/Payload/FlankGameLoopExample.app/FlankGameLoopExample -2020-11-23 12:31:56 +0000 [cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/FlankGameLoopExample /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/universal-MachOs/Payload/FlankGameLoopExample.app/FlankGameLoopExample] -2020-11-23 12:31:56 +0000 Creating universal IPA contents for all variants -2020-11-23 12:31:56 +0000 Creating directory /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos -$ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos -2020-11-23 12:31:56 +0000 Copying FlankGameLoopExample.app output payload directory - bndl FlankGameLoopExample.app (iphoneos) -$ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app -2020-11-23 12:31:56 +0000 copy Actions.sks -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/Actions.sks /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Actions.sks -2020-11-23 12:31:56 +0000 mkdr Base.lproj/ -2020-11-23 12:31:56 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Base.lproj - mkdr Main.storyboardc/ -$ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc -2020-11-23 12:31:56 +0000 copy BV1-FR-VrT-view-3se-qz-xqx.nib -$ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib -2020-11-23 12:31:56 +0000 copy Info.plist -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/Info.plist /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/Info.plist -2020-11-23 12:31:56 +0000 copy UIViewController-BV1-FR-VrT.nib -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib -2020-11-23 12:31:56 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/dSYMs -2020-11-23 12:31:56 +0000 $ cp -r /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/thinned-out/arm64/Payload/FlankGameLoopExample.app/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.dSYM /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/dSYMs/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.dSYM -2020-11-23 12:31:56 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Symbols -2020-11-23 12:31:56 +0000 $ cp -r /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/symcache-FlankGameLoopExample20201123-16020-1nuuoxb/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.symbols /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Symbols/85A4D313-8F5C-3C05-8AAA-96B87EBB2BA5.symbols -2020-11-23 12:31:56 +0000 copy FlankGameLoopExample -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e/universal-MachOs/Payload/FlankGameLoopExample.app/FlankGameLoopExample /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/FlankGameLoopExample -2020-11-23 12:31:56 +0000 copy GameScene.sks -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/GameScene.sks /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/GameScene.sks -2020-11-23 12:31:56 +0000 copy Info.plist -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/Info.plist /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Info.plist -2020-11-23 12:31:56 +0000 copy PkgInfo -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/PkgInfo /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/PkgInfo -2020-11-23 12:31:56 +0000 mkdr _CodeSignature/ -2020-11-23 12:31:56 +0000 $ mkdir -p /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/_CodeSignature - copy CodeResources -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/_CodeSignature/CodeResources /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/_CodeSignature/CodeResources -2020-11-23 12:31:56 +0000 copy embedded.mobileprovision -2020-11-23 12:31:56 +0000 $ cp /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.\~\~\~FE2bSA/Root/Payload/FlankGameLoopExample.app/embedded.mobileprovision /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/embedded.mobileprovision -2020-11-23 12:31:56 +0000 $ rm -f /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.\~\~\~vfqiYR/universal-iphoneos/Payload/FlankGameLoopExample.app/Info.plist -2020-11-23 12:31:56 +0000 /Library/Ruby/Gems/2.6.0/gems/CFPropertyList-3.0.2/lib/cfpropertylist/rbCFPropertyList.rb:378: warning: File.exists? is a deprecated name, use File.exist? instead -2020-11-23 12:31:56 +0000 Removing temporary directory /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e... -2020-11-23 12:31:56 +0000 $ rm -r /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/ipatool20201123-16020-1en1k5e -2020-11-23 12:31:56 +0000 [MT] /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with 0 -2020-11-23 12:31:56 +0000 [MT] ipatool JSON: { - alerts = ( - { - code = 3736; - description = "Configuration issue: platform AppleTVSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; - info = { - }; - level = WARN; - }, - { - code = 3736; - description = "Configuration issue: platform WatchSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; - info = { - }; - level = WARN; - }, - { - code = 3736; - description = "Configuration issue: platform iPhoneSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; - info = { - }; - level = WARN; - } - ); - universalIPA = { - path = "/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.~~~vfqiYR/universal-iphoneos"; - platform = iphoneos; - }; - universalIPAs = ( - { - path = "/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/IDEIPAProcessor.AppThinning.~~~vfqiYR/universal-iphoneos"; - platform = iphoneos; - } - ); -} -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionCodeSlimmingStep -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionCopyBCSymbolMapsStep -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionSymbolsStep -2020-11-23 12:31:56 +0000 [MT] Skipping step: IDEDistributionSymbolsStep because it said so -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionAppThinningStep -2020-11-23 12:31:56 +0000 [MT] Skipping step: IDEDistributionAppThinningStep because it said so -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionArchThinningStep -2020-11-23 12:31:56 +0000 [MT] Running /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app/FlankGameLoopExample' '-verify_arch' 'arm64e' -2020-11-23 12:31:56 +0000 [MT] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo exited with 1 -2020-11-23 12:31:56 +0000 [MT] Skipping architecture thinning for item "FlankGameLoopExample" because arch "arm64e" wasn't found -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionODRStep -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionStripXattrsStep -2020-11-23 12:31:56 +0000 [MT] Running /usr/bin/xattr '-crs' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app' -2020-11-23 12:31:56 +0000 [MT] /usr/bin/xattr exited with 0 -2020-11-23 12:31:56 +0000 [MT] Processing step: IDEDistributionCodesignStep -2020-11-23 12:31:56 +0000 [MT] Entitlements for ', codeSigningInfo='<_DVTCodeSigningInformation_Path: 0x7f9973408250; isSigned='1', isAdHocSigned='0', signingCertificate='', entitlements='{ - "application-identifier" = "L2UF9MLSM6.io.gogoapps.flankgameloop"; - "com.apple.developer.team-identifier" = L2UF9MLSM6; - "get-task-allow" = 1; - "keychain-access-groups" = ( - "L2UF9MLSM6.io.gogoapps.flankgameloop" - ); -}', teamID='L2UF9MLSM6', identifier='io.gogoapps.flankgameloop', executablePath='', hardenedRuntime='0'>'>: { - "application-identifier" = "L2UF9MLSM6.io.gogoapps.flankgameloop"; - "com.apple.developer.team-identifier" = L2UF9MLSM6; - "get-task-allow" = 0; - "keychain-access-groups" = ( - "L2UF9MLSM6.io.gogoapps.flankgameloop" - ); -} -2020-11-23 12:31:56 +0000 [MT] Writing entitlements for ', codeSigningInfo='<_DVTCodeSigningInformation_Path: 0x7f9973408250; isSigned='1', isAdHocSigned='0', signingCertificate='', entitlements='{ - "application-identifier" = "L2UF9MLSM6.io.gogoapps.flankgameloop"; - "com.apple.developer.team-identifier" = L2UF9MLSM6; - "get-task-allow" = 1; - "keychain-access-groups" = ( - "L2UF9MLSM6.io.gogoapps.flankgameloop" - ); -}', teamID='L2UF9MLSM6', identifier='io.gogoapps.flankgameloop', executablePath='', hardenedRuntime='0'>'> to: /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/entitlements~~~PCGN3o -2020-11-23 12:31:56 +0000 [MT] Running /usr/bin/codesign '-vvv' '--force' '--sign' '8D0B1E4D3E6B2C8DC40B88081C4B47B35DC8EA32' '--entitlements' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/entitlements~~~PCGN3o' '--preserve-metadata=identifier,flags,runtime' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app' -2020-11-23 12:31:59 +0000 /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root/Payload/FlankGameLoopExample.app: signed app bundle with Mach-O thin (arm64) [io.gogoapps.flankgameloop] -2020-11-23 12:31:59 +0000 [MT] /usr/bin/codesign exited with 0 -2020-11-23 12:31:59 +0000 [MT] Processing step: IDEDistributionZipODRItemStep -2020-11-23 12:31:59 +0000 [MT] Skipping step: IDEDistributionZipODRItemStep because it said so -2020-11-23 12:31:59 +0000 [MT] Processing step: IDEDistributionCreateIPAStep -2020-11-23 12:31:59 +0000 [MT] Running /usr/bin/ditto '-V' '-c' '-k' '--norsrc' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root' '/var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Packages/FlankGameLoopExample.ipa' -2020-11-23 12:31:59 +0000 >>> Copying /var/folders/4g/0w3f6q4j1c37h2c_rq9gx3mc0000gn/T/XcodeDistPipeline.~~~FE2bSA/Root -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/_CodeSignature/CodeResources ... -2020-11-23 12:31:59 +0000 3399 bytes for ./Payload/FlankGameLoopExample.app/_CodeSignature/CodeResources -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/FlankGameLoopExample ... -2020-11-23 12:31:59 +0000 120864 bytes for ./Payload/FlankGameLoopExample.app/FlankGameLoopExample -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib ... -2020-11-23 12:31:59 +0000 948 bytes for ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/UIViewController-BV1-FR-VrT.nib -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib ... -2020-11-23 12:31:59 +0000 1298 bytes for ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/BV1-FR-VrT-view-3se-qz-xqx.nib -copying file ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/Info.plist ... -2020-11-23 12:31:59 +0000 258 bytes for ./Payload/FlankGameLoopExample.app/Base.lproj/Main.storyboardc/Info.plist -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/GameScene.sks ... -2020-11-23 12:31:59 +0000 4694 bytes for ./Payload/FlankGameLoopExample.app/GameScene.sks -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/embedded.mobileprovision ... -2020-11-23 12:31:59 +0000 7539 bytes for ./Payload/FlankGameLoopExample.app/embedded.mobileprovision -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/Info.plist ... -2020-11-23 12:31:59 +0000 2817 bytes for ./Payload/FlankGameLoopExample.app/Info.plist -copying file ./Payload/FlankGameLoopExample.app/Actions.sks ... -2020-11-23 12:31:59 +0000 1892 bytes for ./Payload/FlankGameLoopExample.app/Actions.sks -2020-11-23 12:31:59 +0000 copying file ./Payload/FlankGameLoopExample.app/PkgInfo ... -8 bytes for ./Payload/FlankGameLoopExample.app/PkgInfo -2020-11-23 12:31:59 +0000 [MT] /usr/bin/ditto exited with 0 -2020-11-23 12:31:59 +0000 [MT] Processing step: IDEDistributionAppStoreInformationStep -2020-11-23 12:31:59 +0000 [MT] Skipping step: IDEDistributionAppStoreInformationStep because it said so -2020-11-23 12:31:59 +0000 [MT] Processing step: IDEDistributionGenerateProcessedDistributionItems -2020-11-23 12:31:59 +0000 [MT] IDEDistributionItem init -2020-11-23 12:31:59 +0000 [MT] Processing step: IDEDistributionCreateManifestStep diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/test_projects/ios/FlankMultiTestTargetsExample/AllTests.xctestplan b/test_projects/ios/FlankTestPlansExample/AllTests.xctestplan similarity index 76% rename from test_projects/ios/FlankMultiTestTargetsExample/AllTests.xctestplan rename to test_projects/ios/FlankTestPlansExample/AllTests.xctestplan index 229c133715..8ba313249e 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/AllTests.xctestplan +++ b/test_projects/ios/FlankTestPlansExample/AllTests.xctestplan @@ -22,20 +22,17 @@ }, "testTargets" : [ { - "skippedTests" : [ - "UITests\/test2()" - ], "target" : { - "containerPath" : "container:FlankMultiTestTargetsExample.xcodeproj", - "identifier" : "3284E2B025458E56001F14AA", - "name" : "UITests" + "containerPath" : "container:FlankTestPlansExample.xcodeproj", + "identifier" : "3284E2C025458E66001F14AA", + "name" : "SecondUITests" } }, { "target" : { - "containerPath" : "container:FlankMultiTestTargetsExample.xcodeproj", - "identifier" : "3284E2C025458E66001F14AA", - "name" : "SecondUITests" + "containerPath" : "container:FlankTestPlansExample.xcodeproj", + "identifier" : "3284E2B025458E56001F14AA", + "name" : "UITests" } } ], diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.pbxproj b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.pbxproj similarity index 89% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.pbxproj rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.pbxproj index 5d349c8cda..c537ba71a4 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.pbxproj +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.pbxproj @@ -12,8 +12,8 @@ 3284E29D25458E3C001F14AA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3284E29C25458E3C001F14AA /* ViewController.swift */; }; 3284E2A025458E3C001F14AA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3284E29E25458E3C001F14AA /* Main.storyboard */; }; 3284E2A525458E3D001F14AA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3284E2A325458E3D001F14AA /* LaunchScreen.storyboard */; }; - 3284E2B425458E56001F14AA /* UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3284E2B325458E56001F14AA /* UITests.swift */; }; - 3284E2C425458E66001F14AA /* SecondUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3284E2C325458E66001F14AA /* SecondUITests.swift */; }; + 3284E2B425458E56001F14AA /* UITestsClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3284E2B325458E56001F14AA /* UITestsClass.swift */; }; + 3284E2C425458E66001F14AA /* SecondUITestsClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3284E2C325458E66001F14AA /* SecondUITestsClass.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -34,7 +34,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 3284E29525458E3C001F14AA /* FlankMultiTestTargetsExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlankMultiTestTargetsExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3284E29525458E3C001F14AA /* FlankTestPlansExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlankTestPlansExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3284E29825458E3C001F14AA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 3284E29A25458E3C001F14AA /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 3284E29C25458E3C001F14AA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -42,10 +42,10 @@ 3284E2A425458E3D001F14AA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 3284E2A625458E3D001F14AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3284E2B125458E56001F14AA /* UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 3284E2B325458E56001F14AA /* UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITests.swift; sourceTree = ""; }; + 3284E2B325458E56001F14AA /* UITestsClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITestsClass.swift; sourceTree = ""; }; 3284E2B525458E56001F14AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3284E2C125458E66001F14AA /* SecondUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SecondUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 3284E2C325458E66001F14AA /* SecondUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondUITests.swift; sourceTree = ""; }; + 3284E2C325458E66001F14AA /* SecondUITestsClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondUITestsClass.swift; sourceTree = ""; }; 3284E2C525458E66001F14AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3284E2D425459193001F14AA /* AllTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = AllTests.xctestplan; sourceTree = ""; }; /* End PBXFileReference section */ @@ -88,7 +88,7 @@ isa = PBXGroup; children = ( 3284E2D425459193001F14AA /* AllTests.xctestplan */, - 3284E29725458E3C001F14AA /* FlankMultiTestTargetsExample */, + 3284E29725458E3C001F14AA /* FlankTestPlansExample */, 3284E2B225458E56001F14AA /* UITests */, 3284E2C225458E66001F14AA /* SecondUITests */, 3284E29625458E3C001F14AA /* Products */, @@ -98,14 +98,14 @@ 3284E29625458E3C001F14AA /* Products */ = { isa = PBXGroup; children = ( - 3284E29525458E3C001F14AA /* FlankMultiTestTargetsExample.app */, + 3284E29525458E3C001F14AA /* FlankTestPlansExample.app */, 3284E2B125458E56001F14AA /* UITests.xctest */, 3284E2C125458E66001F14AA /* SecondUITests.xctest */, ); name = Products; sourceTree = ""; }; - 3284E29725458E3C001F14AA /* FlankMultiTestTargetsExample */ = { + 3284E29725458E3C001F14AA /* FlankTestPlansExample */ = { isa = PBXGroup; children = ( 3284E29825458E3C001F14AA /* AppDelegate.swift */, @@ -114,13 +114,13 @@ 32171558255186FA0082625F /* Assets */, 3284E2A625458E3D001F14AA /* Info.plist */, ); - path = FlankMultiTestTargetsExample; + path = FlankTestPlansExample; sourceTree = ""; }; 3284E2B225458E56001F14AA /* UITests */ = { isa = PBXGroup; children = ( - 3284E2B325458E56001F14AA /* UITests.swift */, + 3284E2B325458E56001F14AA /* UITestsClass.swift */, 3284E2B525458E56001F14AA /* Info.plist */, ); path = UITests; @@ -129,7 +129,7 @@ 3284E2C225458E66001F14AA /* SecondUITests */ = { isa = PBXGroup; children = ( - 3284E2C325458E66001F14AA /* SecondUITests.swift */, + 3284E2C325458E66001F14AA /* SecondUITestsClass.swift */, 3284E2C525458E66001F14AA /* Info.plist */, ); path = SecondUITests; @@ -138,9 +138,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 3284E29425458E3C001F14AA /* FlankMultiTestTargetsExample */ = { + 3284E29425458E3C001F14AA /* FlankTestPlansExample */ = { isa = PBXNativeTarget; - buildConfigurationList = 3284E2A925458E3D001F14AA /* Build configuration list for PBXNativeTarget "FlankMultiTestTargetsExample" */; + buildConfigurationList = 3284E2A925458E3D001F14AA /* Build configuration list for PBXNativeTarget "FlankTestPlansExample" */; buildPhases = ( 3284E29125458E3C001F14AA /* Sources */, 3284E29225458E3C001F14AA /* Frameworks */, @@ -150,9 +150,9 @@ ); dependencies = ( ); - name = FlankMultiTestTargetsExample; + name = FlankTestPlansExample; productName = FlankMultiTestTargetsExample; - productReference = 3284E29525458E3C001F14AA /* FlankMultiTestTargetsExample.app */; + productReference = 3284E29525458E3C001F14AA /* FlankTestPlansExample.app */; productType = "com.apple.product-type.application"; }; 3284E2B025458E56001F14AA /* UITests */ = { @@ -213,7 +213,7 @@ }; }; }; - buildConfigurationList = 3284E29025458E3C001F14AA /* Build configuration list for PBXProject "FlankMultiTestTargetsExample" */; + buildConfigurationList = 3284E29025458E3C001F14AA /* Build configuration list for PBXProject "FlankTestPlansExample" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -226,7 +226,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 3284E29425458E3C001F14AA /* FlankMultiTestTargetsExample */, + 3284E29425458E3C001F14AA /* FlankTestPlansExample */, 3284E2B025458E56001F14AA /* UITests */, 3284E2C025458E66001F14AA /* SecondUITests */, ); @@ -274,7 +274,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3284E2B425458E56001F14AA /* UITests.swift in Sources */, + 3284E2B425458E56001F14AA /* UITestsClass.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -282,7 +282,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3284E2C425458E66001F14AA /* SecondUITests.swift in Sources */, + 3284E2C425458E66001F14AA /* SecondUITestsClass.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -291,12 +291,12 @@ /* Begin PBXTargetDependency section */ 3284E2B725458E56001F14AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 3284E29425458E3C001F14AA /* FlankMultiTestTargetsExample */; + target = 3284E29425458E3C001F14AA /* FlankTestPlansExample */; targetProxy = 3284E2B625458E56001F14AA /* PBXContainerItemProxy */; }; 3284E2C725458E66001F14AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 3284E29425458E3C001F14AA /* FlankMultiTestTargetsExample */; + target = 3284E29425458E3C001F14AA /* FlankTestPlansExample */; targetProxy = 3284E2C625458E66001F14AA /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -444,7 +444,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = L2UF9MLSM6; - INFOPLIST_FILE = FlankMultiTestTargetsExample/Info.plist; + INFOPLIST_FILE = FlankTestPlansExample/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -463,7 +463,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = L2UF9MLSM6; - INFOPLIST_FILE = FlankMultiTestTargetsExample/Info.plist; + INFOPLIST_FILE = FlankTestPlansExample/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -490,7 +490,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FlankMultiTestTargetsExample; + TEST_TARGET_NAME = FlankTestPlansExample; }; name = Debug; }; @@ -509,7 +509,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FlankMultiTestTargetsExample; + TEST_TARGET_NAME = FlankTestPlansExample; }; name = Release; }; @@ -528,7 +528,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FlankMultiTestTargetsExample; + TEST_TARGET_NAME = FlankTestPlansExample; }; name = Debug; }; @@ -547,14 +547,14 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FlankMultiTestTargetsExample; + TEST_TARGET_NAME = FlankTestPlansExample; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 3284E29025458E3C001F14AA /* Build configuration list for PBXProject "FlankMultiTestTargetsExample" */ = { + 3284E29025458E3C001F14AA /* Build configuration list for PBXProject "FlankTestPlansExample" */ = { isa = XCConfigurationList; buildConfigurations = ( 3284E2A725458E3D001F14AA /* Debug */, @@ -563,7 +563,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3284E2A925458E3D001F14AA /* Build configuration list for PBXNativeTarget "FlankMultiTestTargetsExample" */ = { + 3284E2A925458E3D001F14AA /* Build configuration list for PBXNativeTarget "FlankTestPlansExample" */ = { isa = XCConfigurationList; buildConfigurations = ( 3284E2AA25458E3D001F14AA /* Debug */, diff --git a/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..3ae7265ec9 --- /dev/null +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme similarity index 91% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme index 7a3132bfdf..135b8d759a 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme @@ -17,7 +17,7 @@ BlueprintIdentifier = "3284E2C025458E66001F14AA" BuildableName = "SecondUITests.xctest" BlueprintName = "SecondUITests" - ReferencedContainer = "container:FlankMultiTestTargetsExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> @@ -41,7 +41,7 @@ BlueprintIdentifier = "3284E2B025458E56001F14AA" BuildableName = "UITests.xctest" BlueprintName = "UITests" - ReferencedContainer = "container:FlankMultiTestTargetsExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme similarity index 79% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme index 0d1b7d5e57..0edd91339a 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/FlankMultiTestTargetsExample.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "FlankTestPlansExample.app" + BlueprintName = "FlankTestPlansExample" + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> @@ -35,7 +35,7 @@ BlueprintIdentifier = "3284E2B025458E56001F14AA" BuildableName = "UITests.xctest" BlueprintName = "UITests" - ReferencedContainer = "container:FlankMultiTestTargetsExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> @@ -65,9 +65,9 @@ + BuildableName = "FlankTestPlansExample.app" + BlueprintName = "FlankTestPlansExample" + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> @@ -82,9 +82,9 @@ + BuildableName = "FlankTestPlansExample.app" + BlueprintName = "FlankTestPlansExample" + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme similarity index 95% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme index c81c319df6..d17ba6ad10 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/SecondUITests.xcscheme @@ -19,7 +19,7 @@ BlueprintIdentifier = "3284E2C025458E66001F14AA" BuildableName = "SecondUITests.xctest" BlueprintName = "SecondUITests" - ReferencedContainer = "container:FlankMultiTestTargetsExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme similarity index 95% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme index f025099c6a..6d6499b2b5 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme +++ b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme @@ -19,7 +19,7 @@ BlueprintIdentifier = "3284E2B025458E56001F14AA" BuildableName = "UITests.xctest" BlueprintName = "UITests" - ReferencedContainer = "container:FlankMultiTestTargetsExample.xcodeproj"> + ReferencedContainer = "container:FlankTestPlansExample.xcodeproj"> diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/AppDelegate.swift b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/AppDelegate.swift similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/AppDelegate.swift rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/AppDelegate.swift diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Assets/Base.lproj/LaunchScreen.storyboard b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Assets/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Assets/Base.lproj/LaunchScreen.storyboard rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Assets/Base.lproj/LaunchScreen.storyboard diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Assets/Base.lproj/Main.storyboard b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Assets/Base.lproj/Main.storyboard similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Assets/Base.lproj/Main.storyboard rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Assets/Base.lproj/Main.storyboard diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Info.plist b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Info.plist similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/Info.plist rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/Info.plist diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/SceneDelegate.swift b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/SceneDelegate.swift similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/SceneDelegate.swift rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/SceneDelegate.swift diff --git a/test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/ViewController.swift b/test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/ViewController.swift similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/FlankMultiTestTargetsExample/ViewController.swift rename to test_projects/ios/FlankTestPlansExample/FlankTestPlansExample/ViewController.swift diff --git a/test_projects/ios/FlankMultiTestTargetsExample/SecondUITests/Info.plist b/test_projects/ios/FlankTestPlansExample/SecondUITests/Info.plist similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/SecondUITests/Info.plist rename to test_projects/ios/FlankTestPlansExample/SecondUITests/Info.plist diff --git a/test_projects/ios/FlankMultiTestTargetsExample/UITests/UITests.swift b/test_projects/ios/FlankTestPlansExample/SecondUITests/SecondUITestsClass.swift similarity index 64% rename from test_projects/ios/FlankMultiTestTargetsExample/UITests/UITests.swift rename to test_projects/ios/FlankTestPlansExample/SecondUITests/SecondUITestsClass.swift index 1b1f525697..5e262bf88e 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/UITests/UITests.swift +++ b/test_projects/ios/FlankTestPlansExample/SecondUITests/SecondUITestsClass.swift @@ -1,24 +1,24 @@ import XCTest -class UITests: XCTestCase { +class SecondUITestsClass: XCTestCase { - func test1() { + func test2_1() { XCTAssertEqual("", "") } - func test2() { + func test2_2() { XCTAssertEqual("", "") } - func test3() { + func test2_3() { XCTAssertEqual("", "") } - func test1ENLocale() { + func test2_ENLocale() { XCTAssert(Locale.current.identifier.contains("en")) } - func test1PLLocale() { + func test2_PLLocale() { XCTAssert(Locale.current.identifier.contains("pl")) } } diff --git a/test_projects/ios/FlankMultiTestTargetsExample/UITests/Info.plist b/test_projects/ios/FlankTestPlansExample/UITests/Info.plist similarity index 100% rename from test_projects/ios/FlankMultiTestTargetsExample/UITests/Info.plist rename to test_projects/ios/FlankTestPlansExample/UITests/Info.plist diff --git a/test_projects/ios/FlankMultiTestTargetsExample/SecondUITests/SecondUITests.swift b/test_projects/ios/FlankTestPlansExample/UITests/UITestsClass.swift similarity index 64% rename from test_projects/ios/FlankMultiTestTargetsExample/SecondUITests/SecondUITests.swift rename to test_projects/ios/FlankTestPlansExample/UITests/UITestsClass.swift index fbe8a6fee4..4a5df63e37 100644 --- a/test_projects/ios/FlankMultiTestTargetsExample/SecondUITests/SecondUITests.swift +++ b/test_projects/ios/FlankTestPlansExample/UITests/UITestsClass.swift @@ -1,24 +1,24 @@ import XCTest -class SecondUITests: XCTestCase { +class UITestsClass: XCTestCase { - func test11() { + func test1_1() { XCTAssertEqual("", "") } - func test12() { + func test1_2() { XCTAssertEqual("", "") } - func test13() { + func test1_3() { XCTAssertEqual("", "") } - func test2ENLocale() { + func test1_ENLocale() { XCTAssert(Locale.current.identifier.contains("en")) } - func test2PLLocale() { + func test1_PLLocale() { XCTAssert(Locale.current.identifier.contains("pl")) } } diff --git a/test_runner/build.gradle.kts b/test_runner/build.gradle.kts index 80a3ed8567..b28100f137 100644 --- a/test_runner/build.gradle.kts +++ b/test_runner/build.gradle.kts @@ -382,7 +382,7 @@ fun execAndGetStdout(vararg args: String): String { } val resolveArtifacts by tasks.registering { - dependsOn(":flank-scripts:download") + dependsOn(":flank-scripts:prepareJar") group = "verification" doLast { val flankScriptsRunnerName = if(DefaultNativePlatform.getCurrentOperatingSystem().isWindows) diff --git a/test_runner/src/main/kotlin/ftl/config/FtlConstants.kt b/test_runner/src/main/kotlin/ftl/config/FtlConstants.kt index a649004029..2ab263c055 100644 --- a/test_runner/src/main/kotlin/ftl/config/FtlConstants.kt +++ b/test_runner/src/main/kotlin/ftl/config/FtlConstants.kt @@ -36,7 +36,7 @@ object FtlConstants { const val defaultLocale = "en" const val defaultOrientation = "portrait" const val defaultIosModel = "iphone8" - const val defaultIosVersion = "12.0" + const val defaultIosVersion = "13.6" const val defaultAndroidModel = "NexusLowRes" const val defaultAndroidVersion = "28" const val defaultIosConfig = "./flank.ios.yml" diff --git a/test_runner/src/test/kotlin/ftl/args/IosArgsFileTest.kt b/test_runner/src/test/kotlin/ftl/args/IosArgsFileTest.kt index 35b94535bd..4a371fbf64 100644 --- a/test_runner/src/test/kotlin/ftl/args/IosArgsFileTest.kt +++ b/test_runner/src/test/kotlin/ftl/args/IosArgsFileTest.kt @@ -28,9 +28,9 @@ class IosArgsFileTest { private val ymlNotFound = getPath("not_found.yml") private val yamlFile = getPath("src/test/kotlin/ftl/fixtures/flank.ios.yml") private val yamlFile2 = getPath("src/test/kotlin/ftl/fixtures/flank2.ios.yml") - private val xctestrunZip = getPath("src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip") + private val xctestrunZip = getPath("src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip") private val xctestrunFile = - getPath("src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun") + getPath("src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun") private val testName = "EarlGreyExampleSwiftTests/testLayout" // NOTE: Change working dir to '%MODULE_WORKING_DIR%' in IntelliJ to match gradle for this test to pass. @Test diff --git a/test_runner/src/test/kotlin/ftl/args/IosArgsTest.kt b/test_runner/src/test/kotlin/ftl/args/IosArgsTest.kt index 71f5a60a92..eb0a9408d5 100644 --- a/test_runner/src/test/kotlin/ftl/args/IosArgsTest.kt +++ b/test_runner/src/test/kotlin/ftl/args/IosArgsTest.kt @@ -34,11 +34,11 @@ import java.io.StringReader class IosArgsTest { private val empty = emptyList() private val simpleFlankPath = getPath("src/test/kotlin/ftl/fixtures/simple-ios-flank.yml") - private val testPath = "./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip" + private val testPath = "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" private val nonExistingTestPath = "./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example_non_existing.zip" private val nonExistingxctestrunFile = "./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e_non_exis.xctestrun" private val xctestrunFile = - "./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun" + "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" private val invalidApp = "../test_projects/android/apks/invalid.apk" private val xctestrunFileAbsolutePath = xctestrunFile.absolutePath() private val testAbsolutePath = testPath.absolutePath() @@ -300,7 +300,7 @@ IosArgs xcode-version: null device: - model: iphone8 - version: 12.0 + version: 13.6 locale: en orientation: portrait num-flaky-test-attempts: 0 @@ -362,7 +362,7 @@ IosArgs // IosGcloudYml assert(xctestrunZip, testAbsolutePath) assert(xctestrunFile, xctestrunFileAbsolutePath) - assert(devices, listOf(Device("iphone8", "12.0"))) + assert(devices, listOf(Device("iphone8", "13.6"))) assert(flakyTestAttempts, 0) // FlankYml diff --git a/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.gcs.yml b/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.gcs.yml index 4829e6987a..e92a7cd060 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.gcs.yml +++ b/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.gcs.yml @@ -2,7 +2,7 @@ gcloud: # only test is supported on gcs test: gs://tmp_bucket_2/earlgrey_example.zip # testrun & the app itself must exist locally for analysis and sharding. - xctestrun-file: ./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" results-history-name: android-gcs results-bucket: tmp_bucket_2 record-video: true diff --git a/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.yml b/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.yml index 7e93eb3a04..3964265612 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.yml +++ b/test_runner/src/test/kotlin/ftl/fixtures/flank.ios.yml @@ -1,6 +1,6 @@ gcloud: - test: ./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" + xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" results-bucket: tmp_bucket_2 record-video: true timeout: 60m diff --git a/test_runner/src/test/kotlin/ftl/fixtures/flank2.ios.yml b/test_runner/src/test/kotlin/ftl/fixtures/flank2.ios.yml index 3bb4d7c18f..02d70b61e0 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/flank2.ios.yml +++ b/test_runner/src/test/kotlin/ftl/fixtures/flank2.ios.yml @@ -1,13 +1,13 @@ gcloud: - test: ./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" + xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" results-bucket: tmp_bucket_2 record-video: true timeout: 60m async: true device: - model: iphone8 - version: 11.2 + version: 13.6 orientation: portrait locale: en_US diff --git a/test_runner/src/test/kotlin/ftl/fixtures/ios.yml b/test_runner/src/test/kotlin/ftl/fixtures/ios.yml index 5fd775e94e..13777f65b5 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/ios.yml +++ b/test_runner/src/test/kotlin/ftl/fixtures/ios.yml @@ -1,3 +1,3 @@ gcloud: - test: "./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip" - xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun" + test: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" + xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" diff --git a/test_runner/src/test/kotlin/ftl/fixtures/ios_catalog.json b/test_runner/src/test/kotlin/ftl/fixtures/ios_catalog.json index ff8edf80f1..2966643aeb 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/ios_catalog.json +++ b/test_runner/src/test/kotlin/ftl/fixtures/ios_catalog.json @@ -52,7 +52,7 @@ "formFactor" : "PHONE", "id" : "iphone8", "name" : "iPhone 8", - "supportedVersionIds" : [ "11.2", "11.4", "12.0" ], + "supportedVersionIds" : [ "11.2", "11.4", "12.0", "13.6" ], "tags" : [ "default", "deprecated=11.2" ] }, { "deviceCapabilities" : [ "accelerometer", "armv6", "armv7", "arm64", "auto-focus-camera", "bluetooth-le", "front-facing-camera", "gamekit", "gyroscope", "location-services", "magnetometer", "metal", "microphone", "opengles-1", "opengles-2", "opengles-3", "peer-peer", "still-camera", "video-camera", "wifi", "arkit", "camera-flash", "gps", "healthkit", "nfc", "sms", "telephony" ], @@ -2410,4 +2410,4 @@ "tags" : [ "default" ], "version" : "10.2" } ] -} \ No newline at end of file +} diff --git a/test_runner/src/test/kotlin/ftl/fixtures/simple-ios-flank.yml b/test_runner/src/test/kotlin/ftl/fixtures/simple-ios-flank.yml index 50b3a617cd..1fb22462dc 100644 --- a/test_runner/src/test/kotlin/ftl/fixtures/simple-ios-flank.yml +++ b/test_runner/src/test/kotlin/ftl/fixtures/simple-ios-flank.yml @@ -1,4 +1,4 @@ gcloud: - test: ./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" + xctestrun-file: "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" results-dir: test_dir diff --git a/test_runner/src/test/kotlin/ftl/gc/GcIosTestMatrixTest.kt b/test_runner/src/test/kotlin/ftl/gc/GcIosTestMatrixTest.kt index 2911f8fc83..a9fd213146 100644 --- a/test_runner/src/test/kotlin/ftl/gc/GcIosTestMatrixTest.kt +++ b/test_runner/src/test/kotlin/ftl/gc/GcIosTestMatrixTest.kt @@ -71,7 +71,7 @@ class GcIosTestMatrixTest { every { iosArgs.testTimeout } returns "3m" every { iosArgs.resultsBucket } returns "/hi" every { iosArgs.project } returns "123" - every { iosArgs.xctestrunFile } returns "$FIXTURES_PATH/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun" + every { iosArgs.xctestrunFile } returns "$FIXTURES_PATH/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" GcIosTestMatrix.build( iosDeviceList = IosDeviceList(), @@ -94,8 +94,8 @@ class GcIosTestMatrixTest { StringReader( """ gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir other-files: com.my.app:/Documents/file.txt: local/file.txt @@ -117,8 +117,8 @@ class GcIosTestMatrixTest { StringReader( """ gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir """.trimIndent() ) @@ -134,8 +134,8 @@ class GcIosTestMatrixTest { StringReader( """ gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir additional-ipas: - path/to/local/file.ipa @@ -155,8 +155,8 @@ class GcIosTestMatrixTest { StringReader( """ gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir """.trimIndent() ) @@ -170,8 +170,8 @@ class GcIosTestMatrixTest { fun `should fill directoriesToPull`() { val iosArgs = IosArgs.load(StringReader(""" gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir directories-to-pull: - test/test/test @@ -185,8 +185,8 @@ class GcIosTestMatrixTest { fun `should not fill directoriesToPull`() { val iosArgs = IosArgs.load(StringReader(""" gcloud: - test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip - xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun + test: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip + xctestrun-file: ./test_runner/src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun results-dir: test_dir """.trimIndent())) diff --git a/test_runner/src/test/kotlin/ftl/ios/xctest/RewriteXcTestRunV2KtTest.kt b/test_runner/src/test/kotlin/ftl/ios/xctest/RewriteXcTestRunV2KtTest.kt index 457ac15656..73bf4da96f 100644 --- a/test_runner/src/test/kotlin/ftl/ios/xctest/RewriteXcTestRunV2KtTest.kt +++ b/test_runner/src/test/kotlin/ftl/ios/xctest/RewriteXcTestRunV2KtTest.kt @@ -16,7 +16,7 @@ class RewriteXcTestRunV2KtTest { fun rewrite() { assumeFalse(FtlConstants.isWindows) // given - val uiTestsMethods = listOf("UITests/test1") + val uiTestsMethods = listOf("UITestsClass/test1_1") val secondUiTestsMethods = emptyList() val expectedTargetNames = listOf("en", "pl") @@ -35,8 +35,8 @@ class RewriteXcTestRunV2KtTest { assertThat(configurations.size).isEqualTo(1) configurations.first().getTestTargets().let { targets -> assertThat(targets.size).isEqualTo(2) - assertThat(targets[0].getOnlyTestIdentifiers()).isEqualTo(uiTestsMethods) - assertThat(targets[1].getOnlyTestIdentifiers()).isEqualTo(secondUiTestsMethods) + assertThat(targets[0].getOnlyTestIdentifiers()).isEqualTo(secondUiTestsMethods) + assertThat(targets[1].getOnlyTestIdentifiers()).isEqualTo(uiTestsMethods) } } } diff --git a/test_runner/src/test/kotlin/ftl/ios/xctest/Util.kt b/test_runner/src/test/kotlin/ftl/ios/xctest/Util.kt index dd6261ffe8..a7f95fd300 100644 --- a/test_runner/src/test/kotlin/ftl/ios/xctest/Util.kt +++ b/test_runner/src/test/kotlin/ftl/ios/xctest/Util.kt @@ -4,12 +4,12 @@ import com.google.common.truth.Truth.assertThat const val FIXTURES_PATH = "./src/test/kotlin/ftl/fixtures/tmp" -const val swiftXcTestRunV1 = "$FIXTURES_PATH/ios/earl_grey_example/EarlGreyExampleSwiftTests.xctestrun" -const val multiTargetsSwiftXcTestRunV1 = "$FIXTURES_PATH/ios/flank_ios_example/FlankExampleTests.xctestrun" -const val swiftXcTestRunV2 = "$FIXTURES_PATH/ios/multi_test_targets/AllTests_AllTests_iphoneos13.7-arm64e.xctestrun" +const val swiftXcTestRunV1 = "$FIXTURES_PATH/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" +const val multiTargetsSwiftXcTestRunV1 = "$FIXTURES_PATH/ios/FlankExample/FlankExample.xctestrun" +const val swiftXcTestRunV2 = "$FIXTURES_PATH/ios/FlankTestPlansExample/AllTests.xctestrun" -const val objcBinary = "$FIXTURES_PATH/ios/earl_grey_example/objc/EarlGreyExampleTests" -const val swiftBinary = "$FIXTURES_PATH/ios/earl_grey_example/swift/EarlGreyExampleSwiftTests" +const val objcBinary = "$FIXTURES_PATH/ios/EarlGreyExample/EarlGreyExampleTests" +const val swiftBinary = "$FIXTURES_PATH/ios/EarlGreyExample/EarlGreyExampleSwiftTests" val objcTestsV1 = listOf( "EarlGreyExampleTests/testBasicSelection", @@ -52,32 +52,34 @@ val swiftTestsV1 = listOf( val swiftTestsV2 = mapOf( "en" to mapOf( "UITests" to listOf( - "UITests/test1", - "UITests/test1ENLocale", - "UITests/test1PLLocale", - "UITests/test3", + "UITestsClass/test1_1", + "UITestsClass/test1_2", + "UITestsClass/test1_3", + "UITestsClass/test1_ENLocale", + "UITestsClass/test1_PLLocale", ), "SecondUITests" to listOf( - "SecondUITests/test11", - "SecondUITests/test12", - "SecondUITests/test13", - "SecondUITests/test2ENLocale", - "SecondUITests/test2PLLocale", + "SecondUITestsClass/test2_1", + "SecondUITestsClass/test2_2", + "SecondUITestsClass/test2_3", + "SecondUITestsClass/test2_ENLocale", + "SecondUITestsClass/test2_PLLocale", ) ), "pl" to mapOf( "UITests" to listOf( - "UITests/test1", - "UITests/test1ENLocale", - "UITests/test1PLLocale", - "UITests/test3", + "UITestsClass/test1_1", + "UITestsClass/test1_2", + "UITestsClass/test1_3", + "UITestsClass/test1_ENLocale", + "UITestsClass/test1_PLLocale", ), "SecondUITests" to listOf( - "SecondUITests/test11", - "SecondUITests/test12", - "SecondUITests/test13", - "SecondUITests/test2ENLocale", - "SecondUITests/test2PLLocale", + "SecondUITestsClass/test2_1", + "SecondUITestsClass/test2_2", + "SecondUITestsClass/test2_3", + "SecondUITestsClass/test2_ENLocale", + "SecondUITestsClass/test2_PLLocale", ) ) ) diff --git a/test_runner/src/test/kotlin/ftl/ios/xctest/common/FindTestsForTargetKtTest.kt b/test_runner/src/test/kotlin/ftl/ios/xctest/common/FindTestsForTargetKtTest.kt index 23917ed889..380656329d 100644 --- a/test_runner/src/test/kotlin/ftl/ios/xctest/common/FindTestsForTargetKtTest.kt +++ b/test_runner/src/test/kotlin/ftl/ios/xctest/common/FindTestsForTargetKtTest.kt @@ -55,7 +55,7 @@ class FindTestsForTargetKtTest { """.trimIndent() - val tmpXml = Paths.get(FIXTURES_PATH, "skip.xctestrun") + val tmpXml = Paths.get("$FIXTURES_PATH/ios/EarlGreyExample", "skip.xctestrun") Files.write(tmpXml, inputXml.toByteArray()) tmpXml.toFile().deleteOnExit() diff --git a/test_runner/src/test/kotlin/ftl/test/util/LocalGcs.kt b/test_runner/src/test/kotlin/ftl/test/util/LocalGcs.kt index ac09b9c38b..8d3abd6054 100644 --- a/test_runner/src/test/kotlin/ftl/test/util/LocalGcs.kt +++ b/test_runner/src/test/kotlin/ftl/test/util/LocalGcs.kt @@ -32,8 +32,8 @@ object LocalGcs { fun uploadFiles() { val appApk = "../test_projects/android/apks/app-debug.apk" val testApk = "../test_projects/android/apks/app-debug-androidTest.apk" - val ipaZip = "./src/test/kotlin/ftl/fixtures/tmp/earlgrey_example.zip" - val xctestrun = "./src/test/kotlin/ftl/fixtures/tmp/EarlGreyExampleSwiftTests_iphoneos13.4-arm64e.xctestrun" + val ipaZip = "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExample.zip" + val xctestrun = "./src/test/kotlin/ftl/fixtures/tmp/ios/EarlGreyExample/EarlGreyExampleSwiftTests.xctestrun" listOf(appApk, testApk, ipaZip, xctestrun).forEach { file -> uploadToMockGcs(Paths.get(file))