From f7aafae135b6ba7f6bc621fdf76e1d73a5e1bb53 Mon Sep 17 00:00:00 2001 From: SoFranci <100066266+cranci1@users.noreply.github.com> Date: Tue, 7 May 2024 15:34:45 +0200 Subject: [PATCH] Storyboard recode!!!! --- .DS_Store | Bin 6148 -> 6148 bytes AnimeGen.xcodeproj/project.pbxproj | 531 +++--- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../UserInterfaceState.xcuserstate | Bin 294144 -> 128003 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 2 +- AnimeGen/.DS_Store | Bin 10244 -> 8196 bytes .../Hmtai/HmtaiReader.swift | 0 .../Hmtai/HmtaiSender.swift | 0 AnimeGen/{APIs => APIs Requests}/kyoko.swift | 2 +- .../{APIs => APIs Requests}/nekos-best.swift | 0 .../{APIs => APIs Requests}/nekosapi.swift | 2 +- .../{APIs => APIs Requests}/nekosbot.swift | 0 .../{APIs => APIs Requests}/nekosmoe.swift | 9 +- AnimeGen/{APIs => APIs Requests}/pic-re.swift | 0 AnimeGen/{APIs => APIs Requests}/purr.swift | 0 .../{APIs => APIs Requests}/waifu-im.swift | 2 +- .../{APIs => APIs Requests}/waifu-it.swift | 0 .../{APIs => APIs Requests}/waifu-pics.swift | 0 AnimeGen/AnimeGen.entitlements | 8 - AnimeGen/AppDelegate.swift | 28 +- AnimeGen/Assets.xcassets/.DS_Store | Bin 6148 -> 6148 bytes AnimeGen/Base.lproj/Main.storyboard | 33 - AnimeGen/Boarding/Main-onboard.swift | 182 -- .../HeartButton.swift} | 7 +- .../HistoryButton.swift} | 12 +- .../Refresh-API-Button.swift | 6 +- AnimeGen/Buttons func/RewindButton.swift | 18 + .../{Buttons => Buttons func}/Web-Share.swift | 2 +- AnimeGen/Buttons/Rewind-Settings.swift | 25 - .../{Buttons => Extension}/Activity.swift | 3 +- .../{Extensions => Extension}/Gradient.swift | 2 +- .../ImageExtensions.swift | 3 +- .../Tags.swift} | 5 +- .../popup-Banner.swift | 2 +- AnimeGen/History/HistoryView.swift | 2 +- AnimeGen/History/ImageHistory.swift | 45 +- AnimeGen/Info.plist | 16 - .../{Base.lproj => }/LaunchScreen.storyboard | 0 AnimeGen/Main.storyboard | 1689 +++++++++++++++++ AnimeGen/SceneDelegate.swift | 5 +- AnimeGen/Settings/.DS_Store | Bin 6148 -> 6148 bytes .../API.xcassets/Contents.json | 0 .../0754DB9D-0AAA-4AB2-8F94-D34DBBF58ADF.png | Bin .../API.xcassets/Hmtai.imageset/Contents.json | 0 .../NekoBot.imageset/Contents.json | 0 .../apple-touch-icon-removebg-preview.png | Bin .../API.xcassets/Purr.imageset/Contents.json | 0 .../API.xcassets/Purr.imageset/avatar.png | Bin .../API.xcassets/SD.imageset/Contents.json | 21 + .../SD.imageset/SDWebImage_logo_small.png | Bin 0 -> 9731 bytes ...2f737979315036672f6b796f6b6f2e77656270.png | Bin .../API.xcassets/kyoko.imageset/Contents.json | 0 .../nekos.best.imageset/Contents.json | 0 .../nekos.best.imageset/favicon.png | Bin .../nekos.moe.imageset/Contents.json | 0 .../nekos.moe.imageset/apple-touch-icon.png | Bin .../nekosapi.imageset/Contents.json | 0 .../logo-removebg-preview.png | Bin .../pic-re.imageset/Contents.json | 0 .../API.xcassets/pic-re.imageset/download.png | Bin .../waifu.im.imageset/Contents.json | 0 .../waifu.im.imageset/favicon.ico.png | Bin .../waifu.it.imageset/79479798.png | Bin .../waifu.it.imageset/Contents.json | 0 .../waifu.pics.imageset/Contents.json | 0 .../favicon-1-_dragged_.png | Bin .../Settings/About-Credits/APIsCredits.swift | 85 + .../Settings/About-Credits/AboutPage.swift | 129 +- AnimeGen/Settings/About-Credits/ApiPage.swift | 113 -- AnimeGen/Settings/App Settings/API-Pref.swift | 119 -- AnimeGen/Settings/App Settings/Content.swift | 58 - .../Settings/App Settings/Developer.swift | 77 - AnimeGen/Settings/App Settings/Features.swift | 84 - AnimeGen/Settings/App Settings/History.swift | 65 - AnimeGen/Settings/AppPref.swift | 43 + AnimeGen/Settings/Contents.swift | 25 + AnimeGen/Settings/Developer.swift | 46 + .../Hmtai-pref.swift | 6 +- .../waifu-it-pref.swift | 0 AnimeGen/Settings/FeaturesApp.swift | 61 + AnimeGen/Settings/Historyy.swift | 37 + AnimeGen/Settings/SettingsMain.swift | 16 + AnimeGen/Settings/SettingsPage.swift | 116 -- AnimeGen/ViewController.swift | 206 +- 84 files changed, 2438 insertions(+), 1512 deletions(-) rename AnimeGen/{APIs => APIs Requests}/Hmtai/HmtaiReader.swift (100%) rename AnimeGen/{APIs => APIs Requests}/Hmtai/HmtaiSender.swift (100%) rename AnimeGen/{APIs => APIs Requests}/kyoko.swift (100%) rename AnimeGen/{APIs => APIs Requests}/nekos-best.swift (100%) rename AnimeGen/{APIs => APIs Requests}/nekosapi.swift (100%) rename AnimeGen/{APIs => APIs Requests}/nekosbot.swift (100%) rename AnimeGen/{APIs => APIs Requests}/nekosmoe.swift (93%) rename AnimeGen/{APIs => APIs Requests}/pic-re.swift (100%) rename AnimeGen/{APIs => APIs Requests}/purr.swift (100%) rename AnimeGen/{APIs => APIs Requests}/waifu-im.swift (100%) rename AnimeGen/{APIs => APIs Requests}/waifu-it.swift (100%) rename AnimeGen/{APIs => APIs Requests}/waifu-pics.swift (100%) delete mode 100644 AnimeGen/AnimeGen.entitlements delete mode 100644 AnimeGen/Base.lproj/Main.storyboard delete mode 100644 AnimeGen/Boarding/Main-onboard.swift rename AnimeGen/{Buttons/HearthButton.swift => Buttons func/HeartButton.swift} (95%) rename AnimeGen/{Buttons/History-Butt.swift => Buttons func/HistoryButton.swift} (64%) rename AnimeGen/{Buttons => Buttons func}/Refresh-API-Button.swift (96%) create mode 100644 AnimeGen/Buttons func/RewindButton.swift rename AnimeGen/{Buttons => Buttons func}/Web-Share.swift (95%) delete mode 100644 AnimeGen/Buttons/Rewind-Settings.swift rename AnimeGen/{Buttons => Extension}/Activity.swift (98%) rename AnimeGen/{Extensions => Extension}/Gradient.swift (95%) rename AnimeGen/{Extensions => Extension}/ImageExtensions.swift (95%) rename AnimeGen/{Extensions/UIExtensions.swift => Extension/Tags.swift} (97%) rename AnimeGen/{Extensions => Extension}/popup-Banner.swift (97%) rename AnimeGen/{Base.lproj => }/LaunchScreen.storyboard (100%) create mode 100644 AnimeGen/Main.storyboard rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/Hmtai.imageset/0754DB9D-0AAA-4AB2-8F94-D34DBBF58ADF.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/Hmtai.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/NekoBot.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/NekoBot.imageset/apple-touch-icon-removebg-preview.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/Purr.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/Purr.imageset/avatar.png (100%) create mode 100644 AnimeGen/Settings/About-Credits/API.xcassets/SD.imageset/Contents.json create mode 100644 AnimeGen/Settings/About-Credits/API.xcassets/SD.imageset/SDWebImage_logo_small.png rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/kyoko.imageset/68747470733a2f2f692e6962622e636f2f737979315036672f6b796f6b6f2e77656270.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/kyoko.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekos.best.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekos.best.imageset/favicon.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekos.moe.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekos.moe.imageset/apple-touch-icon.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekosapi.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/nekosapi.imageset/logo-removebg-preview.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/pic-re.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/pic-re.imageset/download.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.im.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.im.imageset/favicon.ico.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.it.imageset/79479798.png (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.it.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.pics.imageset/Contents.json (100%) rename AnimeGen/Settings/{ => About-Credits}/API.xcassets/waifu.pics.imageset/favicon-1-_dragged_.png (100%) create mode 100644 AnimeGen/Settings/About-Credits/APIsCredits.swift delete mode 100644 AnimeGen/Settings/About-Credits/ApiPage.swift delete mode 100644 AnimeGen/Settings/App Settings/API-Pref.swift delete mode 100644 AnimeGen/Settings/App Settings/Content.swift delete mode 100644 AnimeGen/Settings/App Settings/Developer.swift delete mode 100644 AnimeGen/Settings/App Settings/Features.swift delete mode 100644 AnimeGen/Settings/App Settings/History.swift create mode 100644 AnimeGen/Settings/AppPref.swift create mode 100644 AnimeGen/Settings/Contents.swift create mode 100644 AnimeGen/Settings/Developer.swift rename AnimeGen/Settings/{App Settings/Developer-Pref => Developer}/Hmtai-pref.swift (97%) rename AnimeGen/Settings/{App Settings/Developer-Pref => Developer}/waifu-it-pref.swift (100%) create mode 100644 AnimeGen/Settings/FeaturesApp.swift create mode 100644 AnimeGen/Settings/Historyy.swift create mode 100644 AnimeGen/Settings/SettingsMain.swift delete mode 100644 AnimeGen/Settings/SettingsPage.swift diff --git a/.DS_Store b/.DS_Store index d19c6ba24a04b6d09da9928db7c3e65a88e0e80c..217e08ced1815fc28cee5ad67bd7627f3d402856 100644 GIT binary patch delta 51 zcmV-30L=e{FoZC$Q3V0YlTrnM3mJQRGB`IZAU8NQliCFy0h*Kf1s?&Mld%RAvn>YK J0ka1P{SU0+5U>CM delta 47 zcmZoMXffCj$jW$pau90+hgfyBnT~>);pDrla*Wd_|6!G9oH5yfO=PnH+jYjpEF1y= DZn6%7 diff --git a/AnimeGen.xcodeproj/project.pbxproj b/AnimeGen.xcodeproj/project.pbxproj index c1691617..8fe141e4 100644 --- a/AnimeGen.xcodeproj/project.pbxproj +++ b/AnimeGen.xcodeproj/project.pbxproj @@ -7,272 +7,253 @@ objects = { /* Begin PBXBuildFile section */ - 130A80532B78C02E0028985F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130A80522B78C02E0028985F /* AppDelegate.swift */; }; - 130A80552B78C02E0028985F /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130A80542B78C02E0028985F /* SceneDelegate.swift */; }; - 130A80572B78C02E0028985F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130A80562B78C02E0028985F /* ViewController.swift */; }; - 130A805A2B78C02E0028985F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 130A80582B78C02E0028985F /* Main.storyboard */; }; - 130A805C2B78C0300028985F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 130A805B2B78C0300028985F /* Assets.xcassets */; }; - 130A805F2B78C0300028985F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 130A805D2B78C0300028985F /* LaunchScreen.storyboard */; }; - 1312CFE72BE143B0003E135F /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1312CFE62BE143B0003E135F /* History.swift */; }; - 1315156B2BAB268900A1C770 /* HearthButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1315156A2BAB268900A1C770 /* HearthButton.swift */; }; - 1315156D2BAB274F00A1C770 /* Rewind-Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1315156C2BAB274F00A1C770 /* Rewind-Settings.swift */; }; - 1315156F2BAB27D600A1C770 /* Web-Share.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1315156E2BAB27D600A1C770 /* Web-Share.swift */; }; - 131515712BAB284A00A1C770 /* Refresh-API-Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 131515702BAB284A00A1C770 /* Refresh-API-Button.swift */; }; - 131515742BAB28C900A1C770 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 131515732BAB28C900A1C770 /* SDWebImage */; }; - 134C3A862BD404C5001C3C22 /* Main-onboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134C3A852BD404C5001C3C22 /* Main-onboard.swift */; }; - 135DA6512BD501FD0083235B /* popup-Banner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135DA6502BD501FD0083235B /* popup-Banner.swift */; }; - 1365E8202BB0112D005E0548 /* HistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1365E81F2BB0112D005E0548 /* HistoryView.swift */; }; - 1365E8222BB011F6005E0548 /* ImageHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1365E8212BB011F6005E0548 /* ImageHistory.swift */; }; - 1365E8242BB01236005E0548 /* History-Butt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1365E8232BB01236005E0548 /* History-Butt.swift */; }; - 1375B3EA2BB813DA00E3D128 /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1375B3E92BB813DA00E3D128 /* Activity.swift */; }; - 138661252B8136DC0062AC91 /* nekosapi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138661242B8136DC0062AC91 /* nekosapi.swift */; }; - 13877B192B82001800251A60 /* SettingsPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13877B182B82001800251A60 /* SettingsPage.swift */; }; - 13877B1E2B82024A00251A60 /* AboutPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13877B1D2B82024A00251A60 /* AboutPage.swift */; }; - 138C92642BE11887008E37F8 /* API-Pref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138C92632BE11887008E37F8 /* API-Pref.swift */; }; - 138C92672BE11CE7008E37F8 /* Features.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138C92662BE11CE7008E37F8 /* Features.swift */; }; - 138C92692BE1202D008E37F8 /* Content.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138C92682BE1202D008E37F8 /* Content.swift */; }; - 138C926B2BE120E3008E37F8 /* Developer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138C926A2BE120E3008E37F8 /* Developer.swift */; }; - 13910EBE2B80D380009BF17E /* ImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EBD2B80D380009BF17E /* ImageExtensions.swift */; }; - 13910EC02B80D396009BF17E /* UIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EBF2B80D396009BF17E /* UIExtensions.swift */; }; - 13910EC52B80D5A6009BF17E /* pic-re.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EC42B80D5A6009BF17E /* pic-re.swift */; }; - 13910EC72B80D5B9009BF17E /* waifu-im.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EC62B80D5B9009BF17E /* waifu-im.swift */; }; - 13910EC92B80D5C2009BF17E /* nekos-best.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EC82B80D5C2009BF17E /* nekos-best.swift */; }; - 13910ECB2B80D5C8009BF17E /* waifu-pics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910ECA2B80D5C8009BF17E /* waifu-pics.swift */; }; - 139A2E0A2BA4D642003F2598 /* kyoko.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139A2E092BA4D642003F2598 /* kyoko.swift */; }; - 13A2B7902BD1615600B79DF7 /* Hmtai-pref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A2B78F2BD1615600B79DF7 /* Hmtai-pref.swift */; }; - 13A325922B94D8A100F1C357 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A325912B94D8A100F1C357 /* Secrets.swift */; }; - 13BE98C02B828B8000379AB7 /* nekosmoe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13BE98BF2B828B8000379AB7 /* nekosmoe.swift */; }; - 13C6CA732BD990E30046923C /* waifu-it.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C6CA722BD990E30046923C /* waifu-it.swift */; }; - 13C6CA752BDA2FDF0046923C /* waifu-it-pref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C6CA742BDA2FDF0046923C /* waifu-it-pref.swift */; }; - 13C6CA782BDA409A0046923C /* nekosbot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C6CA772BDA409A0046923C /* nekosbot.swift */; }; - 13C8011D2B94C5E900BFD198 /* HmtaiSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C8011C2B94C5E900BFD198 /* HmtaiSender.swift */; }; - 13C8011F2B94CAD900BFD198 /* HmtaiReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C8011E2B94CAD900BFD198 /* HmtaiReader.swift */; }; - 13CC95082B8BA40100B5705E /* ApiPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13CC95072B8BA40100B5705E /* ApiPage.swift */; }; - 13CC950A2B8BA43600B5705E /* API.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13CC95092B8BA43600B5705E /* API.xcassets */; }; - 13D936BF2BD6C6BF00D506E6 /* Gradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D936BE2BD6C6BF00D506E6 /* Gradient.swift */; }; - 13E2DC842BA5D2CF00320E2F /* purr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E2DC832BA5D2CF00320E2F /* purr.swift */; }; - 13FBE78C2BDD447B00FF0F3E /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13FBE78B2BDD447B00FF0F3E /* PrivacyInfo.xcprivacy */; }; + 133C4C872BE67CAB00258EDD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133C4C862BE67CAB00258EDD /* AppDelegate.swift */; }; + 133C4C892BE67CAB00258EDD /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133C4C882BE67CAB00258EDD /* SceneDelegate.swift */; }; + 133C4C8B2BE67CAB00258EDD /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133C4C8A2BE67CAB00258EDD /* ViewController.swift */; }; + 133C4C902BE67CAD00258EDD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 133C4C8F2BE67CAD00258EDD /* Assets.xcassets */; }; + 136BD7DB2BE7CA6F00ED23AE /* HistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7D92BE7CA6F00ED23AE /* HistoryView.swift */; }; + 136BD7DC2BE7CA6F00ED23AE /* ImageHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7DA2BE7CA6F00ED23AE /* ImageHistory.swift */; }; + 136BD7DE2BE7CAA300ED23AE /* HistoryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7DD2BE7CAA300ED23AE /* HistoryButton.swift */; }; + 136BD7E02BE7CB4D00ED23AE /* RewindButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7DF2BE7CB4D00ED23AE /* RewindButton.swift */; }; + 136BD7E22BE7CCC400ED23AE /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 136BD7E12BE7CCC400ED23AE /* PrivacyInfo.xcprivacy */; }; + 136BD7E42BE7DFEE00ED23AE /* AppPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7E32BE7DFEE00ED23AE /* AppPref.swift */; }; + 136BD7E62BE7E1B300ED23AE /* Contents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7E52BE7E1B300ED23AE /* Contents.swift */; }; + 136BD7E82BE7E24100ED23AE /* Developer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136BD7E72BE7E24100ED23AE /* Developer.swift */; }; + 13AB1D2A2BE93E3D009132CB /* Historyy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AB1D292BE93E3D009132CB /* Historyy.swift */; }; + 13C1E03C2BE9068600A27DEE /* AboutPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C1E03B2BE9068600A27DEE /* AboutPage.swift */; }; + 13C1E03E2BE9183400A27DEE /* API.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13C1E03D2BE9183400A27DEE /* API.xcassets */; }; + 13C1E0402BE92BB300A27DEE /* APIsCredits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C1E03F2BE92BB300A27DEE /* APIsCredits.swift */; }; + 13D4FBE02BE7661A00BC3D1C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13D4FBDF2BE7661A00BC3D1C /* Main.storyboard */; }; + 13D4FBE62BE7689500BC3D1C /* Tags.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBE52BE7689400BC3D1C /* Tags.swift */; }; + 13D4FBE92BE768C100BC3D1C /* HeartButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBE82BE768C100BC3D1C /* HeartButton.swift */; }; + 13D4FBEB2BE76D0600BC3D1C /* ImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBEA2BE76D0600BC3D1C /* ImageExtensions.swift */; }; + 13D4FBEE2BE76D1F00BC3D1C /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 13D4FBED2BE76D1F00BC3D1C /* SDWebImage */; }; + 13D4FBF02BE76D4000BC3D1C /* popup-Banner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBEF2BE76D4000BC3D1C /* popup-Banner.swift */; }; + 13D4FBF22BE76DCA00BC3D1C /* Web-Share.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBF12BE76DCA00BC3D1C /* Web-Share.swift */; }; + 13D4FBF42BE76FC000BC3D1C /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBF32BE76FC000BC3D1C /* Activity.swift */; }; + 13D4FBF62BE76FF600BC3D1C /* Gradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBF52BE76FF600BC3D1C /* Gradient.swift */; }; + 13D4FBF82BE7706D00BC3D1C /* Refresh-API-Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FBF72BE7706D00BC3D1C /* Refresh-API-Button.swift */; }; + 13D4FC1C2BE770EC00BC3D1C /* purr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC112BE770EB00BC3D1C /* purr.swift */; }; + 13D4FC1D2BE770EC00BC3D1C /* waifu-it.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC122BE770EB00BC3D1C /* waifu-it.swift */; }; + 13D4FC1E2BE770EC00BC3D1C /* waifu-im.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC132BE770EC00BC3D1C /* waifu-im.swift */; }; + 13D4FC202BE770EC00BC3D1C /* waifu-pics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC152BE770EC00BC3D1C /* waifu-pics.swift */; }; + 13D4FC212BE770EC00BC3D1C /* kyoko.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC162BE770EC00BC3D1C /* kyoko.swift */; }; + 13D4FC222BE770EC00BC3D1C /* nekosmoe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC172BE770EC00BC3D1C /* nekosmoe.swift */; }; + 13D4FC232BE770EC00BC3D1C /* nekosbot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC182BE770EC00BC3D1C /* nekosbot.swift */; }; + 13D4FC242BE770EC00BC3D1C /* pic-re.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC192BE770EC00BC3D1C /* pic-re.swift */; }; + 13D4FC252BE770EC00BC3D1C /* nekosapi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC1A2BE770EC00BC3D1C /* nekosapi.swift */; }; + 13D4FC262BE770EC00BC3D1C /* nekos-best.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC1B2BE770EC00BC3D1C /* nekos-best.swift */; }; + 13D4FC292BE7710500BC3D1C /* HmtaiReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC272BE7710400BC3D1C /* HmtaiReader.swift */; }; + 13D4FC2A2BE7710500BC3D1C /* HmtaiSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC282BE7710400BC3D1C /* HmtaiSender.swift */; }; + 13D4FC2D2BE7719700BC3D1C /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC2C2BE7719700BC3D1C /* Secrets.swift */; }; + 13D4FC2F2BE779A200BC3D1C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13D4FC2E2BE779A200BC3D1C /* LaunchScreen.storyboard */; }; + 13D4FC372BE780C900BC3D1C /* FeaturesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D4FC362BE780C900BC3D1C /* FeaturesApp.swift */; }; + 13DD19DA2BEA58B00034B014 /* SettingsMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13DD19D92BEA58B00034B014 /* SettingsMain.swift */; }; + 13DD19DD2BEA64620034B014 /* waifu-it-pref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13DD19DC2BEA64620034B014 /* waifu-it-pref.swift */; }; + 13DD19DF2BEA64650034B014 /* Hmtai-pref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13DD19DE2BEA64650034B014 /* Hmtai-pref.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 130A804F2B78C02E0028985F /* AnimeGen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnimeGen.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 130A80522B78C02E0028985F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 130A80542B78C02E0028985F /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 130A80562B78C02E0028985F /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 130A80592B78C02E0028985F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 130A805B2B78C0300028985F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 130A805E2B78C0300028985F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 130A80602B78C0300028985F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1312CFE62BE143B0003E135F /* History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = History.swift; sourceTree = ""; }; - 1315156A2BAB268900A1C770 /* HearthButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HearthButton.swift; sourceTree = ""; }; - 1315156C2BAB274F00A1C770 /* Rewind-Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Rewind-Settings.swift"; sourceTree = ""; }; - 1315156E2BAB27D600A1C770 /* Web-Share.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web-Share.swift"; sourceTree = ""; }; - 131515702BAB284A00A1C770 /* Refresh-API-Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Refresh-API-Button.swift"; sourceTree = ""; }; - 134C3A852BD404C5001C3C22 /* Main-onboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Main-onboard.swift"; sourceTree = ""; }; - 135DA6502BD501FD0083235B /* popup-Banner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "popup-Banner.swift"; sourceTree = ""; }; - 1365E81F2BB0112D005E0548 /* HistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryView.swift; sourceTree = ""; }; - 1365E8212BB011F6005E0548 /* ImageHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageHistory.swift; sourceTree = ""; }; - 1365E8232BB01236005E0548 /* History-Butt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "History-Butt.swift"; sourceTree = ""; }; - 1375B3E92BB813DA00E3D128 /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; - 138661242B8136DC0062AC91 /* nekosapi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nekosapi.swift; sourceTree = ""; }; - 13877B182B82001800251A60 /* SettingsPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsPage.swift; sourceTree = ""; }; - 13877B1D2B82024A00251A60 /* AboutPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutPage.swift; sourceTree = ""; }; - 138C92632BE11887008E37F8 /* API-Pref.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "API-Pref.swift"; sourceTree = ""; }; - 138C92662BE11CE7008E37F8 /* Features.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Features.swift; sourceTree = ""; }; - 138C92682BE1202D008E37F8 /* Content.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Content.swift; sourceTree = ""; }; - 138C926A2BE120E3008E37F8 /* Developer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Developer.swift; sourceTree = ""; }; - 13910EBD2B80D380009BF17E /* ImageExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageExtensions.swift; sourceTree = ""; }; - 13910EBF2B80D396009BF17E /* UIExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIExtensions.swift; sourceTree = ""; }; - 13910EC42B80D5A6009BF17E /* pic-re.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "pic-re.swift"; sourceTree = ""; }; - 13910EC62B80D5B9009BF17E /* waifu-im.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "waifu-im.swift"; sourceTree = ""; }; - 13910EC82B80D5C2009BF17E /* nekos-best.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "nekos-best.swift"; sourceTree = ""; }; - 13910ECA2B80D5C8009BF17E /* waifu-pics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "waifu-pics.swift"; sourceTree = ""; }; - 139A2E092BA4D642003F2598 /* kyoko.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = kyoko.swift; sourceTree = ""; }; - 13A2B78F2BD1615600B79DF7 /* Hmtai-pref.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Hmtai-pref.swift"; sourceTree = ""; }; - 13A325912B94D8A100F1C357 /* Secrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = ""; }; - 13BE98BF2B828B8000379AB7 /* nekosmoe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nekosmoe.swift; sourceTree = ""; }; - 13C6CA722BD990E30046923C /* waifu-it.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "waifu-it.swift"; sourceTree = ""; }; - 13C6CA742BDA2FDF0046923C /* waifu-it-pref.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "waifu-it-pref.swift"; sourceTree = ""; }; - 13C6CA772BDA409A0046923C /* nekosbot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nekosbot.swift; sourceTree = ""; }; - 13C8011C2B94C5E900BFD198 /* HmtaiSender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HmtaiSender.swift; sourceTree = ""; }; - 13C8011E2B94CAD900BFD198 /* HmtaiReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HmtaiReader.swift; sourceTree = ""; }; - 13CC95072B8BA40100B5705E /* ApiPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiPage.swift; sourceTree = ""; }; - 13CC95092B8BA43600B5705E /* API.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = API.xcassets; sourceTree = ""; }; - 13D936BE2BD6C6BF00D506E6 /* Gradient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gradient.swift; sourceTree = ""; }; - 13E2DC832BA5D2CF00320E2F /* purr.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = purr.swift; sourceTree = ""; }; - 13FBE78B2BDD447B00FF0F3E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 133C4C832BE67CAB00258EDD /* AnimeGen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnimeGen.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 133C4C862BE67CAB00258EDD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 133C4C882BE67CAB00258EDD /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 133C4C8A2BE67CAB00258EDD /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 133C4C8F2BE67CAD00258EDD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 133C4C942BE67CAD00258EDD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 136BD7D92BE7CA6F00ED23AE /* HistoryView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryView.swift; sourceTree = ""; }; + 136BD7DA2BE7CA6F00ED23AE /* ImageHistory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageHistory.swift; sourceTree = ""; }; + 136BD7DD2BE7CAA300ED23AE /* HistoryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryButton.swift; sourceTree = ""; }; + 136BD7DF2BE7CB4D00ED23AE /* RewindButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RewindButton.swift; sourceTree = ""; }; + 136BD7E12BE7CCC400ED23AE /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 136BD7E32BE7DFEE00ED23AE /* AppPref.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppPref.swift; sourceTree = ""; }; + 136BD7E52BE7E1B300ED23AE /* Contents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contents.swift; sourceTree = ""; }; + 136BD7E72BE7E24100ED23AE /* Developer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Developer.swift; sourceTree = ""; }; + 13AB1D292BE93E3D009132CB /* Historyy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Historyy.swift; sourceTree = ""; }; + 13C1E03B2BE9068600A27DEE /* AboutPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutPage.swift; sourceTree = ""; }; + 13C1E03D2BE9183400A27DEE /* API.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = API.xcassets; sourceTree = ""; }; + 13C1E03F2BE92BB300A27DEE /* APIsCredits.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIsCredits.swift; sourceTree = ""; }; + 13D4FBDF2BE7661A00BC3D1C /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + 13D4FBE52BE7689400BC3D1C /* Tags.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tags.swift; sourceTree = ""; }; + 13D4FBE82BE768C100BC3D1C /* HeartButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeartButton.swift; sourceTree = ""; }; + 13D4FBEA2BE76D0600BC3D1C /* ImageExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageExtensions.swift; sourceTree = ""; }; + 13D4FBEF2BE76D4000BC3D1C /* popup-Banner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "popup-Banner.swift"; sourceTree = ""; }; + 13D4FBF12BE76DCA00BC3D1C /* Web-Share.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web-Share.swift"; sourceTree = ""; }; + 13D4FBF32BE76FC000BC3D1C /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; + 13D4FBF52BE76FF600BC3D1C /* Gradient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Gradient.swift; sourceTree = ""; }; + 13D4FBF72BE7706D00BC3D1C /* Refresh-API-Button.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Refresh-API-Button.swift"; sourceTree = ""; }; + 13D4FC112BE770EB00BC3D1C /* purr.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = purr.swift; sourceTree = ""; }; + 13D4FC122BE770EB00BC3D1C /* waifu-it.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "waifu-it.swift"; sourceTree = ""; }; + 13D4FC132BE770EC00BC3D1C /* waifu-im.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "waifu-im.swift"; sourceTree = ""; }; + 13D4FC152BE770EC00BC3D1C /* waifu-pics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "waifu-pics.swift"; sourceTree = ""; }; + 13D4FC162BE770EC00BC3D1C /* kyoko.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = kyoko.swift; sourceTree = ""; }; + 13D4FC172BE770EC00BC3D1C /* nekosmoe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = nekosmoe.swift; sourceTree = ""; }; + 13D4FC182BE770EC00BC3D1C /* nekosbot.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = nekosbot.swift; sourceTree = ""; }; + 13D4FC192BE770EC00BC3D1C /* pic-re.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "pic-re.swift"; sourceTree = ""; }; + 13D4FC1A2BE770EC00BC3D1C /* nekosapi.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = nekosapi.swift; sourceTree = ""; }; + 13D4FC1B2BE770EC00BC3D1C /* nekos-best.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "nekos-best.swift"; sourceTree = ""; }; + 13D4FC272BE7710400BC3D1C /* HmtaiReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HmtaiReader.swift; sourceTree = ""; }; + 13D4FC282BE7710400BC3D1C /* HmtaiSender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HmtaiSender.swift; sourceTree = ""; }; + 13D4FC2C2BE7719700BC3D1C /* Secrets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = ""; }; + 13D4FC2E2BE779A200BC3D1C /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + 13D4FC362BE780C900BC3D1C /* FeaturesApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturesApp.swift; sourceTree = ""; }; + 13DD19D92BEA58B00034B014 /* SettingsMain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsMain.swift; sourceTree = ""; }; + 13DD19DC2BEA64620034B014 /* waifu-it-pref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "waifu-it-pref.swift"; sourceTree = ""; }; + 13DD19DE2BEA64650034B014 /* Hmtai-pref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Hmtai-pref.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 130A804C2B78C02E0028985F /* Frameworks */ = { + 133C4C802BE67CAB00258EDD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 131515742BAB28C900A1C770 /* SDWebImage in Frameworks */, + 13D4FBEE2BE76D1F00BC3D1C /* SDWebImage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 130A80462B78C02E0028985F = { + 133C4C7A2BE67CAB00258EDD = { isa = PBXGroup; children = ( - 130A80512B78C02E0028985F /* AnimeGen */, - 130A80502B78C02E0028985F /* Products */, + 133C4C852BE67CAB00258EDD /* AnimeGen */, + 133C4C842BE67CAB00258EDD /* Products */, ); sourceTree = ""; }; - 130A80502B78C02E0028985F /* Products */ = { + 133C4C842BE67CAB00258EDD /* Products */ = { isa = PBXGroup; children = ( - 130A804F2B78C02E0028985F /* AnimeGen.app */, + 133C4C832BE67CAB00258EDD /* AnimeGen.app */, ); name = Products; sourceTree = ""; }; - 130A80512B78C02E0028985F /* AnimeGen */ = { + 133C4C852BE67CAB00258EDD /* AnimeGen */ = { isa = PBXGroup; children = ( - 134C3A842BD404B9001C3C22 /* Boarding */, - 13910EC32B80D595009BF17E /* APIs */, - 13910ECC2B80D61F009BF17E /* Extensions */, - 1365E81E2BB01123005E0548 /* History */, - 13877B1A2B82017A00251A60 /* Settings */, - 131515692BAB267100A1C770 /* Buttons */, - 130A80522B78C02E0028985F /* AppDelegate.swift */, - 13A325912B94D8A100F1C357 /* Secrets.swift */, - 130A80542B78C02E0028985F /* SceneDelegate.swift */, - 130A80562B78C02E0028985F /* ViewController.swift */, - 130A805B2B78C0300028985F /* Assets.xcassets */, - 130A80582B78C02E0028985F /* Main.storyboard */, - 130A805D2B78C0300028985F /* LaunchScreen.storyboard */, - 130A80602B78C0300028985F /* Info.plist */, - 13FBE78B2BDD447B00FF0F3E /* PrivacyInfo.xcprivacy */, + 136BD7D82BE7CA6300ED23AE /* History */, + 13D4FBE72BE768B400BC3D1C /* Buttons func */, + 13D4FBE42BE7688700BC3D1C /* Extension */, + 13D4FBE12BE7683D00BC3D1C /* APIs Requests */, + 13D4FC352BE780BE00BC3D1C /* Settings */, + 133C4C882BE67CAB00258EDD /* SceneDelegate.swift */, + 133C4C862BE67CAB00258EDD /* AppDelegate.swift */, + 133C4C8A2BE67CAB00258EDD /* ViewController.swift */, + 13D4FC2C2BE7719700BC3D1C /* Secrets.swift */, + 133C4C8F2BE67CAD00258EDD /* Assets.xcassets */, + 13D4FBDF2BE7661A00BC3D1C /* Main.storyboard */, + 13D4FC2E2BE779A200BC3D1C /* LaunchScreen.storyboard */, + 133C4C942BE67CAD00258EDD /* Info.plist */, + 136BD7E12BE7CCC400ED23AE /* PrivacyInfo.xcprivacy */, ); path = AnimeGen; sourceTree = ""; }; - 131515692BAB267100A1C770 /* Buttons */ = { + 136BD7D82BE7CA6300ED23AE /* History */ = { isa = PBXGroup; children = ( - 1315156A2BAB268900A1C770 /* HearthButton.swift */, - 1315156C2BAB274F00A1C770 /* Rewind-Settings.swift */, - 1315156E2BAB27D600A1C770 /* Web-Share.swift */, - 131515702BAB284A00A1C770 /* Refresh-API-Button.swift */, - 1365E8232BB01236005E0548 /* History-Butt.swift */, - 1375B3E92BB813DA00E3D128 /* Activity.swift */, + 136BD7D92BE7CA6F00ED23AE /* HistoryView.swift */, + 136BD7DA2BE7CA6F00ED23AE /* ImageHistory.swift */, ); - path = Buttons; - sourceTree = ""; - }; - 1317D4B22B9479CD00675214 /* Hmtai */ = { - isa = PBXGroup; - children = ( - 13C8011C2B94C5E900BFD198 /* HmtaiSender.swift */, - 13C8011E2B94CAD900BFD198 /* HmtaiReader.swift */, - ); - path = Hmtai; + path = History; sourceTree = ""; }; - 134C3A842BD404B9001C3C22 /* Boarding */ = { + 13C1E03A2BE9067700A27DEE /* About-Credits */ = { isa = PBXGroup; children = ( - 134C3A852BD404C5001C3C22 /* Main-onboard.swift */, + 13C1E03D2BE9183400A27DEE /* API.xcassets */, + 13C1E03B2BE9068600A27DEE /* AboutPage.swift */, + 13C1E03F2BE92BB300A27DEE /* APIsCredits.swift */, ); - path = Boarding; + path = "About-Credits"; sourceTree = ""; }; - 1365E81E2BB01123005E0548 /* History */ = { + 13D4FBE12BE7683D00BC3D1C /* APIs Requests */ = { isa = PBXGroup; children = ( - 1365E81F2BB0112D005E0548 /* HistoryView.swift */, - 1365E8212BB011F6005E0548 /* ImageHistory.swift */, + 13D4FC2B2BE7710C00BC3D1C /* Hmtai */, + 13D4FC162BE770EC00BC3D1C /* kyoko.swift */, + 13D4FC1B2BE770EC00BC3D1C /* nekos-best.swift */, + 13D4FC1A2BE770EC00BC3D1C /* nekosapi.swift */, + 13D4FC182BE770EC00BC3D1C /* nekosbot.swift */, + 13D4FC172BE770EC00BC3D1C /* nekosmoe.swift */, + 13D4FC192BE770EC00BC3D1C /* pic-re.swift */, + 13D4FC112BE770EB00BC3D1C /* purr.swift */, + 13D4FC132BE770EC00BC3D1C /* waifu-im.swift */, + 13D4FC122BE770EB00BC3D1C /* waifu-it.swift */, + 13D4FC152BE770EC00BC3D1C /* waifu-pics.swift */, ); - path = History; + path = "APIs Requests"; sourceTree = ""; }; - 13877B1A2B82017A00251A60 /* Settings */ = { + 13D4FBE42BE7688700BC3D1C /* Extension */ = { isa = PBXGroup; children = ( - 138C92652BE11CA7008E37F8 /* About-Credits */, - 138C92622BE1186E008E37F8 /* App Settings */, - 13877B182B82001800251A60 /* SettingsPage.swift */, - 13CC95092B8BA43600B5705E /* API.xcassets */, + 13D4FBE52BE7689400BC3D1C /* Tags.swift */, + 13D4FBEA2BE76D0600BC3D1C /* ImageExtensions.swift */, + 13D4FBEF2BE76D4000BC3D1C /* popup-Banner.swift */, + 13D4FBF32BE76FC000BC3D1C /* Activity.swift */, + 13D4FBF52BE76FF600BC3D1C /* Gradient.swift */, ); - path = Settings; + path = Extension; sourceTree = ""; }; - 138C92622BE1186E008E37F8 /* App Settings */ = { + 13D4FBE72BE768B400BC3D1C /* Buttons func */ = { isa = PBXGroup; children = ( - 138C92632BE11887008E37F8 /* API-Pref.swift */, - 138C92662BE11CE7008E37F8 /* Features.swift */, - 138C92682BE1202D008E37F8 /* Content.swift */, - 1312CFE62BE143B0003E135F /* History.swift */, - 138C926A2BE120E3008E37F8 /* Developer.swift */, - 13C6CA762BDA3ABC0046923C /* Developer-Pref */, + 13D4FBE82BE768C100BC3D1C /* HeartButton.swift */, + 13D4FBF12BE76DCA00BC3D1C /* Web-Share.swift */, + 13D4FBF72BE7706D00BC3D1C /* Refresh-API-Button.swift */, + 136BD7DD2BE7CAA300ED23AE /* HistoryButton.swift */, + 136BD7DF2BE7CB4D00ED23AE /* RewindButton.swift */, ); - path = "App Settings"; + path = "Buttons func"; sourceTree = ""; }; - 138C92652BE11CA7008E37F8 /* About-Credits */ = { + 13D4FC2B2BE7710C00BC3D1C /* Hmtai */ = { isa = PBXGroup; children = ( - 13877B1D2B82024A00251A60 /* AboutPage.swift */, - 13CC95072B8BA40100B5705E /* ApiPage.swift */, + 13D4FC272BE7710400BC3D1C /* HmtaiReader.swift */, + 13D4FC282BE7710400BC3D1C /* HmtaiSender.swift */, ); - path = "About-Credits"; - sourceTree = ""; - }; - 13910EC32B80D595009BF17E /* APIs */ = { - isa = PBXGroup; - children = ( - 1317D4B22B9479CD00675214 /* Hmtai */, - 13910EC42B80D5A6009BF17E /* pic-re.swift */, - 13910EC62B80D5B9009BF17E /* waifu-im.swift */, - 13910ECA2B80D5C8009BF17E /* waifu-pics.swift */, - 13910EC82B80D5C2009BF17E /* nekos-best.swift */, - 138661242B8136DC0062AC91 /* nekosapi.swift */, - 13BE98BF2B828B8000379AB7 /* nekosmoe.swift */, - 139A2E092BA4D642003F2598 /* kyoko.swift */, - 13E2DC832BA5D2CF00320E2F /* purr.swift */, - 13C6CA722BD990E30046923C /* waifu-it.swift */, - 13C6CA772BDA409A0046923C /* nekosbot.swift */, - ); - path = APIs; + path = Hmtai; sourceTree = ""; }; - 13910ECC2B80D61F009BF17E /* Extensions */ = { + 13D4FC352BE780BE00BC3D1C /* Settings */ = { isa = PBXGroup; children = ( - 13910EBD2B80D380009BF17E /* ImageExtensions.swift */, - 13910EBF2B80D396009BF17E /* UIExtensions.swift */, - 135DA6502BD501FD0083235B /* popup-Banner.swift */, - 13D936BE2BD6C6BF00D506E6 /* Gradient.swift */, + 13DD19DB2BEA64590034B014 /* Developer */, + 13C1E03A2BE9067700A27DEE /* About-Credits */, + 13D4FC362BE780C900BC3D1C /* FeaturesApp.swift */, + 136BD7E32BE7DFEE00ED23AE /* AppPref.swift */, + 136BD7E52BE7E1B300ED23AE /* Contents.swift */, + 136BD7E72BE7E24100ED23AE /* Developer.swift */, + 13AB1D292BE93E3D009132CB /* Historyy.swift */, + 13DD19D92BEA58B00034B014 /* SettingsMain.swift */, ); - path = Extensions; + path = Settings; sourceTree = ""; }; - 13C6CA762BDA3ABC0046923C /* Developer-Pref */ = { + 13DD19DB2BEA64590034B014 /* Developer */ = { isa = PBXGroup; children = ( - 13A2B78F2BD1615600B79DF7 /* Hmtai-pref.swift */, - 13C6CA742BDA2FDF0046923C /* waifu-it-pref.swift */, + 13DD19DE2BEA64650034B014 /* Hmtai-pref.swift */, + 13DD19DC2BEA64620034B014 /* waifu-it-pref.swift */, ); - path = "Developer-Pref"; + path = Developer; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 130A804E2B78C02E0028985F /* AnimeGen */ = { + 133C4C822BE67CAB00258EDD /* AnimeGen */ = { isa = PBXNativeTarget; - buildConfigurationList = 130A80632B78C0300028985F /* Build configuration list for PBXNativeTarget "AnimeGen" */; + buildConfigurationList = 133C4C972BE67CAD00258EDD /* Build configuration list for PBXNativeTarget "AnimeGen" */; buildPhases = ( - 130A804B2B78C02E0028985F /* Sources */, - 130A804C2B78C02E0028985F /* Frameworks */, - 130A804D2B78C02E0028985F /* Resources */, + 133C4C7F2BE67CAB00258EDD /* Sources */, + 133C4C802BE67CAB00258EDD /* Frameworks */, + 133C4C812BE67CAB00258EDD /* Resources */, ); buildRules = ( ); @@ -280,28 +261,28 @@ ); name = AnimeGen; packageProductDependencies = ( - 131515732BAB28C900A1C770 /* SDWebImage */, + 13D4FBED2BE76D1F00BC3D1C /* SDWebImage */, ); productName = AnimeGen; - productReference = 130A804F2B78C02E0028985F /* AnimeGen.app */; + productReference = 133C4C832BE67CAB00258EDD /* AnimeGen.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 130A80472B78C02E0028985F /* Project object */ = { + 133C4C7B2BE67CAB00258EDD /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1320; LastUpgradeCheck = 1320; TargetAttributes = { - 130A804E2B78C02E0028985F = { + 133C4C822BE67CAB00258EDD = { CreatedOnToolsVersion = 13.2.1; }; }; }; - buildConfigurationList = 130A804A2B78C02E0028985F /* Build configuration list for PBXProject "AnimeGen" */; + buildConfigurationList = 133C4C7E2BE67CAB00258EDD /* Build configuration list for PBXProject "AnimeGen" */; compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -309,104 +290,84 @@ en, Base, ); - mainGroup = 130A80462B78C02E0028985F; + mainGroup = 133C4C7A2BE67CAB00258EDD; packageReferences = ( - 131515722BAB28C900A1C770 /* XCRemoteSwiftPackageReference "SDWebImage" */, + 13D4FBEC2BE76D1F00BC3D1C /* XCRemoteSwiftPackageReference "SDWebImage" */, ); - productRefGroup = 130A80502B78C02E0028985F /* Products */; + productRefGroup = 133C4C842BE67CAB00258EDD /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 130A804E2B78C02E0028985F /* AnimeGen */, + 133C4C822BE67CAB00258EDD /* AnimeGen */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 130A804D2B78C02E0028985F /* Resources */ = { + 133C4C812BE67CAB00258EDD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 130A805F2B78C0300028985F /* LaunchScreen.storyboard in Resources */, - 130A805C2B78C0300028985F /* Assets.xcassets in Resources */, - 13CC950A2B8BA43600B5705E /* API.xcassets in Resources */, - 13FBE78C2BDD447B00FF0F3E /* PrivacyInfo.xcprivacy in Resources */, - 130A805A2B78C02E0028985F /* Main.storyboard in Resources */, + 13D4FC2F2BE779A200BC3D1C /* LaunchScreen.storyboard in Resources */, + 13C1E03E2BE9183400A27DEE /* API.xcassets in Resources */, + 133C4C902BE67CAD00258EDD /* Assets.xcassets in Resources */, + 136BD7E22BE7CCC400ED23AE /* PrivacyInfo.xcprivacy in Resources */, + 13D4FBE02BE7661A00BC3D1C /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 130A804B2B78C02E0028985F /* Sources */ = { + 133C4C7F2BE67CAB00258EDD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1315156B2BAB268900A1C770 /* HearthButton.swift in Sources */, - 13A325922B94D8A100F1C357 /* Secrets.swift in Sources */, - 1375B3EA2BB813DA00E3D128 /* Activity.swift in Sources */, - 139A2E0A2BA4D642003F2598 /* kyoko.swift in Sources */, - 13E2DC842BA5D2CF00320E2F /* purr.swift in Sources */, - 13C6CA752BDA2FDF0046923C /* waifu-it-pref.swift in Sources */, - 138C92672BE11CE7008E37F8 /* Features.swift in Sources */, - 13910EC72B80D5B9009BF17E /* waifu-im.swift in Sources */, - 13877B192B82001800251A60 /* SettingsPage.swift in Sources */, - 13BE98C02B828B8000379AB7 /* nekosmoe.swift in Sources */, - 134C3A862BD404C5001C3C22 /* Main-onboard.swift in Sources */, - 13D936BF2BD6C6BF00D506E6 /* Gradient.swift in Sources */, - 130A80572B78C02E0028985F /* ViewController.swift in Sources */, - 130A80532B78C02E0028985F /* AppDelegate.swift in Sources */, - 130A80552B78C02E0028985F /* SceneDelegate.swift in Sources */, - 13910ECB2B80D5C8009BF17E /* waifu-pics.swift in Sources */, - 13877B1E2B82024A00251A60 /* AboutPage.swift in Sources */, - 13C6CA732BD990E30046923C /* waifu-it.swift in Sources */, - 13910EC52B80D5A6009BF17E /* pic-re.swift in Sources */, - 13C6CA782BDA409A0046923C /* nekosbot.swift in Sources */, - 138C926B2BE120E3008E37F8 /* Developer.swift in Sources */, - 138C92642BE11887008E37F8 /* API-Pref.swift in Sources */, - 1365E8202BB0112D005E0548 /* HistoryView.swift in Sources */, - 13A2B7902BD1615600B79DF7 /* Hmtai-pref.swift in Sources */, - 1365E8222BB011F6005E0548 /* ImageHistory.swift in Sources */, - 138C92692BE1202D008E37F8 /* Content.swift in Sources */, - 13C8011D2B94C5E900BFD198 /* HmtaiSender.swift in Sources */, - 131515712BAB284A00A1C770 /* Refresh-API-Button.swift in Sources */, - 1365E8242BB01236005E0548 /* History-Butt.swift in Sources */, - 13C8011F2B94CAD900BFD198 /* HmtaiReader.swift in Sources */, - 135DA6512BD501FD0083235B /* popup-Banner.swift in Sources */, - 13910EC02B80D396009BF17E /* UIExtensions.swift in Sources */, - 138661252B8136DC0062AC91 /* nekosapi.swift in Sources */, - 13910EC92B80D5C2009BF17E /* nekos-best.swift in Sources */, - 13910EBE2B80D380009BF17E /* ImageExtensions.swift in Sources */, - 1315156D2BAB274F00A1C770 /* Rewind-Settings.swift in Sources */, - 1312CFE72BE143B0003E135F /* History.swift in Sources */, - 1315156F2BAB27D600A1C770 /* Web-Share.swift in Sources */, - 13CC95082B8BA40100B5705E /* ApiPage.swift in Sources */, + 13DD19DA2BEA58B00034B014 /* SettingsMain.swift in Sources */, + 13D4FBF42BE76FC000BC3D1C /* Activity.swift in Sources */, + 13D4FC2D2BE7719700BC3D1C /* Secrets.swift in Sources */, + 136BD7E42BE7DFEE00ED23AE /* AppPref.swift in Sources */, + 13D4FBEB2BE76D0600BC3D1C /* ImageExtensions.swift in Sources */, + 13D4FBE92BE768C100BC3D1C /* HeartButton.swift in Sources */, + 13D4FC212BE770EC00BC3D1C /* kyoko.swift in Sources */, + 13D4FBF22BE76DCA00BC3D1C /* Web-Share.swift in Sources */, + 13D4FC242BE770EC00BC3D1C /* pic-re.swift in Sources */, + 133C4C8B2BE67CAB00258EDD /* ViewController.swift in Sources */, + 13C1E0402BE92BB300A27DEE /* APIsCredits.swift in Sources */, + 136BD7DE2BE7CAA300ED23AE /* HistoryButton.swift in Sources */, + 13DD19DD2BEA64620034B014 /* waifu-it-pref.swift in Sources */, + 13D4FC202BE770EC00BC3D1C /* waifu-pics.swift in Sources */, + 13D4FBF82BE7706D00BC3D1C /* Refresh-API-Button.swift in Sources */, + 13D4FC1E2BE770EC00BC3D1C /* waifu-im.swift in Sources */, + 13D4FC1D2BE770EC00BC3D1C /* waifu-it.swift in Sources */, + 13D4FC1C2BE770EC00BC3D1C /* purr.swift in Sources */, + 13D4FC292BE7710500BC3D1C /* HmtaiReader.swift in Sources */, + 136BD7E82BE7E24100ED23AE /* Developer.swift in Sources */, + 136BD7DC2BE7CA6F00ED23AE /* ImageHistory.swift in Sources */, + 13D4FBF02BE76D4000BC3D1C /* popup-Banner.swift in Sources */, + 13D4FC2A2BE7710500BC3D1C /* HmtaiSender.swift in Sources */, + 13D4FC262BE770EC00BC3D1C /* nekos-best.swift in Sources */, + 136BD7DB2BE7CA6F00ED23AE /* HistoryView.swift in Sources */, + 13D4FC232BE770EC00BC3D1C /* nekosbot.swift in Sources */, + 13D4FC222BE770EC00BC3D1C /* nekosmoe.swift in Sources */, + 13D4FC252BE770EC00BC3D1C /* nekosapi.swift in Sources */, + 136BD7E02BE7CB4D00ED23AE /* RewindButton.swift in Sources */, + 13D4FC372BE780C900BC3D1C /* FeaturesApp.swift in Sources */, + 13D4FBE62BE7689500BC3D1C /* Tags.swift in Sources */, + 13D4FBF62BE76FF600BC3D1C /* Gradient.swift in Sources */, + 13DD19DF2BEA64650034B014 /* Hmtai-pref.swift in Sources */, + 133C4C872BE67CAB00258EDD /* AppDelegate.swift in Sources */, + 13AB1D2A2BE93E3D009132CB /* Historyy.swift in Sources */, + 133C4C892BE67CAB00258EDD /* SceneDelegate.swift in Sources */, + 136BD7E62BE7E1B300ED23AE /* Contents.swift in Sources */, + 13C1E03C2BE9068600A27DEE /* AboutPage.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - 130A80582B78C02E0028985F /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 130A80592B78C02E0028985F /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 130A805D2B78C0300028985F /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 130A805E2B78C0300028985F /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ - 130A80612B78C0300028985F /* Debug */ = { + 133C4C952BE67CAD00258EDD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -467,7 +428,7 @@ }; name = Debug; }; - 130A80622B78C0300028985F /* Release */ = { + 133C4C962BE67CAD00258EDD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -522,18 +483,16 @@ }; name = Release; }; - 130A80642B78C0300028985F /* Debug */ = { + 133C4C982BE67CAD00258EDD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = AnimeGen/AnimeGen.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 38; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = 399LMK6Q2Y; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = AnimeGen/Info.plist; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "The photo Library Addition is required to save images."; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; @@ -546,29 +505,25 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; PRODUCT_BUNDLE_IDENTIFIER = me.cranci.AnimeGen; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTS_MACCATALYST = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 130A80652B78C0300028985F /* Release */ = { + 133C4C992BE67CAD00258EDD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = AnimeGen/AnimeGen.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 38; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = 399LMK6Q2Y; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = AnimeGen/Info.plist; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "The photo Library Addition is required to save images."; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; @@ -581,11 +536,9 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; PRODUCT_BUNDLE_IDENTIFIER = me.cranci.AnimeGen; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SUPPORTS_MACCATALYST = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -595,20 +548,20 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 130A804A2B78C02E0028985F /* Build configuration list for PBXProject "AnimeGen" */ = { + 133C4C7E2BE67CAB00258EDD /* Build configuration list for PBXProject "AnimeGen" */ = { isa = XCConfigurationList; buildConfigurations = ( - 130A80612B78C0300028985F /* Debug */, - 130A80622B78C0300028985F /* Release */, + 133C4C952BE67CAD00258EDD /* Debug */, + 133C4C962BE67CAD00258EDD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 130A80632B78C0300028985F /* Build configuration list for PBXNativeTarget "AnimeGen" */ = { + 133C4C972BE67CAD00258EDD /* Build configuration list for PBXNativeTarget "AnimeGen" */ = { isa = XCConfigurationList; buildConfigurations = ( - 130A80642B78C0300028985F /* Debug */, - 130A80652B78C0300028985F /* Release */, + 133C4C982BE67CAD00258EDD /* Debug */, + 133C4C992BE67CAD00258EDD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -616,7 +569,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 131515722BAB28C900A1C770 /* XCRemoteSwiftPackageReference "SDWebImage" */ = { + 13D4FBEC2BE76D1F00BC3D1C /* XCRemoteSwiftPackageReference "SDWebImage" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SDWebImage/SDWebImage"; requirement = { @@ -627,12 +580,12 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 131515732BAB28C900A1C770 /* SDWebImage */ = { + 13D4FBED2BE76D1F00BC3D1C /* SDWebImage */ = { isa = XCSwiftPackageProductDependency; - package = 131515722BAB28C900A1C770 /* XCRemoteSwiftPackageReference "SDWebImage" */; + package = 13D4FBEC2BE76D1F00BC3D1C /* XCRemoteSwiftPackageReference "SDWebImage" */; productName = SDWebImage; }; /* End XCSwiftPackageProductDependency section */ }; - rootObject = 130A80472B78C02E0028985F /* Project object */; + rootObject = 133C4C7B2BE67CAB00258EDD /* Project object */; } diff --git a/AnimeGen.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AnimeGen.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 05069156..da452422 100644 --- a/AnimeGen.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/AnimeGen.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,7 +6,7 @@ "repositoryURL": "https://github.com/SDWebImage/SDWebImage", "state": { "branch": "master", - "revision": "80c8b2023a5efb4415a2c615acfec075e5c243d2", + "revision": "e55cb041d05fc20a8b32c56249ab7e4b907c1dcb", "version": null } } diff --git a/AnimeGen.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate b/AnimeGen.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate index 96ee1220675518d0e2c4b90ae41f0d163c8b2b3c..a4078020a5801db80d57ea3c4b0d3377aabafc82 100644 GIT binary patch literal 128003 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 z zk0H2hGZ*HXxFuXO!KV;Bmf&#&kN^K$F;r}au7--vAsyTr?o@(dAxlIo!G2dEEKj1>A)MR}egf;Hd;pBX~N&GYFo!jk}n;gu9fx zjJuq>LQ+PR1TP?XA;EP7FCthvZ~9;D6LRg6j_lwzahtg<+*WQI!LU2$5L`uYkYLz{ zp)MVHgMx#zWgJYBjHsM!8GdqO?oK*@Zbq7X7Ey8ZxSN$WbNg$PDU;~gW|z_iY8pU4 z%6^!_Cnr~i)V`YRQJT!}#wIUALdFcZ#t2}zuQvB6ZEEB;k`J1v_-^_Aw%Dt*sExJA zNt1YFq-DuYXm=h1Mk-MTxRFY}w~>2<+jkh8&t4hG&61RFZd#t=^>I&P&kfvD+|%4M z+_T(s-1FQE+>2Z%x1Zp8f*nBf^VGVza$W9O zcMq_ex7f{<>*n@#`H-<8y~BOjpRFi)b=)W1r%|tN8NtgT5*(e1&$+LTWDauQbH5*@ zImrFN{mK2sQ#|6aB!O)NuOS%lKqQ#Jsi3$y$g^;Ki0624uT~JeD!#3Gjk2mM2>2mlay@zjbXyNa{p-p?E)5cqPsOplB>c#>GP-6-*n30*1 zo|BUSo`K{Hfys4}FB=S;SnqT4(z3x5k}YE13F?Q3(ERDJXVTJ73Dh?Q!qZ~M>v%8k zhin252KAZkd@{l7dPMK}6XZ}dUJI8uA4@1&sxwG|1DWxwDET2ggx)ssC-NupV8Ne7 z@Yw{Pvk6=HG(KJ0Ip-35o&=xL)lOCA_n)Q9#$#SSnC!~5<-wVD9!#F|#poBq z-v#yzg9sKK3o-P2-er9G&L^hmV)3XD80U<%5e36Wv}J_D%iqL z;-^SUF_{NteHp=*L$xG7P1;LWNE<1hedv`Uo)b$Rm&3UUC1K1<8BX~GXRL0Wuj1$T zqFy6Wzbfi-@(X&kSyuRPYC{u;Li#ElHjii{+8hH2?lmQ6a1@`c*MUG{3oF)LSsTRgk}lN z6Ivj&me2`=HW1oGXbYijgmw_xDNX1-{Js2r{Qdl1{sI0${vrNh{t=#fN}&9nzMIgm5c&{dXu|jiQ$m<3!mK3B#e~^PnEMD+Q!(EV6-QJ_M3qTY zlZa{oQLQGbO9^CqRgVzW0iybnury&EgiRxCF=1yAwvn)>5%x;L-bC1k2>UW&4-xh+ z!dVG7h=3c%%^+NuaAy9 z|C6YVM134l5AA_!YNX%;+@^a>dC>T|tYbR2e4r2SPES z{+lC~@sl~JQ-TX3y}4)=HXO$Y&%9CUE`5&;!A~Fv3m3HDm&+qrBaAEXj zEV*(Z5N@0=eeTUHMPYW!f5t2>ps`<+as}yztnLz;sW7{($}scD8?N7x9X^eXp~c}y zLl{ozAI>jN;dgtLq3p=~daoDUII=WY4VONFRl2+y?iGJ#6ZPl~m#MME5A?nI z;}kac9+mX;yZSxrH+m0dlEUTwe`!tn-(1raMh_h0tR24iO?B0Q<~|l@mcr(tqmr54 zdpNcx@x?jP{LNGNJ@PNjUvy8m^j@ft!syW|16+Un&+D-cpFeq_0`s9HzBj8y3aiKe zr7_8@=7;-W6jm6)y#}-XjWNmhS*FTACx?Pi?bLf{Eegk{s|*Fl!m%O*#a=Cam^p0< z-Dj%|x5wy$(FF(M<>LmC=v5zZA~sbj!-1NUNH>499Bx>EJI@*-smg&@IQa_KOv_(& zd#j>&Y_}I8HH%X#+ThxyhSZpYE8k(hO!{Z8Qm2+lRsOZoW#7^lsbl2nkiLieU+U$5 zyr8QbC}m-HkY1yVBTC;*kj?;Wg1H7aG^G- z_iCS|aM)jE826uXh#dv#&EkB8#moN^td+wR3Vp%aB?_BYk8!Tzuol~Wy$1q?yl{#D zAFMK*-``xtHroG8B&9rDBXy+v-n>@n?j}Z#Hq##}?&3f!m`Q)dLF4Pmgg_hs|T3 zF6KUk#i3*LBqU=cRWXIY&g(_E;;7vIer@Bp(EM$j^XGt!(21i2c&HCviaG^4&3VIZD^~O@#~G1#}e3w%;}R+v$2wVe!*3+Q6|{ zN|i58PnC9A5nQ`k*Ox)}vBK(?W7O+iqTdv5YHbP>1{)ju(l4JYY<@e&5gl&T|DDWy zqpyB|W zhwp|axE-iB6Xj$mtv@Q|)?1R|qv={885UB&BRo8oB`AkSY2&d*%3`ssJ{6BJND))> zQQhMBHzNV102fsCvAY5a1M4wP)#2+QhYtF21%wQRm;K+toHzvafjPMfr^KV;^bZ8J z_wo-{IJu5d{TvS3aNSo+56D(>$ihfrEL{C0j1mfjLZL_~7D|LtVYDztC=*U0w1?11 zg!U5JM`%BxlLHHgsC18LkNAM{PQHZ2r$=> zZHQIs3(Z0c+yEs+2%XX{v=Tb?=x%@#+Jsfo`M+@jlp8_1It>aGgf&n?K&SV*3ed=B z3>cLx7beEa$b>V5byD-`!dmGzC_3wJnj83NS%GkYa0%4e2p0+$2^SN%_K?mabUswO z3YQ6&OVzIQP(l~>QSJKAul|$EWrX$8q+UztVeukYVS~`o^Vp-XN!U#2;e zlh6|vGF&LPFOOdJ&-)6S|(z z4TNr#ZI$p&%`gQ@G$S>mGzAirXo@8$X^KHfGohCfdYJ+xZU6hA7}W}^Hfh7p=Mnkv8u4eaSiy9V}j%h6$krbe>>c9$k3 zDH6COMcX0#04GTSA#Ur15d%i~dYB!WM$HmsXEw<@bNNy1%w?LDeHtB_)tWUjxU3-b znrPXi22KvPYfdBd$}VI$Q*+i~$Z)pi973-m^y;HSh6^;8_J<68TMUQmY0Y{K+^%wi z=332ln(H+iG#fSTnhwn-&1TIOLW>0M7^b1irxW@NLZ3Hj{F`WIy82vT`Ok-A^nO?wG_ZcL;e0+GVMXdaRN zh+h->JmtqOgEfYuPimf)gz72s|FQQT;8hfD|NkcEY$K=lUXsvT=p7PzAfbgM^bnE& zp#_p4Vk5T-A|m!K!U0qaAU5m;yVwO(KrC2M0SjUU`G05kEQkpq&->u-eg9s$xIPC+ z&g{(G^S$qxo!Onyt%xPPPP(h==~Qng?O-a+O2Up5=yDFCwK+WehqGp0p+Nc&pSRjcyc z`0tbF8MJj4)LZZ2>6vtFkfCEkBhsyj>)2p~jtwS*nL)a>q{A%~`^3#@#3IKPVsIHe z(6Yfzy1QZqFX`^CpOy_lLqyTCA*^V5J;Z28W?H_drk1TfEw`qI7K(%o*oO@g-cUy> zElHZ8Bf17dJ41T|ra?B5?q1Su#<CHeJxjXhNcTMHUf5um zu7(uDEW>QBnW2nJHOw<$;P|2zQeGk58+a#E_a>X~dW&@Luval^ivRz=CtuX8%ZcMA z&dRwLXNXz#3^>Z%jG>D80!A(`X))ze7E=}{{>C8P%dBU_2O>&$%~zHiR{Cqu~xiObslnmB8|L9m%zl z-fh^x0?T^CJ%(!1Z6|EiuiME2%O-Z*25xB4HP;eX{)>ISw4ApXwqmGgc-ZiW;Zeh5 zhQ|$07@jmdWq8^EcX^+5yGXa2bbCnm0qORV?nBajM7obj_er(k*|_(-s7qnpv0)qQ zj`wN4gYAw?YG3^IzppPo3!Uv5T%!)pRNdiy<_>6`Pc?V=fVsn7bg_VRpDA4|`#jlo zd}{cdxdVRqMa=L8>AtL|JA7?806iPNVfSCyYs;|4aFE@9?XTtj%c|?I3G1-oXVnX^ z!xOsKZ=@= z52X8%bcadz6X}jr8zohXMuX94G;yg$3)AAynihX2-Eq=$h~oN$1~KA6j4~{T{`GvK z|5A)bc8-EEOuApU3W(3gAT47TCaphfNXu%uKPBCw#%D_tE#uzC3`Lv9bf!%`4)ijakNQ<1piJ;|SwO<0#VWNzapBAiYR>iS#nz&dKa$XV~MDd)!1Q_=&c3^$C+j4Lp9FkWF? zZoHE8KGOS1AHdiFiaU<60~Ds5vtUy;RgW9Lq7B=d5gQnu`a`z+Bzpj2y6jq8ke8t*dRZCr1> z$5?ILVBARhDCv_)pF;Xn(l;i36T%5BdU#87(zhUe%MHeRH5#x3xsN0>LY z(!8lH;gA)5C(`$2-qi2k=S}q-Isc#VrI(m5y-fPnnlHV|eCaiVnL&EQ{dMXmd})&= zknP5u%$IhMJ}qW^m-JX(6FRA0r0-4oKBP~FUH%6L5ViY9 z_Sro#k!`slE(DXsWLJWV3A+-atL|S%gK9~^CZEY~3YdbXkST16n4+d+vAYQY zWgzJXk$y1gGf6*$^g~IXMfz;QIYZbaOh0^ssfij~Of7UNTr+lOV`^(kBmD?1xQt?V zHa_LvMxRgmi4BtiWwT}}U3VLH1mqbH!>n_#sodO{*u0ks`WzV#8Kw+`jM`7R)Ea%T zX$S&_35}W)GoevO*Dqk0hMPty0mFoc4-hbN*O+p2!$_Z}oJ;w)W6IRRjZqGY*YX{2 zDnP`jxgndW(1bmm5HZG(9!II4P_}xFsjPz2NI&j`-3Zg4mz$QEt}rb(U1?g;XshXJ z(>11RP1lirGU*FRKZW!~q%S6Y340PmKb7>T@pRIcZZO>t_pw`&HkxizeC!U^fzQx< zYz~{u*H@@c_Agw%{okKJFyY9`m}wK~XKFrnAAHPozv%%6>1UCCw)%-~*<|6hhJVcT z1oN}UNnaK-VWW?^_4Ko?rsq{ZdrtAQd5Ght7g@(#UZZ2S?AJ1T)$}HutLAearngP+ zD9%+$dhE}o`V{t$jhQf1z_wyq`dy|ESf(fYQqx}3honD;^b6|eQ~OL`o~|#g{UMDL zey$bakm(0jgnSeBy@qq0S4X|IB)^ywF%4q+)%2U`cheuHqo!k~KTXHYoH>E?7m)r! z(qBaSMTB$I^h7vEO@9gLFD3orYO_vtE3?>Wq*>-t%}LCumS|3OIeUInzk&^kuln~5 ziU0Rq%It*#&A0)(Ebda~AY95EYE;S~{ZjTort%4w%8$3Uxv{w^9LkKFoMkaHn(K=C zIh47Txvk<*W}FO!j%zuDWoDa?>94HeP*&r8mNr^`UCiATL7KZMf@BN7r%R_LNjDFL zAk7)(zUF@B{^kMZf#yNx!RAaeqB_Df0{-=+zk&2OlKv*r-%R>jNPjEoZ>u(E#RWMc zDcw8@f*j2RdAlY^tnI=T*D^t_YY^nwpO-UFVS+>-yiyY+#vP}Bh|fIRT*jn0hxDsr z=DDO_T~8@inir^2JV%jYj7e%Clj541QZz&@%{5&uGOGg*vpVp&vyOCHlBMSBm=rHJ zFEd|ZUT(h9yuy5y`D*huX6W#4(yu2R)1g7R-%I+H0RUXi!crS~Mo6YwzNdF+|A5uRN8`CWV zwf26*{1}tuqojX0X2zi7k$Ot7OS3Go;^2`e#Z1 z9O<7Y{R^ajkv-L-e`$mHqqr(R)uos}X9HpLS4@{LYr5RV9*Ne!sSbqS{`V=f&YQur zGJSQXxnA=Trp%v7|B9x}-|7mI7S56gMOrWxdo^a!k^Z&%DbgZZaQx94i=@jU{p%3r z8cPyZ(e!WBwu&ZwAD5TKYH=uvwAd9zz6C{El9-O!`AEfOMf2HdsOnL(S`wcH#|_o; zkP4o(i7JEUcSw)3uarTvB^8yoV2*YBi9xfanWZJm^5me|(#q1B^q7j<$*OwB2`EcD zOXt%KnrnZ;Y~=+lw?!6p>|s&I9&CB~bg8r?OD)UU-Dr)skt{1LINH!f z`U9l@UURH#nE@~|K6uixZnWI;H^;iwavSLnk^Z~-Io2x6y3;vU{T>XqY_vRr;ge;P z3<^q5z-?Z{zCd+NsqSro%DZHTON)3)RUH{ zEKkFuwz6*OsMbyWNxY7DJ%&#_|L^ms|NUD_%bQG2Z;}33ypytQud|cdZNbDx%z^-U zJZ9NTIJ>xB%O{pkET2K5mVM}?_ynbs`W&4UpIBQb)%=c>bVqz;eXZsr2Q1$)jpthq zvHpq|m|J}gXT&8=*Iym6a!ivyTYjHzGcXcmwf} zmx*{Y@wl|L+M1wh(#l%}^JXs9DnpaJEv`x4MZ6zFN~Xy`gC@`ZklyNsCaoUg?Qu<7 z{m`T}U=1>ehi;teC!&0grE^>&)>LZ~Xw%x5cz4X&lz315v}tW=Z3AgpTQO~VnKrF$ znKpg3Y11gAq_;X{Y0ui(+D%cWwX34cAe3os%arLmoieR`tQdw=Thpx>*1pz$*8bK3 z)`8YR*1^_H;={y8h>sGVOneIQsl=l~O$bLj^UbQQ@ezo1xOD`3k=mNWl-XQUW=rDJ z)VHYlb`8q>2b5XJlsSd?7Me0kpv*=ytU(5QGaAZNK2LPc)>&4ZI}@|cCcah7T1I^9 zdaAO*dJa=%B~vAviCbe`z*Grk)sU4{+LV&s>{L}=WF=LVRf;OvdbM={Q)Sy4$uier$`dG=%4dX8zUe+_L}6IW~UdfED_ zsz^*dpqm|7M=CAJ+t!`zjg^V~HO}{P=2{ zUL6kEB%5qZp{JMbnVmyb*+`6Qp(>eQ{j*T5rWAhU~G49niJQcgn7B=6< zAbt{?;Z!~`9O@QtZCeu?-kgrvFlv|_vo$9k?|IkfIVW3dTbknAwzi6IPl1=(+B4rS zs_EO-zA5SLPU&`RU2Q!SC%1K1oP25>$+ePZ*s`EYTVGp0TYuXC+d$hO+hAL!ZHNut zIi2`Y;%5*)llWQ0qZ6G&JUY?2#Lug?Wyf_n(r9c{3SF{YW%zPUmv~M4I2Oj3F3)e! ze>jI|C^J*$H>0vE5vR$eQ@)AXm7u1nTOR~&%0~6#Gw&k`fZ7Xb7 z*{-%-W4qRNo$Y$!FCu;s@m0hV@fQ<+3GtT_znJ(X#9vlzyD=`vTWzxKb_kL^d%`c( z1bGDul>F69kk>Q_@*fZ+d-BA#iTKMkL9!=LZ1*Ej0^*k`fs%bfkX^Obe$@6jlOu*d z%VV}Dh{q~-y#nPkw&x%$+g3I{Ujap~u|3bm=U3G>J~!TCX{F`&s_hL`keI8-Fz8w) zNVb54l&6` zc|s!wv;0`))zPpos-M~rsS&eni*S$0{8jcXw)yMc*nT@6uL zlt!6$OjE2U{vP71 ziQhmxZbRUT_Y%LE`1{xb3V;6wds9`9_LfN-?XB4Yiam`f@&Qeecro}|;-64&5}*3_ zY4U%6Rnp!YnzZ*J{=v8=?R}w1T@QPIFpv@i;vZ5zw;)K4(VBgTJ&WlQBeF+g_H5!G zt*0(W+DEIp#2Lc4Q+$jmj2%A5KVDOp3AbsvjkixyLZp475+a|hBbAn<*gn11B^3J% z`%L9d@oD0pi!Y(r=P(ms6#2|a$1AtbXIY-SLA0M^UqJj;;-6(zJ>w0c{d{}X>246~ zw}fI}YG+TN*e|y)vtMCfZoksL!hV(gYWp>Ic*G0DzexN`#J^1ZE5vUj{#D{%BmQ;b z->A07XI|_#t1ryj*%K%{-YsW;h{pqs>I<{{d;dO%`rltcv9kwI>}3%DHhX7Q`Gi9`G`&7-XHzeBOucN6*)jImQBQ|@%Fd=<>`${%$4)ltus_R29qcXc zzmFcQ!aZ7UFWc3r7rQ$3@;-B@XPFzmTO*a0=;D+?{Nh?hCso!?OLU^^hiezQ!r*TkH#FMi9c3P1&?uzR~0-?QShHkixZiGkJnVN zbj+e1SL-NpOl9fv9VKj_BCyxJPnS+B;w;AkCdS#0IgT>NT*o{|xue2S>6q_0hXg$d zJP85`A_)=+G6{`HNFu>Ng0b3hZd{BP*ks2=5Mvd@D46166mTn9OoEe%(bdq+pZ$9| z#|kFKt4J_wV#I?ub&By8$8AiEw~}CuIc_JxR!=dmcC1y!xQ2;QurpEJ2{8(enqm}} zXu7I)Y*M9&lZYWjcO9v;Bo8{CK^O0M$g#!ou;UTOqmIWMk2{`lJn47}UA*8W!AF9h zga8Ra5<(<|Nr;dTB_Wx0@s6!=J-*<0k!$978H(KIc$I_{O_7aBXn{?R1orH+(29gM z4SoFC?&BS7vlhoL5>ho$vdvnoLE}6ITa3nz0?Ox!Uf%JkgKgI0_>6=mF~=7qG_9vB zzjmrwkdaB=v>5fco7MsV$LcOa_XtWOP%cW0_S2DRY$X^ z>RigAYHn>&HA%0DYK8L}RfktAI?QJ}T*}m2b8~Yo$xY5ROoul+Z*ku0yv=#LbEWeR z=PKuFXN-igBtVVhNti&wL=q;EP(Z?D5(-I}QtezD*WumH^{kh7ZeThr(qbY;3Nzz< z{Hz8c{sTgMj0y2^5{fk;VlUry&ZiR^F-R!E8Up*k^hQbCH=(tEmP$_ z=cmrkoS!?taDM6h%DLb9weuSi%1D??!aNenNq{3(k}#hH+$Aj_;oNHHfw(HakN4C+ zF;yLy|5N2^Yj%xIa;LEcfAH z#mYi;<{+zZAx`Z&ajH^WATEc?tw_@4QY3j1H0AO#NiM1>NnM7PD&&ePN_0gOB~l%! zv?NVk?V&_hGgot03s*~5D_3h*8&_LbnyVcNmymEN35!WsLc(PvEG6M`5|)v01qsWm zT^&>SE;JS z>53L_tRt0Hz%ti)Op9|}^IYYw3Rk6TzUv&<0@t~&g(Tce!Yw4+O2Ta91mVXY>{8<-ex zH0))NfW66a+s!_!9gVYP~<kc1Rg}1uDe-$I;iqdzSW9x;-3Ur_bM6FpqFd+I zyLq?Z7TuB?)8!E3^CY}L!iywe^!qXiuaK~fgjY#;t=gTWD$#9LmFTuJCBCjH@y!!T z+|i)Kv#&&V6iRd_lki4diSEYAkkL3V@i*f<_SUXd{m_)?Zso>nSuuBO65fir+mi5h z{gmkL;Kp0xYup`~67lSVVU4>BQ{wj8l&C9=%gWu$txO2zyD=ez@##(|(apC0MY_|> zPPzxWM`8ZlJ;*)So#`Ip9_r3=XS;{Fhr36x`SbTkc%KB!&F&^)4+-!=^Z*}{@DT}k zpZtXlZoIz5{Q=Ei;KXEFD=Bz#^^RbJr61Q7<0ZXESw zAmIz9FJk(_+vtDWZ^3GOT2ti`_vK1_bT3s@$(Ghnmr6@=l^c%{)iP)9z9Bwm{!MLj z=I&eFce1d0oBMY6O7|V^Rqoa9n0t+Tt$Q5_2S_+b!XXmABjI}zejwpT5)PB_6A4GE z-FL-xTpbUq_p-36ZILcuf9`k(f2<*_{sUq4NhaZ^NYHjjcW;G+-Once=6)6%N(;Xt zs0w)9-iG<19-2g6apQ5Im>V7A?=kmlB>YiN4Zr2y&LZpEEV3SDk=1ZBG=;+}YCe3V zWwpzV_rI%<|v? zWdn(gA;i<2d#wqv+@n0DobRbrwA-{ENzV5yVIsW1bD`%V&mvEihddX1F7aIISxjPc z5?heilEhXdwkEL+iET+tBe5Nc?W;YP#YK2UT!dFK5q8i-*yV%>dp3yh9}wY6Cc-;N z?5K$_1`&GJc-AsV>_lQ`^%EVt%aW-nq}sEQiE#soU1Oe2BzCK(81MHy#A4|KESBQc zO~leIESC1DEtZOtwcMWYJgvr3-0>rp_F}Pg3yY;aP8&;K@Vt%Q-SeX7CC|&AS3KK1 zuX@HQZJ-itey zx0zSjDlgyLLUAm%z<;`mYf0L9dm_+#+j~2BJ9;~LJA1o$yL!8MyL)?(IF`h5B#tL> z0*MnzoJ3*)iIYhzBymc$x0mWu-i$^gz5TdU?*JC)wFQ0=$7Q!CaTaDF#Mupz{_ID3 zZw?b4G^H)@doli4=N;o6%ODXW3f%UvPel5$md09pPxelMPkGUV(_>x?K1%E7Q{HLb z84$I1I*ar(SfuyPWRZSmZIQl7Bgk2#Q}7l~NP(~O(F=X)e(#(OP^=V`J2!oS?f5s8;I#QL)x>%FU(Hdm8~Q^?gQxmFp4c<=PAF>hAJ9~ZDs zY=-uLrGuuF4PHEo9P@4@@uHabUJ|iXU!Rv)y$^V|DAC^gkP_{ya9o6E3p+96^ur17 z6J9*ST+1mL-eSeEG|K*en@0(r>NH9uXQomTg z!@CQy{y#q@!~3yU*_$TcyHAPrOY2kZ{obFLXMOGc#`~@JfcK#HkoP<9_ue18KY9<7 zxQxUrNL)_hl_ahp@hTFpCh-~);XK!oc>M*s^Mh%W_h;ES@};WpMg_)=N#aC>dNgVfU!(DG~P z!#h@MeXV@0eYlNWMIwSm3}Y@|J70Un57&^mwwCj){)>ZVRqJ$P*6B{-x)ZMK>*Z6H za!wB0d>KC6Puxl3UG;Kh-$38c(+%5vS-x!FFyC+z?Ar<7J$;gBXqnL|fv}os$l-+{ccu_MvxpBIZNyP|r1f-*vtll@8jc9A7Oy z#YDx9uNG^r)?4+DXrW=HZ?!7LRf-hZ8vp51X-V$#-Or?Ww{N}g9$&R@gKwj6lkZ;N zW*-#z9Epf}FOc{mi7%0eUi=jjw~_cNiLX`r9*9fv;iPo71CQ@!Ii&2s zBW`cFmpS|QGQL-s7SR~mBERo-XtDMkc(k_O;d_^faVLpy#eDCPSkGmC-yYwGtf%^b z^;F6-|LJG{wX8n#;m{=(6!G@Cg~T0D;u)s?eFuEMVxZ+a=sV>5&iB3V2j7pr!@i$< zNBCX7Ur2nHM3ne_5_gffo5VdNVlHYgi61J{RUd8e{T7$wG2fqDGe5_r`V;*+54$S{wRll7tE8y1v~14l&cMqqol`oyaBi*V z8sO+vcBy`4=aiHePQx*J;hNXScQWUkQ(93vWmXA}XRW!b!mLvt&&79AYF?$N{KP1! zZ0gjClFHiZvY@38~F3=;Q|_^JAd zhw}JV7VU`;f6yO>F#TAO`8?*2koZOYhEV=ge^aQ;-lBv1vmX=hDD}4_V$XyV=Nl+vA%726)1D-r+#25B$KRJp z{^VH5-_MU()k7qHSFf>Zc;2rh{zl^OB>q9- z(P}?-|6_mrvm1?c4a48_SlB-n_cAGgO=00tU?WLFL)bt2Vc)-q39pL8KQ$M-gt^$I zhQFViW*ZI|Ph+i3pNO~qM zHV%>a8q%^hU!~=?(yxv~{K_~)66;8%CArJb#v%T@{p9F(&r!@UvlveZk4CFB>=98qoUmq9;DK?sA zD`k+b64BL_SPZZwCX(3u^?}(;jJ3R9Z%Ega zRUS~+m;%Zglf>SyKV2#<$@u~Hd`sYhz=eT}0*eAw0Sa6kxFm3CU@=JpNE%4eAd&`? zlu6PMl7^C$MN&3N!>R-E=UW0-#KR(czD3gBua`!i2#XEx*Z&h*WY4z*?jT8fzdpd8 zZ(%c5%B+<#VfD9ZtHAm|HPhlfB#nv%Hjq@$ckBb31MGFDzN1Fk|vW>ND|zuXhYzwcy!$1croxUo4pF`Vv;P@dg|%e zP=}=1q)cE*^ZtFkb+gR=15~YzC@(puv}8dx<}EVjpIbVsw6J`k`kS1}!b;3x)SRI> zyHf}Ch^AjL1@9-RMC;hUg@OYI0tXo+O(kiX`iYyKi59D-tDgctGZh~psWcYA*lk8V zBkCW4Kh=nOOo^y7p~oP{^f;?#_ih>=&n?IYWlSUlg`gOeNSZ@Z8A)^3a>uz;T}c&` zg~Vhz1XIVYUeRVm>6|$w#qs~5-#PWSIp~w}&^mp~=Fcfcw`4o@*W=2{W^38o zf=_n*{7I9Bjv&=pxODsu0&nT8se~h8dUr`+VpO zV}!HdH#MgxPfY14!;D}bI7Tp?q(yPZ2=;?xsBau{yHC7vh`_Hk`H&#nT{wu&nPNe7 z&KK9uC4wV^>h8ipWp`oe5~eP;yRdX=4VSR|sAV=jsBSJCoTx~0Ngau_B*j6txv-&~ zp}nC4={Aw>UeayG;%0D0P}y8qT1wLL_~ybvwz+T+UWQHRwe;mdWmt1^5-xa75c*w4 z(iNq)wSq#H@PsX7?nTsVkhofLOsn+r=fYwmRGiDA;Jf1fX%1!p;fJD$;( z*yh4PjCF3&e2Hx?T*pQm!7af@m@hp{(rvNeqa)jJ#6$bX!A}e(1oqFE5;tl} zyqBa0*;Wq->klUk3KQV@MAwe1Igm`7Fb3bGil9;R>s39w>1$zyqow5;8$P}_Fstj2aRc@&x zd0dqtcPIs;j*uth4f#U;P#_cxg+k#_B|N&2 zOp;zdS-&}0OfEBk6sTc9DdxU=MqlGjxp_@p$9`-m`^=K(nqln zMj;>9)2AK}J*E28lZsD$!rbE-=2QD>`qU)NL0$;GtoqbTicfu3MFfGA*B7C0PUl>;A1SF- z;fK&sjG#h4h7N~*3LOdk9Qq~nYv{Mo@1Z|P`j(^vBpoE_5J}&W^gT&Gkc3YAFiAgE zhmNW46i&dF&AYkOFwZ)vBbqb)!ZvIk!3I!A|9w5wS?Ge!(8-;thYDliCllX`4rEAZWbe;*n|KH-K{$Jdcb?E#I24Y+nZj7u`!yEE!rpK7bEa_PFb;pjqGY(K z;!MB8FTyRDGvQ7Dzb^&x+U$F{ZMePSP2qNmHyx`ZRa}bUuHk-=Vz^tld$>oqXSi3m zceqbDJ)9BlOVV+YIg%4dP9#}JvYup~WPxOnWT`sbKQ6_=>NBI^EJ#t7<5HCIo|d}1 zt!!?P;@Ka|hq3Sz3y&wcktW4Sbp`csNq8F5;Z%|hvG8<~jrG*wtZ zi)1&+9+JHz`$+azhnK}gxI&%V2w%%Y7|=u*(&jeglm-$010r0_L>MDEsEKeLL|Dh% zMtDP*y;v09NOCw9zL(@kJ!SYn7-JF^4j)ov7-fO&5rjiIxn?-jhTkH&3CT@KhQ6AU+=AqmB)1~D zHOXyAZd)CWztkRIJw zd-W4bIod9Y;ltr0OpQO0+%XpZndDCORO9bq^`+*p@=~+hndyqX)GT+YsYYJg(>bD# zh>98`f}+N5b)<@`F=C8(pvH(PVvblM)`%@)k2oUEh%169*n{MrB=;h@H_3fSPA55o zPl<~|psC0}ro^E&l_+VOD@TS#hN()-R+N}s zM=DK;qa*oTi#3tlNFK?79 z0)@sS{(o8hE}LI*$`AX^Dy+a_Ytvf3U!eXhr*zt!(mB)AYZO>o)$&bcNf%chU06P? zB%WLR!l|`96|NG89-G@h=t@&BRLz z6>4^xelCn$#I;zxn%PTTZ0_*a#M-wmj$ERCOIe1DEMabR8Oa4z5A2LAOWcz95L)eu z$nwaQkriVrv^Oe9olZS)6Oqd!D4-gZ0L=#NAmjXV}vLGoOZ%SfK1H1$~t21<*s{qVOB5y`8q?}Lk0+JW5jl2`t9@#;12&rvzN-8T6R1j^aV1NF$86z?g3K5A)Dl7gPWIt4M zIk&(vv*J6F-%g9%e{gJOD-$cHR z9Ecnw`2vzJB>5te7m-{=GLd{S$(O8;d>8pX@g7 z`3jP+BKd08)^0V#loV%Hmdws9MvqlGwG>_1_zLCiF7{KzM@w-@Wnt;8er0ni*~?QU zE8x#jv?ZfRI0xg*sn21 zbJ^d2jp&luH?v>A!pg!~Wz&YoFMP7(De1GeD(i4@^+t_R(<$nWTBCNZMJ$SY^5wCp zgXAljoy;ZY&Mll%9Jf>d3bhm-?x$E3_vtIDhL3DBNv$X|1gn&G{ZKS~>h+VOEzz3M zl*m`n#?dCxrqO26=26^hU8}U_btEGU-$3$>B;Q2x&FiDBqOGHCB0omcqV1yXqa8@T zh2&dFzD;S(+euzY@+y**Zs&BZ`M=VFy%H9$uDVb)RJ!u-GqsIovi{Klrvb zOp@=2aXYGp)z%_-JPh52^5EU*vY91whLz6BE1WgIB)hPDW=Xkr=@HS9r(Sw=bRuhw zT(m}hbWC(?bX;_N6oa2NN^7hoc^%1jl6)7*cayw+eRNW^AUYYXF(q0QEsmCuj810* z$++8xZ=u7%4gUiqKUkM<{l9LFXcsaMP5 zm@j*NWg%X!9Ik#5QFUE(e!^1jXVz=i`g^r`7yL)fdw%qSQ`=xslvwj3gl&#R5yI}P zt$o#;mT*68y&=INz1g6{lu(P4qh4ghb(MTVhc-+QU^X zCgOR{VTH3xaw^LawZ>?ji>8=cqU$(Ub@bNgZPDAKE2DQrS4CGxW6?EHXyZ|mA0zp3 zlAj>?Ns^x;`Dv1$A$cpw&sIn8jNZlJLBHr-(dy`i=*H+Kc7OUD$K&sAR;f!pf;-<+I0?Rt%U`I*q;lT3~Vg^&6QL z`K9F;EV8k;<-}$33d>6i=dh;z>vy$rFZy)##~I~C(@QHMiTUNYZv2O8&I1c)m(E&P zU~&HS0_=HL^aaH=3xP0OR9;e9GNE+t^s+f6Wfko@wP`;_`%i(TTk$!S#Y&Z0t3T}C zxv->oYH?937Ix{_rG4klX(jE7(mHmT(!Sf&srYHfj=6>9vpaXpD;>eE zJ5K$pU0SQoS}Q#peTi$aF8W;b`REH#*mN7ouaf*4$*-@Az8rlex-E+TzCrSvBx6YO zHWQc&?Vf@6mCq@yTsW#^ZdrNd=+a7NSx=2$GpMt?$q1CsDk)xS!;AQAbuawz12pRXZi?5#^<2 z<*0RmrDfe;?2G%HoRYbP<%N}H=<}P`{cSZ5CFqWfXl33XJy1)TbtTb5(eKzwri_a2 zs%lrnMH(k^k?mY3&Ky0=bs28e?VK`~jTzF?b|xh1^t>Q88k36doHfMQ)Iz3N{BLw> zW!c;@sby+NvvCPaR->~XmNT?uAsbt$UwTK9N0*nCRaPZzws?~ac1IxCv{|dpUAiWB z>os8Dpuw5Lb4HIDpPM>o{;XL$j3%?iY8x{wCtjV@B6dqVVOUN^B?82h`IRLVRf$!e zD&5$e`9(z~B^VRzaJo!xuRniSPMet}3oFLq?|6Y?o+^FJSH)M^^M>UN#PI1|ES5!0 z$tkIgo8TuorRS9(r>O&H6;5MW^vB#mdFfmj8^2^RDMdTI%(~Q4B~}SlZs@j6#$4zs zXJG{fXStc|s(s656>m2+Z_yGD(W&{IywYEa?W&SkQCqk3uWi#dtxB$HRF$;0eTR-! z227ectL(V*Qd6^Xok&+;i44o>H=5-$u%wU$32n6fm#=uVujFRtR$!oZ;#b>UrtUps zJ*rGq4wiTC4F8%w=~d<`%bLFZs;pHuma89E*RIUA5GX4@ITFPX^~7&SFPvL)@;4UF zB5WTrG%I_Y+C+0;uQBRBOB7?4Dw`3&@781ugO$~84=F~BoHQ&a-qU52mlrNvJ7Ux@ zG@kNrs7I|Uv#C-Qq{z)fSpB+SW%_JnR z<>#ElSveo3Hk)(pxh`BLm&J|ba=0>XK6e4Pm|M=>!rjKL(vl*DF<9TIyc zW+rAO<|d9yEKQu9I6v{S#N~;raG3a(#K#k#O?)A7TjEEF`_xC=5);(Fxq|rL@xKy( zt}<(Z;pgZv%uFGe{Tlr(`eF2s=usu4?IHOCL^YE4lKkOa(LcG}$y{;*o&(rT@<%uY zM*f)OeOUh=!QxzU-2sW|<&0nIue_!LTo@^=jI`_2y+cQ( zXGmu2@|+c+M|)s9*`4ggu!;RFmh2-Lj}@uk3~~q6Z)U6ik8%fBSH=IGni#B3+$XI| zZkl*`a`WUC$t{yxCAUs)Q}r_?{zURuRiBakHOb$SjQh*)NdAH3!^rXEj+eSszKY~-ccRBgP!n=nhw?8gGj*#9Ck z%;;1!Zl5-)WZwLe3e2j{DVbSTF}tj!X5~hz`TbO{nWWR|guOX*a?(J}1@6pT+6$6F zE6@&f2YtXukOwA!NgU_M0;2$8pko>+2MfVPpbA_JE(4c?b< z+zn73-;>~ZfO7dzE+5L{LwS5Cj}PVXp*%j62U`$vzTd%7@F&OlQ4T-K;YT_AZUDRa zvAK{x2*Mx=Qb1#XGWdrA*vbz(`Ii8c!+#Gz{{C0NYhV}n8hi^5g73f&;4nA>P&aHO zzy%rs126##Kz#!a-~t}t0|Af;CW10>71#vc2Dokz_6*{CL6k9wGUA0VF4!Ej1RX(V zfN}@BgPx!_$OWYUZ5vz(s=)@Z5!?$N0WW}U;B$bo2VuV;>=#72gMWZy92Y_vL$FT> z*9@U;LVW@18^ZU(uwA$b7!Do+Pk|j^4?x-o>K=i;u{_E}VDCr}APtsBxd`eKNdxTx z>JUL4BB(>w6GPIKn?Ifcv=;*lQW&pNG z9u4Mz%fULZ6?_a1aa>9w!1q(oMk%ma%21F6hJk!A70d?n!9`#ZAb>ihTn%mjHvwEX zpfdD1Q@Ny9spD z1U}HDDZsUxv;-XiuHB?7=ni^<-XIs00$jhzN>B|pfQ~p5$FNFp9b5e!47F|0Ij4!_i505S{Ot@ z1{e?K1GIA*%992=r#%av2dH=2%K&9dgO=0KzG*098tk982kZr~cRSdk9kkT044ezj z2N!}x0P(ZkHQ)|#CxB+!Jpo|Xc29$M!TaEI@B=suj(}glZ{QDr`nPWcVEgtaU;#GZ z050GGuu1z&Pywz7_krgC?AiW%fNP-Xxel;T2Ofw(27Uk^>d+jt0IfhL&=(87 zj<`n0A%J>x{1L$B9e)PD0+t`zza!co#pXJpex1rQCvPAQ-w>utjIoqcg728TIIldUU=T+yd?gX!Fi5fgJ$a>HHCZjyrz}(Egnd0>qBa z&_U#;6v~+*atoX-vHRU3vAs5w(bI3cZE&68bJg=BVAFBu6+R7wd-Io1Z066fbw=+PUj`@DzY;x}t1dUjuJ|J>V4wuG=C2&2?J=t^=@Jx0}H2;0~}F ztO1XJSHTXj3!p6B&}QAxX5Efsc!z6uhaI|)1Z4pA>V6g21U7^F!Gi$y?~ZGAe+)bU zP|xnLeRtHU`>!0=1Lf?I0&uM!8K56Pd3y{3nE<-%aUoa&t^~-V$29440nP!7KsA6}dclsp(5Ah< z1Al;H;5f(i#&vo(0=PzRC+G_<0MJTrv`z0Acoggg9{`l0_s3u#_zZjr_5qhbvk}}2?&G+09@qe4ce)FBKpTL3(?@~PAP%MC143y3YLN80QyKr{^>UW=sNut0Q;pw+v(7D`cq&p$7R5G zGGK>{fdJRaxB{SkGTsEga9m%MuWt}UKniFKP|m(xKzGm!q=SB70DxZmLa%*M_P%2Q z%H0<>>pKM$1K6kU3IN^qy%C^XeNm>qF|Zcg2_6Dl!SmpCup4{?_JPj0sOch%GK{-@FaK@dQ~$;Q<>?Rm z^+!4Sqpka20M-NeY5(^)Zh!!gb^y{0h=3G;bOT`b0hu5R3P+SO@L`sMA2yY2YS+wi);}#|<(9wELhOfNKr989WI- z;JCpk^I(*5a0}2HpqztI&cX1%!TkYrJa`Dm1|tC4X>b9U0!qMiFcZuM%K*wY808v_ zat%hg2E)#StHDM9{S1bk2fqs50^7m60QMaW`wspX>;vC}V;q->vSo^(5kMU>Vb@GI zfQ~YQAPivJOxQCM<;g@jGUtGK0Jh7l0*e9SLFN?zHq3+#Gj9a2K_=Qg^I3rMWWE93 z20H+>mx;1uehR(-`@y&1AUMi#Lz)2CVFkNV2ha3RV$q?vd z$YF2<{K9cVp_iek&rl1n188L^{B>vmpiV=h0QDN$4s-yWKwmHbpgo3Wf{_5)89EuD z?n8?K>OHgq%m*mj&`ZG*fcg(z25thk0<_Q2I{?~dD9SqYD}Z`sp*&gev8>Jjh0H1d zg`fzat+S?s8DJJb9$6Ow*fDDrcnqLTv-SemE(^BHg6*Hd}&gnufO3tv z4j{gbIEHCB*nA}FG!nlX3EPg$0>c4pJTe!I0pr0WPzK5Y$~F>Z8;P=wMA=57Y$H*& zkto~9%fXG{W&n+iTnV-VXkp|&@EQ1$<3{-b@*ahHkAi(i!M>wV?@`e1D751!PYH-ImWh7Lz(0QkXZTzfRGJ$fWSn~z3YjYgSAPX(m_wi$f|xE5>x zDC_7q0rDKZ6TA=hfW6>Xj>}B|dVo6Q${+-yAO)m?rU3TI?E<=io&ar>i+bjwjdDi; zv{5d~kqiINEdnS@?sNd{=T?D>!6je`K-=V^ZE|6Y+`GU%U?bQJ?g!9J?ppxm%SC(T zLN~ea-Q4{EHp)E=VEf$Pz#o{twE#PC0vCY2@&ceaXbE7uydI!8fDQBdgFygw$V1ul zQ1-krU>qm|uwPy!m=DnQdC*rL+Awb!fZp?Z#7s8P=~zr0A zY@W9R!0vgldmikbhqlf`J@O8M?*ZzQcZB2et-uF@AOeyBY@Xj8z~=eAKsx9L(Ej=3 z!6Z-!(Ej&?hX(G>%cu=BY?ifp^e790rr5;z?a}_Z~%M<;1A>e0Dp4a_ynK_0&oKO_V}6L zYJfb(-wsv*=))NKOlG@% zC-emaz+f;G3jVj}XKSO6{rOTY?n9as(4g1f+rU^{phpuQ8~kCSvj z05WI>I)SdB2N(~~?vr4@NprxJ;8t)OfE_2Hy(Zlawt%O>`v7e;33ZwD3HS_r3D8!P z4gj>(q#wZ%@GJNO9OJkG382meA%MCTpne6gZNU(b3t-Cvl%e1pKmc_sxCx*v1uFsS zSb#bfYy|fL=%wHx@CbMeybDl<$!35$PDYze9u7tW*l+SU0NYJ21jS$~fE_2JeJ11j zlX2b2o52GBb)Ebucmkl#lb;1|gB{>Kup8_JAA?W9=KwaCjQSSB)`iedVSg|J%mB!z za0!5I3z1(T+N=%5oa2fT0S{pFqDH_8BA_Mc3Nir7S2PF=0ofoAj0F<_>{K)b6oc7dE~o(W zK@~tfimnAW0Mwxf_A6Qi)_`>YZBw)rJP%$1+raDKEdXs6y$e1EUx9DHLGV2|41NZv zN73&bR}6a;!yd)3M=|VC>;(Z32FV~5v;)vmaTjnkKv{~RmEyJFD94q^zyQo(IzSyt z&IRX#onRk8SxQirsp$Z=m^uRF0BBKMPRL>1eO%?}Nh}SIPm{uoU$yMLkPVj#AXK6nj-wfDq z##jLR&A@eMOaZ9pj7qQoz-}|(Ycs0AC15f5|C+k%;H?UFUBK%F>6DW0?r!N0>29UF z1p$>Vl@0;vM!KZCK^h4`y1U^=oa;O1pR;GK*)w~?TK985&w6L}%r~3in7#dcj&O@- zLC_%@X6PV$2lvyV0EPJ)chI3U<)}a%>eGn+n5V-pj6shbwy_i4b-2M(bl2f^5On+s z9d-1cjymdC5p#4jM@MsXbcY>>Fplv|U=lO2r;h75#8HlOinE;O5?64;9dDxBj`w)U z=OE}56@7L}Nfz?sJ~~yQ9xZWyox0M4-t=VigE`D+5r5*hxYKIZ zqJvH{c9OA^jGbicBx5HTJIUBd#!h$b z?k#9dTRI?Hcel{pEp+dPY~9^KcX!ZzEEABcyKcJcru#zNL-!?Y2!bBP@xC73*F)wW zmHCDm=%I&Rdo)BJJ(}??t?>RH-ru7$-RQ~p_^x}%&_h2x^wVP)Bl(3f=&HvgT`QkJudwfryRChV}s4tBGTgB;;+PI88SxX5L$a)aC4;~`IY&MWMqM;M=i zpl66Lh=k61>a3^EdfH`A-%-z5%te1a7qblCQcvGf&vk5MGuzn79`0QSkh}viI#q4|-!KegDHA`nr|Aw}apZJ^fG|-TY9Ra!hA2OZk(PybFSUp4~4p zQHeowI^jM2yr*AJ_H&xE{Db@KZ-)Lwv4j34@Sgtq=|2xQ*57x~-@68Q{(!i|=PT@Z zfM*Zr&yW1fU_5hx8yawr2RsgfA3gI&yZo^xwW-H?cC#0`emoQeKgs=*=l+zGV2Jk( z@ysEfIbqAOMu!t7VV4v97EhSXJQlJT zdz)Zy6D}gt1eqqtG~qU~OnA;K-V(;gAeb1P{Mg~d;dsZyKUl{`HnWYL>|sBLILdKO zah8X8$HZs6zvb4jUOj?O&P4ed_r=}#$8Ne_`Vn37J z)8r}4W-fL#c_BKOycD@7%RO1{$#PGYd-6W6BjedXmcQ7-cI2A!FZZyQDX-Ai6n#xG z|5P1Kjf%UO8k@MtHr35cb<0zKU>4pnbv@>tYTl`yJJqaH4{#WJntF-5nDzH?L?ANJ zh{>0@&ELNwG08|t0SaU8--}U#(v+hjm8nW~YEqkSjK%%@evbD+FwL{3>22C~3_|W{ za!*@^Z)%!;rfp(3Zg`sP(+(l~w7-#m+7+&GlRM~bx_wR8%XIsio`mG2Aw3z%Od;%R zdNt&mUXO+}qXjK#O)q4dJ`y)JeGKEV%jq+adHP)DW2e()o^Gepbw6G1=`v5(_w-|& z;wn?=!$pElzZk64B#hzV;s|vaps?_WDOhH z#8$R*jEg+uC2x4o#~`q-V3w@2+{mmb$UIB;v*KXZSy{=Btg~{H51r2{!q*hX-OMUO zIljYv%v#7n9tOc|&zhZ!I`rfZHnWHQ9O4LPxXe{;C6As_!oXA8a z19{Qo96ipFYmQ8FWSUbE-{72vG@(6iVorB@@dN$&iGjF{IWo?fk8bBIWjX86?Ht+X zY-0z$yE)f_V6HrKqY;xYiAze-;TxNq1s%?{@45CpSBG{0dn3zS zJ;p9V~DI z3+!lt`4`yJ0ynhaYl>5aYShG?ET~UIzGny{`Gqk|WHP@q9s60ZoDJ;ZAV;v91*bX7 zc`o9f7QE(T5G)J`Pefu6o4CYB{)Oq$=|VXceuw=m)YC#eE!5M(-x!BH3#TxRKbXxt z{$dN;*ugILa)3j~xKPH0Cpd-sUZlH4xp5nd`r!9y(Qe$>VtE%QL$1Y{@NF*6P66y< zacRm?5q&QHhDJ2Soh@!j8`?392~0(Yi@j&D%!?P|MT>R1coSQZb+Md_PjZF}T;d8> zk$drnAXwt=m&8MNOA;gNl9Z%D<|Q&Ok$FiD-0KqEE|GOfW!&tN>bTh@b*Yc+OPbIO z_qs&RC3;+^+sq9O)pzo!}(DBmKoJ0Pl@-My2e>}ttOP}+K zx4aL6W#(9x7P*(ny-e<9dC5;9icksJm&v?L=4GvDPbb{VvR-`8513(@yIH35Wh+_3 zdj3MzW!rHh%Vb{WMwT5$_GPj!yTg5CUG|u#yx=wO(EqYeLGWjY@aX5y)RaV~KZmmn zJN(n1U2ZSSi_?^T48fmSK8jzM#7yQepG7R?PgWrBa(S1_yIkJo2XH6LZzI=o9WD<; zrWNw6kY`0?qLPTDq{FSR(B+Dv$g`ppZem3hzM(obX@i?xAft{{;iyK@WiKxUNHgS=8 zwcb|iYqeaf-dDG!8$U9X5y-RpHzqNa>C9v{EAe}?`UVeq z!gF2*!I}^{T%*G^I$ZN5@$j9jvC}oWTVsD~Dr0wRWLYE2ntC+nJ6h8Yy{zfX02ZN> zHD+Gx9c%4sty$Nab8SNGX03Z&>z>!TnY9_nPiY$BH)5^lul4-3p1;=f*LwciE_A0C zedxz{%)NFBzhm~bW?wspc`QJlwf41kIr><8lm|huE*80{gJ-SN-MXz@!mifKy=tL+1IBbJ($@WJdYRXI&-$Mk%rNY4z3l5}BlG%s ztYRaZ*~U%|a2UTI>rZeBIoIFh4)=M8TV4Mt2sY?_!xzZDAv$K=@Fm$OOljoXP?0KB zqdtvjN()-jnjXl$LG}$lBKro}H;iO7)6nsT?d)PN@@|lKgS;E$-QXTJ_(nEd;9vg3 zcdHn{VEa6X9aD?+*<|;S1%Y7d4gik>rO0X#g?qt(fBqkYY z$v|eZk%NL1p%^8oN=@A2rusCYIp5I=**E#dH@THf`rh;hvypd`oSRm%hV}f#X7-@_ zO=ppR(fCTUz3NHVWby>B_gKV0N8@^6uU%T1o~k~h5P zBW`GGQZkX9T;!z?`rfMVttF_2>|1No0y(#~qa)pLUt4?A2lujdB5q=`&iOfUB zT?aUfth-Kd8ku*=yi4X?`rc*6UAJ&AyFLfOZW(u*dAB>*9hqpvHm1zeoN(bC}N}ma?3c97Xm$y54h* zo803ek9mq2_L^a@p7+M%D`ef9f>fj>J^3hwTiL7gy*l5k^S%1stM9$d_?DLFeXsm` z<=@+jK@3O!y}I8k_uffNWf~jsJ?)iu?{Q9Xmh;HHSMI%cxX&Y=@HPncML?(fWZjpV zbYw)2`?8Y@cfZfw?{hEv-2J}VxRZTy?`uR8n)4m4X-j*|u&)c<(D%OOoa99i?AOtL z&)RS9{l0%=s;x5aUeHx zACUWicO5828Omb^2kImL0eKI|dO+U?^nIWYKQMrwko~}P=CXjrEMpDp`HL-VV?T$m zhXa3eiL2b;HgX?$%ro?GFc$hhDDT0HWFb3xKPdM>xeu10H07v34SbsiWj*M&5B8-$ zvK}17P)0Bs*$<9mAxn_^pgkO1iTnrUKPdmf&B%Xn2fJ|Z2R{bEA@_U8yAQSDS5|WZ z_j5Qp@kvM$l98Sq$bUEw`LKh-g^>TS-VeL|!_}yXTRPm09~sOrMk4oNxerfZ67yNa zD&#&a=i$9r{NckK=OkxvGly^SJP3|NA}TS6O+~aM%PF8u%AO5MgF7mA3e=k zu49IycX2aEAM-Q_j+x_FV&pz1_c6JTWhNUr$c1}3Ci^j&kNHNAxs_urkm*=EI?$P} z{KPNJLC42*d~7Mp(e<&lY+w_<&tp5#@iFrryMX&Xb{RK*>;|`y`IyYd9`Pgy{*F!- zs?iPm{Cf-k@hJ$7yPM;>KQ8leeIKt#W!%Q`CN$?eS|k5)`H%ZXkN3mf93RLKhA|Jh zkK4&{cYWM@j_+g-`*1JE-N$j+kL&oje8*q%hWC69f)gRWAR_V6^NB(fr8uRq;}gEc z6LOw#7bj{U?}>Ue#GEI3(i>S%{J;QyW)Sk8koUw$^ncC-3uu59sn#Kse+-CI6|oxc5_uaPOy5kcwi+eyTdPs7oXCeM;Y_zQqiu z%y3G-r(``P>nT}Jjbj3nnTne^wGLgM+RiTaa)iG*$r;XJ=cnX8^#F68ddkNjI4$$( z2t>w>pEmz#*-z{LbS~sQU7ku*MefsbpKeSunT@&6+zx`XQOQYd zdN7`qxXH76I;*F%J2`}7=F>ztm> z$$qW@t?58#y3w0H^kV?_dhT~tu$pyj#Lb=ChOFm&L+AD*^SPs3<0j@kXQ$`f;yK^^ zxu?89=5sQid(Vd;_(%8u6vWQ{`H{ICeB){J>QA0=<~e% z=jA{D1O0KE=gn|_4C9%^6wGmc7jmDM`@G!ePjZ@boaYX*pMQg#=RXI*g>Xb73eky4 zGGx3^oKlpf0+n$m7iwVN7wXZFCUmD4-_sX;UoiUx_i|wf!;t;LXntiWa$eBm#aQIQ z{w~_l#Tjft=8L+&sQZhuU%ZDKx#%`7ehPw1A-+KVOY&dR?WKeyAvvi?OL|J9?@M*4 zPa~T19lobaZP4{4*)R2D1ae*)%LJw}jX#)$`?<7*6X^JojxSx{U;e{QU%G{Rx%7a? zLGW*QA`+RX==)!@{~L$+d_`iCBLBZd(C@!`{C75cvA@f9bU7PUXov1E>;7^deqb=a z;6^TwV>Iee7IR#_jNF&yzAX1;ySe-XonL+#1Xtw0BL9`RBqRxP zUP(hbGU9Ho6rvpN;);&1d`D|!z0#2`$b3cSD>7fv_Z2fJ_f;6xv#pBt2)1`zpJ{wniAQsrY93w$xcqb zrUa!i%hifhrY&+`)$`Q>{LD~>GYY+5osR5RWxXorRsCMwz!tW#lim0}uU|ugQPyJsAu%)`foHlislXo=sIn?EAsO?}@q^G&yM)2-a}`*L#(a^IZ5WPWElfAJ4);8rq9;#s$b zu$TkfM($fWzoqkAZ-T)8D7YO3*>B5!TlU+s-;R&`x6_f4EM&*6->!uw==%0mu5%N=FSp+Z!JSyx{T&(a zBqRy$`%Ws-l7Y-*qZDN+j~(2p%s14aHg#!0Bbx97I=!=v|AOFdcrsz;yXLz)8hzef z%{n%+iQTxFyJom+hP$UYi=Et+{q7y^V}`p=v4eZ&xR(^U@5y~n?t59$^SxZ;LH>L4 z-;@8Iy!T|i*BIU3Ye{R`(E-`-4aXhdo5fu8d{5qc%UFTj_vF4O_r1*=N7j31aOd~V zbBQZl;|7l8-d*IsABpr-LLc|-_r4w8zsS2Fcwiq7@==VEl%X8es82)m{6PK(-(rRb z-RQ~pnBleQkR^^pCs8+k16V?93}$S_7C&*O1SU@}u#gsvZ(;jx|{?_w`U_?wfQ z<}6ou5CrNDp7>UtL?jB)iG|Le#K&DcNkVdDev%)(KPgO6isROw=>ADLDq@x=Rnhqq zS)VNDI4^?WX(GO+G5wJH=^W-G|I;O`!3E0$ogzQ2hsa8y+1p_DfIsAALM`bItZTY_jw__^Z8FKz>LrD2EmI+q$L|U z(fx~j6r()yztHmwJ-;x+iyAbg1ubcVIbL*RB$JW-h3qe6f3c7yEW>_YY{d*Oj^a*U zoI%zXdVX<*Yxqrh@tn^=@G>4>k(gxY`K6v;rY93w$w6-9eOZYre1kiGSqq)N)cH&E zzm)xDbNsfv)Wu6VU+VMa%^-N?8+w(Unsj3O2=Q!z(kq zdcb3z@sc;Z3xd}Pko|Q=vfy2>_5E7kuig4%llg1*SdafzSsLW$Yri_9W%ea%{?9>^XsR);1zPe(f=D6-_*l9 z-~7QI?gYWxh`9H+rEnu}zo7=TXiO{Qe=Gmnj&wns~zX$J1P?~b+`dt;=^*cL% zC+j;|-^u!}GhOLHZ~E{918_I*~j!&2uB1WA^V5u#3T!H ze$eFyeSBEQMeONgGKwPe$8T{fA7%g89-V*ekDfmcVkq)|l>ejrAE)sLvzf<27PAkz zKmLRFe7wwc-1)~lxbu&)f7J6w89qfr$DefkNynd(AlIjqq$U@|s6}05{nVId$oxs> zPcnbf_a`%cviDEJ7|Cd4{iN$p+{tW^(2A{q2b2;4KXMKHM$=^J{ zoqTpDpY{IvLl6og5R=%%B|ZsBOa?NOjhy5mA2n%4OWM$$E_A0Sy&1{~CNYgan9Twf zv6MgA!a*)`l^fjV9uIlKb6)Y5upktYH6&|D*3efZA}J|IMH)6OMED7rBgh=Vdm@Zs921$0JBc8Bg!Sk*f_@|HWFH4O%u(cy zaF-`M=M``H9E2iGPv zjwA13KZlSt@^MZfb7Yw#%N+R%W{munFg~L5C?UQ;=TV{{ca#{!#y1-!KDntuFQ%{s z&x&HssHrJQbL5Vy_o!XaUsPR39n4UMGZOiu${%$ae=wVQEX4gpbuUq6kNOW6(RI}8 z+~N-RFhf)`M2n29(PWJ#YqW$UCK>J~T6T(1in8cDn$Dxuqz?6INMl;j9XX@9?`Sec zv;Sxln9T3!JlZVgvVhHOV+XsihiLW??GQ&e#tF<5?F`R?P;^4Zb$Q>giS&%9DE8y~&Lbu)3(qWie|j$4o- z$R4*e<*10ei7Rj1o($k;1~ZJ2jAs&4nT{RA^-aaqd)zgw=P!JxapjM@8#BZ`%~f9U zmM}gAp?EUKlR2Ku@nnt{1D(fq6lTE zitGt%QI`fZq6zKkL|1yyn?6iJ?u3h2%5vOH!u7bBgnCaXd%|yuocA@st<5 z#tkKMJBgwagV@AD--+CLq72BM$lWB$O+E@BZz6Y+s2v^gJtpc-FMeboLm18|enIbv z+Y<-xW6@nQGbb~1GCN9UN6G9c*{2|s-1C!%$BvT6!+w&RH@SI}7o|9*C`$z@^9^QC zUK_WSyd&mL-WB(i-2BPSpZo{<^AiIZ%xvr@`Hdiy!aGxBLhckj7|&|{#?De)L^mny zEX7@(VP7faPa%H_`$}Pkl+lREmzW{tS0ut5DN7@FO1V?YozgdvQa>r{(-8Sn%Ac|? zc9l}jl)j0SBN@$a=rH9h{$v+>Ily6j3n@=Ut~@xYsxpsnlcRgOr`Hs`cCDJ zQ$kIMeWdyvgi_moYWq$tbL#J~+tjkB?m$ll@H2xMhWx4JPd%0C z%w!I}>C_9^gWRdl;to@LPwK1O;1<5^)Ot=69y!yPBqkGjPE(cY=r>JW z8qk<#d`m0ZB5#_`3}pm8wElkD zRUGFrI#2r^eW%r3I{DMNjdX4!o!dw!ce-SxAT?>pMP3R}7+t3;jv3PFIi1Yux}ocI zed&*TNvHF4V~{)DAIxSs>)6Or3MXYLUX>wy=3gk_x!*BrA@N^d)ggKteJgV7)nRK2>=b2j41~-!F zCk8SYeP=RzrqTS0yUFA?FVjTi&$JeuWO^NhGJ9v{qUa#A88a`yJ~Ch9K9A6S=I4Y3 zp)7jN5{an9AU1JGL27(2Su&D^Y*eBijcJDWWRW>bJ38Xtv*o1+Gh?<~RHqZY@qK2~eYPJN&R8ZOe>VBEO=AX2aEIAevWE3+qAeZJarSQX z5W(sM3Z zbEU^k=W^4zbe$_FxyeTXlYj{I`umm|M!@}J}ka^%0rWv=oDd(Qs> zH(EfZ0x}hlsX!E>AzOji#6h+Kxu{N0%wAwKo>joD6ikEN7i@;y1v}80uIRAfAY?Bn zdqLR?%3e^H1?4a3P7BUqK8skweok|qOI+awx46rF-Vqjr3PncNLb4W$OF|Npj1*+2 z2=WywO9d+91`4@>LiK4x6I$aI3b}-EZT}Tv`6Pf z^<8uXe=wVQEW}L|{S$o`UBi0*Vhgesm9?m>McsMP3;fG}n7!ytWG{M;2SMoT$jJG% zF2C-CU4E^DuP^aF2oA6@lzD53G@)z?>6#JeZ(0#F= z8N@8)F18w77xSKCdM>sdzh}kva0=OrxpDtiS*Vz9i|Mx5Yr^;#go+1*<4cm0kAf7T z7$qr#oW(2QMvBW@ycTsaXYsCdN7mxK=}UipVjyn3_%QTed=!h=&;1}&B04$otP;KW z9sQS(yM){&uA%1=w|T-_WH0e42$c-+1rdo$0(4w5DJe*W8A{qmNtsK^T+(|=Ho~2h zbSEWsU9uZJ&~3?~$XRkUV;RpRrm&E;Y-Srf(R0be9ODG1k-ensC1o!udr8?#zCiYp zvX_*-RCwer6@_SIz)hF>ni70Fgj1Ei9z>Soe z%K{d&j1}zTAaa*Fitn=2NzQPN^IYUISGmsTAXGXzrD%zcN_$r6BiKusm}DbAg(ylf z+)WwXmoY<`+SJ7yWg60k_PC)kUFktDbY4dGGV^gOWtQUmEaTS8tYZUaD02Xr%Us}J z{zKno^j*d`S>^%ngHYK>$XC{lmyO3)n5C@yD4UiHWFj|3kh^S2?4YddWp!Ux=CZmk ztM{_s(VDglVI0%=gW1euAu^X;!+QQ=3+|?@-pk5bRV+j*Mg`D{iKoY~_Bzj>?_lZ4fH&yC`qI^13hoJwG#;VT`~W z<;_vv9Od<2-tClMfE|?Ad-;uQ#th|mvKw=he~8@WFt@yXlLKX5-05?;i0=lly9yd|JO;m6b6?)T`{`|xsh9YwXSu5zgf~*zXO9j1G zSi+x}y}~NiVh0uEuW*JJL8#(acxS~X=%At*EAGcWDup8&Zl=bgkYUHgfZ)JHa%Ud}+xyVC43Q`#PD>tAIGw{yJ*Mm@% z$YiB5c2Z?HW0}BYrZR`6$X`YNDyvzCZ?wuDbXw&QM>)<(9wU3z0QXTfBGHh$YHZv~ zRkvL=E%H{)k6l%jvua67Qw}{>tw&3AT(v(st~!XJxR0tjuKF9}n8*}lttx9(S*xza zZB+e>Ex7HfJJ`)$~o#YJX zxP_ak?l!8sjp{nCuH))%x_SZiVv(@9GtC3)QPqotnsB zy&LYL`Z~O``uiYMLkBg?SmQeeF^k14V+E_&#BSuTA%6{bQp26p_?t^y;Tku&!@VF> zGa|CrOh^)vlLonKW+XF(a4R+Ct@#alt|@2D1~j56&FO-!YYt=x!}*0V*l*2=%wZl2 zkiX_#e1A3H@Qx2bsFr?e>7$nY)$-h0X0FwmcDR*V-c!qaYW;*RY7J!sZnKsh*V0|B zo!k#XwG&YSf2X$ZtM*E^vW@NdbG6-E?d#k?H??o`1beP6TW#6uL?#aL(N!H?)zMWQ zv)5@uPx>NP9l7e5zmECqj6|+F=CAWRc2#F1|8Rv*L8xv#QjwZ8=)P`l3Q-hyQ@0fQ zuUmy`)Wi8nuuQ&47>&F1( zt+$AEtY-th>3aJ(%5hGiyL$ifA3Cge3mNLY!97zy8UL*H`4SR}*y8+w03?{AnLduS+o!&Y>s2R+eSL(gwGjFJ3;cQqWxJpN=Q zYtUswJvP)~!&98*4ClCk&KkP4hQ9ZPAA?XMyK5Alh(sYevNcLc8f0uFVjekQQjVCgNX)MG38?Qz$jW@Cx`)Mp=<2~r9vAb&g zJP0+hn*_cZbRCZ5}5J)Yg)!f*#o zL+HC{e3E0%raEq_nVVkZGFQ2d+)eM`yKedjciZ#@@;7}Ggqq3SEFtnXD~f#0WNFrqu`Fg6 zf1`)yak10pDKS^`f|R5T<*7tf>e7J5G~-+BxcLC4Vut3rZ2k~=n#d4_klcprqmwYygSTr1tR z(p4+nwDLc1^)c`t!^Qu;bwu2CYj@pR2d$G}*R4~bzt-uHv2_)?F&#T;t-IE`YwaFe zdw*;1Z~c<6Ak@aQ+r+{S+IU_Yv$jb=R(zLja$(jsW^Gf5Qj|s4Z7NceTGXK_J?KRr z`Z0i?8O$(7@(W`a$4q83mjywnt@+xTudO_76C+RC9~sTB_LWLtBzwX?Q*YWt24 zL8x7ATJRmMu#a}TFn_xfoZ@T{@^52>+83h)=4oFx_`m=4MY#X>-&6a~od19S6>2}_ F{{ZomN^}4K literal 294144 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 -oiTX(VeD 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⁢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

e2)iBO9!9u_5#RFz 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 diff --git a/AnimeGen/.DS_Store b/AnimeGen/.DS_Store index a5653a4cf3e0515c6e0155e571ae91f4493c8931..7837b5a0abe8c53fcca4169ba528cb6b2e74ad60 100644 GIT binary patch literal 8196 zcmeHMPiqrF9DSn&W34EHP%z+r0RQ#oaT`*sx6%b~MNJy3l4MhpfS%lgN5QM;MLhN5 zHxN8|64Wmtcu-MnJ^Ow$gS*pglG=kP{-(^lboag4H*f#-mjW=g;raqF51_&>c>D;5 zk|z75kF*1ROO;J-{j zo(~bbVC*q-XdfLMYzaV|;bz^<0nL{h(oUVE>UTS=aVVs=%BcT&xkC{U! zhjDTke`Mn;6l0H0U1aGnu|pj-0Zm{u0jb@OVi7C2j6UzVyngRvfPQ;pA!(+ao)bQc zCbK(fz20c24YDf9hl@WxeSf_;O|kx)ir&qlqpzGE$LPP$pO!erIow4P*YhpG8fL#d znyx6WslH}L6>KS!TKWlKG0sPG*+)JA`GrlKU^^xxW{B zJ0aJ|E=JMU^Uc#+Th7-AD^G4bEA(?g@~R-Q_tt=}y4cwDRJe5YV;QID>A~BxSI)ch zIx<%=sY$%R*YbP+=YzighWs3nDw^11=8#+1^osx+gASU&A5GvVI@=-v literal 10244 zcmeHM&1(}u6o1=RyNQYs3W}$-pa>S5R&Dhlq%pNEh!o-nqS9_YY@^9;$Zm{nO-WDc z#oh$#!T&@rdJz8r!INh}(2HLE%}1Nv?4~OeN|Bke`(|f;GxOf>y?xu65RsOy7eJ1%9NBXA<=`PiJ_2Us3x}< zni!6DL*i0WwuBVJNt2roO|GoT9g4-v-4z3hfgl5H@7_lfG)pt&`1kMM zmc4xyJCn(k?HtZpk&A zs$B6?u39cRZZi2r>*?*=x4&Q4<9hs1{C;-PZe(54tvhM6c9%WPn(ksw)^FH$d8=;b zZk39Sxx~N~+j7m4Rjl#Br9u&qd$&tg!EU7Ox>a!aJXz79>oGkxmpHbva&a^{WQ<=( zHiwLrORRqW+*q?2(~q7UxjZvpSz2Cs+FX6j>_YaDSqdil%LX1J%=S4U{(C)ogx57M zR`0w@eCMu-Sf^sQ9ro{|d~Q6*lWoL0RX2C7?zlDBk)kXu!ND$EUZG*SMK+bGj(QQT z!<2#hU0lO-6VFAe@z$%5CRqp$hRS0ML)z3pTN%=%0>@3@xy0w10@4C1*b>P;w7o91 zjj$`)FORb|t87~fK(cs-uMWeBeQ8g7U4 z>z-t~_d~BbUKkhJS)JK?Fa+V%Y4X|gufGJZ9rJh@?T+&6GtX9w(bCy<#G9j=J`b7Gt6>z@uV;$s*-z8Zj-??RK3(#A^T>@L!mHbZ_lqyrM1t*@ z$E#I$lwTk2M;&RAeFI$)UF1Y0h4^lL`C{VBcWDe?yU`2dJ5CA#Lw(dwJu*Rk0OKY9 z?uW$NpCT|qaP1dqJDkq}(=99+T(ctqFpMgS0mXn~Krx^g_)i$<6?Pcx{C~3h@Bjaa zwaN^|fMOtw0j)2S&7{$@d1}=O>Oq5nYaSOX4A&Bp55bK=SUW$C#{)Z#XJ?D7jc;;f vJtbvJNIo1GJ{)p4e+=NNgq|sM{QDo+v-`F!r1t+ZGSvQm>jZr7@BjY-WH9eQ diff --git a/AnimeGen/APIs/Hmtai/HmtaiReader.swift b/AnimeGen/APIs Requests/Hmtai/HmtaiReader.swift similarity index 100% rename from AnimeGen/APIs/Hmtai/HmtaiReader.swift rename to AnimeGen/APIs Requests/Hmtai/HmtaiReader.swift diff --git a/AnimeGen/APIs/Hmtai/HmtaiSender.swift b/AnimeGen/APIs Requests/Hmtai/HmtaiSender.swift similarity index 100% rename from AnimeGen/APIs/Hmtai/HmtaiSender.swift rename to AnimeGen/APIs Requests/Hmtai/HmtaiSender.swift diff --git a/AnimeGen/APIs/kyoko.swift b/AnimeGen/APIs Requests/kyoko.swift similarity index 100% rename from AnimeGen/APIs/kyoko.swift rename to AnimeGen/APIs Requests/kyoko.swift index c1c54449..84a6c168 100644 --- a/AnimeGen/APIs/kyoko.swift +++ b/AnimeGen/APIs Requests/kyoko.swift @@ -66,8 +66,8 @@ extension ViewController { } else { if let newImage = UIImage(data: imageData) { self.imageView.image = newImage - self.animateImageChange(with: newImage) self.addToHistory(image: newImage) + self.animateImageChange(with: newImage) } else { print("Failed to load image data.") } diff --git a/AnimeGen/APIs/nekos-best.swift b/AnimeGen/APIs Requests/nekos-best.swift similarity index 100% rename from AnimeGen/APIs/nekos-best.swift rename to AnimeGen/APIs Requests/nekos-best.swift diff --git a/AnimeGen/APIs/nekosapi.swift b/AnimeGen/APIs Requests/nekosapi.swift similarity index 100% rename from AnimeGen/APIs/nekosapi.swift rename to AnimeGen/APIs Requests/nekosapi.swift index 97924ea5..7ffcb964 100644 --- a/AnimeGen/APIs/nekosapi.swift +++ b/AnimeGen/APIs Requests/nekosapi.swift @@ -67,8 +67,8 @@ extension ViewController { if let data = try? Data(contentsOf: imageUrl), let newImage = UIImage(data: data) { self.imageView.image = newImage self.animateImageChange(with: newImage) - self.tagsLabel.isHidden = false self.addToHistory(image: newImage) + self.tagsLabel.isHidden = false self.updateUIWithTags(tags) self.stopLoadingIndicator() } else { diff --git a/AnimeGen/APIs/nekosbot.swift b/AnimeGen/APIs Requests/nekosbot.swift similarity index 100% rename from AnimeGen/APIs/nekosbot.swift rename to AnimeGen/APIs Requests/nekosbot.swift diff --git a/AnimeGen/APIs/nekosmoe.swift b/AnimeGen/APIs Requests/nekosmoe.swift similarity index 93% rename from AnimeGen/APIs/nekosmoe.swift rename to AnimeGen/APIs Requests/nekosmoe.swift index b366ba78..a6ba660e 100644 --- a/AnimeGen/APIs/nekosmoe.swift +++ b/AnimeGen/APIs Requests/nekosmoe.swift @@ -81,9 +81,14 @@ extension ViewController { print("Image loading error: \(imageError)") } else if let imageData = imageData, let newImage = UIImage(data: imageData) { self.imageView.image = newImage - self.animateImageChange(with: newImage) self.addToHistory(image: newImage) - self.tagsLabel.isHidden = true + self.animateImageChange(with: newImage) + + if self.moetags { + self.tagsLabel.isHidden = false + } else { + self.tagsLabel.isHidden = true + } } else { print("Failed to load image data.") } diff --git a/AnimeGen/APIs/pic-re.swift b/AnimeGen/APIs Requests/pic-re.swift similarity index 100% rename from AnimeGen/APIs/pic-re.swift rename to AnimeGen/APIs Requests/pic-re.swift diff --git a/AnimeGen/APIs/purr.swift b/AnimeGen/APIs Requests/purr.swift similarity index 100% rename from AnimeGen/APIs/purr.swift rename to AnimeGen/APIs Requests/purr.swift diff --git a/AnimeGen/APIs/waifu-im.swift b/AnimeGen/APIs Requests/waifu-im.swift similarity index 100% rename from AnimeGen/APIs/waifu-im.swift rename to AnimeGen/APIs Requests/waifu-im.swift index 49213cad..dfa2a18f 100644 --- a/AnimeGen/APIs/waifu-im.swift +++ b/AnimeGen/APIs Requests/waifu-im.swift @@ -62,9 +62,9 @@ extension ViewController { if let data = try? Data(contentsOf: imageUrl), let newImage = UIImage(data: data) { DispatchQueue.main.async { self.imageView.image = newImage + self.addToHistory(image: newImage) self.animateImageChange(with: newImage) self.tagsLabel.isHidden = false - self.addToHistory(image: newImage) self.updateUIWithTags(tags) self.stopLoadingIndicator() } diff --git a/AnimeGen/APIs/waifu-it.swift b/AnimeGen/APIs Requests/waifu-it.swift similarity index 100% rename from AnimeGen/APIs/waifu-it.swift rename to AnimeGen/APIs Requests/waifu-it.swift diff --git a/AnimeGen/APIs/waifu-pics.swift b/AnimeGen/APIs Requests/waifu-pics.swift similarity index 100% rename from AnimeGen/APIs/waifu-pics.swift rename to AnimeGen/APIs Requests/waifu-pics.swift diff --git a/AnimeGen/AnimeGen.entitlements b/AnimeGen/AnimeGen.entitlements deleted file mode 100644 index c3731178..00000000 --- a/AnimeGen/AnimeGen.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.personal-information.photos-library - - - diff --git a/AnimeGen/AppDelegate.swift b/AnimeGen/AppDelegate.swift index 89a9bb7b..de28abda 100644 --- a/AnimeGen/AppDelegate.swift +++ b/AnimeGen/AppDelegate.swift @@ -2,42 +2,27 @@ // AppDelegate.swift // AnimeGen // -// Created by cranci on 11/02/24. +// Created by Francesco on 04/05/24. // import UIKit -import SwiftUI @main class AppDelegate: UIResponder, UIApplicationDelegate { - var window: UIWindow? + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. UserDefaults.standard.register(defaults: ["enableAnimations": true]) UserDefaults.standard.register(defaults: ["enableTags": true]) UserDefaults.standard.register(defaults: ["enableGestures": true]) UserDefaults.standard.register(defaults: ["enableKyokobanner": true]) UserDefaults.standard.register(defaults: ["enableImageStartup": true]) - UserDefaults.standard.register(defaults: ["enableHistoryOvertime": true]) - - - // Tutorial View Prompt - let isFirstLaunch = !UserDefaults.standard.bool(forKey: "hasLaunchedBefore") - if isFirstLaunch { - UserDefaults.standard.set(true, forKey: "hasLaunchedBefore") - - let tutorialView = TutorialView() - .edgesIgnoringSafeArea(.all) - let hostingController = UIHostingController(rootView: tutorialView) - - window = UIWindow(frame: UIScreen.main.bounds) - window?.rootViewController = hostingController - window?.makeKeyAndVisible() - } + UserDefaults.standard.register(defaults: ["enableTime": true]) + UserDefaults.standard.register(defaults: ["enableHistory": true]) + // Override point for customization after application launch. return true } @@ -54,4 +39,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } + + } + diff --git a/AnimeGen/Assets.xcassets/.DS_Store b/AnimeGen/Assets.xcassets/.DS_Store index 59fbf7d50db7e2d8682e97dd1d995011dc17c92e..302514c2224647713592094f0c0209748f8b2671 100644 GIT binary patch delta 190 zcmZoMXffE(z`}7dg7xg4&qp06^RVcM>t*vIT2{r$lwN zk)ef-f{~>`t&T#qrICS-f{C$NZ7nBM8XF_geRdr2m-AtevK)}cdp&9t0G>n=x w*@{hLvKE^Qo68~=pbI8%VAGmBkBtYxUB)JS4J;GGE(2rMv3G7}zR;SSyf$ATQ_U+Lsogl*^?RBaySC7 oLoH!s)0jM$jfV{)FnK-OGPd5&Ai2rW>@qNBEqmu?c8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AnimeGen/Boarding/Main-onboard.swift b/AnimeGen/Boarding/Main-onboard.swift deleted file mode 100644 index 4c97a004..00000000 --- a/AnimeGen/Boarding/Main-onboard.swift +++ /dev/null @@ -1,182 +0,0 @@ -// -// Main-onboard.swift -// AnimeGen -// -// Created by cranci on 20/04/24. -// - -import SwiftUI - -struct TutorialStep { - let text: String - let icon: String - let tintColor: Color - let position: String -} - -struct TutorialView: View { - @Environment(\.presentationMode) var presentationMode - @State private var currentStep = 0 - - var steps: [TutorialStep] { - if #available(iOS 15.0, *) { - return [ - TutorialStep(text: "Welcom to AnimeGen", icon: "star.fill", tintColor: .accentColor, position: "A simple way to enjoy anime Art"), - TutorialStep(text: "Tap the Top button to switch image providers. There are 10 API options with unique images.", icon: "bookmark.fill", tintColor: .yellow, position: "Placed on the Top Center"), - TutorialStep(text: "Hit refresh for a new image.", icon: "arrow.clockwise.circle.fill", tintColor: .secondary, position: "Placed on the Bottom Center"), - TutorialStep(text: "Show some love! Tap the heart to save an image.", icon: "heart.fill", tintColor: .red, position: "Placed on the Bottom Center Right"), - TutorialStep(text: "Rewind to the last image with the rewind icon.", icon: "arrowshape.turn.up.backward.circle.fill", tintColor: .green, position: "Placed on the Bottom Center Left"), - TutorialStep(text: "Share the current image with the share icon.", icon: "square.and.arrow.up.circle.fill", tintColor: .purple, position: "Placed on the Bottom Right Corner"), - TutorialStep(text: "Access the image URL with the Safari icon.", icon: "safari.fill", tintColor: .blue, position: "Placed on the Bottom Left Corner"), - TutorialStep(text: "Gear up! Tap the gear icon to tweak settings.", icon: "gearshape", tintColor: .gray, position: "Placed on the Top Left Corner"), - TutorialStep(text: "Check out the session history with the clock icon in the top right.", icon: "clock.arrow.circlepath", tintColor: .pink, position: "Placed on the Top Right Corner"), - TutorialStep(text: "AnimeGen care about your privacy. Nothing is stored!", icon: "shield.fill", tintColor: .orange, position: "Visit Settings → About, to learn more."), - TutorialStep(text: "Enjoy your Stay!", icon: "photo.on.rectangle.angled", tintColor: .accentColor, position: "Don't forget to share your feedbacks!") - ] - } else { - return [ - TutorialStep(text: "Welcom to AnimeGen", icon: "star.fill", tintColor: .accentColor, position: "A simple way to enjoy anime Art"), - TutorialStep(text: "Tap the Top button to switch image providers. There are 10 API options with unique images.", icon: "bookmark.fill", tintColor: .yellow, position: "Placed on the Top Center"), - TutorialStep(text: "Hit refresh for a new image.", icon: "arrow.clockwise.circle.fill", tintColor: .secondary, position: "Placed on the Bottom Center"), - TutorialStep(text: "Show some love! Tap the heart to save an image.", icon: "heart.fill", tintColor: .red, position: "Placed on the Bottom Center Right"), - TutorialStep(text: "Rewind to the last image with the rewind icon.", icon: "arrowshape.turn.up.backward.circle.fill", tintColor: .green, position: "Placed on the Bottom Center Left"), - TutorialStep(text: "Share the current image with the share icon.", icon: "square.and.arrow.up.on.square.fill", tintColor: .purple, position: "Placed on the Bottom Right Corner"), - TutorialStep(text: "Access the image URL with the Safari icon.", icon: "safari.fill", tintColor: .blue, position: "Placed on the Bottom Left Corner"), - TutorialStep(text: "Gear up! Tap the gear icon to tweak settings.", icon: "gearshape", tintColor: .gray, position: "Placed on the Top Left Corner"), - TutorialStep(text: "Check out the session history with the clock icon in the top right.", icon: "clock.arrow.circlepath", tintColor: .pink, position: "Placed on the Top Right Corner"), - TutorialStep(text: "AnimeGen care about your privacy. Nothing is stored!", icon: "shield.fill", tintColor: .orange, position: "Visit Settings → About, to learn more."), - TutorialStep(text: "Enjoy your Stay!", icon: "photo.on.rectangle.angled", tintColor: .accentColor, position: "Don't forget to share your feedbacks!") - ] - } - } - - var body: some View { - GeometryReader { geometry in - ZStack { - VStack { - Spacer() - - VStack { - if currentStep < steps.count { - ZStack { - Image(systemName: steps[currentStep].icon) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 120, height: 120) - .padding() - .foregroundColor(steps[currentStep].tintColor) - .onTapGesture { - self.nextButtonTapped() - } - } - - Text(steps[currentStep].text) - .font(.title) - .fontWeight(.semibold) - .multilineTextAlignment(.center) - .padding() - .foregroundColor(.primary) - - Text(steps[currentStep].position) - .font(.headline) - .multilineTextAlignment(.center) - .padding() - .foregroundColor(.primary) - } - } - - Spacer() - - HStack(spacing: 30) { - Button(action: { - self.previousButtonTapped() - }) { - Text("Previous") - .font(.headline) - .foregroundColor(.primary) - .padding() - .frame(maxWidth: .infinity) - .background( - RoundedRectangle(cornerRadius: 25) - .fill(steps[currentStep].tintColor) - ) - } - - Spacer() - - Button(action: { - if self.currentStep == self.steps.count - 1 { - self.presentationMode.wrappedValue.dismiss() - } else { - self.nextButtonTapped() - } - }) { - Text(self.currentStep == self.steps.count - 1 ? "Finish" : "Next") - .font(.headline) - .foregroundColor(.primary) - .padding() - .frame(maxWidth: .infinity) - .background( - RoundedRectangle(cornerRadius: 25) - .fill(steps[currentStep].tintColor) - ) - } - } - - HStack { - ForEach(0.. 0 { - currentStep -= 1 - } - } -} - -struct TutorialView_Previews: PreviewProvider { - static var previews: some View { - TutorialView() - .previewDevice("iPhone 13 mini") - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Buttons/HearthButton.swift b/AnimeGen/Buttons func/HeartButton.swift similarity index 95% rename from AnimeGen/Buttons/HearthButton.swift rename to AnimeGen/Buttons func/HeartButton.swift index 8cce71d4..9a69272e 100644 --- a/AnimeGen/Buttons/HearthButton.swift +++ b/AnimeGen/Buttons func/HeartButton.swift @@ -1,8 +1,8 @@ // -// HearthButton.swift +// HeartButton.swift // AnimeGen // -// Created by cranci on 20/03/24. +// Created by cranci on 05/05/24. // import UIKit @@ -11,7 +11,7 @@ import MobileCoreServices extension ViewController { - @objc func heartButtonTapped() { + @IBAction func heartButtonTapped() { guard let image = imageView.image else { return } @@ -56,5 +56,4 @@ extension ViewController { print("Image saved successfully") } } - } diff --git a/AnimeGen/Buttons/History-Butt.swift b/AnimeGen/Buttons func/HistoryButton.swift similarity index 64% rename from AnimeGen/Buttons/History-Butt.swift rename to AnimeGen/Buttons func/HistoryButton.swift index a1991107..11384e25 100644 --- a/AnimeGen/Buttons/History-Butt.swift +++ b/AnimeGen/Buttons func/HistoryButton.swift @@ -1,17 +1,16 @@ // -// History-Butt.swift +// HistoryButton.swift // AnimeGen // -// Created by cranci on 24/03/24. +// Created by cranci on 05/05/24. // import UIKit import SwiftUI -import Photos extension ViewController { - @objc func historyButtonTapped() { + @IBAction func historyButtonTapped() { let history = HistoryView() let hostingController = UIHostingController(rootView: history) @@ -19,7 +18,10 @@ extension ViewController { } func addToHistory(image: UIImage) { - ImageHistory.addImage(image) + if HistoryTrue { + ImageHistory.addImage(image) + } } } + diff --git a/AnimeGen/Buttons/Refresh-API-Button.swift b/AnimeGen/Buttons func/Refresh-API-Button.swift similarity index 96% rename from AnimeGen/Buttons/Refresh-API-Button.swift rename to AnimeGen/Buttons func/Refresh-API-Button.swift index a5782eed..0ba87c57 100644 --- a/AnimeGen/Buttons/Refresh-API-Button.swift +++ b/AnimeGen/Buttons func/Refresh-API-Button.swift @@ -1,15 +1,15 @@ // -// Refresh-Button.swift +// Refresh-API-Button.swift // AnimeGen // -// Created by cranci on 20/03/24. +// Created by cranci on 05/05/24. // import UIKit extension ViewController { - @objc func refreshButtonTapped() { + @IBAction func refreshButtonTapped() { guard let title = apiButton.title(for: .normal) else { return } diff --git a/AnimeGen/Buttons func/RewindButton.swift b/AnimeGen/Buttons func/RewindButton.swift new file mode 100644 index 00000000..ac9a5f5a --- /dev/null +++ b/AnimeGen/Buttons func/RewindButton.swift @@ -0,0 +1,18 @@ +// +// RewindButton.swift +// AnimeGen +// +// Created by cranci on 05/05/24. +// + +import UIKit + +extension ViewController { + + @IBAction func rewindButtonTapped() { + if let lastImage = lastImage { + animateImageChange(with: lastImage) + } + } + +} diff --git a/AnimeGen/Buttons/Web-Share.swift b/AnimeGen/Buttons func/Web-Share.swift similarity index 95% rename from AnimeGen/Buttons/Web-Share.swift rename to AnimeGen/Buttons func/Web-Share.swift index f9a606bf..2b259543 100644 --- a/AnimeGen/Buttons/Web-Share.swift +++ b/AnimeGen/Buttons func/Web-Share.swift @@ -2,7 +2,7 @@ // Web-Share.swift // AnimeGen // -// Created by cranci on 20/03/24. +// Created by cranci on 05/05/24. // import UIKit diff --git a/AnimeGen/Buttons/Rewind-Settings.swift b/AnimeGen/Buttons/Rewind-Settings.swift deleted file mode 100644 index 76b25bbe..00000000 --- a/AnimeGen/Buttons/Rewind-Settings.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// Rewind-Settings.swift -// AnimeGen -// -// Created by cranci on 20/03/24. -// - -import SwiftUI - -extension ViewController { - - @objc func rewindButtonTapped() { - if let lastImage = lastImage { - animateImageChange(with: lastImage) - } - } - - @objc func settingsButtonTapped() { - let settingsPage = SettingsPage() - let hostingController = UIHostingController(rootView: settingsPage) - - present(hostingController, animated: true, completion: nil) - } - -} diff --git a/AnimeGen/Buttons/Activity.swift b/AnimeGen/Extension/Activity.swift similarity index 98% rename from AnimeGen/Buttons/Activity.swift rename to AnimeGen/Extension/Activity.swift index 13bbf889..d02fc7da 100644 --- a/AnimeGen/Buttons/Activity.swift +++ b/AnimeGen/Extension/Activity.swift @@ -2,7 +2,7 @@ // Activity.swift // AnimeGen // -// Created by cranci on 30/03/24. +// Created by cranci on 05/05/24. // import UIKit @@ -59,3 +59,4 @@ extension ViewController { } } + diff --git a/AnimeGen/Extensions/Gradient.swift b/AnimeGen/Extension/Gradient.swift similarity index 95% rename from AnimeGen/Extensions/Gradient.swift rename to AnimeGen/Extension/Gradient.swift index 355b6f14..39f30d77 100644 --- a/AnimeGen/Extensions/Gradient.swift +++ b/AnimeGen/Extension/Gradient.swift @@ -2,7 +2,7 @@ // Gradient.swift // AnimeGen // -// Created by cranci on 22/04/24. +// Created by cranci on 05/05/24. // import UIKit diff --git a/AnimeGen/Extensions/ImageExtensions.swift b/AnimeGen/Extension/ImageExtensions.swift similarity index 95% rename from AnimeGen/Extensions/ImageExtensions.swift rename to AnimeGen/Extension/ImageExtensions.swift index c3ad6930..27cd803f 100644 --- a/AnimeGen/Extensions/ImageExtensions.swift +++ b/AnimeGen/Extension/ImageExtensions.swift @@ -2,7 +2,7 @@ // ImageExtensions.swift // AnimeGen // -// Created by cranci on 17/02/24. +// Created by cranci on 05/05/24. // import UIKit @@ -35,3 +35,4 @@ extension UIImageView { } } } + diff --git a/AnimeGen/Extensions/UIExtensions.swift b/AnimeGen/Extension/Tags.swift similarity index 97% rename from AnimeGen/Extensions/UIExtensions.swift rename to AnimeGen/Extension/Tags.swift index 118ab297..0726e74e 100644 --- a/AnimeGen/Extensions/UIExtensions.swift +++ b/AnimeGen/Extension/Tags.swift @@ -1,8 +1,8 @@ // -// UIExtensions.swift +// Tags.swift // AnimeGen // -// Created by cranci on 17/02/24. +// Created by cranci on 05/05/24. // import UIKit @@ -77,5 +77,4 @@ extension ViewController { self.imageView.image = newImage }, completion: nil) } - } diff --git a/AnimeGen/Extensions/popup-Banner.swift b/AnimeGen/Extension/popup-Banner.swift similarity index 97% rename from AnimeGen/Extensions/popup-Banner.swift rename to AnimeGen/Extension/popup-Banner.swift index a2469c3d..cfb800ab 100644 --- a/AnimeGen/Extensions/popup-Banner.swift +++ b/AnimeGen/Extension/popup-Banner.swift @@ -2,7 +2,7 @@ // popup-Banner.swift // AnimeGen // -// Created by cranci on 17/04/24. +// Created by cranci on 05/05/24. // import UIKit diff --git a/AnimeGen/History/HistoryView.swift b/AnimeGen/History/HistoryView.swift index 749bd649..f4fea4f3 100644 --- a/AnimeGen/History/HistoryView.swift +++ b/AnimeGen/History/HistoryView.swift @@ -2,7 +2,7 @@ // HistoryView.swift // AnimeGen // -// Created by cranci on 24/03/24. +// Created by cranci on 05/05/24. // import SwiftUI diff --git a/AnimeGen/History/ImageHistory.swift b/AnimeGen/History/ImageHistory.swift index 93b667b4..b7e12cd6 100644 --- a/AnimeGen/History/ImageHistory.swift +++ b/AnimeGen/History/ImageHistory.swift @@ -2,54 +2,15 @@ // ImageHistory.swift // AnimeGen // -// Created by cranci on 24/03/24. +// Created by cranci on 05/05/24. // -import Foundation import UIKit struct ImageHistory { - static var images: [UIImage] { - get { - if UserDefaults.standard.bool(forKey: "enableHistoryOvertime") { - if let data = UserDefaults.standard.data(forKey: "imageHistory") { - do { - let images = try NSKeyedUnarchiver.unarchivedObject(ofClasses: [NSArray.self, UIImage.self], from: data) as? [UIImage] - return images ?? [] - } catch { - print("Error unarchiving image history:", error) - return [] - } - } else { - return [] - } - } else { - return storedImages - } - } - set { - if UserDefaults.standard.bool(forKey: "enableHistoryOvertime") { - do { - let data = try NSKeyedArchiver.archivedData(withRootObject: newValue, requiringSecureCoding: true) - UserDefaults.standard.set(data, forKey: "imageHistory") - } catch { - print("Error archiving image history:", error) - } - } else { - storedImages = newValue - } - } - } - - private static var storedImages: [UIImage] = [] + static var images: [UIImage] = [] static func addImage(_ image: UIImage) { - if UserDefaults.standard.bool(forKey: "enableHistoryOvertime") { - var currentImages = images - currentImages.append(image) - images = currentImages - } else { - storedImages.append(image) - } + images.append(image) } } diff --git a/AnimeGen/Info.plist b/AnimeGen/Info.plist index 18535575..dd3c9afd 100644 --- a/AnimeGen/Info.plist +++ b/AnimeGen/Info.plist @@ -2,22 +2,6 @@ - NSPhotoLibraryAddUsageDescription - The photo Library Addition is required to save images. - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - - - CFBundleIconName - - UIPrerenderedIcon - - - UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/AnimeGen/Base.lproj/LaunchScreen.storyboard b/AnimeGen/LaunchScreen.storyboard similarity index 100% rename from AnimeGen/Base.lproj/LaunchScreen.storyboard rename to AnimeGen/LaunchScreen.storyboard diff --git a/AnimeGen/Main.storyboard b/AnimeGen/Main.storyboard new file mode 100644 index 00000000..ee0e7f40 --- /dev/null +++ b/AnimeGen/Main.storyboard @@ -0,0 +1,1689 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + App Animations: Choose to show or hide animations for: + + - New Image Generation + - Previous Image + - Save Image + +Background Gradient: Opt to show or hide a violet gradient background. (App Restart is required) + +Display Activity Label: Choose to show or hide an activity control label displaying session time and images generated. (App Restart is required) + +Enable Gestures: Enable to utilize app gestures: (App Restart is required) + + - Swipe Left to Right: Last Image + - Swipe Right to Left: Generate New Image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default API Selection: You can customize your preferred API that the app will utilize upon opening. (Only works when opening the App) + +Load Image on Startup: You can choose whether to generate an image when the app starts or not. + +Display of Tags: You have control over whether to display tags associated with each image. + +Display nekos.moe Tags: You can choose whether to show or hide tags sourced from the nekos.moe API. (App Restart is required) + +Kyoko 'Note' Banner: You'll be notified with a special banner for the Kyoko API since it's very slow. (App Restart is required) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AnimeGen prioritizes user privacy and does not store any personal data. All generated images are not retained by the app. If a user chooses to save an image, it will only be stored locally in their device's gallery or on the HistoryView. We are committed to ensuring a secure and private experience for our users. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copyright © 2023-2024 cranci. All rights reserved. + +AnimeGen is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +AnimeGen is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with AnimeGen. If not, see <http://www.gnu.org/licenses/>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AnimeGen/SceneDelegate.swift b/AnimeGen/SceneDelegate.swift index ffbabc61..9d34e04b 100644 --- a/AnimeGen/SceneDelegate.swift +++ b/AnimeGen/SceneDelegate.swift @@ -2,11 +2,10 @@ // SceneDelegate.swift // AnimeGen // -// Created by cranci on 11/02/24. +// Created by Francesco on 04/05/24. // import UIKit -import SwiftUI class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -47,5 +46,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // Use this method to save data, release shared resources, and store enough scene-specific state information // to restore the scene back to its current state. } + + } diff --git a/AnimeGen/Settings/.DS_Store b/AnimeGen/Settings/.DS_Store index ea35cc3448820ed60560e5a5348f1065e12a668c..9db38b7474aa6fef59500c174069358e77be0cf4 100644 GIT binary patch delta 229 zcmZoMXfc=&$z8&r%izpV#E{C6GWjCo@_H5q1_oXRM}{PZe1=j6Bw2<`Ag?$l-7q*g zKeqs=ih;ph_YZ#6x%noCPFHR*)bRAQVXu70DEmiX!JIS&AGb=bS-8 z5sO$vq3hi4zN5#x=iYwro$fK_t{;1?HD|50_WtHKzqLcPHI+z-9uffn08$lY1zi9D z3-QNAfQR`dJgB6^G!VKf8@U4jJS=})SnqSBJplklfQo|bi}zT23(ao#d*WMG#?7uD zXz|^vrz>A1pu=8yp=g9nwy&(kcYqVbeox}V$1rSb{TJdCcs1bPjUV*~OjIlzAQ0 zw*egSR_(McmqwPP6`Yd#+TCN6?|H?Tc>Y`Hkn8d4p~gGbZbIXq|7nIBS+miF&OTA{ zvvy|nXzTe|_QbZ(fgXF&G>^Tp#jx6QN{Q3kA7`q!q8X;@UHAc95svKP_7U2d zt!>P*0+S$Oo_+7FAO@W@=`W;|ycQSp94wJ&9q}5;xJwR=s?~3X%yiD4<50Q=^efT$ z1<4z#wHG^Br5DQCvjY`jqI9i^DmTYgNdujI=fRg6eMYWCDkNW8p^g)hZ zM>rZMF#ib9ch4a`;RlQQ)bVU#<0Ksyx~*D#cE&GH7mJ!w_e<+v>w|9IA&bx2l;t14 zf>Ta^x}a&;SzUmRkVr3h%6kTOsngXiL5%Q`%Z7q$ylLBwD6!T)TW)+C z2!*7XCPXRw6TW|eRyx?vjL8zY1G|hp8GN}*R@aLEZpO2(t5oCN8SwDji(nSZ9-2ps zW|GED-$T`C>=ZU3f>yl+*wM z?Tvb@!LjE1$)5O_Hohyc=A}C=*(X)gzI<;IYo!WUay#G7Y| z3b|f4iC9Jx1E9_M{g&HIo|hD7UX%LeqWW970dhtjL3-Uj$^qdk*SrvX7L!vaLNQH5 zAq<~?;*!0{{{j#7yZWpxu+`$>_H#ZfgXu|BBZp5v>F=Xyl%I=Ho>~6j&w@?1jwf|R zU)VPsA3HXlnStWW!$$e(NLno*@khe#S6h^|U!j$MH-|0CUbaO0^l)h9lPfw^mz=jo-sq|7<^4XxIFL!Vh}vlfLFcb-V(#W{Ut;?b26^d57`!OlxeOSRXA-o;HvYxhC1m zqheGRCF1tPf(dn167HPTcDOWBW53k>zQH_E)^XpbG5r-cSB3n{8G+8ro&%-q_)EbZ zt7<2nIV_0E3672%Q{m|o5;M~o2k)XD9+&~RS~*Nz+aUy`keul=pkwWoed=g^!J6&E zn{BxR_i$0mJTQo1%lBq5+pK}fOS+YOLq3w+5?jM^=B^lBH0EgNrt*2bFDPu!?l+f0 zcbF~a@NH=Nxs)ZZiSv8y*bu{s2#fnSnP+YE*H3cWZ<$NEsj31*c4mtfN5tP=zm`O+ z@YQ%Yi*lmRUGy63YWIWg6buek8jC)@oZlH75{NmD7qOW9YTfdt+oV3EtzPrTswD7o zbJ1=cb*!B=R7J8-$d#FDPZRRzHa*MDm0Z+NF}mmTMWUVKKW#(pnB97_Jt13a$kbtK z%iQ6LlZ#FW{w2GVvQ{mNL*!3va)I^Kce9;3ti4OaI8Xh{pY{3Ef&X~(MZ5;)jm>f2 z|8XYQWFBF}=|?$2R9Xm&@*jdP65EQDZrj}`MpV3caS)_89oUn6@kvM4u!}VL*BZ9& z>%P6urZf^STg#;{eB{j71By)9eaj$9RNAk9b)O=5A=ljQ_DT6J98m#tc79tW&fjwO z-5&J{TU?efI|o}_drnq6y8L=Di%9btpjY02aX2+TY-fwft9EI94jIW-kH3*_Zfy8$ zuswZlz&Yo-*b@MAds@XrA(^%92)mCK7Uii9af)5ZdWP$ZFxJ`GKQ1+GPuvXo> z%l>TJ!GhYkh!;|3r#>r#s`6;%eER|-!P~L;)cev2UP+`&KRjDo6@AClQU2o9sR(C7 z^$you^quSc!+N%K_af7^S_^}Dp>w02Z&w`L?4#eZJg%-M#a{;IYnT(`(!Bk7$?B>0 zNG?Mc3j>}7?)%^yuh7_N>MK}v1QNekzcD#`y<@Yjv-xwkzW&0aZt4!i(2nm-L2`qC zMdDpQERju3pIf9edzg;XO9VN{=CHXNzqeC-RUk!37wl*XBLb+VV- zn!!dee7BY6^d!Z%)u^OTMGKucx0cUq=Jwz~@e{Gr?k2+mL7Gi#4^2OQBQ+ie8k>ie z+_Pr4y8i8G7vf#(`uw9DZ)ceQN<}`II=z$0^m|=pGF)ok2?p*t^`a(w-(SsrMpORV z^g^$YJTX^Y0sa}4)$FOjHE{m$e&xf&k3B+V*W$`(P8{hAK zbKmzvai~I9KUvQa2?qjCzQn!o;sw-DxW$o1CH$WwSdf5!?(WYU<#^TOQVN~XDeiYu z+;4{1k1o&`nXD_mEAqba(!a}#jHb-jeMWPGHScU^;XK$iYPcAsuE0)Zq?fl@*W-$2_n=O zJ>Y*ctZ^XX%_)5w$F}+6D##am^fVrn^@`4XO;dbFg9_vN{AZ7SBXx}zYl#6=s#a^y z;Hf!*i=Ek(@vo{vgsA6W<8I@NALvd!3guf_@dMz_)Pn$^R^_h<Y zy!3O@Ur=}>3x9%?0}Z4qAB4P3|G*T(AQS~rx|0Y*G7IlAt+}JRslJjTm_|L` z{U~04K_qlJEaW|I>Z8|^zVz9AUI8hKg|ncnW~`^hY}@fmKZzzdHf_2;H`?TAEN)Hb zKm&Oe|I<|c>A4JE5YIht9B+nmr|KzxLGG@=;5oAwO!vT8iZsYa;C_q2wStxoD3*2_TDg_uTgvXcocq*65QCPKqePWBB0GL&v%+@hK#)odf z3365=4=w?v-q*QOY#yT_R2X)WvBXaT<+z**VWyNiTKLXEub2Swz$U&8MH${Kp;5(i z))((6v(NozG|ekiUGnQ1|MP(PC)={rZ&ngbvm4HbT3=wdut4$~k13OQ$orpYgL?db zEjD6`I17AJ_5%!4NXTo4S2mW>b^S(t(Km{!7D_2>q&u~v?mbU~y zf^oEy3;S;n_UD-MANclv)5vwwrf|iSkfzx=_?egMNI))f=|gn)KS1SwakbZ-`s<}7 zh6|Mr5rB9ZP*<`Pc2Wm8`?&LK(uOz-B3Hh7pAO#>a{QMe{|LSRvXQtkp%u1B9=9RU ze*C*r)N5EAkpYi}Nq!%}a|7-)rG$tHG4TEiT>qEO|Cbu;6RvQ}w(XWgHv|0N4N6A0 zUo{30I86=Ksa?Qtns4`0>W`!=OC^Wu1S<#;e@h2SgLN1vjmcav0X08fH<%cxh=OdV zK+@!8lF2YVBH`}55MD+l{2O~F#-%|7`djC*AoU**EWY}4k(gtkuh4k|G@lpGpPrOn zwB5C|rRl>97=)|fNu+q}z1f~(xk!g1W))Gm>8R{Nx&UkcztQfZP-R44dLgU~=aKM1 zbs@~A8Kh!|3Fq54S-VKwa)~ZP)V&*Az%U;V)hX^eb@nJI&Lg=CwmqyKYz=dBhe(Ve1e}h5_cDsHVm^$Xcq=VOMs5%l_cJW3Q%4j0q^mXuL z^=Cb^y;~%`&L1_F*-^7z0NH(8RP)VMz|BQe!1dDleRjAUJQAxHqf~%33SfemjF;gE z&`Vys0vW-bGs#?~Inc*#0eKDdR2B7W=4vN#a(?$s*eR)+R@kLx#&_@A48gW+?Qqb8HXC_w zz6hf!sf2H>nfcpnK8?;_)v39VT*aS19N5g;6tmqRJ?c4w_7fJ#Uu9$Zg?kJXB0^`) zo+%E$K{qqHl;7dq78DpG<>Wtn5E82cd}b_|MfNe387XHDq=Iv&RK3PyXR*#qWJcaB zidWR(>uC(h=vvv-|5}WZ$t6Gx)6b~il?ykzGcwCC9?a8)B#(!1nDiEj@-cm?-V~ zC?&=;W^Ebi*HxURYuonayguGubRSe&;kfw18q#DfZ$;RPoM-)fJ9xapM3_w5i3C0l#QIZ#s-nGn8$V@qz$Dz;QEm8>xqSh-pujCF;%zt4-yU=Kh!T%Z6pzNMDe@h3`;*U z%j3`rP0!8|raeP>Q2&NUm5aC$T(#b{D^%_3YTFt}hyZ);gLxIE|GQ>uF6Llf+_rRP79x}~I=^>2SbW8!P z-0CO6f*o8^U-$d$0yzbj(rm;?$TGXr>ovA@q_=frog#C6UK|Ezm2f|ZJbiHZUNrs$ zU&{3LgNZ?jw^;Gd_!sE2^~a+=ipFW~R?_U)&A0vN4<`q+Cq2=4QK>UWnT81eE)AIhttDRkLP4aW=+6HmT2 z;?c02q=`rfVn(+0yc>MX%!s^W*$|njeYPRe_S0`n zoB|+AZQ$(aNyR-H--~1RDjb+3qYrw9CJ(P6qL-znDiYE9#nI*xQA0o_OFj8m6dsOS zZlDMAaH@L#EQp7Tf%mjC(dn^=@dH_Ef*r%{Fp)l~ZHg!yGm#9`kA8+`lQ<0#>uTdc zaxj*{Y{X}&W-Nb}_=z%S*2^cWI1BMMK!pQ@Y50elx-WIl^DTtZz4-Xp%AI8|KU)bJ zS`#MKJ$BbI|JKM)fFSK*u`QnL-E3qDDcat!4lfW76Rb#KL3Tk6dh^5Dx^`JAp1&(2 zsxC0XSxCO0@P@Z(!YzpPuuLe=u3WF5B6a|6+k-Pf=3;bX=}2yTRx^N8d-W{f^a{i! zTFNsnWRc*L8#X--3y!NaExqDWNNN)J$P@hW+^Jc$8L#)++BTe)D3|~NUaP7vCXAtq zLr}^ld{Pr@pU|LijZFVTtnG0_Fmy6lh_3yiHMc$#_LTC?5CQ}D;st)Rmuo%1aB%8O% zWb&{`6@3U#4?_*y&tf1#3!eJ15+L3a2%Gib&ppCy%D4McQ88i|C3159qeYN2#J_Fp z=^c%M0#ldD1#S$5xH()OGMaimBS$E?R91VpD&lc`vACa5t&=1wZ;OWoE z9I+pRTUNWQ|D?YAUrP1=ty^)-(k;1;7|vZB*xIj$A?v&k&#T?{^Uv=1Gmibe`uuO* z{At}fLpHWk&K+MRqduSYoja8W3t+@Df(58}o{0^xiBP}?bUzFw14Ii^&;uA9fnore zNo6n~us8+@__?*tnQ9oEk+PI@AC!DIxF^2psn*OU z(}rHp8n~5k3+Oy7)Y_$7vEQ6$k6jT|27jfZn0-9n6==2FH#AaW^L{-Af=UsGd+a^1 z`21cOOs?*qp#Yn?wk;!Ff2n0a{G{uWdv8j3i~^207|4_dqZKdi@mAc zXe!m+5~P$l7eqpF7`m4;0|i9$r=1T{Irui!oF!AxeO9RbQ0QzvB%Y2X6XUXxvIJ4~ zabzATDJZ0q&c0RngvM?e-%vr#ik`)h!;4~&``Qx&0xGT~7x>Z40WOH>4Grm_<7nMW z+E8cQf>txGfCqqBFk|p4Pfq-%BczjMWPur5y-7D1`&D9q_N~E$#v$R*+!j6OOMTGK z@N}GLrsgMo$GXJv3QF8$GNNA}6&U$uVrVJvfcqo_3vl#eo?{@hb}Qz>6(|Z|O^O=5 ze%UKZZIWd@3IfFG)Ia4Pu}xgtmiFBGNO)NK%(qV*P) z;_jlBhK>C?T7+(%Rfa0|d_k*!&@~S2uMb+ns50*Ln{mRH*V$e`$ubOsn{3&{`N~ql zd9yijJ#V{))?w2qT*@=n_c-Rroti8EWJv~ML2Sx?poCi0Yxa}b>p#~4 z>tl1Nv&GIkYQs>`Yk(_X=u)wxUs3qu+XHQf0D}vggif|mMWC2>uWGpw)7+p%I=D$# zaA#I2_CzznJd!Kcj8h2l0>(9?iOmuC7Vf_Ensn%zhbIS!xSysxn1sTMlTQ|Ud~x&M zn!V9vB4X=7wyFvkBNG5#-D#3GPZq$>;|JPVczQi6KvwgxcWsl&v}Om~L}WZY(50H^ z`>X)UD0H5_BI8IbX0|RUTWm93OVy=V*j$VeeAHKS1|Y()Vmg3dE2{gVR=%ymD!OlY6GQQ8N2teS>dMoTyp7M-{nhe}2AMko{!=(~k z5=5bt`BX_CR2C8LtnSY{Fq+KMe5}PtdphN0ZHU+8YcaWLpog5dV$RmOH|*{V9FbJ> zdjW|NLWsti-2=)gjw5?@F^6E@j2cEqR}NH0SumK#p8Sk|5N)(|~g-sjWcSfd3wm;gAtJf1Mj{5dM_Hi7pwL?@Cp=lDSZef~- zp@YA_?JgR4{MyX*6B<^J4wJkPHRsn@g#%@tf5`+JTyDiSxx^wr&c8tE)x+jf-{QJe zL<7pQ(O#;1cSFjL{Fc%&I7SV~srWagmPJV0p5ZZS0mX1* z&;7$wVsi(vXTGKyFP->$pWld6LL9MZFpoUen{D5x($X(HenFR9j-A}oowe9DrEH}b zqVH0e$z_)z^KO_6eqVH)Dcsm_51wE9N;J<;Tkf+H#RV!Ph!p%Dpj_4hnbSUL)}jbs zO;>#MMFIf8E%@VGfI^sLGJg!<5?!m1DWFazVxEk%U=ix-!bH9gB~UunNV53d6w)OH zO6T6n^`|iFvbn#qzSqk; z(ZNNX7mx`kRt$z1cVvdlF1v)BFrC9G%q#5J;*3H|a?V0uL?ge)WX!(O2Mtl>s;rGa z+Mepa?${{PKI!Q0)D&Y=1`}vbMqgKn$gpKiSVnF-rraUo0@Ir2-5e-o27hHOYJX{V z_asSO{8b&F0_!uY3`O8Y=ZFe8v18RIy@I(vG$Z!hdIn6!$oI75aR53J_~|#2Pqdji zeD}~kMKbfRLR(@7Ly$%8oT zF~wp0gte-3jUOFjoO9 zPbjXkTIaGbZ1KmhnHyo=%n~(VULh>31NM%`XqXnyJjA5%xa;x>4XYc!^kaqVtsRCkbIoM zCMSu>(jT{IuOo*pfM?&m#u+K-*(~$%YLU>K2}VBpb~@rATj<)OP_pD~m(}isjjPCk_1>b#COLWFyMZ0aVi4H&Fd$Yxmgk)E+PK+RjGl^>Z1e%yt8t z#40TtE#P^H@C1qXAHvUvsTiya9+XO0@a-}6MP(fP$zneO?SXoY=jkR~x>@e9(>>D@k-}gzxWJ|BTuHS_2RK+3z z4)3~`EPK?Z7V7_C#_C}8feVcKsHk6-QTl`J(S0TE)`f=m4QbmvTjNOWOtm*{mI|zH zU~b6I^79{zBN@QF$yz!rJkwrf)ypIorV%EuDT-@0ujhFCGJ8&>K(RHXFqoGf|wSQf~ z?@`bTzvCR>*1Wm0I66c9By^_nWR-SLTOYc3*R+IZn})QB(?!$uXOdKwuGf=A%KJYVx*9^5HouRlBCi^=lm{_exfw@f^+(n7!F?Z#TErVt;NKEQ32%OF zk7*wv%L)2Img25t`s(f1T(!SYq5SIw@D<&>d7Ns{C>b%RUXS^z3!tK?sZc8SD(K$; D2p@YZ literal 0 HcmV?d00001 diff --git a/AnimeGen/Settings/API.xcassets/kyoko.imageset/68747470733a2f2f692e6962622e636f2f737979315036672f6b796f6b6f2e77656270.png b/AnimeGen/Settings/About-Credits/API.xcassets/kyoko.imageset/68747470733a2f2f692e6962622e636f2f737979315036672f6b796f6b6f2e77656270.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/kyoko.imageset/68747470733a2f2f692e6962622e636f2f737979315036672f6b796f6b6f2e77656270.png rename to AnimeGen/Settings/About-Credits/API.xcassets/kyoko.imageset/68747470733a2f2f692e6962622e636f2f737979315036672f6b796f6b6f2e77656270.png diff --git a/AnimeGen/Settings/API.xcassets/kyoko.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/kyoko.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/kyoko.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/kyoko.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/nekos.best.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/nekos.best.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekos.best.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/nekos.best.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/nekos.best.imageset/favicon.png b/AnimeGen/Settings/About-Credits/API.xcassets/nekos.best.imageset/favicon.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekos.best.imageset/favicon.png rename to AnimeGen/Settings/About-Credits/API.xcassets/nekos.best.imageset/favicon.png diff --git a/AnimeGen/Settings/API.xcassets/nekos.moe.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/nekos.moe.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekos.moe.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/nekos.moe.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/nekos.moe.imageset/apple-touch-icon.png b/AnimeGen/Settings/About-Credits/API.xcassets/nekos.moe.imageset/apple-touch-icon.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekos.moe.imageset/apple-touch-icon.png rename to AnimeGen/Settings/About-Credits/API.xcassets/nekos.moe.imageset/apple-touch-icon.png diff --git a/AnimeGen/Settings/API.xcassets/nekosapi.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/nekosapi.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekosapi.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/nekosapi.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/nekosapi.imageset/logo-removebg-preview.png b/AnimeGen/Settings/About-Credits/API.xcassets/nekosapi.imageset/logo-removebg-preview.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/nekosapi.imageset/logo-removebg-preview.png rename to AnimeGen/Settings/About-Credits/API.xcassets/nekosapi.imageset/logo-removebg-preview.png diff --git a/AnimeGen/Settings/API.xcassets/pic-re.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/pic-re.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/pic-re.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/pic-re.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/pic-re.imageset/download.png b/AnimeGen/Settings/About-Credits/API.xcassets/pic-re.imageset/download.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/pic-re.imageset/download.png rename to AnimeGen/Settings/About-Credits/API.xcassets/pic-re.imageset/download.png diff --git a/AnimeGen/Settings/API.xcassets/waifu.im.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.im.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.im.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.im.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/waifu.im.imageset/favicon.ico.png b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.im.imageset/favicon.ico.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.im.imageset/favicon.ico.png rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.im.imageset/favicon.ico.png diff --git a/AnimeGen/Settings/API.xcassets/waifu.it.imageset/79479798.png b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.it.imageset/79479798.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.it.imageset/79479798.png rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.it.imageset/79479798.png diff --git a/AnimeGen/Settings/API.xcassets/waifu.it.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.it.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.it.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.it.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/waifu.pics.imageset/Contents.json b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.pics.imageset/Contents.json similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.pics.imageset/Contents.json rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.pics.imageset/Contents.json diff --git a/AnimeGen/Settings/API.xcassets/waifu.pics.imageset/favicon-1-_dragged_.png b/AnimeGen/Settings/About-Credits/API.xcassets/waifu.pics.imageset/favicon-1-_dragged_.png similarity index 100% rename from AnimeGen/Settings/API.xcassets/waifu.pics.imageset/favicon-1-_dragged_.png rename to AnimeGen/Settings/About-Credits/API.xcassets/waifu.pics.imageset/favicon-1-_dragged_.png diff --git a/AnimeGen/Settings/About-Credits/APIsCredits.swift b/AnimeGen/Settings/About-Credits/APIsCredits.swift new file mode 100644 index 00000000..093ddd9f --- /dev/null +++ b/AnimeGen/Settings/About-Credits/APIsCredits.swift @@ -0,0 +1,85 @@ +// +// APIsCredits.swift +// AnimeGen +// +// Created by cranci on 06/05/24. +// + +import UIKit + +class APIsCredits: UITableViewController { + + // URLs + let picre = "https://pic.re" + let waifuim = "https://waifu.im" + let waifupics = "https://waifu.pics" + let waifuit = "https://waifu.it/" + let nekosbest = "https://nekos.best" + let nekosapi = "https://nekosapi.com" + let nekosmoe = "https://nekos.moe" + let NekoBot = "https://nekobot.xyz" + let Hmtai = "https://hmtai.hatsunia.cfd/endpoints" + let kyoko = "https://api.rei.my.id/docs/ANIME/WAIFU-Generator/" + let purrbot = "https://purrbot.site/" + let SDweb = "https://github.com/SDWebImage/SDWebImage" + + override func viewDidLoad() { + super.viewDidLoad() + } + + func openURL(_ urlString: String) { + if let url = URL(string: urlString) { + UIApplication.shared.open(url) + } + } + + @IBAction func picre(_ sender: UITapGestureRecognizer) { + openURL(picre) + } + + @IBAction func waifuim(_ sender: UITapGestureRecognizer) { + openURL(waifuim) + } + + @IBAction func waifupics(_ sender: UITapGestureRecognizer) { + openURL(waifupics) + } + + @IBAction func waifuit(_ sender: UITapGestureRecognizer) { + openURL(waifuit) + } + + @IBAction func nekosbest(_ sender: UITapGestureRecognizer) { + openURL(nekosbest) + } + + @IBAction func nekosapi(_ sender: UITapGestureRecognizer) { + openURL(nekosapi) + } + + @IBAction func nekosmoe(_ sender: UITapGestureRecognizer) { + openURL(nekosmoe) + } + + @IBAction func nekobot(_ sender: UITapGestureRecognizer) { + openURL(NekoBot) + } + + @IBAction func Hmtai(_ sender: UITapGestureRecognizer) { + openURL(Hmtai) + } + + @IBAction func kyoko(_ sender: UITapGestureRecognizer) { + openURL(kyoko) + } + + @IBAction func purrbot(_ sender: UITapGestureRecognizer) { + openURL(purrbot) + } + + @IBAction func SDweb(_ sender: UITapGestureRecognizer) { + openURL(SDweb) + } + +} + diff --git a/AnimeGen/Settings/About-Credits/AboutPage.swift b/AnimeGen/Settings/About-Credits/AboutPage.swift index 0307f56f..424188ed 100644 --- a/AnimeGen/Settings/About-Credits/AboutPage.swift +++ b/AnimeGen/Settings/About-Credits/AboutPage.swift @@ -2,98 +2,65 @@ // AboutPage.swift // AnimeGen // -// Created by cranci on 18/02/24. +// Created by cranci on 06/05/24. // -import SwiftUI +import UIKit -struct AboutPage: View { +class AboutPageViewController: UITableViewController { - let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "N/A" - let appBuild = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "N/A" + // Outlets for labels + @IBOutlet weak var versionLabel: UILabel! + @IBOutlet weak var buildLabel: UILabel! + @IBOutlet weak var privacyLabel: UILabel! + @IBOutlet weak var licenseLabel: UILabel! - var body: some View { - NavigationView { - Form { - Section(header: Text("App info"), - footer: Text("AnimeGen is a free, open source iOS app, developed by cranci. The app is under the GNU General Public License version 3.")) { - InfoRow(title: "Version", value: appVersion) - InfoRow(title: "Build", value: appBuild) - LinkRow(title: "Github Repository", url: "https://github.com/cranci1/AnimeGen/") - LinkRow(title: "Report an Issue", url: "https://github.com/cranci1/AnimeGen/issues") - } - - Section(header: Text("Privacy"), - footer: Text("AnimeGen prioritizes user privacy and does not store any personal data. All generated images are not retained by the app. If a user chooses to save an image, it will only be stored locally in their device's gallery except for the Hmtai API. We are committed to ensuring a secure and private experience for our users.")) { - LinkRow(title: "Review the code", url: "https://github.com/cranci1/AnimeGen/tree/main") - LinkRow(title: "Hmtai API Privacy", url: "https://github.com/cranci1/AnimeGen/blob/main/Privacy/Hmtai.md") - } - - Section(header: Text("License"), - footer: Text(""" - Copyright © 2023-2024 cranci. All rights reserved. - - AnimeGen is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - AnimeGen is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with AnimeGen. If not, see . - """)) { - LinkRow(title: "Full License", url: "https://github.com/cranci1/AnimeGen/blob/main/LICENSE") - } - } - .navigationBarHidden(true) + // URLs + let githubURL = "https://github.com/cranci1/AnimeGen/" + let reportIssueURL = "https://github.com/cranci1/AnimeGen/issues" + let reviewCodeURL = "https://github.com/cranci1/AnimeGen/tree/main" + let hmtaiPrivacyURL = "https://github.com/cranci1/AnimeGen/blob/main/Privacy/Hmtai.md" + let fullLicenseURL = "https://github.com/cranci1/AnimeGen/blob/main/LICENSE" + + override func viewDidLoad() { + super.viewDidLoad() + + if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { + versionLabel.text = "Version: \(appVersion)" + } else { + versionLabel.text = "Version: N/A" + } + + if let appBuild = Bundle.main.infoDictionary?["CFBundleVersion"] as? String { + buildLabel.text = "Build: \(appBuild)" + } else { + buildLabel.text = "Build: N/A" } - .navigationBarTitle("About", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) } -} - -struct InfoRow: View { - let title: String - let value: String - var body: some View { - HStack { - Text("\(title): \(value)") + func openURL(_ urlString: String) { + if let url = URL(string: urlString) { + UIApplication.shared.open(url) } } -} - -struct LinkRow: View { - let title: String - let url: String - var body: some View { - HStack { - Text(title) - .foregroundColor(.accentColor) - .onTapGesture { - if let url = URL(string: self.url) { - UIApplication.shared.open(url) - } - } - Image(systemName: "arrow.right.circle.fill") - .foregroundColor(.accentColor) - .onTapGesture { - if let url = URL(string: self.url) { - UIApplication.shared.open(url) - } - } - } + @IBAction func githubTapped(_ sender: UITapGestureRecognizer) { + openURL(githubURL) } -} - -struct AboutPage_Previews: PreviewProvider { - static var previews: some View { - AboutPage() - .preferredColorScheme(.dark) + + @IBAction func reportIssueTapped(_ sender: UITapGestureRecognizer) { + openURL(reportIssueURL) + } + + @IBAction func reviewCodeTapped(_ sender: UITapGestureRecognizer) { + openURL(reviewCodeURL) + } + + @IBAction func hmtaiPrivacyTapped(_ sender: UITapGestureRecognizer) { + openURL(hmtaiPrivacyURL) + } + + @IBAction func fullLicenseTapped(_ sender: UITapGestureRecognizer) { + openURL(fullLicenseURL) } } diff --git a/AnimeGen/Settings/About-Credits/ApiPage.swift b/AnimeGen/Settings/About-Credits/ApiPage.swift deleted file mode 100644 index 93b53fa9..00000000 --- a/AnimeGen/Settings/About-Credits/ApiPage.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// ApiPage.swift -// AnimeGen -// -// Created by cranci on 25/02/24. -// - -import SwiftUI - -struct ApiPage: View { - struct APIInfo: Hashable { - let imageName: String - let apiName: String - let url: URL - } - - let apiData: [APIInfo] = [ - APIInfo(imageName: "pic-re", apiName: "pic.re", url: URL(string: "https://pic.re")!), - APIInfo(imageName: "waifu.im", apiName: "waifu.im", url: URL(string: "https://waifu.im")!), - APIInfo(imageName: "waifu.pics", apiName: "waifu.pics", url: URL(string: "https://waifu.pics")!), - APIInfo(imageName: "waifu.it", apiName: "waifu.it", url: URL(string: "https://waifu.it/")!), - APIInfo(imageName: "nekos.best", apiName: "nekos.best", url: URL(string: "https://nekos.best")!), - APIInfo(imageName: "nekosapi", apiName: "nekosapi.com", url: URL(string: "https://nekosapi.com")!), - APIInfo(imageName: "nekos.moe", apiName: "nekos.moe", url: URL(string: "https://nekos.moe")!), - APIInfo(imageName: "NekoBot", apiName: "NekoBot", url: URL(string: "https://nekobot.xyz")!), - APIInfo(imageName: "Hmtai", apiName: "Hmtai", url: URL(string: "https://hmtai.hatsunia.cfd/endpoints")!), - APIInfo(imageName: "kyoko", apiName: "Kyoko", url: URL(string: "https://api.rei.my.id/docs/ANIME/WAIFU-Generator/")!), - APIInfo(imageName: "Purr", apiName: "Purr", url: URL(string: "https://purrbot.site/")!) - ] - - var body: some View { - NavigationView { - ScrollView { - VStack(spacing: 20) { - ForEach(Array(apiData.enumerated()), id: \.element.self) { index, data in - if index != apiData.count - 1 { - APIRow(data: data) - } else { - VStack(spacing: 10) { - APIRow(data: data) - THanksSection() - } - } - } - } - .padding() - } - .navigationBarHidden(true) - } - .navigationBarTitle("APIs Credit", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } -} - -struct THanksSection: View { - var body: some View { - VStack(spacing: 10) { - Text("Special Thanks") - .font(.title) - .fontWeight(.bold) - Text("Special thanks to all the developers who provided these APIs for public use. Without them, this project wouldn't exist. Thank you very much!") - .font(.caption) - .fontWeight(.semibold) - .foregroundColor(.secondary) - .multilineTextAlignment(.center) - } - .padding() - .background(Color.secondary.opacity(0.1)) - .cornerRadius(10) - } -} - -struct APIRow: View { - let data: ApiPage.APIInfo - - var body: some View { - HStack { - Image(data.imageName) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 80, height: 80) - .cornerRadius(10) - .onTapGesture { - openURL(data.url) - } - - VStack(alignment: .leading) { - Text(data.apiName) - .font(.title) - .foregroundColor(.accentColor) - .padding(.vertical, 10) - .onTapGesture { - openURL(data.url) - } - } - .padding(.horizontal, 10) - Spacer() - } - .background(Color.secondary.opacity(0.1)) - .cornerRadius(10) - } - - private func openURL(_ url: URL) { - UIApplication.shared.open(url) - } -} - -struct ApiPage_Preview: PreviewProvider { - static var previews: some View { - ApiPage() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Settings/App Settings/API-Pref.swift b/AnimeGen/Settings/App Settings/API-Pref.swift deleted file mode 100644 index fd8477db..00000000 --- a/AnimeGen/Settings/App Settings/API-Pref.swift +++ /dev/null @@ -1,119 +0,0 @@ -// -// API-Pref.swift -// AnimeGen -// -// Created by cranci on 30/04/24. -// - -import SwiftUI - -struct APIPreferences: View { - - // API preferences - @State private var loadstart = UserDefaults.standard.bool(forKey: "enableImageStartup") - @State private var tags = UserDefaults.standard.bool(forKey: "enableTags") - @State private var moetags = UserDefaults.standard.bool(forKey: "enableMoeTags") - @State private var kyokobanner = UserDefaults.standard.bool(forKey: "enableKyokobanner") - - // Default API - @State private var isPresentingActionSheet = false - @State private var selectedChoiceIndex = UserDefaults.standard.integer(forKey: "SelectedChoiceIndex") - - let choices = ["waifu.im", "pic.re", "waifu.pics", "waifu.it", "nekos.best", "Nekos api", "nekos.moe", "NekoBot", "kyoko", "Purr"] - - var body: some View { - NavigationView { - Form { - Section(footer: Text(""" - Default API Selection: You can customize your preferred API that the app will utilize upon opening. (Only works when opening the App) - - Load Image on Startup: You can choose whether to generate an image when the app starts or not. - - Display of Tags: You have control over whether to display tags associated with each image. - - Display nekos.moe Tags: You can choose whether to show or hide tags sourced from the nekos.moe API. (App Restart is required) - - Kyoko 'Note' Banner: You'll be notified with a special banner for the Kyoko API since it's very slow. (App Restart is required) - """)) { - Button(action: { - isPresentingActionSheet = true - }) { - HStack { - Text("Default API") - .foregroundColor(.primary) - Spacer() - Text(choices[selectedChoiceIndex]) - .foregroundColor(.accentColor) - } - } - .actionSheet(isPresented: $isPresentingActionSheet) { - ActionSheet(title: Text("Choose Default API"), buttons: [ - .default(Text("Purr")) { updateSelectedChoiceIndex(9) }, - .default(Text("kyoko")) { updateSelectedChoiceIndex(8) }, - .default(Text("NekoBot")) { updateSelectedChoiceIndex(7) }, - .default(Text("nekos.moe")) { updateSelectedChoiceIndex(6) }, - .default(Text("Nekos api")) { updateSelectedChoiceIndex(5) }, - .default(Text("nekos.best")) { updateSelectedChoiceIndex(4) }, - .default(Text("waifu.it")) { updateSelectedChoiceIndex(3) }, - .default(Text("waifu.pics")) { updateSelectedChoiceIndex(2) }, - .default(Text("waifu.im")) { updateSelectedChoiceIndex(0) }, - .default(Text("pic.re")) { updateSelectedChoiceIndex(1) }, - .cancel() - ]) - } - .onAppear { - selectedChoiceIndex = UserDefaults.standard.integer(forKey: "SelectedChoiceIndex") - } - .onDisappear { - UserDefaults.standard.set(selectedChoiceIndex, forKey: "SelectedChoiceIndex") - NotificationCenter.default.post(name: Notification.Name("SelectedChoiceChanged"), object: selectedChoiceIndex) - } - - Toggle("Load Image on Startup", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableImageStartup") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableImageStartup") - } - )) - - Toggle("Display Tags", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableTags") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableTags") - } - )) - Toggle("Display nekos.moe Tags", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableMoeTags") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableMoeTags") - } - )) - Toggle("Kyoko 'Note' banner", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableKyokobanner") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableKyokobanner") - } - )) - - } - } - .navigationBarHidden(true) - } - .navigationBarTitle("APIs Preferences", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } - - private func updateSelectedChoiceIndex(_ index: Int) { - selectedChoiceIndex = index - UserDefaults.standard.set(index, forKey: "SelectedChoiceIndex") - NotificationCenter.default.post(name: Notification.Name("SelectedChoiceChanged"), object: index) - } - -} - -struct APIPref_Preview: PreviewProvider { - static var previews: some View { - APIPreferences() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Settings/App Settings/Content.swift b/AnimeGen/Settings/App Settings/Content.swift deleted file mode 100644 index 8f9e75c8..00000000 --- a/AnimeGen/Settings/App Settings/Content.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// Content.swift -// AnimeGen -// -// Created by cranci on 30/04/24. -// - -import SwiftUI - -struct Contents: View { - - // Content - @State private var explicitCont = UserDefaults.standard.bool(forKey: "enableExplictiCont") - @State private var showAlert = false - - var body: some View { - NavigationView { - Form { - Section(footer: Text(""" - This content is on the borderline of explicit material and includes adult content. Viewer discretion is advised. - """)) { - - Toggle("Explicit Contents", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableExplictiCont") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableExplictiCont") - if newValue { - self.showAlert = true - } - } - )) - - } - } - .navigationBarHidden(true) - .alert(isPresented: $showAlert) { - Alert( - title: Text("Are you sure?"), - message: Text("Enabling explicit content may not be suitable for all audiences. Are you sure you want to proceed?"), - primaryButton: .default(Text("Enable"), action: { - self.explicitCont = true - UserDefaults.standard.set(true, forKey: "enableExplictiCont") - }), - secondaryButton: .cancel(Text("Cancel")) - ) - } - } - .navigationBarTitle("Contents Settings", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } -} - -struct ContentPage_Preview: PreviewProvider { - static var previews: some View { - Contents() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Settings/App Settings/Developer.swift b/AnimeGen/Settings/App Settings/Developer.swift deleted file mode 100644 index 9f468439..00000000 --- a/AnimeGen/Settings/App Settings/Developer.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// Developer.swift -// AnimeGen -// -// Created by cranci on 30/04/24. -// - -import SwiftUI - -struct DeveloperPref: View { - - // Devloper Mode - @State private var developerMode = UserDefaults.standard.bool(forKey: "enableDeveloperMode") - @State private var developerAlert = UserDefaults.standard.bool(forKey: "enableDeveloperAlert") - @State private var hmtaidev = UserDefaults.standard.bool(forKey: "enabledHmtaiAPI") - - var body: some View { - NavigationView { - Form { - Section(footer: Text(""" - Enabling 'Developer Mode' grants access to additional specific settings and beta modules. - - Enabling 'Developer Alerts' lets you view error messages explaining why an image failed to load. - """)) { - - Toggle("Developer Mode", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableDeveloperMode") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableDeveloperMode") - } - )) - - Toggle("Developer Alert", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enableDeveloperAlert") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enableDeveloperAlert") - } - )) - - if UserDefaults.standard.bool(forKey: "enableDeveloperMode") { - NavigationLink(destination: DeveloperView()) { - Text("Hmtai Preferences") - .foregroundColor(.accentColor) - } - } - - if UserDefaults.standard.bool(forKey: "enableDeveloperMode") { - NavigationLink(destination: waifuitView()) { - Text("Waifu.it Preferences") - .foregroundColor(.accentColor) - } - } - - if UserDefaults.standard.bool(forKey: "enableDeveloperMode") { - Toggle("Display Hmtai API", isOn: Binding( - get: { UserDefaults.standard.bool(forKey: "enabledHmtaiAPI") }, - set: { newValue in - UserDefaults.standard.set(newValue, forKey: "enabledHmtaiAPI") - } - )) - } - - } - } - .navigationBarHidden(true) - } - .navigationBarTitle("Developer Preferences", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } -} - -struct Developer_Preview: PreviewProvider { - static var previews: some View { - DeveloperPref() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Settings/App Settings/Features.swift b/AnimeGen/Settings/App Settings/Features.swift deleted file mode 100644 index 42674cf6..00000000 --- a/AnimeGen/Settings/App Settings/Features.swift +++ /dev/null @@ -1,84 +0,0 @@ -// -// Features.swift -// AnimeGen -// -// Created by cranci on 30/04/24. -// - -import SwiftUI - -struct Features: View { - - // Features - @State private var animations = UserDefaults.standard.bool(forKey: "enableAnimations") - @State private var gradient = UserDefaults.standard.bool(forKey: "enablegradient") - @State private var activitytime = UserDefaults.standard.bool(forKey: "enableTime") - @State private var gestures = UserDefaults.standard.bool(forKey: "enableGestures") - - var body: some View { - NavigationView { - Form { - Section(footer: Text(""" - App Animations: Choose to show or hide animations for: - - - New Image Generation - - Previous Image - - Save Image - - Background Gradient: Opt to show or hide a violet gradient background. (App Restart is required) - - Display Activity Label: Choose to show or hide an activity control label displaying session time and images generated. (App Restart is required) - - Enable Gestures: Enable to utilize app gestures: (App Restart is required) - - - Swipe Left to Right: Last Image - - Swipe Right to Left: Generate New Image - - Swipe Top to Bottom: Show Settings - """)) { - - Toggle("App Animations", isOn: Binding( - get: { self.animations }, - set: { newValue in - self.animations = newValue - UserDefaults.standard.set(newValue, forKey: "enableAnimations") - } - )) - Toggle("Background Gradient", isOn: Binding( - get: { self.gradient }, - set: { newValue in - self.gradient = newValue - UserDefaults.standard.set(newValue, forKey: "enablegradient") - } - )) - - Toggle("Display Activity Label", isOn: Binding( - get: { self.activitytime }, - set: { newValue in - self.activitytime = newValue - UserDefaults.standard.set(newValue, forKey: "enableTime") - } - )) - - Toggle("Enable Gestures", isOn: Binding( - get: { self.gestures }, - set: { newValue in - self.gestures = newValue - UserDefaults.standard.set(newValue, forKey: "enableGestures") - } - )) - - } - } - .navigationBarHidden(true) - } - .navigationBarTitle("App Features", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } -} - -struct Features_Preview: PreviewProvider { - static var previews: some View { - Features() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/Settings/App Settings/History.swift b/AnimeGen/Settings/App Settings/History.swift deleted file mode 100644 index b408b746..00000000 --- a/AnimeGen/Settings/App Settings/History.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// History.swift -// AnimeGen -// -// Created by cranci on 30/04/24. -// - -import SwiftUI - -struct HistoryPref: View { - - // Content - @State private var historyOvertime = UserDefaults.standard.bool(forKey: "enableHistoryOvertime") - @State private var showAlert = false - - var body: some View { - NavigationView { - Form { - Section(footer: Text("'Don't clear history': It makes so that the history will not be cleared when closing the app.")) { - Toggle("Don't clear history", isOn: Binding( - get: { self.historyOvertime }, - set: { newValue in - self.historyOvertime = newValue - UserDefaults.standard.set(newValue, forKey: "enableHistoryOvertime") - } - )) - } - - Section { - Button(action: { - showAlert = true - }) { - HStack { - Image(systemName: "trash") - Text("Clear History") - } - .foregroundColor(.red) - } - } - } - .navigationBarHidden(true) - .alert(isPresented: $showAlert) { - Alert( - title: Text("Are you sure?"), - message: Text("This action will clear all history. Are you sure you want to proceed?"), - primaryButton: .default(Text("Cancel")), - secondaryButton: .destructive(Text("Clear"), action: clearHistory) - ) - } - } - .navigationBarTitle("History Settings", displayMode: .inline) - .navigationViewStyle(StackNavigationViewStyle()) - } - - private func clearHistory() { - UserDefaults.standard.removeObject(forKey: "imageHistory") - } - } - - struct HistoryPrefPage_Preview: PreviewProvider { - static var previews: some View { - HistoryPref() - .preferredColorScheme(.dark) - } - } diff --git a/AnimeGen/Settings/AppPref.swift b/AnimeGen/Settings/AppPref.swift new file mode 100644 index 00000000..97763793 --- /dev/null +++ b/AnimeGen/Settings/AppPref.swift @@ -0,0 +1,43 @@ +// +// AppPref.swift +// AnimeGen +// +// Created by cranci on 05/05/24. +// + +import UIKit + +class AppPref: UITableViewController { + + @IBOutlet weak var LoadImageSwitch: UISwitch! + @IBOutlet weak var DisplayTags: UISwitch! + @IBOutlet weak var DisplayNekosTags: UISwitch! + @IBOutlet weak var KyokoNoteBanner: UISwitch! + + override func viewDidLoad() { + super.viewDidLoad() + + LoadImageSwitch.isOn = UserDefaults.standard.bool(forKey: "enableImageStartup") + DisplayTags.isOn = UserDefaults.standard.bool(forKey: "enableTags") + DisplayNekosTags.isOn = UserDefaults.standard.bool(forKey: "enableMoeTags") + KyokoNoteBanner.isOn = UserDefaults.standard.bool(forKey: "enableKyokobanner") + + } + + @IBAction func switchImageStartup(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableImageStartup") + } + + @IBAction func switchTags(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableTags") + } + + @IBAction func switchMoeTags(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableMoeTags") + } + + @IBAction func switchKyokoBanner(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableKyokobanner") + } + +} diff --git a/AnimeGen/Settings/Contents.swift b/AnimeGen/Settings/Contents.swift new file mode 100644 index 00000000..889cf41b --- /dev/null +++ b/AnimeGen/Settings/Contents.swift @@ -0,0 +1,25 @@ +// +// Contents.swift +// AnimeGen +// +// Created by cranci on 05/05/24. +// + +import UIKit + +class Contents: UITableViewController { + + @IBOutlet weak var Contents: UISwitch! + + override func viewDidLoad() { + super.viewDidLoad() + + Contents.isOn = UserDefaults.standard.bool(forKey: "enableExplictiCont") + + } + + @IBAction func switchContent(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableExplictiCont") + } +} + diff --git a/AnimeGen/Settings/Developer.swift b/AnimeGen/Settings/Developer.swift new file mode 100644 index 00000000..4dbc4718 --- /dev/null +++ b/AnimeGen/Settings/Developer.swift @@ -0,0 +1,46 @@ +// +// Developer.swift +// AnimeGen +// +// Created by cranci on 05/05/24. +// + +import UIKit +import SwiftUI + +class DeveloperPref: UITableViewController { + + // @IBOutlet weak var DevloperAlerts: UISwitch! + @IBOutlet weak var DisplayHmtai: UISwitch! + + override func viewDidLoad() { + super.viewDidLoad() + + // DevloperAlerts.isOn = UserDefaults.standard.bool(forKey: "enableDeveloperAlert") + DisplayHmtai.isOn = UserDefaults.standard.bool(forKey: "enabledHmtaiAPI") + + } + + // @IBAction func switchDeveloperAlert(_ sender: UISwitch) { + // UserDefaults.standard.set(sender.isOn, forKey: "enableDeveloperAlert") + // } + + @IBAction func switchHmtaiAPI(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enabledHmtaiAPI") + } + + @IBAction func waifuit(_ sender: UITapGestureRecognizer) { + let swiftUIView = waifuitView() + let hostingController = UIHostingController(rootView: swiftUIView) + present(hostingController, animated: true, completion: nil) + } + + @IBAction func hmtaipage(_ sender: UITapGestureRecognizer) { + let swiftUIView = HmtaiView() + let hostingController = UIHostingController(rootView: swiftUIView) + present(hostingController, animated: true, completion: nil) + } + + +} + diff --git a/AnimeGen/Settings/App Settings/Developer-Pref/Hmtai-pref.swift b/AnimeGen/Settings/Developer/Hmtai-pref.swift similarity index 97% rename from AnimeGen/Settings/App Settings/Developer-Pref/Hmtai-pref.swift rename to AnimeGen/Settings/Developer/Hmtai-pref.swift index 6dd9b334..5225f5e8 100644 --- a/AnimeGen/Settings/App Settings/Developer-Pref/Hmtai-pref.swift +++ b/AnimeGen/Settings/Developer/Hmtai-pref.swift @@ -7,7 +7,7 @@ import SwiftUI -struct DeveloperView: View { +struct HmtaiView: View { @State private var apiToken: String @State private var discordWebhookURL: String @State private var discordChannelId: String @@ -89,8 +89,8 @@ struct DeveloperView: View { } } -struct DeveloperView_Previews: PreviewProvider { +struct HmtaiView_Previews: PreviewProvider { static var previews: some View { - DeveloperView() + HmtaiView() } } diff --git a/AnimeGen/Settings/App Settings/Developer-Pref/waifu-it-pref.swift b/AnimeGen/Settings/Developer/waifu-it-pref.swift similarity index 100% rename from AnimeGen/Settings/App Settings/Developer-Pref/waifu-it-pref.swift rename to AnimeGen/Settings/Developer/waifu-it-pref.swift diff --git a/AnimeGen/Settings/FeaturesApp.swift b/AnimeGen/Settings/FeaturesApp.swift new file mode 100644 index 00000000..4d95e8c0 --- /dev/null +++ b/AnimeGen/Settings/FeaturesApp.swift @@ -0,0 +1,61 @@ +// +// FeaturesApp.swift +// AnimeGen +// +// Created by cranci on 05/05/24. +// + +import UIKit + +class FeaturesApp: UITableViewController { + + @IBOutlet weak var segmentedControl: UISegmentedControl! + + @IBOutlet weak var Animations: UISwitch! + @IBOutlet weak var Gradient: UISwitch! + @IBOutlet weak var Gestures: UISwitch! + @IBOutlet weak var ActivityLabel: UISwitch! + + override func viewDidLoad() { + super.viewDidLoad() + + Animations.isOn = UserDefaults.standard.bool(forKey: "enableAnimations") + Gradient.isOn = UserDefaults.standard.bool(forKey: "enablegradient") + Gestures.isOn = UserDefaults.standard.bool(forKey: "enableGestures") + ActivityLabel.isOn = UserDefaults.standard.bool(forKey: "enableTime") + + let selectedIndex = UserDefaults.standard.integer(forKey: "selectedIndex") + segmentedControl.selectedSegmentIndex = selectedIndex + if UserDefaults.standard.value(forKey: "enabledLightMode") == nil { + UserDefaults.standard.set(false, forKey: "enabledLightMode") + } + + } + + @IBAction func switchAnimations(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableAnimations") + } + + @IBAction func switchGradient(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enablegradient") + } + + @IBAction func switchTime(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableTime") + } + + @IBAction func switctchGestures(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableGestures") + } + + @IBAction func segmentedControlValueChanged(_ sender: UISegmentedControl) { + let selectedIndex = sender.selectedSegmentIndex + UserDefaults.standard.set(selectedIndex, forKey: "selectedIndex") + + if selectedIndex == 1 { + UserDefaults.standard.set(true, forKey: "enabledLightMode") + } else { + UserDefaults.standard.set(false, forKey: "enabledLightMode") + } + } +} diff --git a/AnimeGen/Settings/Historyy.swift b/AnimeGen/Settings/Historyy.swift new file mode 100644 index 00000000..4da7fc76 --- /dev/null +++ b/AnimeGen/Settings/Historyy.swift @@ -0,0 +1,37 @@ +// +// Historyy.swift +// AnimeGen +// +// Created by cranci on 06/05/24. +// + +import UIKit + +class History: UITableViewController { + + @IBOutlet weak var historySwitch: UISwitch! + + override func viewDidLoad() { + super.viewDidLoad() + + historySwitch.isOn = UserDefaults.standard.bool(forKey: "enableHistory") + } + + @IBAction func switchHistory(_ sender: UISwitch) { + UserDefaults.standard.set(sender.isOn, forKey: "enableHistory") + } + + @IBAction func clearButtonTapped(_ sender: Any) { + let alertController = UIAlertController(title: "Clear History", message: "Are you sure you want to clear the history?", preferredStyle: .alert) + + alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) + + alertController.addAction(UIAlertAction(title: "Clear", style: .destructive, handler: { _ in + ImageHistory.images.removeAll() + })) + + present(alertController, animated: true, completion: nil) + } + + +} diff --git a/AnimeGen/Settings/SettingsMain.swift b/AnimeGen/Settings/SettingsMain.swift new file mode 100644 index 00000000..1ce57ba1 --- /dev/null +++ b/AnimeGen/Settings/SettingsMain.swift @@ -0,0 +1,16 @@ +// +// SettingsMain.swift +// AnimeGen +// +// Created by Francesco on 07/05/24. +// + +import UIKit +import SwiftUI + +class SettingsMain: UITableViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } +} diff --git a/AnimeGen/Settings/SettingsPage.swift b/AnimeGen/Settings/SettingsPage.swift deleted file mode 100644 index c46c9a64..00000000 --- a/AnimeGen/Settings/SettingsPage.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// SettingsPage.swift -// AnimeGen -// -// Created by cranci on 18/02/24. -// - -import SwiftUI - -struct SettingsPage: View { - - // Tutorial - @State private var isShowingTutorial = false - - var body: some View { - NavigationView { - Form { - - Section(header: Text("App Settings"), footer: Text("You can access different app settings on these pages.")) { - NavigationLink(destination: APIPreferences()) { - HStack { - Image(systemName: "gear") - Text("APIs Preferences") - .foregroundColor(.accentColor) - } - } - - NavigationLink(destination: Features()) { - HStack { - Image(systemName: "square.grid.2x2") - Text("App Features") - .foregroundColor(.accentColor) - } - } - - NavigationLink(destination: Contents()) { - HStack { - Image(systemName: "doc.text.magnifyingglass") - Text("Contents Settings") - .foregroundColor(.accentColor) - } - } - - - NavigationLink(destination: HistoryPref()) { - HStack { - Image(systemName: "clock") - Text("History Settings") - .foregroundColor(.accentColor) - } - } - - NavigationLink(destination: DeveloperPref()) { - HStack { - Image(systemName: "hammer") - Text("Developer Preferences") - .foregroundColor(.accentColor) - } - } - - } - - Section(header: Text("About AnimeGen")) { - NavigationLink(destination: AboutPage()) { - HStack { - Image(systemName: "info.circle") - Text("About") - .foregroundColor(.accentColor) - } - } - - NavigationLink(destination: ApiPage()) { - HStack { - Image(systemName: "list.bullet") - Text("APIs Credits") - .foregroundColor(.accentColor) - } - } - - if #available(iOS 14.0, *) { - Button(action: { - isShowingTutorial = true - }) { - Text("Show Tutorial") - .foregroundColor(.accentColor) - } - .fullScreenCover(isPresented: $isShowingTutorial) { - TutorialView() - } - } else { - Button(action: { - isShowingTutorial = true - }) { - Text("Show Tutorial") - .foregroundColor(.accentColor) - } - .sheet(isPresented: $isShowingTutorial) { - TutorialView() - } - } - } - - } - .navigationBarTitle("Settings") - } - .navigationViewStyle(StackNavigationViewStyle()) - } - -} - -struct SettingsPage_Preview: PreviewProvider { - static var previews: some View { - SettingsPage() - .preferredColorScheme(.dark) - } -} diff --git a/AnimeGen/ViewController.swift b/AnimeGen/ViewController.swift index a7ef44e4..86fbb6ff 100644 --- a/AnimeGen/ViewController.swift +++ b/AnimeGen/ViewController.swift @@ -2,38 +2,32 @@ // ViewController.swift // AnimeGen // -// Created by cranci on 11/02/24. +// Created by Francesco on 04/05/24. // import UIKit -import SwiftUI class ViewController: UIViewController { + + var currentImageURL: String? + var lastImage: UIImage? + var tagsLabel: UILabel! + + var timeLabel: UILabel! + var startTime: Date? + var timer: Timer? var imageView: UIImageView! - var settingsButton: UIButton! - - var refreshButton: UIButton! - var heartButton: UIButton! - var rewindButton: UIButton! + var apiButton: UIButton! var shareButton: UIButton! var webButton: UIButton! - var apiButton: UIButton! - var historyButton: UIButton! var activityIndicator: UIActivityIndicatorView! - var lastImage: UIImage? - var tagsLabel: UILabel! - - var timeLabel: UILabel! - var startTime: Date? - var timer: Timer? - - var currentImageURL: String? - - var gradientLayer: CAGradientLayer? + @IBOutlet var RefreshButton: UIButton! + @IBOutlet var HeartButton: UIButton! + @IBOutlet var RewindButton: UIButton! var enableAnimations = UserDefaults.standard.bool(forKey: "enableAnimations") var gradient = UserDefaults.standard.bool(forKey: "enablegradient") @@ -44,13 +38,15 @@ class ViewController: UIViewController { var moetags = UserDefaults.standard.bool(forKey: "enableMoeTags") var kyokobanner = UserDefaults.standard.bool(forKey: "enableKyokobanner") + var HistoryTrue = UserDefaults.standard.bool(forKey: "enableHistory") + var alert = UserDefaults.standard.bool(forKey: "enableDeveloperAlert") var hmtaiON = UserDefaults.standard.bool(forKey: "enabledHmtaiAPI") - let choices = ["waifu.im", "pic.re", "waifu.pics", "waifu.it", "nekos.best", "Nekos api", "nekos.moe", "NekoBot", "kyoko", "Purr"] - - var counter: Int = 0 + var lightmode = UserDefaults.standard.bool(forKey: "enabledLightMode") + var counter: Int = 0 + override func viewDidLoad() { super.viewDidLoad() @@ -70,19 +66,18 @@ class ViewController: UIViewController { swipeRight.direction = .right view.addGestureRecognizer(swipeRight) - let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(settingsButtonTapped)) - swipeDown.direction = .down - view.addGestureRecognizer(swipeDown) } // Gradient if gradient { setupGradient() - } else { + animateGradient() + } else if !lightmode { view.backgroundColor = UIColor(red: 0.125, green: 0.125, blue: 0.125, alpha: 1.0) + } else if lightmode { + view.backgroundColor = UIColor.white } - // Image View imageView = UIImageView() imageView.translatesAutoresizingMaskIntoConstraints = false @@ -92,45 +87,31 @@ class ViewController: UIViewController { // Api Button apiButton = UIButton(type: .system) - apiButton.setTitle("", for: .normal) + apiButton.setTitle("pic.re", for: .normal) apiButton.addTarget(self, action: #selector(apiButtonTapped), for: .touchUpInside) apiButton.translatesAutoresizingMaskIntoConstraints = false - apiButton.backgroundColor = gradient ? UIColor(red: 0.4, green: 0.3, blue: 0.6, alpha: 1.0) : UIColor.darkGray + if gradient { + apiButton.backgroundColor = UIColor(red: 0.4, green: 0.3, blue: 0.6, alpha: 1.0) + } else if !lightmode { + apiButton.backgroundColor = UIColor.darkGray + } else if lightmode { + apiButton.backgroundColor = UIColor.lightGray + } apiButton.layer.cornerRadius = 10 apiButton.setTitleColor(UIColor.white, for: .normal) view.addSubview(apiButton) - // History Button - historyButton = UIButton(type: .system) - if #available(iOS 14.0, *) { - let historyIcon = UIImage(systemName: "clock.arrow.circlepath")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 20, weight: .regular)) - historyButton.setImage(historyIcon, for: .normal) + // Activity Indicator + activityIndicator = UIActivityIndicatorView(style: .large) + if !lightmode { + activityIndicator.color = .white } else { - let secondhistoryIcon = UIImage(systemName: "clock")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 20, weight: .regular)) - historyButton.setImage(secondhistoryIcon, for: .normal) + activityIndicator.color = .black } - historyButton.tintColor = .systemGray - historyButton.setTitleColor(.white, for: .normal) - historyButton.addTarget(self, action: #selector(historyButtonTapped), for: .touchUpInside) - historyButton.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(historyButton) - - - - // Settings Button - settingsButton = UIButton(type: .system) - let settingsIcon = UIImage(systemName: "gear")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 20, weight: .regular)) - settingsButton.setImage(settingsIcon, for: .normal) - settingsButton.tintColor = .systemGray - settingsButton.setTitleColor(.white, for: .normal) - settingsButton.titleLabel?.font = UIFont.systemFont(ofSize: 35, weight: .bold) - settingsButton.addTarget(self, action: #selector(settingsButtonTapped), for: .touchUpInside) - settingsButton.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(settingsButton) + activityIndicator.hidesWhenStopped = true + activityIndicator.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(activityIndicator) // Web Button @@ -143,43 +124,6 @@ class ViewController: UIViewController { webButton.translatesAutoresizingMaskIntoConstraints = false view.addSubview(webButton) - // Refresh Button - refreshButton = UIButton(type: .system) - let refreshImage = UIImage(systemName: "arrow.clockwise.circle.fill")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 35, weight: .bold)) - refreshButton.setImage(refreshImage, for: .normal) - refreshButton.tintColor = .systemTeal - refreshButton.setTitleColor(.white, for: .normal) - refreshButton.titleLabel?.font = UIFont.systemFont(ofSize: 35, weight: .bold) - refreshButton.addTarget(self, action: #selector(refreshButtonTapped), for: .touchUpInside) - refreshButton.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(refreshButton) - - // Heart Button - heartButton = UIButton(type: .system) - let heartImage = UIImage(systemName: "heart.fill")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 35, weight: .bold)) - heartButton.setImage(heartImage, for: .normal) - heartButton.tintColor = .systemRed - heartButton.setTitleColor(.white, for: .normal) - heartButton.titleLabel?.font = UIFont.systemFont(ofSize: 35, weight: .bold) - heartButton.addTarget(self, action: #selector(heartButtonTapped), for: .touchUpInside) - heartButton.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(heartButton) - - - // Rewind Button - rewindButton = UIButton(type: .system) - let rewindImage = UIImage(systemName: "arrowshape.turn.up.left.circle.fill")? - .withConfiguration(UIImage.SymbolConfiguration(pointSize: 35, weight: .bold)) - rewindButton.setImage(rewindImage, for: .normal) - rewindButton.tintColor = .systemGreen - rewindButton.setTitleColor(.white, for: .normal) - rewindButton.titleLabel?.font = UIFont.systemFont(ofSize: 35, weight: .bold) - rewindButton.addTarget(self, action: #selector(rewindButtonTapped), for: .touchUpInside) - rewindButton.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(rewindButton) - // Share Button shareButton = UIButton(type: .system) @@ -198,19 +142,15 @@ class ViewController: UIViewController { shareButton.addTarget(self, action: #selector(shareButtonTapped), for: .touchUpInside) shareButton.translatesAutoresizingMaskIntoConstraints = false view.addSubview(shareButton) - - - // Activity Indicator - activityIndicator = UIActivityIndicatorView(style: .large) - activityIndicator.color = .white - activityIndicator.hidesWhenStopped = true - activityIndicator.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(activityIndicator) // Tags Label tagsLabel = UILabel() - tagsLabel.textColor = .white + if !lightmode{ + tagsLabel.textColor = .white + } else { + tagsLabel.textColor = .black + } tagsLabel.textAlignment = .center tagsLabel.font = UIFont.systemFont(ofSize: 18) tagsLabel.numberOfLines = 0 @@ -220,7 +160,11 @@ class ViewController: UIViewController { // Time Label timeLabel = UILabel() - timeLabel.textColor = .white + if !lightmode{ + timeLabel.textColor = .white + } else { + timeLabel.textColor = .black + } timeLabel.textAlignment = .center timeLabel.font = UIFont.systemFont(ofSize: 18) timeLabel.numberOfLines = 0 @@ -231,7 +175,6 @@ class ViewController: UIViewController { timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTimeLabel), userInfo: nil, repeats: true) - NSLayoutConstraint.activate([ // Image View @@ -246,34 +189,14 @@ class ViewController: UIViewController { apiButton.heightAnchor.constraint(equalToConstant: 40), apiButton.widthAnchor.constraint(equalToConstant: 120), - // History button - historyButton.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10), - historyButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10), - - // Settings button - settingsButton.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 5), - settingsButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10), + // Activity button + activityIndicator.centerXAnchor.constraint(equalTo: view.centerXAnchor), + activityIndicator.centerYAnchor.constraint(equalTo: RefreshButton.topAnchor, constant: -30), // Web button webButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -25), webButton.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 20), - // Refresh button - refreshButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -15), - refreshButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), - - // Heart button - heartButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -15), - heartButton.centerXAnchor.constraint(equalTo: refreshButton.centerXAnchor, constant: -60), - - // Rewind button - rewindButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -15), - rewindButton.centerXAnchor.constraint(equalTo: refreshButton.centerXAnchor, constant: 60), - - // Activity button - activityIndicator.centerXAnchor.constraint(equalTo: view.centerXAnchor), - activityIndicator.centerYAnchor.constraint(equalTo: refreshButton.topAnchor, constant: -30), - // Share button shareButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -25), shareButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -20), @@ -286,33 +209,14 @@ class ViewController: UIViewController { // Time label timeLabel.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 10), timeLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor) - ]) - - if gradient { - animateGradient() - } - - let selectedChoiceIndex = UserDefaults.standard.integer(forKey: "SelectedChoiceIndex") - apiButton.setTitle(choices[selectedChoiceIndex], for: .normal) - - NotificationCenter.default.addObserver(self, selector: #selector(selectedChoiceChanged(_:)), name: Notification.Name("SelectedChoiceChanged"), object: nil) + + ]) if loadstart { loadImageAndTagsFromSelectedAPI() } } - - - deinit { - NotificationCenter.default.removeObserver(self) - } - - @objc func selectedChoiceChanged(_ notification: Notification) { - guard let selectedIndex = notification.object as? Int else { return } - guard selectedIndex >= 0 && selectedIndex < choices.count else { return } - apiButton.setTitle(choices[selectedIndex], for: .normal) - } - + func loadImageAndTagsFromSelectedAPI() { guard let title = apiButton.title(for: .normal) else { @@ -368,5 +272,5 @@ class ViewController: UIViewController { break } } - } +