// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 77; objects = { /* Begin PBXBuildFile section */ 05F732433249D0777BFE8F91 /* KlondikeRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31155959181B8D516A82096 /* KlondikeRulesTests.swift */; }; 0D292BDC30C9D09CF4677FFA /* SpiderBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2065F4D438686C32E01E449F /* SpiderBoardView.swift */; }; 0DB00631BF90F0626BAE21CD /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C60AA0F17A17B13707CB0228 /* SettingsViewModel.swift */; }; 12A564800C8BAED47DAD0C47 /* GameState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3488A79053BB9BF5BF6C39 /* GameState.swift */; }; 171B8FB2868AAE8D3198B05E /* CardStylePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9D48C269BE378EF381ADF6 /* CardStylePickerView.swift */; }; 19E266494C3F614EEEC6539B /* GameVariant.swift in Sources */ = {isa = PBXBuildFile; fileRef = F31B3F7875D68C0BA0B8FB54 /* GameVariant.swift */; }; 1A5B631C600469C9F28CF783 /* DraggedCardsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C01DD3D6B3B0DEA17B94C81C /* DraggedCardsOverlay.swift */; }; 29B7A35FE0C531B8CF8BF814 /* GameStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E9415DE47EA69B52839CA5 /* GameStateTests.swift */; }; 2A123DBA7BA8AB08CADD6BDF /* CardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E2E837BB1ADC907A8F991A0 /* CardLayout.swift */; }; 34CB07FE798181D502428D1D /* Array+Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7DAC2213D876C2E0F48CBB3 /* Array+Card.swift */; }; 37D0960283347728B64A2FB4 /* MoveValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38D83697D866ACA495ED4B8 /* MoveValidator.swift */; }; 3997014B0E7EA0A651AB0216 /* FreeCellRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A7187F45271D5F9FBB0A07 /* FreeCellRulesTests.swift */; }; 3D6A93AB14AEAD9E65BB181D /* SpiderRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC022E983E9801D0A3A448B4 /* SpiderRulesTests.swift */; }; 3E5C08ACC630D771613ECA16 /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6AE9622A04A543946250427 /* MainMenuView.swift */; }; 40A295F6F752B57C290C49C5 /* SoliCardsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2123C4E1A2A72E80EC1123A5 /* SoliCardsApp.swift */; }; 42FC69591B33DD5370784036 /* CardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA638FEAAD15EBE1E78FFE14 /* CardView.swift */; }; 43F316092B0C12D7A7276309 /* CardBackPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB728E0216832C7887E0B0E4 /* CardBackPickerView.swift */; }; 452209A28A7E2AA36CDFEFCA /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8595FFC9DDE3EA38CE0A617B /* PrivacyInfo.xcprivacy */; }; 4BF879FC8DB20D9ED32D4738 /* AutoCompleterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A81A01510385FC02760FB4 /* AutoCompleterTests.swift */; }; 537755217C0912F24EE2F5C6 /* NewGameSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1321C0FD7F644967F371B7A /* NewGameSheet.swift */; }; 5550A93B56A7BE882A1C7303 /* PersistenceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAA573DB9A21FE34ECFF6794 /* PersistenceManager.swift */; }; 55A796BFBF38FBA8B6C6808F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9810F299E93134997859B2BD /* ContentView.swift */; }; 56B286A65F7D8845885E9AF1 /* MoveAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E568D8FC36EF5D9937E0F97 /* MoveAction.swift */; }; 56D2056F3CA46D09F2D94F10 /* StatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 634429F416F1A484018E084E /* StatisticsView.swift */; }; 586EA99FAD450DB90C430CA0 /* GamePhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 488C04322FF37B821C662516 /* GamePhase.swift */; }; 5B89DF181690B09ED9204598 /* GameViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B4677EC6C93B738F443D86 /* GameViewModel.swift */; }; 5D4B0E1123A7870248DA8360 /* AutoCompleter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115321F0A0475538BA016151 /* AutoCompleter.swift */; }; 5E2EA0FE1F0216236DF6BE56 /* FreeCellBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE7880E1D80183ABCFBF49F4 /* FreeCellBoardView.swift */; }; 60111A0FEC2BB3227E4E02E4 /* ScoreBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5C2150140E0A5A3C4CD18D0 /* ScoreBarView.swift */; }; 64E9B99DFBCD0F1D59F3D890 /* Difficulty.swift in Sources */ = {isa = PBXBuildFile; fileRef = A64A7B696016187523AD7277 /* Difficulty.swift */; }; 6585CAA4B2AD823C1F6C20DE /* GameTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2BABA5FED1321ABA0A2F55 /* GameTheme.swift */; }; 65E127C9C91486AF86F9A693 /* SoundManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD303449EB1172C9B52E624 /* SoundManager.swift */; }; 65E698A14BC2C0E659A46128 /* MoveValidatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4901135D3529A476DEF089F /* MoveValidatorTests.swift */; }; 7084235B866C1493AC18A061 /* Rank.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C9B49166D2E8BE0D9AA2B46 /* Rank.swift */; }; 70C69A048BE67CDD84E38B26 /* StatsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8D4A7ACB3BD58FB808D7F89 /* StatsViewModel.swift */; }; 79BCE98C4E8F851A36D4F753 /* KlondikeRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BD39F68FBBFFB35FCB0EC5 /* KlondikeRules.swift */; }; 7D5D7789D2BA535A59EFE6EA /* CardTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7D93BC01A3997DD183D368 /* CardTests.swift */; }; 800459364BF6FD875D15171D /* DropTargetPreferenceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D311E1FE85DB24EA48404B /* DropTargetPreferenceKey.swift */; }; 81B92CA2BDA948B74EEDA6B9 /* VictoryOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCE1E3886FE8A8FA0DD3C54A /* VictoryOverlayView.swift */; }; 8E4A7DFD89F451F7499F2684 /* RulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FAD6B4305ABFB4769DE792 /* RulesView.swift */; }; 8F37719FF9A39485718BAD78 /* KlondikeBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403990D89B8854B6A45A44A2 /* KlondikeBoardView.swift */; }; A4BD7013B7979EA922BA5041 /* CardStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EE2B9027264A1134D2B65DC /* CardStackView.swift */; }; A5D797208B75A1C7D23AFB64 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB81C7AA5EDF842B3D841907 /* Assets.xcassets */; }; A68F6A65F5897179FA3632BF /* TimerService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A61A63D3A6077A80ED09B24 /* TimerService.swift */; }; AA99FA31E0F4094CBE06FFAF /* Deck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16BEB4EF07C82D8B2A89D260 /* Deck.swift */; }; B7A5F011A7C538B27F382FB5 /* GameSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BF99A0055488CAE6E45D4A3 /* GameSnapshot.swift */; }; BA010A1D6573E1DA0D182EF8 /* CardLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA7C39CE680C4AFC5D7959BC /* CardLocation.swift */; }; BAD817F065BBAAC4B7C89043 /* GameBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E14435814D19CE147D6D408 /* GameBoardView.swift */; }; CBEE7677D3E2D9A9CFAA90D0 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B25C883D3B49CADA34775F1 /* SettingsView.swift */; }; CFDAB7D49E3D6CBB420F4CF1 /* HintResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 864D497FD148C1DCA5761247 /* HintResult.swift */; }; D00C18D126362C368802C9E3 /* Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72E42967DA3AA21AEE42F177 /* Card.swift */; }; D24334636360CE9659A3040A /* GameRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4991B4E4B3E6B9AC2EDA629F /* GameRecord.swift */; }; D4520E37CA093BDA7DBAB7F5 /* DifficultyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58632F749B766B0E79DD0152 /* DifficultyTests.swift */; }; D75EE30A448E01FD3A2EAD0A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 714F0FD173ED0BC8E680E85A /* Localizable.xcstrings */; }; D780D65841792E26E9208B8D /* GameRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26F1DE1DBC8F3FFC732DA618 /* GameRules.swift */; }; D9E61277B5EA0772F7B28BFF /* ThemePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23DEF0FCB8B782702D108DF3 /* ThemePickerView.swift */; }; DC0D004F619DE9C61C6AF585 /* PrefsRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1391353BDCE5C135A9FA1F0A /* PrefsRecord.swift */; }; E15025574906B1F1C9A03C8F /* SpiderRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C4319F36333564A75A3FEB0 /* SpiderRules.swift */; }; E9ED2A8341168D2915B4F495 /* DeckTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF0B14B437E3A3475278EC5 /* DeckTests.swift */; }; F02DBFB48DB80D36451D436B /* FreeCellRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8ABFB6829A8D0B281CCD3E9 /* FreeCellRules.swift */; }; F3AA49C17343374CF1B82FF7 /* ThemeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 396230FC7779389B46BE1246 /* ThemeManager.swift */; }; F4C3C28A20ECA87EC97FD2DC /* Suit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116E45BE9C698645A16CF6F3 /* Suit.swift */; }; F713DA5821F2B37B2019CA1D /* StatsRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66617C01DF8B874B51A55295 /* StatsRecord.swift */; }; FD1C9241508230FD8E553981 /* GameRulesFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26A1B8A570F6B4F573E29FCA /* GameRulesFactory.swift */; }; FDCB1D9771FAC46DCE25A6A6 /* HapticManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B4ED587E94AC6FAE79FDAE8 /* HapticManager.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 0457F9A25F53E04E37959F48 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 867199988082B6D71FDDE2D8 /* Project object */; proxyType = 1; remoteGlobalIDString = 82669FCF0B13F7341360B265; remoteInfo = SoliCards; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 04FAD6B4305ABFB4769DE792 /* RulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulesView.swift; sourceTree = ""; }; 0A61A63D3A6077A80ED09B24 /* TimerService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerService.swift; sourceTree = ""; }; 0B4ED587E94AC6FAE79FDAE8 /* HapticManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticManager.swift; sourceTree = ""; }; 0C4319F36333564A75A3FEB0 /* SpiderRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpiderRules.swift; sourceTree = ""; }; 115321F0A0475538BA016151 /* AutoCompleter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleter.swift; sourceTree = ""; }; 116E45BE9C698645A16CF6F3 /* Suit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Suit.swift; sourceTree = ""; }; 1391353BDCE5C135A9FA1F0A /* PrefsRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefsRecord.swift; sourceTree = ""; }; 16BEB4EF07C82D8B2A89D260 /* Deck.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Deck.swift; sourceTree = ""; }; 1B25C883D3B49CADA34775F1 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 1EE2B9027264A1134D2B65DC /* CardStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardStackView.swift; sourceTree = ""; }; 2065F4D438686C32E01E449F /* SpiderBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpiderBoardView.swift; sourceTree = ""; }; 2123C4E1A2A72E80EC1123A5 /* SoliCardsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoliCardsApp.swift; sourceTree = ""; }; 22BD39F68FBBFFB35FCB0EC5 /* KlondikeRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlondikeRules.swift; sourceTree = ""; }; 23DEF0FCB8B782702D108DF3 /* ThemePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePickerView.swift; sourceTree = ""; }; 25D311E1FE85DB24EA48404B /* DropTargetPreferenceKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropTargetPreferenceKey.swift; sourceTree = ""; }; 26A1B8A570F6B4F573E29FCA /* GameRulesFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRulesFactory.swift; sourceTree = ""; }; 26F1DE1DBC8F3FFC732DA618 /* GameRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRules.swift; sourceTree = ""; }; 2BF99A0055488CAE6E45D4A3 /* GameSnapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSnapshot.swift; sourceTree = ""; }; 2E568D8FC36EF5D9937E0F97 /* MoveAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveAction.swift; sourceTree = ""; }; 396230FC7779389B46BE1246 /* ThemeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeManager.swift; sourceTree = ""; }; 3DD303449EB1172C9B52E624 /* SoundManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundManager.swift; sourceTree = ""; }; 403990D89B8854B6A45A44A2 /* KlondikeBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlondikeBoardView.swift; sourceTree = ""; }; 488C04322FF37B821C662516 /* GamePhase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePhase.swift; sourceTree = ""; }; 4991B4E4B3E6B9AC2EDA629F /* GameRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRecord.swift; sourceTree = ""; }; 4B7D93BC01A3997DD183D368 /* CardTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardTests.swift; sourceTree = ""; }; 4E2E837BB1ADC907A8F991A0 /* CardLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardLayout.swift; sourceTree = ""; }; 58632F749B766B0E79DD0152 /* DifficultyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DifficultyTests.swift; sourceTree = ""; }; 5E14435814D19CE147D6D408 /* GameBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameBoardView.swift; sourceTree = ""; }; 634429F416F1A484018E084E /* StatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsView.swift; sourceTree = ""; }; 66617C01DF8B874B51A55295 /* StatsRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsRecord.swift; sourceTree = ""; }; 6C9B49166D2E8BE0D9AA2B46 /* Rank.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Rank.swift; sourceTree = ""; }; 714F0FD173ED0BC8E680E85A /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; 72E42967DA3AA21AEE42F177 /* Card.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Card.swift; sourceTree = ""; }; 7561129FE301D2A5E3652648 /* SoliCards.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = SoliCards.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7E57D0CF303B42DD18A317F1 /* SoliCardsTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = SoliCardsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 8595FFC9DDE3EA38CE0A617B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 864D497FD148C1DCA5761247 /* HintResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HintResult.swift; sourceTree = ""; }; 94A81A01510385FC02760FB4 /* AutoCompleterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleterTests.swift; sourceTree = ""; }; 9810F299E93134997859B2BD /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; A64A7B696016187523AD7277 /* Difficulty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Difficulty.swift; sourceTree = ""; }; A7DAC2213D876C2E0F48CBB3 /* Array+Card.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Card.swift"; sourceTree = ""; }; A8ABFB6829A8D0B281CCD3E9 /* FreeCellRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeCellRules.swift; sourceTree = ""; }; A8E9415DE47EA69B52839CA5 /* GameStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStateTests.swift; sourceTree = ""; }; AAA573DB9A21FE34ECFF6794 /* PersistenceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceManager.swift; sourceTree = ""; }; AE7880E1D80183ABCFBF49F4 /* FreeCellBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeCellBoardView.swift; sourceTree = ""; }; B1321C0FD7F644967F371B7A /* NewGameSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameSheet.swift; sourceTree = ""; }; B31155959181B8D516A82096 /* KlondikeRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlondikeRulesTests.swift; sourceTree = ""; }; B8D4A7ACB3BD58FB808D7F89 /* StatsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsViewModel.swift; sourceTree = ""; }; BC022E983E9801D0A3A448B4 /* SpiderRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpiderRulesTests.swift; sourceTree = ""; }; C01DD3D6B3B0DEA17B94C81C /* DraggedCardsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraggedCardsOverlay.swift; sourceTree = ""; }; C0B4677EC6C93B738F443D86 /* GameViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewModel.swift; sourceTree = ""; }; C38D83697D866ACA495ED4B8 /* MoveValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveValidator.swift; sourceTree = ""; }; C4901135D3529A476DEF089F /* MoveValidatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveValidatorTests.swift; sourceTree = ""; }; C5C2150140E0A5A3C4CD18D0 /* ScoreBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScoreBarView.swift; sourceTree = ""; }; C60AA0F17A17B13707CB0228 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; C8A7187F45271D5F9FBB0A07 /* FreeCellRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeCellRulesTests.swift; sourceTree = ""; }; CA7C39CE680C4AFC5D7959BC /* CardLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardLocation.swift; sourceTree = ""; }; CB728E0216832C7887E0B0E4 /* CardBackPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardBackPickerView.swift; sourceTree = ""; }; CCE1E3886FE8A8FA0DD3C54A /* VictoryOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VictoryOverlayView.swift; sourceTree = ""; }; CD2BABA5FED1321ABA0A2F55 /* GameTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameTheme.swift; sourceTree = ""; }; CD3488A79053BB9BF5BF6C39 /* GameState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameState.swift; sourceTree = ""; }; DA638FEAAD15EBE1E78FFE14 /* CardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardView.swift; sourceTree = ""; }; DB81C7AA5EDF842B3D841907 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; E6AE9622A04A543946250427 /* MainMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuView.swift; sourceTree = ""; }; EF9D48C269BE378EF381ADF6 /* CardStylePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardStylePickerView.swift; sourceTree = ""; }; F31B3F7875D68C0BA0B8FB54 /* GameVariant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameVariant.swift; sourceTree = ""; }; FDF0B14B437E3A3475278EC5 /* DeckTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeckTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ 08AF7AF8C77BED3EFA6A9AEA /* Statistics */ = { isa = PBXGroup; children = ( 634429F416F1A484018E084E /* StatisticsView.swift */, ); path = Statistics; sourceTree = ""; }; 0FF95606A40279B4D3390FBA = { isa = PBXGroup; children = ( 2182AF78CEA93B7431E85608 /* SoliCards */, D4605BF9A1E255A1F2E44B4F /* SoliCardsTests */, 9CCB9EC5C71BA2DF24919C93 /* Products */, ); sourceTree = ""; }; 2182AF78CEA93B7431E85608 /* SoliCards */ = { isa = PBXGroup; children = ( 9810F299E93134997859B2BD /* ContentView.swift */, 2123C4E1A2A72E80EC1123A5 /* SoliCardsApp.swift */, E4D19DAEAABB74B9FDD84B73 /* Extensions */, 3B2FB59B0E86B8F19E698694 /* GameEngine */, FF9DBC6C605DE18ED6DA5E1C /* Models */, 2D71FE366319D21065F80CFD /* Persistence */, 3271C08BF426FD74787C6217 /* Resources */, A1D36CB5F370E4F3906E319A /* Services */, A8376EC525EE5E88D4517BA1 /* Theme */, C6C973AB5DCD1C0E766F633A /* ViewModels */, F84CF6704CBB01C0C9875CE2 /* Views */, ); path = SoliCards; sourceTree = ""; }; 2D71FE366319D21065F80CFD /* Persistence */ = { isa = PBXGroup; children = ( 4991B4E4B3E6B9AC2EDA629F /* GameRecord.swift */, AAA573DB9A21FE34ECFF6794 /* PersistenceManager.swift */, 1391353BDCE5C135A9FA1F0A /* PrefsRecord.swift */, 66617C01DF8B874B51A55295 /* StatsRecord.swift */, ); path = Persistence; sourceTree = ""; }; 3271C08BF426FD74787C6217 /* Resources */ = { isa = PBXGroup; children = ( DB81C7AA5EDF842B3D841907 /* Assets.xcassets */, 714F0FD173ED0BC8E680E85A /* Localizable.xcstrings */, 8595FFC9DDE3EA38CE0A617B /* PrivacyInfo.xcprivacy */, AB3F10466EA26B5E0B5827A8 /* Sounds */, ); path = Resources; sourceTree = ""; }; 3B2FB59B0E86B8F19E698694 /* GameEngine */ = { isa = PBXGroup; children = ( 115321F0A0475538BA016151 /* AutoCompleter.swift */, A8ABFB6829A8D0B281CCD3E9 /* FreeCellRules.swift */, 26F1DE1DBC8F3FFC732DA618 /* GameRules.swift */, 26A1B8A570F6B4F573E29FCA /* GameRulesFactory.swift */, CD3488A79053BB9BF5BF6C39 /* GameState.swift */, 22BD39F68FBBFFB35FCB0EC5 /* KlondikeRules.swift */, C38D83697D866ACA495ED4B8 /* MoveValidator.swift */, 0C4319F36333564A75A3FEB0 /* SpiderRules.swift */, ); path = GameEngine; sourceTree = ""; }; 45A518EB42C0CDB893716BBE /* Settings */ = { isa = PBXGroup; children = ( CB728E0216832C7887E0B0E4 /* CardBackPickerView.swift */, EF9D48C269BE378EF381ADF6 /* CardStylePickerView.swift */, 1B25C883D3B49CADA34775F1 /* SettingsView.swift */, 23DEF0FCB8B782702D108DF3 /* ThemePickerView.swift */, ); path = Settings; sourceTree = ""; }; 7A41E8DA0C1CCBC6C102E3A0 /* ViewModels */ = { isa = PBXGroup; children = ( ); path = ViewModels; sourceTree = ""; }; 9CCB9EC5C71BA2DF24919C93 /* Products */ = { isa = PBXGroup; children = ( 7561129FE301D2A5E3652648 /* SoliCards.app */, 7E57D0CF303B42DD18A317F1 /* SoliCardsTests.xctest */, ); name = Products; sourceTree = ""; }; A1D36CB5F370E4F3906E319A /* Services */ = { isa = PBXGroup; children = ( 0B4ED587E94AC6FAE79FDAE8 /* HapticManager.swift */, 3DD303449EB1172C9B52E624 /* SoundManager.swift */, 0A61A63D3A6077A80ED09B24 /* TimerService.swift */, ); path = Services; sourceTree = ""; }; A5353C257EB10EB9526C6E39 /* Menu */ = { isa = PBXGroup; children = ( E6AE9622A04A543946250427 /* MainMenuView.swift */, B1321C0FD7F644967F371B7A /* NewGameSheet.swift */, 04FAD6B4305ABFB4769DE792 /* RulesView.swift */, ); path = Menu; sourceTree = ""; }; A8376EC525EE5E88D4517BA1 /* Theme */ = { isa = PBXGroup; children = ( CD2BABA5FED1321ABA0A2F55 /* GameTheme.swift */, 396230FC7779389B46BE1246 /* ThemeManager.swift */, ); path = Theme; sourceTree = ""; }; AB3F10466EA26B5E0B5827A8 /* Sounds */ = { isa = PBXGroup; children = ( ); path = Sounds; sourceTree = ""; }; C6C973AB5DCD1C0E766F633A /* ViewModels */ = { isa = PBXGroup; children = ( C0B4677EC6C93B738F443D86 /* GameViewModel.swift */, C60AA0F17A17B13707CB0228 /* SettingsViewModel.swift */, B8D4A7ACB3BD58FB808D7F89 /* StatsViewModel.swift */, ); path = ViewModels; sourceTree = ""; }; D4605BF9A1E255A1F2E44B4F /* SoliCardsTests */ = { isa = PBXGroup; children = ( DB86ADC0F0581A7B56EBE28E /* GameEngine */, E5E67911DEBB2793B3D8F1AD /* Models */, 7A41E8DA0C1CCBC6C102E3A0 /* ViewModels */, ); path = SoliCardsTests; sourceTree = ""; }; DA0714078CFC7F8BCD993F8C /* Game */ = { isa = PBXGroup; children = ( 1EE2B9027264A1134D2B65DC /* CardStackView.swift */, DA638FEAAD15EBE1E78FFE14 /* CardView.swift */, C01DD3D6B3B0DEA17B94C81C /* DraggedCardsOverlay.swift */, 25D311E1FE85DB24EA48404B /* DropTargetPreferenceKey.swift */, AE7880E1D80183ABCFBF49F4 /* FreeCellBoardView.swift */, 5E14435814D19CE147D6D408 /* GameBoardView.swift */, 403990D89B8854B6A45A44A2 /* KlondikeBoardView.swift */, C5C2150140E0A5A3C4CD18D0 /* ScoreBarView.swift */, 2065F4D438686C32E01E449F /* SpiderBoardView.swift */, CCE1E3886FE8A8FA0DD3C54A /* VictoryOverlayView.swift */, ); path = Game; sourceTree = ""; }; DB86ADC0F0581A7B56EBE28E /* GameEngine */ = { isa = PBXGroup; children = ( 94A81A01510385FC02760FB4 /* AutoCompleterTests.swift */, C8A7187F45271D5F9FBB0A07 /* FreeCellRulesTests.swift */, A8E9415DE47EA69B52839CA5 /* GameStateTests.swift */, B31155959181B8D516A82096 /* KlondikeRulesTests.swift */, C4901135D3529A476DEF089F /* MoveValidatorTests.swift */, BC022E983E9801D0A3A448B4 /* SpiderRulesTests.swift */, ); path = GameEngine; sourceTree = ""; }; E4D19DAEAABB74B9FDD84B73 /* Extensions */ = { isa = PBXGroup; children = ( A7DAC2213D876C2E0F48CBB3 /* Array+Card.swift */, 4E2E837BB1ADC907A8F991A0 /* CardLayout.swift */, ); path = Extensions; sourceTree = ""; }; E5E67911DEBB2793B3D8F1AD /* Models */ = { isa = PBXGroup; children = ( 4B7D93BC01A3997DD183D368 /* CardTests.swift */, FDF0B14B437E3A3475278EC5 /* DeckTests.swift */, 58632F749B766B0E79DD0152 /* DifficultyTests.swift */, ); path = Models; sourceTree = ""; }; F84CF6704CBB01C0C9875CE2 /* Views */ = { isa = PBXGroup; children = ( DA0714078CFC7F8BCD993F8C /* Game */, A5353C257EB10EB9526C6E39 /* Menu */, 45A518EB42C0CDB893716BBE /* Settings */, 08AF7AF8C77BED3EFA6A9AEA /* Statistics */, ); path = Views; sourceTree = ""; }; FF9DBC6C605DE18ED6DA5E1C /* Models */ = { isa = PBXGroup; children = ( 72E42967DA3AA21AEE42F177 /* Card.swift */, CA7C39CE680C4AFC5D7959BC /* CardLocation.swift */, 16BEB4EF07C82D8B2A89D260 /* Deck.swift */, A64A7B696016187523AD7277 /* Difficulty.swift */, 488C04322FF37B821C662516 /* GamePhase.swift */, 2BF99A0055488CAE6E45D4A3 /* GameSnapshot.swift */, F31B3F7875D68C0BA0B8FB54 /* GameVariant.swift */, 864D497FD148C1DCA5761247 /* HintResult.swift */, 2E568D8FC36EF5D9937E0F97 /* MoveAction.swift */, 6C9B49166D2E8BE0D9AA2B46 /* Rank.swift */, 116E45BE9C698645A16CF6F3 /* Suit.swift */, ); path = Models; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 82669FCF0B13F7341360B265 /* SoliCards */ = { isa = PBXNativeTarget; buildConfigurationList = F6C31F00417F79A014C90960 /* Build configuration list for PBXNativeTarget "SoliCards" */; buildPhases = ( 8C4FBA4AEB4F83B6D76C3868 /* Sources */, 00D9BFDDDE0AF0067CA90858 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = SoliCards; packageProductDependencies = ( ); productName = SoliCards; productReference = 7561129FE301D2A5E3652648 /* SoliCards.app */; productType = "com.apple.product-type.application"; }; C27736B4220A23D60C765E3E /* SoliCardsTests */ = { isa = PBXNativeTarget; buildConfigurationList = 6F270CC209153B7149368FF8 /* Build configuration list for PBXNativeTarget "SoliCardsTests" */; buildPhases = ( 00839BE9C0947FF6620A82FC /* Sources */, ); buildRules = ( ); dependencies = ( CE28FBA2CF52896AC36A1F13 /* PBXTargetDependency */, ); name = SoliCardsTests; packageProductDependencies = ( ); productName = SoliCardsTests; productReference = 7E57D0CF303B42DD18A317F1 /* SoliCardsTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 867199988082B6D71FDDE2D8 /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastUpgradeCheck = 1630; TargetAttributes = { }; }; buildConfigurationList = 6AE5403E93959B4E9E707F1D /* Build configuration list for PBXProject "SoliCards" */; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( Base, en, ); mainGroup = 0FF95606A40279B4D3390FBA; minimizedProjectReferenceProxies = 1; preferredProjectObjectVersion = 77; productRefGroup = 9CCB9EC5C71BA2DF24919C93 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 82669FCF0B13F7341360B265 /* SoliCards */, C27736B4220A23D60C765E3E /* SoliCardsTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 00D9BFDDDE0AF0067CA90858 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( A5D797208B75A1C7D23AFB64 /* Assets.xcassets in Resources */, D75EE30A448E01FD3A2EAD0A /* Localizable.xcstrings in Resources */, 452209A28A7E2AA36CDFEFCA /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 00839BE9C0947FF6620A82FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BF879FC8DB20D9ED32D4738 /* AutoCompleterTests.swift in Sources */, 7D5D7789D2BA535A59EFE6EA /* CardTests.swift in Sources */, E9ED2A8341168D2915B4F495 /* DeckTests.swift in Sources */, D4520E37CA093BDA7DBAB7F5 /* DifficultyTests.swift in Sources */, 3997014B0E7EA0A651AB0216 /* FreeCellRulesTests.swift in Sources */, 29B7A35FE0C531B8CF8BF814 /* GameStateTests.swift in Sources */, 05F732433249D0777BFE8F91 /* KlondikeRulesTests.swift in Sources */, 65E698A14BC2C0E659A46128 /* MoveValidatorTests.swift in Sources */, 3D6A93AB14AEAD9E65BB181D /* SpiderRulesTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8C4FBA4AEB4F83B6D76C3868 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 34CB07FE798181D502428D1D /* Array+Card.swift in Sources */, 5D4B0E1123A7870248DA8360 /* AutoCompleter.swift in Sources */, D00C18D126362C368802C9E3 /* Card.swift in Sources */, 43F316092B0C12D7A7276309 /* CardBackPickerView.swift in Sources */, 2A123DBA7BA8AB08CADD6BDF /* CardLayout.swift in Sources */, BA010A1D6573E1DA0D182EF8 /* CardLocation.swift in Sources */, A4BD7013B7979EA922BA5041 /* CardStackView.swift in Sources */, 171B8FB2868AAE8D3198B05E /* CardStylePickerView.swift in Sources */, 42FC69591B33DD5370784036 /* CardView.swift in Sources */, 55A796BFBF38FBA8B6C6808F /* ContentView.swift in Sources */, AA99FA31E0F4094CBE06FFAF /* Deck.swift in Sources */, 64E9B99DFBCD0F1D59F3D890 /* Difficulty.swift in Sources */, 1A5B631C600469C9F28CF783 /* DraggedCardsOverlay.swift in Sources */, 800459364BF6FD875D15171D /* DropTargetPreferenceKey.swift in Sources */, 5E2EA0FE1F0216236DF6BE56 /* FreeCellBoardView.swift in Sources */, F02DBFB48DB80D36451D436B /* FreeCellRules.swift in Sources */, BAD817F065BBAAC4B7C89043 /* GameBoardView.swift in Sources */, 586EA99FAD450DB90C430CA0 /* GamePhase.swift in Sources */, D24334636360CE9659A3040A /* GameRecord.swift in Sources */, D780D65841792E26E9208B8D /* GameRules.swift in Sources */, FD1C9241508230FD8E553981 /* GameRulesFactory.swift in Sources */, B7A5F011A7C538B27F382FB5 /* GameSnapshot.swift in Sources */, 12A564800C8BAED47DAD0C47 /* GameState.swift in Sources */, 6585CAA4B2AD823C1F6C20DE /* GameTheme.swift in Sources */, 19E266494C3F614EEEC6539B /* GameVariant.swift in Sources */, 5B89DF181690B09ED9204598 /* GameViewModel.swift in Sources */, FDCB1D9771FAC46DCE25A6A6 /* HapticManager.swift in Sources */, CFDAB7D49E3D6CBB420F4CF1 /* HintResult.swift in Sources */, 8F37719FF9A39485718BAD78 /* KlondikeBoardView.swift in Sources */, 79BCE98C4E8F851A36D4F753 /* KlondikeRules.swift in Sources */, 3E5C08ACC630D771613ECA16 /* MainMenuView.swift in Sources */, 56B286A65F7D8845885E9AF1 /* MoveAction.swift in Sources */, 37D0960283347728B64A2FB4 /* MoveValidator.swift in Sources */, 537755217C0912F24EE2F5C6 /* NewGameSheet.swift in Sources */, 5550A93B56A7BE882A1C7303 /* PersistenceManager.swift in Sources */, DC0D004F619DE9C61C6AF585 /* PrefsRecord.swift in Sources */, 7084235B866C1493AC18A061 /* Rank.swift in Sources */, 8E4A7DFD89F451F7499F2684 /* RulesView.swift in Sources */, 60111A0FEC2BB3227E4E02E4 /* ScoreBarView.swift in Sources */, CBEE7677D3E2D9A9CFAA90D0 /* SettingsView.swift in Sources */, 0DB00631BF90F0626BAE21CD /* SettingsViewModel.swift in Sources */, 40A295F6F752B57C290C49C5 /* SoliCardsApp.swift in Sources */, 65E127C9C91486AF86F9A693 /* SoundManager.swift in Sources */, 0D292BDC30C9D09CF4677FFA /* SpiderBoardView.swift in Sources */, E15025574906B1F1C9A03C8F /* SpiderRules.swift in Sources */, 56D2056F3CA46D09F2D94F10 /* StatisticsView.swift in Sources */, F713DA5821F2B37B2019CA1D /* StatsRecord.swift in Sources */, 70C69A048BE67CDD84E38B26 /* StatsViewModel.swift in Sources */, F4C3C28A20ECA87EC97FD2DC /* Suit.swift in Sources */, F3AA49C17343374CF1B82FF7 /* ThemeManager.swift in Sources */, D9E61277B5EA0772F7B28BFF /* ThemePickerView.swift in Sources */, A68F6A65F5897179FA3632BF /* TimerService.swift in Sources */, 81B92CA2BDA948B74EEDA6B9 /* VictoryOverlayView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ CE28FBA2CF52896AC36A1F13 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 82669FCF0B13F7341360B265 /* SoliCards */; targetProxy = 0457F9A25F53E04E37959F48 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 09C2A01D89409D6B798959DA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = SoliCards; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.card-games"; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UIRequiresFullScreen = NO; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.solicards.app; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 3703194FF4D985541587656D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.solicards.tests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SoliCards.app/SoliCards"; }; name = Release; }; 57E91C868A14077EF84052C1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.solicards.tests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SoliCards.app/SoliCards"; }; name = Debug; }; 6964E173671E2805B5C3C50E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "DEBUG=1", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MACOSX_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 6.0; }; name = Debug; }; C48643C0D86B6F2505BC1E97 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = SoliCards; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.card-games"; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UIRequiresFullScreen = NO; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.solicards.app; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; DCF01AC30957B9AA76361647 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MACOSX_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 6.0; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 6AE5403E93959B4E9E707F1D /* Build configuration list for PBXProject "SoliCards" */ = { isa = XCConfigurationList; buildConfigurations = ( 6964E173671E2805B5C3C50E /* Debug */, DCF01AC30957B9AA76361647 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 6F270CC209153B7149368FF8 /* Build configuration list for PBXNativeTarget "SoliCardsTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 57E91C868A14077EF84052C1 /* Debug */, 3703194FF4D985541587656D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; F6C31F00417F79A014C90960 /* Build configuration list for PBXNativeTarget "SoliCards" */ = { isa = XCConfigurationList; buildConfigurations = ( 09C2A01D89409D6B798959DA /* Debug */, C48643C0D86B6F2505BC1E97 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ }; rootObject = 867199988082B6D71FDDE2D8 /* Project object */; }