From 00b7bf537c8845fadbf64dd346f7347a9970ec9e Mon Sep 17 00:00:00 2001 From: Thomas May Date: Mon, 23 Dec 2024 03:09:31 +0000 Subject: [PATCH 01/26] Initial spoiler (content labels) implementation --- UniSky/App.xaml | 10 +- UniSky/Controls/Compose/ComposeSheet.xaml | 1 - UniSky/Controls/Gallery/GalleryControl.xaml | 1 - .../Overlay/StandardOverlayControl.xaml | 2 + .../Controls/RichTextBlock/RichTextBlock.cs | 2 +- UniSky/Controls/Settings/SettingsSheet.xaml | 1 - UniSky/Controls/Sheet/SheetControl.xaml | 2 + UniSky/Controls/Spoiler/SpoilerControl.cs | 121 ++++++++++++++++++ UniSky/Controls/Spoiler/SpoilerControl.xaml | 98 ++++++++++++++ UniSky/DataTemplates/FeedTemplates.xaml | 61 ++++++--- UniSky/Package.appxmanifest | 2 +- .../BackgroundNotificationsService.cs | 2 + UniSky/Themes/Generic.xaml | 11 ++ UniSky/UniSky.csproj | 9 ++ .../Posts/PostEmbedPostViewModel.cs | 7 + UniSky/ViewModels/Posts/PostViewModel.cs | 30 ++++- 16 files changed, 325 insertions(+), 35 deletions(-) create mode 100644 UniSky/Controls/Spoiler/SpoilerControl.cs create mode 100644 UniSky/Controls/Spoiler/SpoilerControl.xaml create mode 100644 UniSky/Themes/Generic.xaml diff --git a/UniSky/App.xaml b/UniSky/App.xaml index 23d4582..cfd9c53 100644 --- a/UniSky/App.xaml +++ b/UniSky/App.xaml @@ -14,19 +14,13 @@ - - + - - - - - 14 @@ -36,8 +30,6 @@ Color="{ThemeResource SystemListExtraLowColor}"/> - - + + + + diff --git a/UniSky/DataTemplates/FeedTemplates.xaml b/UniSky/DataTemplates/FeedTemplates.xaml index 63e8918..fcf5b59 100644 --- a/UniSky/DataTemplates/FeedTemplates.xaml +++ b/UniSky/DataTemplates/FeedTemplates.xaml @@ -60,6 +60,30 @@ + + + + + + + + + + + + + + + + @@ -209,15 +233,14 @@ Margin="0,2,0,0" VerticalAlignment="Top"/> - - - + @@ -527,16 +550,16 @@ Margin="0,0,0,4" VerticalAlignment="Top"/> - - - + diff --git a/UniSky/Package.appxmanifest b/UniSky/Package.appxmanifest index bbc6cae..c1361f9 100644 --- a/UniSky/Package.appxmanifest +++ b/UniSky/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.0.180.0" /> diff --git a/UniSky/Services/BackgroundNotificationsService.cs b/UniSky/Services/BackgroundNotificationsService.cs index 8a11786..796a6b7 100644 --- a/UniSky/Services/BackgroundNotificationsService.cs +++ b/UniSky/Services/BackgroundNotificationsService.cs @@ -24,8 +24,10 @@ private async Task RegisterBadgeUpdateBackgroundTask() return true; var status = await BackgroundExecutionManager.RequestAccessAsync(); +#pragma warning disable CS0618 // Type or member is obsolete (why is this disabled) if (status is BackgroundAccessStatus.Denied or BackgroundAccessStatus.DeniedBySystemPolicy or BackgroundAccessStatus.DeniedByUser) return false; +#pragma warning restore CS0618 // Type or member is obsolete var builder = new BackgroundTaskBuilder() { diff --git a/UniSky/Themes/Generic.xaml b/UniSky/Themes/Generic.xaml new file mode 100644 index 0000000..a0f7541 --- /dev/null +++ b/UniSky/Themes/Generic.xaml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/UniSky/UniSky.csproj b/UniSky/UniSky.csproj index 7affcb8..8bc5322 100644 --- a/UniSky/UniSky.csproj +++ b/UniSky/UniSky.csproj @@ -180,6 +180,7 @@ SheetRootControl.xaml + @@ -553,6 +554,14 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + MSBuild:Compile Designer diff --git a/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs b/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs index fe7c537..6937e9a 100644 --- a/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs +++ b/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs @@ -28,6 +28,8 @@ public partial class PostEmbedPostViewModel : PostEmbedViewModel private string date; [ObservableProperty] private PostEmbedViewModel embed; + [ObservableProperty] + private ContentWarningViewModel warning; public PostEmbedPostViewModel(ViewRecord view, Post post) : base(view) { @@ -40,6 +42,11 @@ public PostEmbedPostViewModel(ViewRecord view, Post post) : base(view) Embed = PostViewModel.CreateEmbedViewModel(view.Embeds?.FirstOrDefault(), true); + if (this.view.Labels?.Count is not (null or 0)) + { + Warning = new ContentWarningViewModel(this.view.Labels); + } + var timeSinceIndex = DateTime.Now - (view.IndexedAt.Value.ToLocalTime()); var date = timeSinceIndex.Humanize(1, minUnit: Humanizer.Localisation.TimeUnit.Second); Date = date; diff --git a/UniSky/ViewModels/Posts/PostViewModel.cs b/UniSky/ViewModels/Posts/PostViewModel.cs index 9e930dd..7e9417c 100644 --- a/UniSky/ViewModels/Posts/PostViewModel.cs +++ b/UniSky/ViewModels/Posts/PostViewModel.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; @@ -10,6 +11,7 @@ using FishyFlip.Lexicon.App.Bsky.Actor; using FishyFlip.Lexicon.App.Bsky.Embed; using FishyFlip.Lexicon.App.Bsky.Feed; +using FishyFlip.Lexicon.Com.Atproto.Label; using FishyFlip.Lexicon.Com.Atproto.Repo; using FishyFlip.Models; using FishyFlip.Tools; @@ -27,6 +29,22 @@ namespace UniSky.ViewModels.Posts; + +public partial class ContentWarningViewModel : ViewModelBase +{ + [ObservableProperty] + private string warning; + + [ObservableProperty] + private bool isHidden; + + public ContentWarningViewModel(List @@ -556,10 +560,13 @@ Warning="{x:Bind Warning}" WarningTemplate="{StaticResource PostContentWarningTemplate}" IsHidden="{x:Bind Warning.IsHidden, Mode=TwoWay}" - Margin="0,4,0,0" - Visibility="{Binding Embed, Converter={StaticResource VisibilityConverter}}" - Content="{x:Bind Embed}" - ContentTemplateSelector="{StaticResource PostEmbedTemplateSelector}"/> + Margin="0,4,0,0"> + + diff --git a/UniSky/DataTemplates/ThreadTemplates.xaml b/UniSky/DataTemplates/ThreadTemplates.xaml index 4a22297..96bc5fc 100644 --- a/UniSky/DataTemplates/ThreadTemplates.xaml +++ b/UniSky/DataTemplates/ThreadTemplates.xaml @@ -120,17 +120,20 @@ Margin="0,4,0,4" VerticalAlignment="Top"/> - + + - - + ThreadPage.xaml + @@ -571,9 +572,6 @@ 8.4.0 - - 3.1.0-alpha.23 - 2.14.1 @@ -627,6 +625,10 @@ + + {f6c3e504-4aa1-4ce9-a0f0-8218216676f0} + FishyFlip + {92c64af9-26a6-423b-9bb0-fd21d01e976a} UniSky.Background @@ -635,6 +637,10 @@ {7491ea1a-e1b7-469c-a3c2-5202aa14ce26} UniSky.Models + + {ebad0b40-6694-488f-9dca-da1bf453645a} + UniSky.Moderation + {18b2b20a-5ba7-428c-a2cc-d9ea99a943cd} UniSky.Services diff --git a/UniSky/ViewModels/Feeds/FeedItemCollection.cs b/UniSky/ViewModels/Feeds/FeedItemCollection.cs index 844eb77..176587c 100644 --- a/UniSky/ViewModels/Feeds/FeedItemCollection.cs +++ b/UniSky/ViewModels/Feeds/FeedItemCollection.cs @@ -7,6 +7,9 @@ using FishyFlip.Lexicon.App.Bsky.Feed; using FishyFlip.Models; using FishyFlip.Tools; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using UniSky.Moderation; using UniSky.Services; using UniSky.ViewModels.Posts; using UniSky.ViewModels.Profile; @@ -27,6 +30,8 @@ public class FeedItemCollection : ObservableCollection, ISupportI private readonly ATDid did; private readonly string filterType; private readonly IProtocolService protocolService; + private readonly IModerationService moderationService; + private readonly ILogger logger; private readonly HashSet ids = []; private string cursor; @@ -37,6 +42,8 @@ public FeedItemCollection(FeedViewModel parent, FeedType type, ATUri uri, IProto this.type = type; this.uri = uri; this.protocolService = protocolService; + this.moderationService = ServiceContainer.Scoped.GetRequiredService(); + this.logger = ServiceContainer.Scoped.GetRequiredService>(); } public FeedItemCollection(ProfileFeedViewModel parent, FeedType type, ATDid did, string filterType, IProtocolService protocolService) @@ -46,6 +53,8 @@ public FeedItemCollection(ProfileFeedViewModel parent, FeedType type, ATDid did, this.did = did; this.filterType = filterType; this.protocolService = protocolService; + this.moderationService = ServiceContainer.Scoped.GetRequiredService(); + this.logger = ServiceContainer.Scoped.GetRequiredService>(); } public bool HasMoreItems { get; private set; } = true; @@ -136,6 +145,7 @@ private async Task InternalLoadMoreItemsAsync(int count) throw new InvalidOperationException(); } + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { foreach (var item in posts) diff --git a/UniSky/ViewModels/FeedsViewModel.cs b/UniSky/ViewModels/FeedsViewModel.cs index 6e724b6..ac59d7f 100644 --- a/UniSky/ViewModels/FeedsViewModel.cs +++ b/UniSky/ViewModels/FeedsViewModel.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Logging; using UniSky.Controls.Compose; using UniSky.Extensions; +using UniSky.Moderation; using UniSky.Services; using UniSky.ViewModels.Feeds; diff --git a/UniSky/ViewModels/HomeViewModel.cs b/UniSky/ViewModels/HomeViewModel.cs index 21391b0..00173fd 100644 --- a/UniSky/ViewModels/HomeViewModel.cs +++ b/UniSky/ViewModels/HomeViewModel.cs @@ -14,6 +14,7 @@ using UniSky.Controls.Settings; using UniSky.Extensions; using UniSky.Models; +using UniSky.Moderation; using UniSky.Pages; using UniSky.Services; using Windows.Foundation.Metadata; @@ -48,6 +49,7 @@ public partial class HomeViewModel : ViewModelBase private readonly IProtocolService protocolService; private readonly INotificationsService notificationsService; private readonly IBadgeService badgeService; + private readonly IModerationService moderationService; private readonly SessionModel sessionModel; private readonly DispatcherTimer notificationUpdateTimer; @@ -97,6 +99,7 @@ public HomeViewModel( IProtocolService protocolService, INotificationsService notificationsService, IBadgeService badgeService, + IModerationService moderationService, ILogger logger, ILogger protocolLogger) { @@ -117,6 +120,7 @@ public HomeViewModel( this.sessionModel = sessionModel; this.notificationsService = notificationsService; this.badgeService = badgeService; + this.moderationService = moderationService; this.atLogger = protocolLogger; var protocol = new ATProtocolBuilder() @@ -169,6 +173,18 @@ await RefreshSessionAsync() this.Page = HomePages.Home; + var moderationPrefs = await protocol.GetModerationPrefsAsync() + .ConfigureAwait(false); + + var labelDefs = await protocol.GetLabelDefinitionsAsync(moderationPrefs) + .ConfigureAwait(false); + + await protocol.ConfigureLabelersAsync(moderationPrefs.Labelers) + .ConfigureAwait(false); + + moderationService.ModerationOptions + = new ModerationOptions(protocol.Session.Did, moderationPrefs, labelDefs); + try { await this.notificationsService.InitializeAsync(); diff --git a/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs b/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs index 6937e9a..0f9c542 100644 --- a/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs +++ b/UniSky/ViewModels/Posts/PostEmbedPostViewModel.cs @@ -42,11 +42,6 @@ public PostEmbedPostViewModel(ViewRecord view, Post post) : base(view) Embed = PostViewModel.CreateEmbedViewModel(view.Embeds?.FirstOrDefault(), true); - if (this.view.Labels?.Count is not (null or 0)) - { - Warning = new ContentWarningViewModel(this.view.Labels); - } - var timeSinceIndex = DateTime.Now - (view.IndexedAt.Value.ToLocalTime()); var date = timeSinceIndex.Humanize(1, minUnit: Humanizer.Localisation.TimeUnit.Second); Date = date; diff --git a/UniSky/ViewModels/Posts/PostViewModel.cs b/UniSky/ViewModels/Posts/PostViewModel.cs index 7e9417c..2e2d2fe 100644 --- a/UniSky/ViewModels/Posts/PostViewModel.cs +++ b/UniSky/ViewModels/Posts/PostViewModel.cs @@ -17,8 +17,10 @@ using FishyFlip.Tools; using Humanizer; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using UniSky.Controls.Compose; using UniSky.Helpers; +using UniSky.Moderation; using UniSky.Pages; using UniSky.Services; using UniSky.ViewModels.Profile; @@ -38,7 +40,7 @@ public partial class ContentWarningViewModel : ViewModelBase [ObservableProperty] private bool isHidden; - public ContentWarningViewModel(List + + + + + + Version="1.0.183.0" /> diff --git a/UniSky/Pages/NotificationsPage.xaml b/UniSky/Pages/NotificationsPage.xaml index 634ce0d..c240ffc 100644 --- a/UniSky/Pages/NotificationsPage.xaml +++ b/UniSky/Pages/NotificationsPage.xaml @@ -18,85 +18,88 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + @@ -126,12 +129,10 @@ ItemsSource="{x:Bind ViewModel.Notifications, Mode=OneWay}" ItemTemplate="{StaticResource NotificationContentTemplate}" SelectionMode="None" - IsItemClickEnabled="True" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ScrollViewer.IsVerticalScrollChainingEnabled="True" - Loaded="RootList_Loaded" - ItemClick="RootList_ItemClick"> + Loaded="RootList_Loaded"> diff --git a/UniSky/Pages/ProfilePage.xaml b/UniSky/Pages/ProfilePage.xaml index c8cde34..a45b661 100644 --- a/UniSky/Pages/ProfilePage.xaml +++ b/UniSky/Pages/ProfilePage.xaml @@ -11,7 +11,7 @@ xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" xmlns:mux="using:Microsoft.UI.Xaml.Controls" xmlns:w1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)" - xmlns:aurora="using:System.Windows.Shell.Aurora" + xmlns:aurora="using:System.Windows.Shell.Aurora" xmlns:labels="using:UniSky.Controls.Labels" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Loaded="Page_Loaded" @@ -118,6 +118,7 @@ + @@ -149,7 +150,7 @@ Margin="-4,-8,-8,-8" Tapped="ProfileContainer_Tapped" Grid.ColumnSpan="2" - Grid.RowSpan="3"/> + Grid.RowSpan="4"/> + + + + + + + + + + + + + + + + + + + + + + + + + @@ -81,38 +209,19 @@ - - - - - - - - - - - - - + + @@ -120,9 +229,9 @@ - diff --git a/UniSky/DataTemplates/FeedTemplates.xaml b/UniSky/DataTemplates/FeedTemplates.xaml index 09cd8ca..5fcacf9 100644 --- a/UniSky/DataTemplates/FeedTemplates.xaml +++ b/UniSky/DataTemplates/FeedTemplates.xaml @@ -229,7 +229,7 @@ + Margin="0,4,0,0"/> () .GetNavigationService("Home"); - navigationService.Navigate(this.view.Uri); + navigationService.Navigate(this.View.Uri); } } From 7af98b47f070166ba8514fc1caecb59d0d960c3e Mon Sep 17 00:00:00 2001 From: Thomas May Date: Tue, 24 Dec 2024 20:04:34 +0000 Subject: [PATCH 13/26] New icons! --- UniSky/Assets/BadgeLogo.scale-100.png | Bin 822 -> 670 bytes UniSky/Assets/BadgeLogo.scale-125.png | Bin 964 -> 819 bytes UniSky/Assets/BadgeLogo.scale-150.png | Bin 1193 -> 853 bytes UniSky/Assets/BadgeLogo.scale-200.png | Bin 1486 -> 1024 bytes UniSky/Assets/BadgeLogo.scale-400.png | Bin 3552 -> 1807 bytes UniSky/Assets/LargeTile.scale-100.png | Bin 4787 -> 3709 bytes UniSky/Assets/LargeTile.scale-125.png | Bin 6045 -> 4007 bytes UniSky/Assets/LargeTile.scale-150.png | Bin 7497 -> 6078 bytes UniSky/Assets/LargeTile.scale-200.png | Bin 10525 -> 7268 bytes UniSky/Assets/LargeTile.scale-400.png | Bin 24408 -> 18042 bytes UniSky/Assets/SmallTile.scale-100.png | Bin 1362 -> 1410 bytes UniSky/Assets/SmallTile.scale-125.png | Bin 1724 -> 1706 bytes UniSky/Assets/SmallTile.scale-150.png | Bin 2184 -> 1903 bytes UniSky/Assets/SmallTile.scale-200.png | Bin 2795 -> 2343 bytes UniSky/Assets/SmallTile.scale-400.png | Bin 6130 -> 2673 bytes UniSky/Assets/SplashScreen.scale-100.png | Bin 4972 -> 3307 bytes UniSky/Assets/SplashScreen.scale-125.png | Bin 6382 -> 4435 bytes UniSky/Assets/SplashScreen.scale-150.png | Bin 7863 -> 5562 bytes UniSky/Assets/SplashScreen.scale-200.png | Bin 11264 -> 8559 bytes UniSky/Assets/SplashScreen.scale-400.png | Bin 28399 -> 23210 bytes UniSky/Assets/Square150x150Logo.scale-100.png | Bin 2179 -> 1435 bytes UniSky/Assets/Square150x150Logo.scale-125.png | Bin 2716 -> 2287 bytes UniSky/Assets/Square150x150Logo.scale-150.png | Bin 3197 -> 1953 bytes UniSky/Assets/Square150x150Logo.scale-200.png | Bin 4594 -> 2417 bytes UniSky/Assets/Square150x150Logo.scale-400.png | Bin 10080 -> 7524 bytes ...go.altform-lightunplated_targetsize-16.png | Bin 532 -> 356 bytes ...go.altform-lightunplated_targetsize-24.png | Bin 724 -> 444 bytes ...o.altform-lightunplated_targetsize-256.png | Bin 7193 -> 2987 bytes ...go.altform-lightunplated_targetsize-32.png | Bin 931 -> 519 bytes ...go.altform-lightunplated_targetsize-48.png | Bin 1417 -> 649 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 411 -> 356 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 5708 -> 2987 bytes ...x44Logo.altform-unplated_targetsize-32.png | Bin 759 -> 519 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 1096 -> 649 bytes UniSky/Assets/Square44x44Logo.scale-100.png | Bin 1116 -> 1109 bytes UniSky/Assets/Square44x44Logo.scale-125.png | Bin 1491 -> 1619 bytes UniSky/Assets/Square44x44Logo.scale-150.png | Bin 1843 -> 1799 bytes UniSky/Assets/Square44x44Logo.scale-200.png | Bin 2474 -> 1753 bytes UniSky/Assets/Square44x44Logo.scale-400.png | Bin 5083 -> 2580 bytes .../Assets/Square44x44Logo.targetsize-16.png | Bin 395 -> 461 bytes .../Assets/Square44x44Logo.targetsize-24.png | Bin 607 -> 671 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 559 -> 444 bytes .../Assets/Square44x44Logo.targetsize-256.png | Bin 7941 -> 3670 bytes .../Assets/Square44x44Logo.targetsize-32.png | Bin 812 -> 844 bytes .../Assets/Square44x44Logo.targetsize-48.png | Bin 1267 -> 1243 bytes UniSky/Assets/StoreLogo.scale-100.png | Bin 1159 -> 705 bytes UniSky/Assets/StoreLogo.scale-125.png | Bin 1410 -> 907 bytes UniSky/Assets/StoreLogo.scale-150.png | Bin 1664 -> 1021 bytes UniSky/Assets/StoreLogo.scale-200.png | Bin 2194 -> 1184 bytes UniSky/Assets/StoreLogo.scale-400.png | Bin 4394 -> 2171 bytes UniSky/Assets/Wide310x150Logo.scale-100.png | Bin 2257 -> 1828 bytes UniSky/Assets/Wide310x150Logo.scale-125.png | Bin 2844 -> 2308 bytes UniSky/Assets/Wide310x150Logo.scale-150.png | Bin 3403 -> 2667 bytes UniSky/Assets/Wide310x150Logo.scale-200.png | Bin 4972 -> 3307 bytes UniSky/Assets/Wide310x150Logo.scale-400.png | Bin 11264 -> 8559 bytes UniSky/Controls/Settings/SettingsSheet.xaml | 3 +++ UniSky/Package.appxmanifest | 2 +- UniSky/Templates/Icons.xaml | 4 ++-- 58 files changed, 6 insertions(+), 3 deletions(-) diff --git a/UniSky/Assets/BadgeLogo.scale-100.png b/UniSky/Assets/BadgeLogo.scale-100.png index 2350f073b4ed1d21b39bc33568da43b0b68ce9c9..26eb1fce9f710c2f94eaf9f54970623262ab9cf6 100644 GIT binary patch delta 368 zcmV-$0gwK+2A&15I01iANkl&r2 zxd3n*0s2kAjLU9$glxp?MAg6h_bif->0PFwOq-H={E_mb43(-4nFcbw7cyDYzJOQY z0T^Svg%B#&zmW2?4E(TIh*3=hO zvc~w5X@5cAUep@HuY3_b;L0a~>!>x;Vh1S>XL=55Y9`w3AaR*_ZX|cfId%a9Uc8WF z*#XaSz>ybnEIVLn0#Nv5m;Bqx69G5|p1jZj&(Zsb_-;@9d%QwC&3-dAWZGVF&_t#k z@7LuW7$BdV(&1x#dGkc3sb-$Y)GszqxTdUm!qqpMCuF*n>CWeK#QIyG2lxh5kPD&pzp_^V O0000i#1-1sTI01j@Nklo#qROjkXGDB1p8=*4FnG zYIwEasHBITPUnw1X}8<8EXy89n)0lmvE2rebS}^H+g_~K>+_P%d)+hyobj8faJtt8 z%z9YitkOHX;YojqH^8p+p1=06L5ha}BqSvDu>u!kj9C9O!^BR})) zE40!xi07MI0W-i)U-2J)0VfKlk${uH3t%0HbT8qZC5mg;ftSFkzTri{BybmaKj7tW z03Uz_py~(L6%l)ZN5Gm-8NeFw7#Q=pn}8+n`Ug*ZuGD`Wz8_fi)#g=tw$e&}fRd!V zut!tUr^4ql_a)u)qWKIoy(o20aml|iz@^+@+}vt-SU!kv8tF8Z1+0V5GH4NQ2}158B3bVQ7Jwqt$+Z}1V|UjN^%00000 MNkvXXu0jG}g4wtF*Z=?k diff --git a/UniSky/Assets/BadgeLogo.scale-125.png b/UniSky/Assets/BadgeLogo.scale-125.png index 5462cdc376b247a6b767f8e7730b64a46cd4b8b1..9a2237bb55db7ce7078710a7127dd65de6291115 100644 GIT binary patch delta 519 zcmV+i0{H#J2eSsSHvxYE=1D|BR7gv`mO*aQP!NVcKZivxK-VCZMMbO91qYzCAOYu~ zYF8WpjsZo2Q&0&AH(=FPY?`dP zuR=K;F&dBZLd64_Udwcq$z;AZ0WN`0z&Ya5<*tbItr(3*d9Q!h+s(4lOYq-#<{yQMT&Bkz8OHHhrUOYXlj)uR%hG?Afj{p>`4rwF(~eBT%52Rs zlyq07J2DL_)#ez=v;%+d?N*BhLrK#uTWSX~ZIxF~Z7^fnQd>0*ENC#-G_XKhZyKm+ z&}bT{(JnR(_y*TgVS;HO(q1Q<24vcn>6@hOxV8wd?aS)5e*mMChFc_b&949e002ov JPDHLkV1lXP^c4UA delta 666 zcmV;L0%iTP2E+%jHvxYFcS%G+R7gwZ)iG>MaTLe#-~T?6RtFJjn`mo6f?&}FF%c04 zH4>4aB-(_bsimVDG{%}RkT9??Vv`pJWfAElA}UdlzR>7vweNfly^s4&-+lL$n)*rJ za?bgmbMOD%`@hn%1e^jM1NVUAX4dFy{+5|F0LOs4@r={b{Lp`0Ec6=K@0%=^ne78! z`R2fG0ewCiD*=~$vw8vjz?^Ry>yIR*ZEGayDsaswvH(Mph9u>DF4h=Hn)Fep54hrk zX@EgV{XXt|7jVMwLyBI%+5>w0q7)|u9P-f=v%o<=tPD5+{Pc@b9F8OvB$;ni#R^F` z%xt|+03DKUN?L#Eb5$Uz5J{SlG~=@=+CvD}eNfV{qz)fUF(YY0X4V3H_Ir_`r`!cN z?~@tEfmWGWBQWZ-8NLGTX4VFL@yQIMX0|GdqNph8edTUsS}SQFgfJkf*(Wo6h@xmp zn%}N&e_3^yjem=E?)N1C4Zt&B@gL+De1Obs9q`0gE}?&?X4Y1o7u@h%2%$?-m!u7n z)<|lVv^qY!>tT|{lif%xp`db~8}$MG1qI-7^3e;`cFW3OHJ&_6YF9)lLEzeQjCImmAnBsaw*H z_z4~kA&mGs&DVBH>Xp5ZgYA%wTSZu$BJ&gBx$ieM>@fdBvi07*qoM6N<$f(Lj% AmH+?% diff --git a/UniSky/Assets/BadgeLogo.scale-150.png b/UniSky/Assets/BadgeLogo.scale-150.png index 82317a01da9bcf8c56d0bb225cd8a8fe492ddebe..870c20f9361d56de099641b797e8dac0ef49cb57 100644 GIT binary patch delta 554 zcmV+_0@eMg3DpL$HvxYF2uVaiR9HvNmQ8NcP!vXwU5gDM0c86A0WGaE& zU2_)XM!*Q;XIHuDY+3|~0q_cV5GAVA2~}w=SE?+4*u+kq!~!yvvgA3F=~$*+pW~5f zSEldbn&e4o=rVo*TX~kB_yaCv?u1rv`?FOv6^Yye_WZKK+cq*JK0|e!0NcK$(9SV% zx4KWIjYwp(rlo(qwlZ{V2;WlIcIY4y@hx>~haMUtv~(XZU=k!-(?uk*3A_ofPBQe= z5Ww&7e$(w6)0a?h{5K+z9LW6gI>`a~<#mz+17PeAu7PjB%lRjnp2_sp{~cJvjAeSh zpjKs#VpofJg4mHvr%O@o=QMoTbP=#NYznV$Ol)w0HC=!;BG z{Qc*wQN+(tRVlH?E)z)%tCfi)=3FfkSrN8UCbA+YO(s$kmMjyg$!R7Nabb;R sA}*($Ohh841DQVfeN#ftf!}-n0+@jMAY+EALI3~&07*qoM6N<$f@_NhX#fBK delta 896 zcmV-`1AqM02B`_KHvxYGTuDShR9Hvt*Gq^TRTReY@7(Hi%wmj^5fU5|9VI3XqeK%F zg814-cOr_2uEd4eiZ4*mjV@$d>RKn@V;j(j=)xDssGv#2WF*PLjG2ryjcL@>3jlCF%|082^Ik|dAG09Q+z zb@!`c5V`xfq*+N5F&h9$O9^O6Iv3L+ZZ@;GJDpC7K~JaCNoMwzq+4P(#5tfPU;cL9IJ<{E!~b@wZhySF8si4)hbPST9K zU*0RY`?kSB=t5lw>%rkdPy&t*~^kP#Bc<2>K#Aa{Teg-R?@2fFBixe;I@>~i6luW zrIV6gi(P*g(d#Lt6R{}Zjrd!<2xb-+7cK7PU%-RFSLOdqKM$Wr5yzefz6KtO>sRiq zD2jC{r71}}Buz`&D`~2H>Q{~#0!fRKew6fuq#q<5E|1CG*j)KM%Cf8r9GA3B(*2Td zFOLtSZbs#p@p6uRlCG6BU$vQm+eRd29CuUE`Z}z=k*nr%*-B^ zG#TrwXxBV>_Pb8fBeA$*Lz1qKg&N+M^j<91a6>FqZRqD%sNr2n@5EvaM`K|Hci#$} zju(80@7;a9yElQk7!I-E?%U$}m4GMX=pmly8~1n&hj?oFs;dBAi8E9<)a`b&-WYe! zfRA`$Q-xQTuT~TA%#hdYW59|Z05A#s5}Qjo@N67265w9ov%Y6r0UUDofp4L}cHrZ( z7oZD#Ugzz%)}z4PGc(%-Oqki}qA0#8kG=!td7foiwg=d3W~Yjx_^#1ttGVWs4jD00000f{F- zYI&F{iR)Po-7W4WPUCpDaU{OI?K(5R-^|(@TM8|XMC2>5hvknkW<-k_<)dp^mfZw; zBJxTKEv$$D41gnGe;-R9IBtuXbJ0RqkS=f=xB(z)^%Tg0-~2NJeUxL9U9Fi>KI&vy zwgzm9NDsIJTo13SGEl~wIdI)cw#`c0qbqW;(pAi2piJ~_mKS-)h*_JoJ!YYlmCrR~5*a2J@ z9svscT1Eo^e}~S2#jB6LX`*+seALWjD|B?<<`Zdtr4j9Ee(7SF8JKwNTrdp=$L&t!_;Et3F1H zjMNhzvOpuvgik`PK5#)(j{~*(Fw9>?8*f&P_Gn+=e-Yn=mR-Xk54@W&CEfOA% zN+Zj5kQMF(-Zf%=;$CQ;0k47e77GtiXXJ|k?zvaK6yiSs@59Lm7@!B-hqGt=_Smj# zK0f+viQ;dU9mP&^EM2bIIyr*H3O7WhC@u!RT%$ej;@t!&3&nDhe zGs(>2SUol4*AwrVF-dLlo*CoMC*E^OlDWluE{Wevyr&{bWAUDf_;JL0f+W$zdxH3J s#e3B1C$;)HoR5WC-BGJM;rulI0@6*Zl-X1EzW@LL07*qoM6N<$f@gqW5C8xG delta 1228 zcmV;-1T*`92+j+TNeaUN01m?e$8V@)kyCUD_I3dP=mP)%_L0zCf8erKcl$w3asU7X zfk{L`RA@u(*{g0P4#vWOzWg2KBj z`g2hjUB`-fV+BQKK_*2PT@;ZD1%VI}$*ya=%IsP@yF1Uf3*VV$9(QJE-kD7=_H#9y z=lprj%z5AUyl13Yf3w~^4A(iutLrj-7w zuCN+7LalzF&)s`!dix)_`+DI0EEliJ?WnuoT&W1`uL?#Zz&pS-HNDTEQmM2UcpE6h zWU725olkx_a4JTpa16L34%TVzz8N?g2cNWg_AS4r9nJR1Y;0-lz%Ptu|ot0MvP1oQy^#OXERx!7Y~z%$_@ZN?a|Nx-UU zE|z*GfyZMqt#bFrvc6h10<4z1F9!x0?Ps zS-(TI!{oNh-S3QrW$wON(yOsNr(so1V4yaZ+d?zjf9>uUT$t{@(9CvAx+2DM8qf?( zK$3dR?B!T!W-m$F9Lw8KGl9X{Slf00m8Fy|ooTO+7S&APPf5kvcv}`o+BGpT(N!oE z%*`XmP0GywFZl=>_8ZQxT$57yRe+b@!k zv^ECXe{{gi9#GX1lB5r+K6lER8Ax7|_Le_XCQvGs4oLc}QsvThaB_08l4s4M-`!W5 z+2=F#t#!h$!2Kzu6ERTX?l%Ho#pm`V;A?lkDdsyRcb^M90sH_IV^5h@-=G?)*H;nv z5!mkT^JAWhODHOpO7l}n>m>C^T9Li4UN32tf25_7u8eJRDr66)U8%?)?4cDST*Nq#oae$*F-7)zB8zl zjkzi2(-L4?b{2H8oCO|@c{Rn|w`4Ev7uz{tYs{}~$~9ap7L%Fn?C=IGuLY8JmP)0r ze;81`3Cx)@=LSi=u{?*Pl8(f}9D2=cMJ!ak31r{=l=s~h?d#AUYo4Tqu~79UU}ggy zc*z-+^rfUP+B~+Aq|;{B9}CrB0>hFH#qt&%HnZQ%?6{=EG1#I*X7=AdGR<)JHNa53 zB{a!_`^tS~M~L;d3)2~P_uFc-Yf^S{j0N4(jqe(0KQKtor?7uDslHE qW_A~FUAF)KDW!Bg)|)kJhW!hg=uJ|fVc4hu0000Pfu3`qoS#ip=g0fK&wE=U0(V!wA;%v@*u?1^VQ|K6+LFO6z>?C9Qe z?mK?**bc3;zmWV6f@87rlp|UQ001J{1!D|IW>+REAtJEO0=a)|%rBh&eacJQmv%|s z0PrELvyPd%V*tMbID+6r#_|WZ=+um{9b;>>m5f+|69;Q8NKUnS_UAKRe&zBm$$bDH zkbDEcO8`LY?0+P;yq|Lh;J2w66M4$b^Od0(V`i^dQzmXQy{wb|{GaD$XM1Ot;B{a0 zB4q{?$;=QO0XTn2F|{;aUd<={faL1{UY@=8EL99Bveq$GH(shx*MK5x5mQa#r3y_9 zDDuL@RGaZqg|-YR5@k$v5ieEf!hj+{$COUGh;$M!Rp{D)B7?`2#tT7Y|FZv2|2pN) z_D<{ZQiVPZC{h|zBq0zOw!12UzGz?=S${o^4JqycTMg3zZQ0UH34pXe%ZuD%HqHwk|F5wZaQ-qTee z{;$pzVEz^I^doQsW>!I+$ATELUkTcP;wq@~SP(<@E1?@udq))0^dklX>h6eQntnuL zK;<1#EIXefQ5aBlM-r${UYEZq^smi5eGo=|_OCil~K% zybZvS{MkPi3sD;Y;4uITV9!4g3$YszJ<&b}yeK3C1|}IWFv);{Nd^o|GGJhm0Rxi^ z7?^)#z`z(x-w~S_0s~lqWVK;*p3v zFf@;yIM6yfJ-3>S=#&}Z&(CM)ud6X)k`djoPWNafRYida-s0b!Y$~;O+aKH z8IX*q%|hV?f{_{dw_R+2l2$}577FiAyw87y1}Mph3t35crIGUqdsd`U~PibAS3lcv(Z?Mv^DK{(XUH>i5K-`OVll zmwk(a6L;t&urKGn771P4q0j(pvpPh_5tm zVj%IA#`O;=zOr%?1BbF-%rL&dBAUVioG3r{1q!2g?1228r+ RdFlWF002ovPDHLkV1il?%H99~ delta 3274 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 IM6N<$g6B*;QUCw| diff --git a/UniSky/Assets/LargeTile.scale-100.png b/UniSky/Assets/LargeTile.scale-100.png index 12952da8dff475c7c95eedcdf295e97dca278f4b..77a470885cfc3a092b0d2dc1f9b529c32d6f0cc5 100644 GIT binary patch literal 3709 zcmeHK`8ONd7S>6nvuLRrTOxX^RW;9#8tTb2+_q|VQB#B(OO02>B_(lNw=oZuBD9H^ zf+AW&j44G1Q(}x3L1@sJp1wce{r28Z_pG(o-fN%l+iS1A&e~^v2pcQ&v!||{5)cqL zYjMxyR{?<|8b3`)@G!H~Oe#NgfS`L0p#lQu+JD-St|!>Xhk>$%iP3||JkBH~U4F~q zBe!BveBiU=y?cs2CJk#jdCk)o;jq>I$2EN?&^j>3o?&YnUgm92+cv^H4oPDY}Ug#c%wYMvq#Uj(T<%r!AmMP zjn%xPgzzM))GevwF7f#jOeWJ@Ffqm9AyaWFWOpcSlZ9|-6>=Jo)a)@mgHKzut#OXk zMZ@YnduZ9+Qsnnax%6xo#Ga@s95;Y6SOY6R*=7`7j(LxCj)~csnwsJvk;vDMc$6n` z|I?isUk|$%;^%=HWK^ni4GvdX_tM|hI7F8i??&G5G}wj2tojGCQxI&Wd{@mhffBCHLw<>A*^gS3jCT!D_X3?T_{jt+MaVqr*!3FphC zkF#pKY|1Ik+N%G4NwlnFG%Yi*?KxU5=zf|YxMCg9sxn;ZLRanr(rd|$00}W*aP&%C?7?fx`I2l%0Hs#6&t~|F*dg9Yx9+T2 zqJvd{^4W?{rGCiN3mUgzHs=abEtV|B^zV-40Rl?Z#X{$b;mFh3^Wwky7-wH{_f+uc z<$pK*{HMkM&UCP#kQ?~rej7RIU!_E_#|%GlChxve3^LQhabx0&>Qz|(P-7{vrX>_&BO zD@InPNTGjj9zY$ZBGyLkmwKkzCRavGVOrv+J~azTY=kY3(DDE`ou44Jff{U&b?0%j ziP*2bGS(NZBdrxfL9qUZ5Ew;#=+Rhtz*2IPqOjYszb1G$6MO2=(E<{tfUJX zqQ-;v^8a-|JH=9~BYwYLQrJ@=LZoW$i@)X?Rx;i2Y@ge9VoQCKBGTpzy9r+{eu;;T zTI==Lve@4M6CP56xXW&e8&)y9VwMw9Rz`;qKA%sYVf%A`kBWMb?way3)_6*E)_2eh z^Ch3*iY)A!1g!we~}n)y)b>OTT1$gK&w)4Z9}8>q8N|UZ|9e1JnIF2f9EwY?4!7Kg+pMLC->C`_HmQK4bC15JO{0%d2`VLE< za<+9&pZ|tq#}*yUEF^$58vk$-sm*U60G%JJ#U!K_)g?sV49un1?zR6Kfoc>c!WERs zQp(zL(AfdrVS&=45ppX`f(gZv0Th=?E4VJm6o`K{i^jIw9>-s7fWU7iY*tTGK&j^p z!M@-q*&r`3L{1tZoH3`gurRX%R?;3=XaGS)8X68N0Qe?2E-~+7R*Pq0Vk!u_AyEzq znv{b{h1kgG>0`Sp@2b9`^aNXu2u=8Nxo&1tB+^L!>A`1o*FNwJ~HQM20H`iuS@M&yM?(l)?3Q6YW z_UJ9C_7Na&v|$G(+2_{DS-lzFrS&9G$bzJKY z=a}YUswbl4t1iX=_^i+RO7&K92EgfLN8-1p!=o#asliO?!HF38VnieAHQ!NICF4k# zF5vw#YZ;4T{4{^=Uzqu;B69lA+^!sVrXu zy0f!0o|~J?GT;?Deeo1W{jqhfH_`k0-p@X3M2INI5uXke_ZEO~4XE&QAI}dzRVaZQL-czk;0Ss~mo#@whe4_oIQsWe+tSp1VoKkgn;+Z0|-3S)z(Wg^W# z0Wq`>U#rqswl)vPi_wJy-pBdH^{vnRb;Rb--Qeg7&06K&6R48Lf*dRlPT+M+i<9pk zpAM$qcOr&L_UQ&kn2+%9GNR_xj3P%~KY2v)OYba6=36kL*xjeySb3yZW;>~mHn+%6 zj=GIv>#Ty6ifQ-TXm>MYVO>wlS_B;>>e$+Kw@h&1ZB@;~yFl?w=|!;nQn`ZA;iDXv zkdT-?t%m~Foi`rL#@3;<(cHHR(7nT@LvvP8RLJ+Q`fFz+aeZndcm7*tOcN9(*>^*@ zZonySGnc@dkQZoeUf#<}>Z#i8t=>wU7x`N}{9p7_{=qTdt0}dd$UB{fdQ!l`)XD^J I{M++?0~FWPuK)l5 literal 4787 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 E2R8+;!TchRNhNxK;4V9?5h9)XhOs#5fja4nJ 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 diff --git a/UniSky/Assets/LargeTile.scale-150.png b/UniSky/Assets/LargeTile.scale-150.png index 736cd23eba29796e1aeeb20771dd3869d88dd374..f115c02d584d2347d50c364bbd2ba77d6052e835 100644 GIT binary patch literal 6078 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 PFJX7l5msS!{g3|vj=Pt| literal 7497 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 H3YqXfB5zgU literal 10525 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 diff --git a/UniSky/Assets/LargeTile.scale-400.png b/UniSky/Assets/LargeTile.scale-400.png index 9d81e7e689124c1f196ecf2ed56666757ca7b2e7..ddc665a50fb6b77005f1d67fb479ff77292ac157 100644 GIT binary patch literal 18042 zcmeHuc{tST8~0aEoEGUsh)Qt|DO*P-BDA2zlAKHulL@6Y|YKllAS-Ws{mYSrw3hzKWjXXS@~eth9~GBUyDb96NVWm9zS}> z{8IX-{`T0dE}^V1L4|pdZ)`5V2zlSL?%egMzpy=4_r+?Q^ov{7?^X4;YX+G8dUSPb zQ}}~l;)a9Wc~4)B51u!(doIW+s}wl;N0pwP)}r*kqB{&QZ|9;+?VeBDh0@f1k8Dh# zj8ZxcUCjeJ|57}Wo>`(2I-{+%8H~a{v;42?@S*=>IjxdHe}DOvg#K*YQHCz-g)@*3 z7~jvEKSB7(grDi~Qxkp)eO}r%&J~ES;WFNqhaR%;wjnLmZm@;O>Efq6O!g z9SfXnQ=#zomxeT4mCD_$ok?|X4xYG=3~sLHwd6Vg4YuhV%0D!RIf%kj%vZ~FLDEdZnl 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 P(~*P64wUW>y#9Xx$y|~= diff --git a/UniSky/Assets/SmallTile.scale-100.png b/UniSky/Assets/SmallTile.scale-100.png index c21ecc6e964c34539ad8c48ab5ffb2def90eb37d..1b77979357fa7c6ab69ecbb8b0150e01345b8b82 100644 GIT binary patch delta 1370 zcmajf>pRm60KoBG2+Kx>n5m&ouE!;6s>L#n+n7redWzhYh}MJTH$yC`$&yPvm`N@< zLQA=fg)VZb$r+HQt5VCh7_d&fUqE+k&kvRCa5 z3vIhxq53<)Fhazh;Xcm1&@3Cvay%%78A8y_nRl5`wRDn>j;L&=M`4}}uH(CS@}Z0| z=bB$*b_$rOE--!ft>=3x&P2{6hHcn1YSsDt%F-T4brb zT~7?ZK3Gf`uV)?$=G9wa9rC{f{uXG1FSQA;tHHJxsOv)@tHH`LNKr>-vckGSBx@u} z$U~tG<_!DnfY&9uOIRxzv1XMp$`X|oUzjDO-J){cxa%_Fg9EFQSG|$``|WFLN6^7; zA0c@leOMA2iXrWlXI>WBm&v4v;UrjW-Z*4X>yo%O85^ zyj;M?;YOyxQKp)P=e{E;ro)srZ}0B?EM(Om*N4vaTj+aM#^@W7yq+a=v6e=waBv}j z^&zFZHr`}r^yxU~o@puRu@uvv?s~UPueH++K^&^ZH8tWgcm{&?$Lb-)Ruz5IudXVN zu7XR^Z;mk>Td2s;0kcZ}-aiXWgiiAign@B?3)t>09PL@cWnAhSy*%V&^He>9h&_E` z^9SadEenM$j!w)nO>Zt;|6ZTh3EuPMF#`m~!6ch@6(o`0W$z^($7%i%<88ucfEtVDi zNSnDBneO^RHg30Ro}8I5G{ACLKKoiLGyRo9LJ5;*sbK6Ws)C&OTCgU*iiRE zZ90~weler$5N>V@J9_(_;RxC!{YW<0HOOzdJWlFXv*6(IM)mFO0cFF1qa?sdUD?^HVbHl*tnvK=$lbR{?H0cmUvTQ|de+#~q>bu9tOE2;jO5@(zupvYhu@ryY z_I+GWQ?RR+&9L&%;cH&TNA6dPkol*_gPgvt1;X(U%%3Ox^at4oEaIhWI)G@4DDl2f zfJLw4%K;ShaQc9+oSkzNGPAaY)7pA=pSE^!R-`hWJGH?N4bTmo8sVV`&6lvpCS_KY zxVI~yH<^pycmja{r$|fo$Y-JWQ9TFLK9y!GmhVWxRoXdsB0U3KBCMBv??S^ zNV}}A&Jsb1vL`2`Ox0nk4=*}D;*oC=`*4HHO`D*ylh delta 1322 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 literal 1724 zcmb`I{XY|k1ILFOH4k%qxjfyPB9G^Flc&XYx-n)R^0b(<``QZSYk8W7W>)eT^3*rW zn5zvJi7E4(JhUx@l(1NwZmA&;HO|WEZ@7ECKJU-_m(TB?JU<__I!GS`007iIJy8Dp z4*ALf<^2v)&Aqp;gBLtP5&!^=fv+g=$@L@vKsnYEq&mU*=$>ql+lBHno#9JNO6>;ixa9P%(3(grp!fRs%^T4`G2Rvo{Am` z_z#ns^GYPbUn+#aNFF-Ny<9GrmCm8Bxlq* zFnHE=rzP)^atL*Dn;QZ0kJYH*k57mMkRtsReb%71s2R!Yl`VBG+X?w)Hfb zQLV`<_84C&>Xq~B$RAIacQFsHdl^J9LguYmt{ ztL4jrzvih(8oUb8XVQIV8eUHD=s_#0yq}DFr-2Y`=mM91CXJ~FuomVptM_(0vX1Lm zsJ;#<#~YazO|s%oqUu>V1hkI6g+@8NUvDv>i{DuEt;Zd`r)h&BXgJu}C875hz2a@! zRe!w;k;CVm?5#yIpq}b*Tv1_xmWokhLxZZk#yYqc%5zIPOwOi zrXCj-zLQNgGev@xwgTw1`G>c=x^_cL(Zr3t^H>`9T{*JMZS_I2wS6A-Mwhp)1{(esNNH@xPdo5mCUGu;I-nQNzAflJEsRu4ZIq0hAGk6Qv#5w;1?Hh~h zRx4?tN2+H_0r2~S-nV|}uWjG43vz0QO@;q_5iynD(7AfK$gb?T(k=*2b)lFy=d}8o zo<_I0l&;L0{Xs}(tqjsITZI|dxNFG~Yrb19OQHQ#y@Fe%R85M7nUG@jZhJ*X7-741Nuj4?#Vz)^W*{UeIGCn$D?I9Y1XKPWdTsXh&9-XD z@^?Z(niI7f)%G??&zOgD{k)q8C;hbI#qn=V1w7#pe!&{OmZvNUN**XthW(@nYM37z zoO-b1n0P~xU?DVMS;=cBZCkvvo<==M^glb_=a$P|%)yWK7>XBlZ%8(wyqmjoJnf|G z(rZri8H|KH7;b|65wEv%F8j}8Wx~5NMN0oW!GCWqb8mWa+fY>EQwLc@ywZx?&8%nd z(G*8`+zY^q^iikjAy{UATO(I~Qw{=);NcpTKVCvjsl6z<@MCFawFD=87b3yBRl)T1@Nc>rr3@$do38AuK>j6-@ sXBYB?ltRHQmtUg7hYwo{{*AmPkgICFpyej>`*#HJbn`(qo&5Fk-w6dRg#Z8m diff --git a/UniSky/Assets/SmallTile.scale-150.png b/UniSky/Assets/SmallTile.scale-150.png index e4c9f66ca99736e17014dc18751102d00aab5b06..5834ce2735593a0c4bfa0de78df6b0c3c3ac54ed 100644 GIT binary patch literal 1903 zcmbuA>pv5UAIEhN#$ux(N}SE@Oq2d&abB`oiVo9?$xnGvKow=ry zh-$5~a_d;RWF!=axs(S;246;Pm4?ivDjNaR{n?h6 zeE({+$7Jt`IcwNIX#MT&aycn+oYS?uRP-4;_{wE)X-Qyh{&M@RwP?~r_Rw+W+M&y} z2@m0p$zHi1+cc(0M|pjL)Z5SGO|OIeAwT|K2Lfxq;L}lE{uu&iT^-&V@{d>Ly?sLy z&CHa&%WY;#o}xuj1KdR7Wc2>k*!2C@Z32$vevDr0ryeR(<#&Z7C00fobum3gqw}6N zz(LtRg+Ux#)W<&%RgMS-AI-C^z*LfvM}-4zuh~~Q3Y+Dwyfr#k82cb3d>fSc4Ln1x zS>gHFy?a;6J1(Aa$voR6XI5ZAXa?{!LbSW0W6J^x4;qBcM~1G%dLNEb_x|zx4{}SR z*lcqJw~Pao$F8|5PoH>AuY7OynP2qg9fA^D+z}UMkXg^q??@g@3wPb>MvNR~S%D>F z!>3t6)3i$H;BzM-asuET!CBL8qMRmQ-ni$J_wk_#{fqV{0YWo#v7JQOV@jE&gQ+)qZ!f+tGVo%-75ahy;`s(MtE!pe&@!JZ7!70 zo?gs)on(t0UlKKN&t{n-agqnjwFKQ~C$K^W0)hi4Hn4}5K-@F$YdD`*&258MpyD8yR4_*ClyIaIY64q8Fxmx)4B>lQEd<8h zsd2Xtw;bk*5$e5u=CQX)zjW3xYUl_P0a+BW`|K~BClr-c)MgnynCw`vNA5ZFMo&hU zW?zc7UdDC|UozICEIqSgxNOl<`!TRe{$z2JcSGIZ-RnVi z1{5p=oS<9`VzP1Q&YO8bwS580igzTh?j+U!nmcXIT|LeFwiqUep2>x4SEjb+1|-PH zoo`*fIV*nD1!k)cV9{DR_=_s4?hRQY=D}=5F-hLYdTBuG)O1eo$OxV&rh1|XdRu{3q$MIB7 zq}vTH)WYS7dGbIzA~y|@H+zO+bJzb+V{b!UZ;1pS!tCADFMFI;ZeE~G!*Iu6R;J535*S9U3rpAU6d`7RStVfOLd@5-M zUOstPyxQ;IA-mMei2a$y{s}#z%cP6$9!YD>yE#KmCOyfN^`y+jRO=+&sQ`KbeoHHo z82fK<-0CHGebaHh3)`bRR#adJ4369E$*Q|yrQ76jUy*W9Ef zQFLk*RVh#~595{_UPb1VuopL`)YfHJeznsfI;#D#)3%J%j4kP$eLUz)IK>W8!KZ6e z%RJ}hw&JJ0`l=R$E;uv9C4pdw5feG-k8z>#QrvM_u-F$+DsTWrc*`-xto-xDuy5Td z&=^%(n| z!Ypv+k|3vn+a literal 2184 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 diff --git a/UniSky/Assets/SmallTile.scale-400.png b/UniSky/Assets/SmallTile.scale-400.png index 41dcb9945eae6c5252370155416be119cd84d576..0af5ddb89c297d89e8469d4c761580994ad08844 100644 GIT binary patch literal 2673 zcmd^>>01+77RIASAT&!L*bSP1NCWa9=m0`UM`eiuN(gouL=;*;4blzv~_cH{t1*sYuYG7oC@;fAtAQy~x?iE3(HS zhVywy%J`9lYMh^)%Ddob9gnDuorfP~1-H3AOnX$b?{6=6^f73!mbc-eG*e=HHPVb1 zXPOyelar>5zdP-pa`kffXd<^Ug)I~eic*WuU%OT*EUB4V!}=}8-4;~m-^M!hTsfQw z)Ec?ms~u8@2;C_+4$!ux=plEf%ON39bqzDLi=lYSTMZrfvH!7@c24W~e%bhyg_Unb z(d)le+fw=TuTT6-RuofTMj7KDmtM1zqfXkqd9dbPq|Z?+8JKF02p&HDEJxZ-TBt*s znAE)v*cZ&BOUG(=ibpzKqmm(#b)MWI-hO@9yYp4fGeTiM_I~7} ziFy*-Hlyt|rs|7yq%ErICY+;PSVWD(3-ajFaJc0!oiKp2*e?d|FK4-)Z!tx?)?4N@WqDET;QXXC?-i(}{ro^i zlNLj6fJ<;Rvy+&kZ|n2b>1}9@c8K@E!+Y!x)9ep~u~<#%`EsrPfRAQ&GE=l!X-GoS zg8yQ#G}7N`Gk30VE_O7-X(V~QVKE*^xQ@HH6G}>9f24-Rj=BT$PA^cioLh}LykFaX zkaCjo=Ns^pW3!ou7%U{3?LHinhT zX=iEF3(QJ;aK&|ZvhXNH2t?j(XT0)n2deX)&VE`>&dim2w+*z!?we?FKI1f37Af?g z2(4RNN+X4MipAcEe@}!q(c=M58tu680Oww9ntKx%4nS~VjI-e7Z!}5ZbL+-xfdv}z zLuu5LT@f_*r@7f-!xWypV;UsU1Pc1OOcl5qMe*b9|Oj=ZCH zxSY%*^krXlKSPr=Ol4DFW0NY`ry2oiwP1%>kS&{R`y}mV3ADw6ilY^edQXW3He$g+ zLCBf^s+%uWHYGyT8V|`_C~WSAjs&|tVQCcp;*CcYTka6R+gFDzx%lDPk*6a7a^y2EF%2ieS546AD&iw|sMmWYw=O`%qi1rYnnIoES<~ zbV5bGfMj7HdgWr^!Ix8gPx4cre#lfB4}0s@v2)r_b*(LRHG8cFR@7}a4v|JfXhcK7 zrRPb>UGe@!twdmY0;RCZlpDB(U$exHBRFj-!uYpDTX8ckd=(7nan89R2r;TgPq8?n zXeLnNEF8x5cnMIEr5o|Ef^LaMA=nB%9-1c86Br#<0DSq3XLy50%&Hmsj6QoF!JCEo zoN%*0^j3xv58Uh6jjcg&)PRfCIktQ@?AH*A~bS=&o*ExxfY`wNLQYflxO62_k^SMM5vftllH@Ea2%xgLKC9mglr@bR=Vfz`2z$Nk+xLsaPi zQ(k_cXp+1$|9#d&Gsi&$Cr1e9R+bjyO);TmyTk);9~6{bCP#!Znf)_9luCz&$r+F} z1nUmNIjD3iOb}RC2-dw0C3%FU`Sg_*XMj?fjTrdny#m=Oa)di5jV4eqcJ-4=RQ`K7 zC|!qhbhNE7CrgXLW2nqT4D`bvB2-E69@h0a##u=2+0x={B&rmAbIQW{$uTDWX+7uy zF8U|EI<3qdEB*k{-=QLsIZjmG-+erd*g;*Lf?eatWrT*?pI_%^| zG31U%tgLn_It#;y@q00$_8K%|)z#>c({C1v47esp6IAlA`CAw^1s5` zA;@3UH;?CvsQdz)mEGop*eh!PN81;d2bR?sdq{}aQ6Jnhw{x_A0b5Yn A7ytkO literal 6130 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 literal 4972 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 GiTxk7b#9CR literal 6382 zcmeHL_g7Qdx4#rc2EoF76%av1u~LN4n^@=&#SsJvpeQkd1jN8V2*Ea3s3ILfAI(A& zqyfS4p0xer&%D_& zeASgJQTxZOIe8`jX;W|ryxnp6?*Y^G={{xWx9ny7$G}du>!D+F;_e4(hQtH!kN)=a zAo1XtOP{iq|D8)Zg-Q;z@J2Da#iRI)d;qJ7JOPTH5 z^m$b!kZc&xh;xN%>`bA-XN!3j2C)ZO0|}i|&YQYMuaFNXPA_FsQs+M;=p#A zuuWRkGO#jYp$#<(=I`evYt?;wsm93X`sL0d1J|;Dt*<)TF4eleXvlImD|y?tZLvoJ zV64p%R=h#}llj9@41Qmh@6*{wywSr3bJ;grc!xTdZ>dtdrn(IB9|z#St0AopvA%*I zcz&6@`5^fXp2)J(ajN^&p)#$+$p;vHcu(RF8Iy&z^uLy##D2#S)98LFvkLur3~SnP z_W2~%2}8m7(kpeQ=2&+SZ>@8gt;e1)Gn4a7d~FvOwM!jRKc@CsTrZs&f>4>!s}!QM zdy(M+Y({1#v$mmOMQ(MN@zukOa$_{Z!1rlbVA6%K1D-{;qI%5f$fRe@jdhV+hS)@pJvF$~=Ar0{4U7=t zPZ(3xK8T^I)KIAEFT`U}I@Y)GGkRm)5n=T45+s_k{YorBgK1vIukH_J*pV#R4Dj~cvY~oU(IlTC(A2a z_hT4w(R8^$WNq2mLLq%E?R-Ow^V$zmI9n7p7c+UMmYDz7O1b<7tSZ~PW>@FLjCxwV zoBzwwU|`!rlIq#8wDWrv=glw)$<(!l1PkpqQ;1J^Zspv7-}2HrW$%Rs`EnWk@Vhc` zMnzs$5x0YuOgx0{YLoq>3gL1Q?Ya(^Z*M@bNy?D8lgO*3N6g~?Rl}91OBVx=4BfgI3xn%``V$Ol%h?zN!K46 z9gauOcJ&{F-KE=$b*`zDHrH{ z-hJf#?dY{A8@*49x6UvuF4b(^7{SgWIUBVe0%x2nigMMo7&KakTl-W6W9RPOdvt+* zqY8kCXvSs9lye*un_?J{KMpWqxMWh7w0+63m_yoBr+fLez$Vq{gtg8RvMXv`mbqlZ zTrjGYAb`V=cL-SNcKZwTYA?~ZOn11Tu7VX?GSw{YvSR}Bzuq5lqT0r}kYF#}?)O&r za-lod&=A!}N)lT9jz!2-ospOd!J=A4OP+jHrFc!`J5hq{UAT{wzf?BbIj*c&>GbxM z`n#9rl~DglQ|SE2^>T$lKcZh8qTaJ;KK6!mJB&e5z1^9GhJ-^)8ed5n=SGJ~P#oqT zKxEL?m1!&Tj{-tg$liUap#PHd!o{wUOLlPSNw^xPBd1@>{?9Wb5R9U5dA8{~1``cuyU2*2ApYi3r<_3w3kG=P0h~L> zoHk(s>}4?uqM<|`U0pX3tY5l?_{m>?#eYBl6efBT7WFaO9ZlRm8PrtK z6ww!i9uxD{ZAV6rm46H)MUE_vQKbE^Nn+w~i}0Qu1Mzp#o%3RkupSJN@$Q_!7Vk(W zJugxYx7Z`nVg30#5=xUlxv@rIg5a(1W1i-8<>n{RHYq**`)dQ?9goU{0cqY?SphG~ zld}gZN&iOzTHdw!>!0YZ`BLrTx7D1>}s+ zPWXS|mW07n`3>}hpj%e><-C;XovdM4#dR`q7Am;oePB zP&U^v`YCcdp7g1wJP67P1i-o_V$#+HpObD^02ueHdHZ%zu5cKAyR8yUQ5LrHRJvzY zWwT^~D7J=NMYXp5AkB?oe%KVO5;bPX)dih_f|e~$zCD(>C^6QvSn&MFks~u77jI33 zt`yyAbVB-4s%{MR$t6@ZKX4YA)Ky6N=lm0PKL}g7e~@Ct%dIEfY4Z+H-OS zYtU57JY?J(P*kOv34Wd!okX1C9he4(VMT{YKglhtURNg3Yf8<^6T{X>y69 zSP+dIZNc+dhN5NJYdKG%%#)#j-Cz&5sa!!N{ocKM#S@`_+8QIza~ntMu|zDqCjZ3f zV0gHORL7Nk@mD#OOpf<tX@8Nnkp@YsOE8ybIUjvONV<&CBA~Lb5S9KW606t&6lt!rUj} znj6O)DtQWEOy<-R;CE#j~HY|)~_BjXeEI>;)=W&CMp{R z&ct4n=|?=?n=x__MW5|n8?}rLW}&;fx+qN2`ZzC8nc&lO zoZrrk>xty5s$ZkD+Nz`PCVth#?~EACyg--IKMcrJ9v< zpe!TsP`h|qU1|ND?Zr|er#j6sl7{$AUM7~^+r0; z{=T3JS_3!~^DTMz?g=Z5zhCO?_R=VV4~H~$DrwpeEeP!phL>TlqBgZQ0~UAq7l&Dy z^aR_uIUO@?q?jBhNBGnw4}P}h32c2w66^ZrEwV_wVKK5!aO~HIgr`H)Z=&MM_FkG0 zTo4NB+hHyXr(dOi^*h5JL^LOVno>3pI6u?KoktpIJgKzNr~36S?;K*}#(kxHzaOlb zHa{MV-}cUSrb|dRtmU&xEXhGD1dD3XcuYC$brWf)DJ$T@1UsT*UnM%`aOZ>|FkMFd z5~#ntH|C~r{@yoofwn--(8^4a=ZMKCUK`=Rd-pYJEJ;4Y%sonP#86{6z92!&?qvq9 zT_G=j==Pgu+d};(OrfhsZjDc5yY-stu-+qjHer4G&VMH?NwEjh=M7aUsa2uQ4A^K$ ze6pig_TB|=+J?{aUk)!jjltQkOQ`yI~j$eQicLvWsn!($hJeSXtE^bnh#DIv zDI+R{wes35zf*f}9s@U)Pg{bzwZKU(eII@Is3dqKu_;cbD-Onf68uN)RfiI6)duTJ zQmtBWJ9#fSq_g2MFlx%A9w3_`!I`nT649W4sGO69miNW}{`#f?BQr)LHhBT$ECIh(SJq!cazc$3>ptyNaNCu`yw3U_U(-KNcgPsb zg`hUHT5eW??9gTbSk4~fLb%Mf1i3f@ghTT}V_)CJ#IE6l$#kjK4U!lhmqc^@^&8A` zldqw=?DlQ+sR37**;tDuc$Q2MR(!T}&Xj98xCE@qwl+(wa&lE|zLD-HIt7UK3$4gk zM}o&J#)pCOOKvp&Z^n-sO!VwA|R$8Xh#3D^KRcC zMD3oX3a^H}SAVXB(s7XtI4CN{Q*F+1@Z^uq@K>s4@U5l-i|DgF)>f3_pD)9a(h_Xctx1~c73!~HLG zNfk|q#F?{_J8vOQhwo@rfb#LN9LFlor3omH*<2SUkB}VtwWUZuCpnKpqa#?81D`CmjaolHrRXIb$!0XC(@Ummc!INrFmFp{?QSn&rQy@OCGOQX)~(M$EwbWd@8&9R z&QG`F8)9w{t8L}=kcv%p3+)4VeB<4V=*j+`zMti`c0VU;*mDux~adDGt8v+9b8 zC`j!=UbY1Dd|(f=ci2<2+qy50Xf`pGm`&Yz4#jaC6Umhdnde8XUm8g%NiIvW#a~77 zh#~5yKw{ckzpU2Bnc6A|MbD|Rz0R}A$T2;Q4`Nyvh8BhCn3FGC*ZSK(a(9{gY4LBw zFw=>L?`@z>VER+qgBMn>3J15T;j_N@>Ko${C>{dP_ zKEOIGRH496Jo6e(D>k&-xpA(aSY;Np=;X-9s zGdm1hF6*oKJYLPS6i=7W>{ndAp3TTwFWhABJ$}fYMRtMBjfh6P#;BM@kL7;3LKjiN z7L-|^wAA2M5U5j;Eh8JlURYRAs1dyiwlQ*ztY>igo-wo8B8)LJl}ES*ZHo>+@dNM1I1DC2JqgyXCPxYaJ1#nU#rt~ZHS3Y87Sr#g;e ziXy)UiR5yypBjv*t3EJgPL+B69QK-^$)(a&hkZrdI6xf2fJcx8^!2T+Px|YlFn)q~JNXeo+fXsL3C|6H07+RYlkh z8hK&ojlsJPH@V~%A}4aDFWq0 zIps{EftBScD+e;C(1v58D3k-3Ccc~A?=SeS>-&D{2cGA;*0c8-?zPsv7yHU#mp_&( zuTus9EO$7FaR*>g9sr0ZOMZir>5P~u_)>~Ecsv?_6;I_qL`(QRe*n}&9WeVn{>&Zc zA0qn)B(;2tc8P6K4m`7LlNhPGW$AM&MkA%EnG!moT;+dh-^(W-G%ButMK8IDg#zVW zAM^A#l_LEqtwQ|os~?ZvkDkb-7iW)(Mn%P<;z9GS>F-{J>{tIp`|zj_7TP9rFUb8n zzv2=HzJTPKiXs3yj;TlhRL~d%0I90bXMj<1gU`GaefV^I{o2Gha^}nruXFJn3tZ{wX!hrY zlWwvR+DvwK(r^e5y;M~>doi|0i+~8Oq!Wpjqf#rA&(7n!XvqC&vu~E6H z*5FEKfMcTtFP8s}-Z>#m$~?ho*gSihMd-5fl^OY3JQ_Zdh^*KGQM+y)?izHiv9f~s zc7lI1+ql8fD&k(b*roWzXJ0i22)&@9h~MVo>PTgqS0=I=lUb^T7moK#p8NQh9jI6i z6_k0`C9+0c2Wf_bv4?J_wXjZ%uqj&;tPmPER1|ea^SqzD(kuLS9$?kps#hX=<(V0Ba+Y(SOv$7Jq=w`HVb)n{1xn|bboqPwg5xv5sOj(h| zfZ=}WK#yKwOGaC9b3m*nLwgMay!U_$*PnLClRn(HGj;myi`?n4r0m5>9(8A2rHOR+;zHcDCc* z{$Yy1JHby0L00O7hB{xZx!|cb5jz2$>}-eV@s|5>%yW9ajzDbR>Foa?kmw$!)L|@@ znkkZ!;6dBtJ&&m>7osRC`KaY#kl)bj5O%0|i( zUKd2V8-Z6#+<;fb$o)X;D##qtcFdzCuH-Hj@~3Y zxj#(#78C9Rfq{BlKtNAkK8 zpWZ?Q-sxZv_yetys}jATU9poZVR?AbU_7z0U2FR4lBzKyZwH`=0Yzq-Vs%0e>K2$6 zPV9+-0GGN#{pye+k1cq3PPbE#VBa55l5<8+kQ^vm2fWB|*EW?qAOiN-|G`9+6$EFx zuw~YVK<-8iVoyoA>_f*9Z0wM>m*+yY>EzoR-H4_=FvD*Gi@zB6m(Np+!syh+7j;gn zFGZZV#kkApj-7vmFkVc$2}i(Ow@)7_Ln9PIzm+$gdu)K{awF;{57GDbwRgsuiSR`@ zRj^qXTJhxV-qjd(eH>0z+T88&z1`537|1L_`7#CyZcdi%W) z&D5jxfgP-sP`<@Ma(X(QpnF|s10ul&p#j@o=gZfx?SJ$Cs$aeo_`%etR{QU6BX|J~ zHAqBwE#qDSnNIV_ctF{sTCo0%k`eIx9n$#wlTdNd@$*ZYZo@$BpAvk_!+Qx{29Fi- zq0nr8^+SKw{hS9`4`=;HN~|?!*=P4(X&a=7g=^5C1|!$62G8Z}eqs{cz&krTUR;7R zitJjJ1Je+2X<^!#2df}E(qD8BSYW1WL9}(YqdMwRT>4= z;#yQEBXgLgxCPj$<$+~IsP?)LE)JJm)ZCfhrXaAVDR(B{pB$c58mY-SQMI%Q4;4jL zD+wY=yQ)o76$EE#^cz|pi?ha%CK?-+ZPJtkU$YE*$5Ccm#R^-%c9`HYsAWh-0^I@-3P%+DXM@Ll%U0cj^Q%Y%$P=My=!Xq$ ze`A3vG}?Uz89$jD-A`dSm5lU<%^{m&VVcTc5xl}Uy#4WqH}u%Si2{n=ok6mRS)z@! zES)kKmJo(j8oJ%a*+$B{qC?OOR%ntlh|y^!BPP~lV^X!k2p1I}3DW5D87b=n{Q;_C zfJ4-VKKWdPqBNL?i$%dA3Wc!?VHu)zce0y9jSioisGj&CMIT%^-F|HmJ_b4%uoFAU zL~B{`xvP)sS<+L^@;&>C$91RwojWykk|YChS(K5&7*EYTdK!7=`W&*ImQsn!4V2{kN@ZHJo$n>Vc@9fi;s)rd1X z&iObqd7dj)tayVF_-Ny*#X-h?9x2EQ`9xMIiQN&u)s`FGD>feF;auzw=mQ}%UFtum zn@`?cLrtE{a}Wg0)j4^lAS2XaEVrgJI+9X5o>|@<;+`8?LhGk!sNV%Xw_r96cPC|w zp8P&_s{|u>|Bc>p86|w-KhbwxMla%pYieqy9tQ8^;OdcBD-S~Nges( zAm*v5<|v;GNILKYtytNxYb{?A^?q_{BkR!it+t4s-ylBE$6or!crR8f3-*+x^{FX0 z)xlEQ6+D*F@ob6VM@@2jeWfw4Ru7i1oXmWz*KY7jOGn!dKi|6+qVluGw>__OiVI!2 zcXu5x2BIsc%CfbsJNT9Mg7;phU?OfnOnQp%Qby7(ZHF(VyRB5Vk&iOMOIJJYhIK?8 zwR?7NiJ}f9MwOfC9T(?(S43UQDsgOq!k=@}?Y9VfJ&{`9m`lo=!m#m8wg`=@kP?IY z7i$tWG^QwBH}CUU$gYb#mtet8{j4wLz*MkNt&l& zS*bULC+gm1Vpr$GZQEhrr@c9sU>`nec%po?QC^m5@X*I+x`@}(`dOBDDdrpUqr*Co z|Kt4@dK+u810T)cU IE&lv}0D3p~#sB~S literal 7863 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 i1pY%cq diff --git a/UniSky/Assets/SplashScreen.scale-200.png b/UniSky/Assets/SplashScreen.scale-200.png index b849fa555c6a0db6944286e32abe13daf41eb1cf..dec608f0c0a3a05f258326780daf3056803920c4 100644 GIT binary patch literal 8559 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 diff --git a/UniSky/Assets/SplashScreen.scale-400.png b/UniSky/Assets/SplashScreen.scale-400.png index 894a06af259f0a7987ca7886537ecfc005dc2d25..d1d217c807b31499c608442e3fe89f7aeeb7e991 100644 GIT binary patch literal 23210 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 literal 28399 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 Q&A|>IIQC=N4}L%W50tJa)&Kwi diff --git a/UniSky/Assets/Square150x150Logo.scale-100.png b/UniSky/Assets/Square150x150Logo.scale-100.png index f54222b513a8194244ae8dcd05323876f899575c..ba70f520f602c13efb8e982883820cc2cbfc8712 100644 GIT binary patch literal 1435 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}oCO|{#S9F5he4R}c>anM1_oAN zPZ!6KiaBrZ?9Z2Rm1zHXcjNi=Ie)}WGz6VQTKE=mB=V@SHnr_<(Bl;mWc6}w)?6_m zL%`!pi%6e;nsI7UoR(D4uuQ{mtiYGLI()WnkL*hGI}rCA%)Zl>7#UXq^_ zSag~9uDcgM49>r86xLp#)TJ~!o_+a~{mUv2Wq^Y?z|-#KzO zD?3F|&HBx+Bm3tqIa&PB(puiMCVFb8=9>0z6^9-becO@peEOcx=C?#{=J=Q;_WyhG z=1*dAdHC8Hhpdujm(|>BJ0W)T%ZWkvC@~iIqmUrYdcIy!K&1#j+C} zFAMi_uFi-{Ik!_)*bAFBiN1xS{A*qcw|eo_Mn%dE=hk zyup{9TTrRJL+;~sqO!WKm8lhS{!0t&C@d8 zy6p0+nX~fN26JThr3QCrZk0%!yWq@~q$pjt2<|hpqkL9B1N344(9T6#Y@VSAgf5gkh=Tm?E4)MKzcBRbz ziHFpi)7~$!y4W)H*Oy+MllL}<=Ud1A{QBULb@86>+c$fD3vAvVyfWiZ(Yd=@58u@} zy)Gi){Wi-DHx~e-=w5=sk8KB|SH+klKGoS^UAE)$u>-#ZLiBcRD9Ytpt^@dOS?U}RQt*F0O`bF-jNv)Bjiv6u!=Eom@ zym#!_vD%wWx|h2*q&0KB`oU&b&zw_ndS9*Po?FWgEaF?eazWRpufN11rX+4vToGBz ztut%Gq21|k3L`~BLa#@Q%$R$B`}44U*Uf+_@b;Ykx1#q=kG61KKU4E<_T0YMSM%0A zx>d~d`^daq+ddtQR+zQnP5htq*UewwF5aFUDjPcOZ{FJciEbI{g1XydiEZrn8ycCiRW}?9OBxx zZQH*!S&yIRR>)=_QCPL1Nz1J6X500RZr5GK!#12cHvR4gt7|VdX&mM{x9Q_@FlSZ9 zVJ^STAJf5{MJo<-oyz&MN;>YiRIG4q#KA?q>$48Oj#%tnB^Xw4=~(#Qhox&Sitgpq zwz&7h_x6t~u>m9RG^YX&>fs~f*<<{Q7`Kev@-kV=i nxz|o_Sl~W5N)uoK_EG-)C!PE1-J3;$r7eS}tDnm{r-UW|g=?59 literal 2179 zcmdUx`#%#31I8D*ZcYqkEV<-V3~3>XN$xVYVa{ZkYfK#bOu2`|gd8K8>k!fCj9Kl) z=yf+uF1be`sk!tDW5VnF8Rv)R`TqX>JU=`nC#1EMq@pAM0Fbh^v2Z!!(|;l^deqmB z{W*UGiEtZF0s!z^$3HpN6ZXOn01(%=wYZMDU$j~rmFDIK?U@@W^nN~qq;1m?Lo zB9WL`rD*GU%fo{&tij7YxN+|uU!gxd0%N~x%8NCZ%|nAw!v3bIBMP+QD|ahmNkR5T zuPfQ?gJ#%I^(W4#K=L$cQ9mnM>^t^K+rtIU`2@cLtPM_!s8fH<1%Jl~;JS|GGLI7{A4RN<%?1MQ zRsSb)`8|~kS%wUFhw-hwy?D~Kdv6YQyeTF2)6;z~D-atSzbn$qhSo6A&7}>;sy;^a zTS5`v3!LcaBCDos9!RHRceyflp};jkhK#-nf8f6#lam<#5P}22I~|n!r1uo-3BIh= zI~cR=Th}7`l7c#MPU)yyxv{J`{3n^R2VUbT11Zl8!Fv?;rs^S5^J9yL5@=Bul=ZO` zKhhIFu4b;2>(xn__NW2htj$!7cp+LY1FXS2OK)ve%ijNvL{1%2#Xmgutn@Y2y zb$55qL5jAZ2G7MC6L-SHPP1 z^R<~1odP`z=|$tIF={ksq5K_esziF8!ZKrd0G&x)D|CZT$VaTxr%%5+DVbsz9Zlx{ z?(z;u)C-bO&?1zBIn3VU8E$j$-~W(q9KIh=?|@;awokh#S2~oA4Mh78+tCF_i(<7S zw$d7Pg(kC-Ij^q`8eu%=5Q|L_6nZU1|2I8dpRwp1Pu{JVx7KB=E^lC)mg!yP)@uba zg=oaZ!e0R#QL50CwVK}g(hsMYcRdTYz8uh-z0&58Gj6KB0S+jf-Y1^IS*5Z#p`PMi z8quraK@_@oLgHmw-IMkr~AjLnQs6_ho|xP5Atz9-2HfqSdf;FrkR3OeG;>BGd5esZJ}JQ@re`Vav>`d^wpUY#b#0BEN-uHX^G0~z`j-5v&hSM+guz3G_j6y zg|t7yEsn&P=X-2X$)R*NA!>>5#nS4DoVTArFSIQ)dP8TG5ChEC_uc(v z(&OqS`@21nnzZK(7h|K>Sv%P9mLfr@-MzFBH~7$F|FgooRxT^E0pJhca%KAR{{SA- z4W#1}$Ktj2b2eaxUtfu2AXHvR(Ct)4|A+EWBloC%#h&Frw^x^hb1o(G*tT)-#xET2 z@j8QGbC_xR%HSoS!X~is4ZCi}Rr|)@VpmFJMvy~w&RRHq__L8lZZedsp1*qK8l30V zLh^HLhk z++GziEpNl5SL@8rR`*d{qBa~aF2^HzsnDhS*+q(VD63K22!X$G`h( zEytVeAFv&7jAnLH3a4Y?bLW=%=_Zp^Nl;N}liEqL`*;m#1qeOkc^4s|nN=<+&qimU zM@U2q7Ck78AMJYH`I;}o@JMAxfTBgg006=LR5F8!nX01>Zk9xEC&Y zTJ0j(y7SJ{1&)LC8B(ez2#^=(H1D;j)FoCmMDgX!eW~**P>pZuc zV!oRY3QIKv`hS*38Dlj@X=n}bF;hDwu?wN&%VOW)>B*E+_B$%{hd{9Xn|~R8oZDzB WyLu6rnsW3i0JfG$i+c0hN&g3+mk3k< diff --git a/UniSky/Assets/Square150x150Logo.scale-125.png b/UniSky/Assets/Square150x150Logo.scale-125.png index c5c4cf5ab82c127d2c20a43f48dba4721e509be1..3e5c928c0985cb385e9e828ec44dc10636f4d9ce 100644 GIT binary patch literal 2287 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 literal 3197 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 diff --git a/UniSky/Assets/Square150x150Logo.scale-200.png b/UniSky/Assets/Square150x150Logo.scale-200.png index 2f0e311d894963adb3c37842e2bf710c0e502eae..56d11dbdd4757dd87bee5229564e750a2a2c61b3 100644 GIT binary patch literal 2417 zcmeHJ`&ZIw8mEp^U^*(SX+&N!vU zc`xO$(Gj-RNNWfLVteFpSUd!>4zp&^4Pd08s452>V3~)HeGh?r`Do474P>-^3&uQ- zgdIr8zhN4GQn4d%+rYeV_Sp08vhfQRhm?nH5lU#s<1njv-#O=-cQ)RHJ_x&T<;sQp zp%O&{?2_G%DP_g2)$%{1z8y84Es>p7PW&<$O-P8*&LoPQ0?1m7zPEAe(?rIj!MCI9 z-TFsIHbF+JY3ux~HeGTDzP3@Ur$aZ}9~A$|ne|1#J;v?g@6i9K2BI@bWEsNL_tt7A z@10o@Np$`ZpWaWdzN*|B*f@#7-#p%>_N|h;SYpJUCp$;aca_dY@9TM(B3g}WWOnYK zfQvLt6n7@_Zcn^Lv6!t1P-oe>{2<3R?f?)ZysFSJ7qzd;uvqsl4*!%okDLg<>OEj0 ze3$^zU(#8)I0iyqf=zi;kaV|kv7WF6>lrFue@S;PxAG4fFW{U0^uX<8FNL*dN(`L4 z45Of@k-k^!ofN!S(>$EJ1Q)2ZaNn!9Jpli|ZuY%8wO>)s3$0ywxne-29&O@MQUv>BCRGry3R(mT*7g z6;ts=dtZbX8mFhGD-8dvCOwR<`$tMLUab#RlC3H@*LNB94AruEh&252&Ft}m7S8jd z;_mpsrR(f;*9Z5v6swr~sYPSiN-UUc`$tBdaHN(dxkidQ*0Os64ZLNv?NVne-Pgc< zAh@@bCb^f|iqSZh!7&Sa`mZy7nu=v94}8h#h)P5q6p!frNHuRRr$RSx)aR-8P|sl$ zQ*LEzWL0PY#n7#h*;`dyF!_UI&MewFDZd3IJLrI^>QIAZ^qnlF8@2%?vpFK(`$F>{ z5RTdKeKAPp7oecqI}t&$i=KcDub~6q@Wg0%_M_0bp62&su`1~dW%4zam}o;3J12LZ zdRHBHlMK#r;~O}(-dU56sXVIRPZ8L6Uj4ML#GY4UDZ zZq8b6?)ZhjEW@GW$0PKjT(*{JKKV)SSjs=kB6Cf#)x^)eGu|+=sDwZ*)wdKi-RN;k z&H<+nx+l!QbYSi1X=mQYQhqVZF}f|}aQ7@4Xeyoku8-`hu=Yq;K?s>p3bZMxG1Gtm z1>*e%OT;Sb+g`;sf4(BiTobK8Ts&tm(3hTMF}-{eIHt*4S3Xe9wWY@Ptbg&d>?{HA zW=A~N&h=oc>d<`+$LsXMnIZv&uVp)#=(5u_y;0?qndI)q6B)y+m|7OjorUvbT$?QF zE?&HaDruCCt^n0+iRcE0BVS(p{D`O-Bc69Pcr2;axdj=o44G9l;?S|eg$j6kc%-x| zRhEn`877H>Kt1=r~^%&VwqY z7`6V4pru&4fJwa-*%tEmn{2s@kWG6s*g>^qzs1=!MF9k4p=~nZ_m}nm`I%V#qP6fq Vu#CNw0REvMN5Z4SgrPLnzX3|a3t9jG literal 4594 zcmeHL`#Tft|DQQF2@mo#$8~b(Y1T9*sca2t=D0jgDLN>bLYOm~p=`1> zhYnPp7{+2m&+~CMp3NZoqYiSDbru3Ah$DF7i#`*soPB_C0)@wwv()7;Xr2&C}LE4D$SWyASDD zSPW#^ztAul0ShT|2#< zH1$K&wpLP*EDbn$Ul{`cJk03?PRXUpb}9iC|J0J%3$Ri!1w^W#0OR^ifaeZasp$0o zI{Y8vA*Q^dBFwcJb^2gIuc%tjs;&W6LG{Sp=SmcdP7t0-B0k*p)hZvMvOGnZ z-QC^FX?wGts-W%%wZ(+5=I(boj4yj~zkfC>cJqlY-Y>~1l!dT^mN~2y*oU8i3umL@ z-4Q`|28edDKlfl#8hZ-n?{y^;I!weINNByYwF3QSM48es7G0J~M8$O+ReB-qAp)9h z)2pw2`;NhhB1XVkgw_|1b3_8iZESCrghjvJ!5M=UZa!dr{*vhB;T~S@D1#i26dBXm ze&9!0xTca2BlT+hy(K{`-3$$SGQ>9@5YDC_NnV)cM-EH08VP6b4I&NzO?<(YE)mBW zg|oOOo!YKbA?cE!Lc0*ra7J&=gW#3+u}HzZST}?)HJ9*@x+Dz3`D1h;SLWBY_)8<} zfx-QD$i)PtbV9a-AL(A(Vq|=wy-{ETCqy?a`hF}Owa3D4b!O+1x5{&^4Q{m_Ligyy zBl+uhhlu5Ai<^akU{x-|*77k;@FQO)a3i51E{Q<9vx}j&OTWpWvUAKM&--wjmlhAb zk_W!2W~riS*tU%LmUtJz@oOZkWCU_+3U#)c4t^GwpOHake3Q(m!Qt@D2f>YU5(TAy zT{O^_Oj?%R6E`CU@h1Zsr%BvuoxI@Ik;ejdT$FxOxf2#r*}4)>bZjf^?YU_+cgTxxC3gil%`&JbN(vweQ0<{vIePLjkv zK$D%qt#s@-E3j+xpNE!fR^TJ3#jb%g*YuZ!rA(0UT5b#?pJ0;6@)}EY!VA zZfLZ=B|fx6uX?J6vFxjQ)TiG_zP9o-a~lw}POVCGLpAGQ3*#V+8JDxYe+Me{1^P2$ zcl^H>THOuZkJgJ_;~T<~#|$kCXb7X|he?&c4oyem&PQ>}IbW;NX7~{()hDzE z3l(g)M?OmQ@8E>>?X z^n}8)JF_3AVY%eHRimL){QTX8jkLpdzO*^^zloe!YDp52T<@MixW>rTF#h%2`H2F4 z^KqgM*QYF)3f3F=G?+7O+8DkzbOHUOw>}_;MNXPC;MoFA&Vw>2zuV2u`=4@4^qNOx z-Tg!vK0Xr3=pnTI)@_xcdZ6iVN#q=m1(PB^N}Egm(6>OaHVbQgV0WbIX?^vnipd%B zzEq84O8-_-@kV)E$T{9n>y7n^XgI^OwQ}KdQHL5^?%VCo?4q0w3HU$K%uDB!P==DG zn>zZ1>%)GuoihEkSkzTvf65`r*ARCU?;z+Af4r)S$qX$5WxhAynp*713-O!L9ILX)ENi zzU5AcFLvZY0_JRow^w+uvP&|^*Ong@$2=0KU2fQX&yliH+QpvZuxoc{$GNqwEm}^R zsULC50GKIHqwl$4T%22BMFSbvNE%NDI$ke;k8LFUp8^ zE$OjyO$SbFX0hg{sf+dr3Z{ljK~@|cirmLMFgD#$kS9Av!3%{#?-fDgB%8-9J1s*w zK+0+Gy=+^?8{1E`Es3yUMQD{&Hzh)eW=49c)3+TL?~(dS9D5`0F@xq3Pe0YF!U@Si z!Uz8_iuX5Z584OS^480Be3n0h{f-TsNIH}EtVJng7e?`j3)Z?yYK<*7Ie;V4=yf0l z#z~-VA^Q_VpwX_ijo%@?_nS*Z=m2}02X*il@qc`(={o7KN}`Xv<;A{n7EYHI{&W{k zlQK07PuRF%!|mr4L^Snt&n)d-@LMM#9E%UoY27RJv!lT-6_hA?Se=F+hSU(xpE=zjD-~nWOrP}xJ*GG0inZRr^1+FO zS2v#wFUd@Yq9beNNGU<^KL?YBsAEf%OTD5PoArdY8PWKAcp}%DW5b%ULm7`#QKk zmRu`fx~{G*tSPUK9Nkc$?>3Pg-dAXQw4hf3Zy!L6oHka#302g-3MqVCSi6JtcMcW5i%N|7?gVNG z!EL?h(>kxOwF5Dr&y3nwo|#+w&;@Z2hNTeh`8~JBkyKFoeAXrX(0J%cqFFOf`0|xH zDh0(Mi5|_&%usmZGLj6E^w$CURw?UUs04&dyH3K=j}eW1hEA~QL^oY%M%?YruTfXR!v6V0&AIs`4d*RO z;hOy<&!G{vz}}7uC(R~^NNjsC@BuaaurX4kT`DyRHa?a8v_h$soq*uGQI&6CE%2F10V&%hjWHQ3y&G~^(;Jb<# zgl2KroObH;+v;#^UCBq5#t~=ik2T^P@YKB7lnv=|fw}T%rp)AE z*nu>SVc3o&9U&^!Dy2>rznp4DIXc9SSG1<stl#z(U@rqFoX$tdkW(2e}I%~}bY&vlC`CNU~qcS2VFbL#BYFZ%2sHN30LZC&@BR37`F z$4*GDlRUj%Ga4mlgts8*ZTvPhOI>$~*-2f~VxcA|)41)N`Ny^xP$oXzQet*Eq58U} z(c36DP6%H{2uGbgE9UU1tajanrks^b< zVYC|=k$WA}^>4;ZRyAML-y$#m%G&E|+gQ(9w6uX_7Mi*S)-k?F%kMc?awf%fC-^aN zrN7oGu<4 zdK&Z=KQZYO6zG5<$kv6`we@+guMcwt1k=1@N%I>8>)A4$BbWg2q*$?gl?~Q-v zOSOEcTYrK(WHhzX;(@tqsF-osa8V2``o>n32b#RHj4l=EL*L)E4@78}@DrKs*66ii z2p{4{g`9)H-J7asEv*9yYu&qYvX&|BDRXrf|}Tg{N8C?`z$r>O=LVf z9e3*4NbEdw^vfkX{;A&UNuW{%ImsSn)9uopQJU$J;JPnU+*bMG0u@blu73#TZZ>3BJXc zzD^5|Tzp{^VvEYHFNH0vnr_Btk4e?nOd`b}ga7tGFFPoDF;j+Vy03FO7b+~LL|V+p zBkFPo_-7(MNuC#~?`6ravMC9N-Xzk!H)f)5I7U=1G%q#^C+If(D@Sp+CW5e4aujai90^xWr0R~gY(jT!*>W|eO7rGQ-5Y`eg z(E41~Eh2G1~R_4l&$KQXM4CAQyJ5LLzuPW8`)>iy6V4nyXeYPe6~W$ z@Cje)@n@V75HKPK;s9twQ;eX1uoM8fSr{x}a4HHUu+Qw@p?@v$uTT8{4TZIIGsxD9 znbo~RL)|7;>#of99rnuIi`nc+PgKeZC7yBk7e6GoUl{x=zl)G49lCH+``rU?Ym4x7 z*VVJ^ZUps`(E6^7YF47mz=emB~s?k&bc_|9C7IqA`4#zoOOZ-jLxAw&8 zWrq~rB6AlsOWRbcZO}O81v#cwU`0HE&rv3^8mHs?BqVkkVVVUCqsMTNiN?I#d^~CI4A*;pbk>t!b*X8`Jl!-9{BlY#gQLDh0)oSC|UDPQ)?(Br2Ia z^{#q-#Q^>Nyw|2OAvZ!8%pE|N!r;@gvz>74`22gG^_7^8{XKKH0)xX=OCW^Y2|#2t zCz(v(uaAZuizCaNsx2_$b9H;oC5IfOV5bfViSKlp_inwfy-<-%W;?fLkQG`Pkv(RF z!n7^ZRkxX~EEAdC$xYEwnOUCkLoK^#R?AWMJk23Iq1B+?)GxDdh|~07$_!@(0fSi* z=1;$irXQtZK%>&Op>br-gSJDOw$5<0IxTOUKRG?0@PcczZirjes0R;SgYgG5<>_}c zMWM*kwdNJ3!*1Hc*OmVMF6!5Ch1lM>Wl1odcAJ@RTwZ)#yM-wS#O~C#G8C8!JSPup zi-w6hNuIx)oSdWTK!9~h+TQQIwqk0bSi*mzK<%yQ(sC{Inq$2Sv5Q!wH2i%y z-m%5G_3~9KUIO=zK^!xtFqz<4#(=)t5A)qE3cc`T+2(yp+Nx|;_tQDXUj5nG12JFS zLwWM~e&=w%8@ammMdPM-Uph<>uHSB6fKb1t*D6-TO_)^xF7#nkVi96H>;r+Z*ZkFS zoFMfr)GbiYeq>WZHLikj>)fwaMvoI`cuH%SkWc98+Ep051*3-z{hk<$Xi^h}Vh~HE zDTnot5ien@1)WZd8{G1u_c94&7wf$yxIYSp&{D{o)~E2qJ>`s?A?bs{A})rhbA;NnKk zW=)QDtjgDu!eC!FuSmQ8r1eR%A1AigaY;#Df$`?0^XfA9Pba^cDwJ>?BX|YA>sro? z+?4zJ-eH3xWU{;89Wru68et$D1v19Ig?1~&+4)X2`5HDi{6=ypwlVmy0 zFbVItl!T23+Cf9AN1inaIl@{p9lgA~#!@srN(AymphtQF;$YGoXLz_4j-O_)&~Hd8 zDcQp1%oHLFPDX)RiL{t*+Pd{b5t7FuO2c3Gj08LH6gf(bym`r^bmytI>+RTPmMTUP zFvKr-#KX_fiOO9m7XwX6sJF=icth)PVpX{eB6^9nzL2Kxtjq? zowhGTG#v%3ujo>Ul%?gEmkyrJK3^{czJ?JLr&lU7;MIYMdIW;mE=baf0zrHFxELcm#BOXCaTnq%5v)LN1~i1kxh%YhmYCP8Od3zKdgVB^kkqj z(1JIPQ6me|ElT4YarHL89UVwZp*gl;AZUD(P%0UX=e5!pj$SFY0GdGn%{|s7v2Kzb zOaAec=YwXh7;+o8LyFpT!UwY2kZP`+kT{Z%eMv0sRNKMCcG=O3A_0aN!7=0?>F(@@ z25A8FfbK7{9@ggSBpDCj6qJO)0|i$I1nimqr2$;&FP21rIYux$9fgNkmKre~3nD7Y z5e7wo6j>##ia=1xD?|d*6hxr8XYuKd0DjyNYUDg@xW(4i*3#4a@SLs~2UoHP1mnY@1-w!tzA!p1>A{!);1`6_S4kR|0K+sFc^F+0Se2)N%QrI@6JfuQN;!1t~ zsg3%Xp^4f%fDXX=Smpl0HAmfQW&_f;09O*ZxgTlpyNA@qT1xnE-(^BIw-Es65V{;Y z78G0(>}9!k{*W*h2+8`-zwqT&F6S*vXIBmd0C-)2Whzx_?>Io$(1Mo%bB$+aIL`gT zJ2QhYB7lyt-ud~hbmt+$nR+3tC7__f|H>Urd%Wi9dZ8x!)TEXtz<4 ztjWenYNX;mWYZB5Rm|1@bHe|tq-wq+mpq>!^5il=Kx9l7#<+jRw95uNf0S~o2OLj~ohnu7o*8U! zTL@YAkw3hDcS2M2$mb{UIMUvN#K!KWb;UPrD(P8B-K_8mjd;^zcR(>ms9&ECcFweM z|2Rt7B-R9U-0XD_Gt=*u9csKPqIy9n3UuZ36UOrLa?D`koVeP~%gE+$B2bYthZBR1 zhzDd6!PS~J+@W>*D7GsMX$bUF&8z{MDZU|NFY%13Mm&C@F(~9Jl_m^^UJYXpEK3A< zRo;lo|L`sFA2z}m5Bx&zK z2Z|4hs!4b<+c-h!81z2mfYj83UxSLf&TOS>u_u+&gx)v+oS>(t?~j7_ytcHB*%%kn zQ;j3#mH@+_Lv%JRuzwS9Wq%+&r*wqGv6QhZ9yRrsQF@trvNr9lqkWuyaOnL`J@~2J z0CjMjr(BjxrBJifL8%2e5(Xm--rdt<`{%)N-Easlym7#0kAIrb>(@@nH>N)Q%>oX` z_bM=ra5B!PD8{E~fbSNBi%%UmSiDNTzE^fkMx+JcP+tdQ|Jt%AZ3Erta;b&=j~ND| z=SpifQ?(#)s*o_4^mKTj%d8A*j%=QlLQ)-<#nh7Md%f%mm@|*L_pOl4?ttC$SOYb1 z`>-vW@@2ZTjgJg!Ec1ystUeQsZ#)ohx;4&Q5WpX!Vjk0j4;D)CC*D%|W0b_loHX|# zhsNa1sUarCUX{UQHZpmq1@Vdip(!ZlBbUOTFz)col4Ki!TCI6FQD0M8DXqJcdu9@E zuOPec2Bul;T?>KK)jl|MR+&PHFh}yPuVFt=W;t>^OX07`msN3_DK5-#3DA*=lB=T;cy@}1CoIE zp6p)CXHS*}T(4^kB^ummOX{)L)D~MsjuB-%G3a%9ctA{NW!Y74V!(L zXYBF9T%97zaBBuw2r@ET6Rr*#lvAH$lIWg^#_n zTx5UWyuR@qjh|RL2<<=ohBwU(X&Bn^Fb4>e!~mPs83MtgD7m}#)t9sqz0#uJTO9V9 z!^F)~*ZLc?avFO*O6_b#3@lR3MN){i!Qt$I3qlNv&*Mx(z0+%yjCw8?g{a{Y`6<6cs^j+dR6>qwCn zz8AqNDN0`RKy;}VX%Y4$l^+M5INKIkfR);04n;Oa@7Ry(9wJo}G{ndEA;?l~vG<(F z2#&^Erje7{O{p6F>xnA`ReTcw*yU}*eNKWoz<%|T^4~>nX}(+sV0>l=oQ^4mqrx%$RNmkzdP?CoK@~bXf5-og&czYt~=Tn zC_@s4PHi4jD!RHi?aDJdw7p))v}dYb(2fGd+`ht)o0cn@FP<+hQi}NA8Xgi8PfWcA zfAyn0L|Io?jq>#mu<_>Xw(Pm%961Oo#{YAbdwDW6DKMlrdKs(wWT?V1GG7wuYs@z0 zam+pLn+)+mJ5 z_cmhL|0oB;>W+pW_FcgkJ`b7*@aI6}--Wq-Jy_MHf60V0*z5gGv zTnNnqPpa2U%R}Etbk)NDt#Z#kX;C-pH%X3FMIHi*moa19Wl9D28Vp9LrHQXFKGNY0 zfj@x0(C{gcj|EvB*H2qDk`p?*!u?UcmqyS(zq{vjKR)kav{Jx*k7}p)*XSKanh1%5 z-zJdG6VLa*Dz?xG9zEvaqWYxZBaB#W7XmRc*|0gp=>T@?9uBi>76Q7t+#mJgiM-<; z!)c%uYfD4+uS$x z=LIvGH*#RSrOI7CMiVucsd^vO4S0Fy>@^0#6z-rQKJT2ubjq+ZtOQzgjLb3O#W#%& z_4T-#{$ye(vC1;FDtcZN`m;mD1b(UddSlToWeS?j5AkO9=%IK)2YuxD9(PoC{sfYb z1lh=`*POCb7D0A-5s2+bCTURy7x1b-)0?6b_FSZ~s;(zKd}Y_`F>yqDBL{teb=*UX zVh4V-tv*W86xflB$!XxMG{q+@_bAg^Ww?n=(K!dKoivrWDR?5|`B9?iSQ@!HI$RPt zaP0C^l8fP*W#!V`t*o{`z%~lvNnC8*b95TolwoF<4Mq%T0OhGFfg#Pbe29dV=kpp*eArF5B8HU9XQ@+Ga zQU^U2uzbA-I=Bb<#B1B9^-~HlaCe(v;2!=|hoFG^UDWR9r&$t9TB~^qEZPFRMi2lZ zfM;7>7xo{eipdES;!El^84i}UfJ3xq(2Bq85o09N!0ne`|qn*L$Tjl&(Rn}-eWIQ)}#5v!6}?F zC0ue-UjX_HQ2P$>-L!>)j?8!>Z1jz;jXVm^TBy&qv+t$k>_==9qn#()`b+ZuagWq* zvt?DMo|&qvj(Ej1H~PH%d676?q)II;3L=u)H<~~VCp|m6)(*YV_(ql$jjwe-D@jLhL zT|&AYC63{?Qj_Rt@VV-LUei1-6Q9UpcTzlPKmw6M;9sKgh?19xKF`~7VWx~<+rdFJ z!8FI+JIdjDC(-TVuxh$F!_ZcG-gW}1VNM$X0_Ff1mKqI6AR9GRHZR81Wh(%y`($6t zsI}b(Pil&m(NsVMZr1<^LcWUacc=b`NAzrH|(0lfOPQ9+G)cQ`*(?w_z-%-iZ{jm<7%(4iy9&%E^s8hNk~8h vLKP5*7KI8#V*VZa*AoBw#Q*D1*xF0ak!O$uByu`s3>VWR&B6mV+k literal 10080 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 Xz^WeY=NaIWIf(gX>q}%aWYqrwvYICk diff --git a/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png b/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png index bc35f82522fe77357d95afcb3f50d762c38e3b10..227aeb2f9acd784948472016468d5af16be29afd 100644 GIT binary patch delta 308 zcmV-40n7fB1mpscIe!*OL_t(|oSjn9O#?9uwH@DoH(&%P3zTlaO~42U7C^@WjDT1G zMrgZ1*`RE2|7~nuPP!_bu9p@|QJmQC`Ngru7(bbLi}iu^LuZ(~Utv9%+r2vZ9e_3V z24pMv>oKw%gxonXk+6{FNi4j?woGJ5z5&U1y5IYLfxC4N%75(-L2l9FJGR^8i^&Vg zc-~0@5t&29^??pErcT*q1icC&X-`!z5+oH<@gl)FrY>H)`6GUyz61!&%ETJ2xZ2>n zNneF-7m0dc6*}C%p3o}k?)ZdbWkThNZugcHVyJ3N?H8K-q`|`iz){(d`-W+3F@en( zk(uojEU$2Am@SmRA%y4TPsO_)3`ufuDXzmLjPEQ5m*T&A%cHR#Ou(@K0000RS*qo!5*1mR|XrrH`&$q-bM`zHwhT0p4u`yJlT}zg(%7Y znJ4+f2|6~0FZ%0TxKyetY_p_xV|Z(QxVY~4Law>%hH3#ed*lgK zu;vC=xp3t|2yD?m%asDIdRAE{#*keO+VrYb7cK}}0$%=Dxa*Vlscgaf4S%JRyueg` zT(WRhr^>5i1(F+$HN930O{7`niIskjib?d*zRyv&jd3!7JQ!^9-dKSY!_mDps@?Ei b)IP9(MDD9T40`no00000NkvXXu0mjft9R^N diff --git a/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png b/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png index d8514d276800993d4608084c919505ae2bf1d23c..7cc8e0a15bf15d29bddd71b03caad06613e288bf 100644 GIT binary patch delta 398 zcmV;90dfA+1-t{0IDY|dNkl&I2$fg>g#{23 zpe_Jng0>r!4ax@n-{y|j5rI=kT3=Hvoh~2t``GtkSJ(BcF=mZ1$M~c(SP0<)jH%v2$z^Ez!rF3o&t+Sp_P*%V#DNOC&Q+|RA^yCqOrNYz<(|bB3FQX#Q%3;H^skY zpQs8DTkY!?OxN)@_B^9u-829*=cwYctwORlWJ*n}3Lq9&q0K%C&{nah{Y0C65GQTC3CFEdjl9N+y}B`1td%M z>};@82p5`Qtn(8Z-WDyoQh*91zIM2skKTJa79`@<+Ix9U@o)Cv7$g=?^>@dDy5gz+ s?oiN>c#8j@d(Z}<_fHOqYyH0f8_xh&S9C2^00000Ne4wvM6N<$f(5L(b^rhX delta 680 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 literal 7193 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 diff --git a/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png b/UniSky/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png index 1652364c10fc2a26d8c31decdcecd6cd641e4c02..405e311a044d251877ca1662d80b9cf0cbc08f15 100644 GIT binary patch delta 473 zcmV;~0Ve*V2ZscZIDY}TNklt$zMS@$2N|UWFQd(u0vaVo4qJLGh0bemp8_`w(As7U| z0K`Yrx{cqAv1WcuG#a34g)5#hT{eBwPEV+vt{gyXJwg@E>s8?F6{$QnUNit(QxzoH zivj9YkY+CiV5?R^ntc*LS%ocahtlkm0NA(+n)FJVeKG)70n;cYMiM|5_77ma_PKX{ zf_^VP$r6L+%ztS&wF5O+;C;c(g#YKhK}z9)+3EglLEj*C;nEJyK-VB4;UGW{wzgzf zp^pau`^>q$CUm&cxPrK(f^TZ&Z7LZ{d3gXI%*Y0m57Igspzx0rV~00FoIp zSqWl|H)9BAl3+Msk0|LHcfhFx1c@&#_T|AjN3lUz+)@~G$ImJLyE70AQ58@1-yg!Z zLF(eE{=a_1V?jdVDgFn2AQa@7xYWO~6V`*Y6_@x2TX7i#7tdjgc&z^yd@Ed~-nJ`D P00000NkvXXu0mjfD&g1= delta 888 zcmV-;1Bd*F1fvI#IDZ3GNkl=*^1NP&ieg3v$_2`FemG$4=y4Hcw7A`p-evO{EW?7bakEmsPfqmrI%# zMbdq*K_$J1@^%~%7t09e%W3)YZvkTxp9(bl9jU=vOqdb+l$seiHE`bm;6M_@i$vBu zDrWTAjerki%|iiZ5P*Q8A>%}3d#-v%_klRxX)`D}v?FJq{Y=Y~y@In3LJRy~A?(sF z;E!&VsH8ZN%740F3K_LG7I@yg0U?isJ*T@c>c9)F@oVc+_#T&G@~R0pHV=SGYtE&QevuUXUCvDC7dNNZ;WxV!7o#qE+-hn7c(#oI O0000=IGlww{lH+!{bB1^3Cg;rE?)&VTkHeN_`L4D8#On>OZ}krZ09SZD zIB@qC6x^ZlF^*G&nc@Asi!i=v^g2*lDWi?D{zKa65e}oSz<jKcWEEpJrg9(0JiLKQVLeDd2+|>4TZ-IX=XuGE!v+E$0@m{g@{rfM} zb&$|_rM)@OHISI`O3_K&Hb}~NrQ|AfZjfB#mAbf$u79ku%iM>P0K3Z5ky!9lS&2Ff z3dUtwe&Av7G4+dI6yV&(L*;_(0kmyAR0?DV&^6oV%}dAMO=7Mjp?T@}f0ogvNn++D zS(#B<>Oss;FQW7PP2YWF;zsSh6aLD~T?o)(Q&g7$h&5ckl6> zJM*TK>AacumxlIR%zJt7-E+@5@0{6q=ZJ8rg!u2vHdX`^h^ z63m29lo1l|to))lD9t#d^)*us;0lbVpR_0=I-XChynjHPZzL%_ZDv4OxkWQa*RtkB zrQse^?U+xkyg;1aP8P>RnZW}-Cv58iC(~+LcJkzb_G^}rxf|%#0VdXfe{bU3L=eWP z&`*4JPtqY>svN-aiDAP~4s8QS1yboU3*(~4b>iy!v_6>RaT<5a2x=(LCz!J(2X6o& z{KN56%YP-1>%{&>>#b(J^v1Bq#2HS^m7uOJ4Z81> z7Q!>RCxW)q<>(D?PBpbEKq@D7)zL~2lMhv*i&+`xCU~cJ3_!4}90NxR5zP5;U^e{X z`m}kr_p)3Y)!(Fnb#z&dyRx7`t&U5$M4=?-2!G)*39_QVlKz&XH$VmY99QGl3zH7* zaN$t$tW-hz7_gww>0k@=iX6QGz8W{SvlX*AbXX~L_!suCH41=KVWFXJ2odUES^GjK zQbezomD(s$riZ0J*XOmb{9OZDmfkHJTq<;;c3+>bz6^jvcRo7r8X#R|dDgyGBvb4P z*nj)Y=^MpzCkyeC5vul=Ts_Keg6t-2>51M;I}GS_l;d|d+_zlVim3|)fxunHO?|At z>m67J{;jK{?S+PWUkcN$QE>pI%?EwmfqO5m$BHdvokfaYs0bYr=m~}Nfc%XP_Hi)Y zn`rT!LQxC&qs-w5|6uAprvfu_osmcZv47sLTMe8*=N@VIGX)m$cKxYofFne(W}RDR zQc1MR8>xj4CFd5q?4*io2L?fkp3r%DuC=g9`pLM?Ho{N??rO9?;05=|!aB$_U?!|0 z{7`DNJ{-0y7;8Xhx8P)!Ryi?lzzmA5Ze24Cx5CG z9!I6zY{mH}8v%nDDPC{^p<_v}658K*lF7WXHY;$54=D_gZHt_q+Xk4b23mIh@)^K& zBB+-KvQeyp7R~p<%b6$TrYo4%m!xMuFlX2DtO+cb@8a&o8lVF>A=~L$Lus4n?dUup zd{HPdiyZO(Hkhfn+pz{n!f^FHU4K@PevQE1@7?s3VpPfa798Nhuwphe#zhI$Xgw@k zoP5TRoGP8}zbxOh(!No$?#tfZe-K6{sZ>FJ6F>Xy^idGy*<*u>PO3M`azen5Hl{~^ zmrKMl@+M>(T@CyE6HPi~Yte_*ObA1r!L@^(usBRkFA~#a)LzR56@q)FYgz>% diff --git a/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-16.png b/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-16.png index d93c5ce4435e776e9bd0464b3ced7c4965dcd9b5..227aeb2f9acd784948472016468d5af16be29afd 100644 GIT binary patch delta 308 zcmV-40n7fI1LOjbIe!*OL_t(|oSjn9O#?9uwH@DoH(&%P3zTlaO~42U7C^@WjDT1G zMrgZ1*`RE2|7~nuPP!_bu9p@|QJmQC`Ngru7(bbLi}iu^LuZ(~Utv9%+r2vZ9e_3V z24pMv>oKw%gxonXk+6{FNi4j?woGJ5z5&U1y5IYLfxC4N%75(-L2l9FJGR^8i^&Vg zc-~0@5t&29^??pErcT*q1icC&X-`!z5+oH<@gl)FrY>H)`6GUyz61!&%ETJ2xZ2>n zNneF-7m0dc6*}C%p3o}k?)ZdbWkThNZugcHVyJ3N?H8K-q`|`iz){(d`-W+3F@en( zk(uojEU$2Am@SmRA%y4TPsO_)3`ufuDXzmLjPEQ5m*T&A%cHR#Ou(@K0000vuhaEaY5L0LW@s8^&95k@VxKIf-#%eko_zyF<9syc(eqwI%(&D?GfQg838z@B&cIC%4z5yCPtZ$$N=l}o!002ov JPDHLkV1jX}rWpVL diff --git a/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-256.png b/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-256.png index aca098aa8001ab7e220e427188d7c27131165e7b..c672420097a1e0e32211e29afb6779dc8b714c12 100644 GIT binary patch literal 2987 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 literal 5708 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 P+r!|viIs6Bfk^%zd0Y@e diff --git a/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-32.png b/UniSky/Assets/Square44x44Logo.altform-unplated_targetsize-32.png index bfc600bdb472732b0f2e2d9630f6cd2e3bd02a76..405e311a044d251877ca1662d80b9cf0cbc08f15 100644 GIT binary patch delta 473 zcmV;~0Ve+U1&0KXIDY}TNklt$zMS@$2N|UWFQd(u0vaVo4qJLGh0bemp8_`w(As7U| z0K`Yrx{cqAv1WcuG#a34g)5#hT{eBwPEV+vt{gyXJwg@E>s8?F6{$QnUNit(QxzoH zivj9YkY+CiV5?R^ntc*LS%ocahtlkm0NA(+n)FJVeKG)70n;cYMiM|5_77ma_PKX{ zf_^VP$r6L+%ztS&wF5O+;C;c(g#YKhK}z9)+3EglLEj*C;nEJyK-VB4;UGW{wzgzf zp^pau`^>q$CUm&cxPrK(f^TZ&Z7LZ{d3gXI%*Y0m57Igspzx0rV~00FoIp zSqWl|H)9BAl3+Msk0|LHcfhFx1c@&#_T|AjN3lUz+)@~G$ImJLyE70AQ58@1-yg!Z zLF(eE{=a_1V?jdVDgFn2AQa@7xYWO~6V`*Y6_@x2TX7i#7tdjgc&z^yd@Ed~-nJ`D P00000NkvXXu0mjf!e!WE delta 715 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 delta 1453 zcmV;e1ycIc4ATpcIDZ9&Nkl!6nmjW{E`bTsF|@5NnxzQl2}1fM500#R1y(lC0mlP`5{Di!+cr9lH7L7)@H_; zo!Nd5dsjxPOIIL774+S=NaIv*`Lh%H6ERZ~+l zBNB;(2-?rRuei5^`iU~&R!TaZo*s+E)3y-CTGhsssC6O;~OucFM9d+3m-n|Zbw;=PGP;+$U$UC%X9=1%s2 z1h=6!lVkxz+qpjDLSix@-gL?qhTxNaHqwjHXtbHCGr1|0u*!fWj{xKgNUoy(qb8nK zh;tY5cF|b(>TDrjuX?Wi&B+)yun|Ce0roTm59{px1b_cIsNKZ7+t5YX@Je#bPH85Q zq9MUX2<`@8D+G@jg1aL4$?s|papsuVldFKbsIpO#gIE?NlZCSTCj?+kfZR#qN2&jA z;v<63EvR=*iFqRAvMK}Ju*?ATZ;~336QS4U$}BoKIQUd5mAa&}Cw`c+jT{e|=J5P3 zlWSCEqkkiJiKIj52AjkrU7AcLw*ugK{0n||G(rrUP1vlkiSNmulz&tPN^&HN`L9QDDM<$zKvf1oRY&uXnymS@g4aY7>-{Be?8Gj*$`-B3ZF@RhM06=0a0mNFWZ)9cZ=``70m@kq#Q^fUIE9^SItnhL}SWYfV2f*%e&iM;{0UAf^##9XbT+r< zaeX^F&a*uAMjGKpOWaq4UXd-#Ib!9Am48Re8I6=<)W7rAxyE9Bv_}E~uwTl^$VjTb zzJ3YyMSxjgvwQG~oj^4Z>s#udQ$I*!{pK3a`P`CLei*fmvKSy?-3!%3h!I64(aX@w zAlZ}8=eI|rQROL@pE!||V>MJKAf~wZn+owCWcc4lzE|kMZd-qAawL*9q3prpwtv1Z zB6;K_jPeKdoi@JKd|2Eb&2yB)t@OZ>NbN9Nj%qIa~ofpXRstJ8Z9fCmBi42eG=>8%=YpJ4xf={#(+Ax5xm>O@9*cokdNTAQgfcypki)9-^y>+4&WhkL!*mXf{(oamXX2fp=w(?UjoQ!spM&BODcc8s z0QI5z9DU``*80nkPOATAs3ugYlB-mylB-mylB-m?uF3riO<;lV$D@6Z00000NkvXX Hu0mjfTV2pP diff --git a/UniSky/Assets/Square44x44Logo.scale-150.png b/UniSky/Assets/Square44x44Logo.scale-150.png index 1fa46fe93612a968a820b6ff0d241aa5cf1d739c..e21db6ada35e8f675d447feacb4a44efd1c3cd97 100644 GIT binary patch delta 1762 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 diff --git a/UniSky/Assets/Square44x44Logo.scale-400.png b/UniSky/Assets/Square44x44Logo.scale-400.png index 821756c717c544a0375817c3b1747ca4fb65e535..9f3ab983c8338ff9ba101b12ec3182bdb186f091 100644 GIT binary patch literal 2580 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 literal 5083 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 AWB>pF diff --git a/UniSky/Assets/Square44x44Logo.targetsize-16.png b/UniSky/Assets/Square44x44Logo.targetsize-16.png index 7a737f835fd7e795461e817bbb63f5f3507cc0c2..b7669f84d1d29eec7889e9fbc74ce238b088b5bf 100644 GIT binary patch delta 414 zcmV;P0b%}&1I+`FIe&jiL_t(|oUKwVPXj>^-JRW*Qc)CwP*H~=1VwNakWhgDi9wPY zG$ADf0ty;JAcTK_z+wnNgQ#u5@C%US!q?r-^0vK$`>FxvvNyRmZ{E(wY4JzX|0ZCJ zxsXzJajxrZH*=h$*xE8R#4SYhW$(h7nbQh&&MpZ&7}6|P*2nU^5Y zBujNkvV{0+UJD=Y1(6Ee0?1RI=XJ_l4v>6GL{%kK#C;z)15_e#gA*DnmWr!PERa}@ z$8u+oY9|tD!TS-G$NdqI;;rvwkL(^rsuE9*-JWd$q$Y;7hUw3OH=c8=+r%@l4hufd z2w>tjAlwEvIDf{f*3+|bhQv!$m56-{U~LUo0s5ZF8&-%d8aAWwC)mneLO=;MjU6w? z%4K8C0XE=vzKzy26lzGWA@%?)DF8dd8N%5K1=^bQCKBC`kw}N_cH<^kzKjz;SItw0vErrFPKuIFlu2oUH||907*qo IM6N<$f)azdO8@`> delta 347 zcmV-h0i^!T1B(NYIe$G#L_t(|oW+v8N&`U@g|q7vA}Cm?Dbm>c3N~7*jUk0#89PZ4 zE0x4X6cItPjZcu;6!x;F3|5k`FAzddi;!w(*Kc4}W;c^U67a&|+_^vJ-Wf*ZW;8K3 zfiMiquIujMKEW+paU917;5dpRUkLG#5^x;n5bRR0L%}`%C4Y#G0abEW#FiMaK`1SN z4YklBbS|YF!8a;~;0bg~&efX?C$2zpV6MxQ8jWwbN~oSRYx}J=H|UrGY7+z+@EELT zav!!0o>|QU+xP{r!WLUe9NV z-p;)DecyXCvln=O`3n9o0&R3xJozXh&w2fV{aywnNsJRts@FMiXGVKbOLC&5S^_mI%uA_sBXjim7kyJp9AqA&Z(Un+{v zUlSMk7a~tOsDFNJtHj>4SlRrftMo3SZ6{EEf%a(HFaMoewo)Z2;4WWK5IudmhP@Y637#y&6ZYreXu*&4#TitNI?Hr0~OpE zKak^xjdpy-MpSupM8KBCZSWmhXdaIe!sJL_t(|ob8msYZFlr#+zibTg|bzSZEJsrI<|L2zm(GgQyrpOrdU@?5@A38`!Sz z#VzQq1H;U`_s#cBCNI(Y{=_?9LFR~;;nYOy>1xB>whpLmSvsObv;XZ249Fq zqdQUotQd(zZi*xxj~5V}0=(3V9L$94y7%cD^6CWPs#E~r0Ki{4F-iRdA0)pgBky!N zcL-&MFnq`Te#{X8h`t8uxFBGvJxJyPlNS&#gYlCKYxWZOESnU20O1Ej);#ht$mar+ zcR4;P1!(%zU4K!a$>44p;w{Ppd=~Q4iedJZ0@!;+lMp$J$c$~ z96X2YE$%`z(mewgBP0>HP7EgixQfUn$7O?m zji;$p${~LyUX*X3dFsW`0{ML2$>nmlAgbdRX%;Wzp=p|jp4bii9d5F&7qwb#C6me6 zp#{8;>?-vA-svBE_5QQ&s(M2S{3|;V_^bT{_EhEaKXUkR00000NkvXXu0mjfq;~`I diff --git a/UniSky/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/UniSky/Assets/Square44x44Logo.targetsize-24_altform-unplated.png index 221bff9ce830f1a7b2329267ac9b06ab1b303ab9..7cc8e0a15bf15d29bddd71b03caad06613e288bf 100644 GIT binary patch delta 397 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 u(TNua7a?tSc#ze9=T-fG`jGmWNhl>C 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 eGa35l2>b$1L78&jH=VWs00006q>10L6A9tY zy)y-IlM9D)=G=4s|G#r*?o3_aKaaYafSQ2nL^7GIkHumK2!B^#PqF8rQ0T`(z>CG= zBHSjd4f`Gp28XeqS^@ERd)FyD9SO*K}<}MEV7LZP-8v*Lo9INvFXPBSEmbeIMpr#iaMZ_0h0>a_2 zg;N4o5ZnyRA6zFiWj1w|+oY=i+qP5e;cdb$)x4Z+0N=uASYa0{RFY6Lj!XF#AWtp8 zmmpY2yiHMZFEIbNRB(iLDnve`_nd5#Zvip@pLj;ZL4Ym;vcH@s_ac|eory-H1-Z^< zv*#m`NP=)n1-ZNdJ=m0v!}wE*h!21rc2>C&drxi@@;Bug;@61UN7#WSh$pFe0J-tQ x=IO5(pbT!@F*l)d&TIdc7A)Xjj+%g)fZt;_In2)$Ru%vN002ovPDHLkV1kbIWG?^! diff --git a/UniSky/Assets/Square44x44Logo.targetsize-48.png b/UniSky/Assets/Square44x44Logo.targetsize-48.png index ba81b88c63cdc6d1fcf51a97275d79b5d23cf2de..4a11992b94aa4a6e8ccc1847aa19b604f234f27e 100644 GIT binary patch delta 1202 zcmV;j1Wo(%3EK&fIe(2wL_t(|ob8xjh*d=#$Ir}}ySr}NE=dHkKCBC^K^8rVfvaw? zKKO_JJ!C0rMpXJNlDi~^54w;LsSyN05%dxj{gLhBlP%<9Rv<>;lk_ONrk-t_uF=qIwOWTUjR1YkyfL&}&I0P}8-~L?C_@ zLi|AWD*26jh$}G0j6^0{s{%Epjhvk(Q0Vm8!gOL3b;t~FDp}IvGbr^$}F#H|$Ds6vc z4KpTUm^49glKeUHC-ClrX?8nF=0)rjI;D7Kh~j3OAaaA|g-AyqRAl9wPI~C`ETCVv zaUIIg&VE}PS*6e})P_tw%!t`10e2Ztf3_Qkw?=87BY&>PU3e4$os_P((WI*(vI>AN zQ9aSFFN^bKW_>(4u3PbT4p=~z1OyH)E-rpNG&FQQ*}k;2G)nsc*VmVLKgd{&s|E)L z-=a8^{NBH!e-9pd)VDpa1X^AQ%r4^nBgkB{-zl$V(eASwiqF}%Qp#0=nI0$J_fb4% z>k!z@Ie+4P_N{m);JiS#7vLY-1Ce}>Yx6CoUFPt@Sk2USgSp1e^H^DSN+FQ&!rOS@ zru$Zgl;!~on3*4;I8qjPE2X{%$^`DD6M_5bv6G6W6Ue{qzvjN~9Z?oZ+(h$Vry2YP z+uxfMrr1&HSKWI>!~y5 zTvPuV;GZa=zT)PZYOG_NH=mB*U(r{pYxJ7U*szze?Rcc$XJ|R_OxSI7&I9~h7=%^c z7OA0=iGY&{IdO;VJO-+yDMITt$gRijXm`*XVxOu2zhr?kLH4eMyL(WyAO>%h-+t?C&&o7b4$JbvtQ*1>9)M z0KT<2@6y-Zognf6)mO0hBI)xujz6tbDu2~N1R@gwF$+;Swa6ByenrR(dsXR z-LCh_Q0^qOsxp?RMW48sivYX9Q`p^+7kCS>F`Dc2NhZMFMrQ$~vg&dD@b*JwFBoNh zAJ-G=a035eF zQd$@!!v@bCP5brQm!2X7&}rI+K^u3+W$VdJplSR+VbC;~+1)<%GV~OB_bWETV7ACu-+Jz+hkGGeCeUkHCeUm72XeW1$Nsm; QfB*mh07*qoM6N<$g2uB|t^fc4 delta 1226 zcmV;*1U38H3G)e%Ie(=|L_t(|ob8!;h)q!($KSkpGiG`6WX+QKL-|M9#`1?kND}#j zKZF!RlSo;nL}TY4Wl1u&EcwGy6n~IL$~Fd3mZp#;gfYyRXWne@jn9uex=rugd(M4N zFM7W^{mwo2w|u|no%Oze?;n>yssSV_X#%O1G=Wr0nn0?>k$*sSb#*Wl3XRLm%+yH&BUHW%q;sm z+KO6QT8>h^6MxTFNdU)zsN8t(NHP(ELrA)k`pHDV6K582b`z(s$|ev96!=UD$PjA( z8RH4>x?@vD@?4T1G{F2vT3cJ^5o0g@U0qC-@0}*`S2qBV$Q1wp@zYBO-0bZF@j0l2 z5<|mWiN$FMg>`^n*NGn737{JESsfp2r=a#|f*1L&dVk?Ggk z_o(i&w|@hE5#Z;U#zShdv$K`+(PF95%RqOT}lVc;4z9`Lz{A=a*>xJY~gyGQef6m(^^Bry##Y z2*gw`9Z#bGxJ#)gKxfme_{iaG8zsz8$~N`4@_#p>ZaUdG5}@~Qp~@*Uy#RnjKd0k} zhFrz}nv;Pe0eY^PvAmYjpZbVIkeCWNAF&seuo^1w0wS(AGJsbRY$`uzDUb8%kuFI? z8Aq%Wz&Y}41pI3^d#x)aBxE^V4w3UDkR@>lT82je-IM15*ci`t;>i;EOy&#v1BnnaYG|=S?MT`Q<73yUGe`FfNhyaN~?6OPI zi)CG>WVw5(1^=KF;uTS5%Yl&QJ#^GJ-5A;gth3AxR;FT4XdOg`BBdME4c0HRxZ_z$ zCE5ho)TYog3lm%xb!09CE}$>y7;6&%_f=woIIX&}5F7rCZOvqP}NaS)}US1RRCv?DIO~0??xTp)t&hpVwfJd$4e><40wZ4u zT%K=PAZ~Q@<62lLzXCS9u^DUgc}V+y_Loz%EAPHZBhW7LNs+`?0Z_=J zoQLE~@_pKsw>X(c*vrv;sC<1!%R|a`nCj=%(h3n&v9Cm@W#0um=M zE}$cz8@PeG0sbw$^F89}arVb6eXo?nPlAO6^1YAW_IfSYJkKAr)-Uk5hsV1*AiVd- z@VIi`U0SdF2m~guorBa8o2Cd&>Ji z{pW>Ndcu{@CbGe)1^gw67-y!cT?t#TiWp;#D6M?AG3LzXZ3H2-!rcbKE>hQuL>mZy zBS=Ln5^W$NB7bGANVS2;G=dbgBGm>WCX%)y*#;ul2okj-*#;si5?X;}$V##eM79wG zS~1GJNVb89i(o6T5p4sJZ=@ssMf%3SNZ+vD_=$IZ3Rie+S8H7YV_!Ps=60Y5&+z&g zmJnxn_B|A#ATY=_dxl`YKc=5GXy^`+p)-ClIKewe}@M6$p^0Ulalv zrJX*3_0w?oA=cxZd(BLCo#~8x_mU*?(+1v96JEt4@Q*r$rT<%==a2AwM!6kZDblq- z3hu^uOO+y2D6(&X6pGN6NZ$lfs)RNoeHTb660-2(1_WkO0yqP~W+gGxMM4V;0rTAD zBZ;8zX@3+ib61eD6wJ7_P|Jt+e#{*dB*K0yov}GaxMfm_E;4>*Ev}#zh`e5 zR3#yu@#loNYY;_3GNbU!-ZZF*gj7cPFCU0OyGTf6R4y9pg4#%MXVfm^%Yry0I5TL! vMM;75YhlR4e*=- z;!r_E1How^aVm(Z08>Fs0YGNNoREb+PSP4D%zLtA>vXqsw|6(Yawm8u=q%d+D?Cpk zcXxN|IE5=KD;G<$rxLPp12$fzfA6@Px3{+^INq}1%m2^;3_(JtJ- zplvY`6gV>62+hATxy_znVO()#;>(J2`ML zoNG;SG$q20IEO*qx=S+`8g9HTI+1N(^6ZGzp73eV5Py-`W$*YrBQLYtdUAMEi0$Vy>HQGAlqXisI>KnIB@lW+l-6mi{?eE z$(_N&h-4*kTgb(>vcGFycu5ampsu*X%;rd@@=b`$&rV`HP>M@cTVigGOpGgc68qGR zwp{Ai(0`>IY*(#3NQU=xT~`SDV#*IUN3P)tmvjls7U)KlL37U;#2Cfkv1sXCHHw^I_lA8foby9Ju7trlNFhArXwmfrUP5nQF?`b%0Yn zB0y--I536*QzIAMDY{Wc#3V)mfiu-*L1bEVql^eQr&g+!djg1zt>PWNK`XjfNW?q5lKRabq zw=Sht2W4d{B?{jgqN0sDX&l81QTBK40g@ec>pHB;Df^1X9t`;5V}RV}QM};5dor%l z#foB&Jb1scf}8cKUdYJ6ewi=J#kw*wmkj3@U9%|m$V07HZ=Af$>nc&5q<0icL|0O( zl?{vN7PFB!CxX<)B?^`csW% k^1JOH5uWG2gZ^jy1)U8{&P*7qrT_o{07*qoM6N<$f+}kal>h($ diff --git a/UniSky/Assets/StoreLogo.scale-125.png b/UniSky/Assets/StoreLogo.scale-125.png index b85e8a27f108614c09e70049bdc119ef577a83eb..68563ecb1223c69c66f3ecf25a1eab88ed0083bf 100644 GIT binary patch delta 864 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 B&t?Ds delta 1627 zcmV-h2Bi7@2Y?NbIDZB*NklV$L9WpT1^Lvdk%*9OqS<)fq8UB}rqgh{DOrTHa?GiW<6#S-f&%iq^PP5O z06#n2n`yY&TC!|1Ezcm_vt_VjB#QF1Q34ASeu6utw0~m|H0zQuLsaN?4O!npHrgd& zk%*e`6NN0I3&LV)RA!Tf4uX@Vc28g&Z?V6K(Y_7z^9H*ZL=iKZ^*vH2#0Ue)W4aac z%IQZ%Y2PT5(X2d5F9HT~i2)6`AP?QP9L|5+x(9VI4tJ6e4F@8^`sg^A7HgSy8Ives zW*X*^JAWf#&p9w0z6#Nvh@xlS57C|rl95GVU<0fr|LOI5f3$5&p80+Vxg3!5Px449 z2gpZ!n`Mz)gxYXYV9Xf!@3`Y%6U_Zg{heVNjhh&JJ^79UEn}QeX5e#dNys8(zh3xU zW7(;ca(*$#Hd#>|(<;#5``RzrsbmISnDSE8tbe4S{erf2b1?Dv?#!|!;bZe~3Q(o+8nA9;X1CzWU zXn#m!uV{jEE;APF2TyUiLly^V#hHaM_8l8_Bg?h@d4?(s8d8U{lOLpsAwG97vjEj!)T!@B7mQ$c>d(kDNRVT&o=g6XV zv2Fo};}n7|Bbb#cbJ9zLf6T;SI-V}7*MEA7;L{ksUTI*mGEz$C5EtG?N?I-@Sc_Ff z6j2*iX6P3U+yp4uS!&Rq;#iAMzakdK;FTPG!ML}UA5Vrf8gkkvjA`VOqH|7ID8Vqa ztC^XtX(er9kR0ro9lv6P1M=rSc}(x@jx>$iq~L>VIPA9c^Ckq^)n^ufZKifXn17wl ztn%#aXVf5vJ!)0T86p)%VYZas>UZsV7qtCIsr`!(wHA%ZGO;F8BHcAfRS6%Y@sn6&a~vRS z3xqirsyLIS`hq7xlmYFTPu+zRS$}5wbsgf30o7exxfp#{&3gIRjJXfY>n4lNb0Ujx zQ6)C$6h2whmQVLA6j@oIH!xhlMJFCbRDzaVNrC{hBH|bJleFV@}jl)9mnWX$qDCw!Qizv zUyW%JR%Q~m zuLxvoTcW8@Yhc-@%8y#R5`VhU`%T^H0-1Xm2|()A%@a)Wi5 zW>*Ax(TN^DV?v7}slG|gioST=t3~fatFJR|lpWED!DnxmOF2xJv28Og0eXag8n+H~8d0<7B2UcWxU`3V( ZegI(bSDowoLcst4002ovPDHLkV1h2XAsGMw diff --git a/UniSky/Assets/StoreLogo.scale-200.png b/UniSky/Assets/StoreLogo.scale-200.png index 70dcf0c4fef3ce9574c8f21ba877e5f3be84d239..d33ea1b43f9bfd2ff8ccb056a59fb886a573eb1c 100644 GIT binary patch delta 1143 zcmbOvxPWtlMLkQ9r;B4q#hkZu-WFal5NK1q`F(ajn}k&ZmxAbl&(5>FROk`1k({elkUU%7ggd&%LzkQ?~@>{_wu_f_cA% zfMu%0B!NqOf7YHjc|?R$vDwMV#ZP9VkdqoGr=Vr|WFalnm3;I>fSTZRbE z&RovzWejUt7=oh@ZIorOR)o<9BD{BOV@}XaS)&?rn{k5(6VKL`VrzzNPHj<#fUbyE zbl9(Y2Ph$SDWCH@(1cco8bEl_{#< z$fcO=)FR-F8!aw9_I7UR@mnuy->Pp;-NU@&_m3raU*4Vh|L2=KbN3ru>zL8%D7gFC zrNjSYr*%Y5+sEqnn-Ox^Y)FImFGQYiJ z#_yTh^-MEslQfd@CTTHw+6CX=H6uo8LXNX~wD9C;mPxfb*>97)Ivu)r^%hCY2;~sI zdCj2wlvec>v$vTib47%kcmt!}UN=}QU~sDD<*s*A>x=j5e!V*Z7(ee$By|ShLc-6IxL=b zNs1~dUFr}u)^KrolDcX}w3CZVhBle&?4@~$zl;Rl zS?1Nec`B6V!FI^9{`lI@0F>YXL=??lH<5cv$Oh@Lq|?I?0CAPykMf& zjGaaTewJ?T)!FTyQyU9T8osRZSZlB|MM0*>XP?8?k{Nf51YTJ#(tD^Ux@-zhOHtp8 z>{m+bP0 Hl+XkK$kO`| delta 2161 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 W(}>uWYrlfq1k8uN*F)}pB<&y7u;2;+ literal 4394 zcmb7IX*3i7*B)aq*2WmSGK7p}WQ&nyW(>xfY@zIltXWGaV=22KyX<5iOQyykWTyq$ z5-P^Ng+eJl@Avcl_x`xcdG0;u{<-%)=R9$yCVK2F0xSRkfL$MtGdqg||1mJ*nXj`Z z6`Td;dw81w0Dz~!o)VFF^%_(ou7qk)_BgRp?dyo}j)1^%^rz~~^_t_# zDLHGdEM&t@#H6R5 zh9WAmMAHxV9(EX?_kzXpY_i3yTjc)1&d2Mp{I;|gzJFaYhsQ(KQGDJ_LtsUX7VwSE zZg6EsDMVS9Fu=5VH^Em&NT-Jxiu$lp>=KN!Lq#^M?Y<3ejjr$(uf zc7N4WcidpXv9wB8s32Lb^zQAawIc(n1h7@zmMae%Lt7eC1MFvuVvPrtt3S!fa$y zQEB6?{%Vjy0%lZaJXdDv#Yys!SYQbLF|jGB*CQRHYiM$~ej@{I-&3-#U`G1rY<%Eu zJVsxq7~g&{v}AOZ=@)Tjg_3_smeT$GFf(K8%8?g+amPK=ty#Fn(2`!sRGMg9 zuhR(dpB7C!RY1luarftNa2T;5j_>TQG$oJ=vS)k|J>qho8~J#QzZa}YZo@*%{uX;- z3U0@hX!_J}=Jv2NGc1xj@vz4iVi*tv&RoUhr9DG~t_SqLfQVChr{(PDI;lr=3&dj$ zMn6C)x(}qYKuC>Sq;ngN2^1V_Q*&g&wRnbKtkDnm;UX--BMA>)0F?wT|A^;Grm z@P3~&ph)PBQD3iABqmu!MdfQY(5K&`rF15)Z$*W)+yH}jt26GxeFb&ZF8)ZX zxPaujYCWb4Y7T<33YopaFOU$*IX5AOzYy;JrJf$TbvqfEb1C2X&9S^3tx9zy73IK_ z2VBQ#9$w)3 z{h_dd$A8ry^dbYDxjoFOQYpFM6P9D3R}u`m5RKGJ9Elu{O72;jKF03_`B%(vT07gE z^wJX&g9bu{n^SH#uQ|L35FXidP9iJ(6uEXfH2f8t)qBPK+KSb6SD{sB +/// An HTTP requester based on . +/// +public class CustomHttpClientRequester : BaseRequester +{ + #region Fields + + private readonly HttpClient _client; + + #endregion + + #region ctor + + /// + /// Creates a new HTTP client request with a new HttpClient instance. + /// + public CustomHttpClientRequester() + : this(new HttpClient()) + { + } + + /// + /// Creates a new HTTP client request. + /// + /// The HTTP client to use for requests. + public CustomHttpClientRequester(HttpClient client) + { + _client = client; + } + + #endregion + + #region Properties + + /// + /// Gets the used HttpClient for further manipulation. + /// + public HttpClient Client => _client; + + #endregion + + #region Methods + + /// + /// Checks if the given protocol is supported. + /// + /// + /// The protocol to check for, e.g., http. + /// + /// + /// True if the protocol is supported, otherwise false. + /// + public override Boolean SupportsProtocol(String protocol) => + protocol.Equals(ProtocolNames.Http, StringComparison.OrdinalIgnoreCase) || + protocol.Equals(ProtocolNames.Https, StringComparison.OrdinalIgnoreCase); + + /// + /// Performs an asynchronous request that can be cancelled. + /// + /// The options to consider. + /// The token for cancelling the task. + /// + /// The task that will eventually give the response data. + /// + protected override async Task PerformRequestAsync(Request request, CancellationToken cancel) + { + // create the request message + var method = new HttpMethod(request.Method.ToString().ToUpperInvariant()); + var requestMessage = new HttpRequestMessage(method, request.Address); + var contentHeaders = new List>(); + + foreach (var header in request.Headers) + { + // Source: + // https://github.com/aspnet/Mvc/blob/02c36a1c4824936682b26b6c133d11bebee822a2/src/Microsoft.AspNet.Mvc.WebApiCompatShim/HttpRequestMessage/HttpRequestMessageFeature.cs + if (!requestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value)) + { + contentHeaders.Add(new KeyValuePair(header.Key, header.Value)); + } + } + + // set up the content + if (request.Content != null && method != HttpMethod.Get && method != HttpMethod.Head) + { + requestMessage.Content = new StreamContent(request.Content); + + foreach (var header in contentHeaders) + { + requestMessage.Content.Headers.TryAddWithoutValidation(header.Key, header.Value); + } + } + + try + { + // execute the request + // WAM: Fix 1, like are you for real + var responseMessage = await _client.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, cancel).ConfigureAwait(false); + + // convert the response + var response = new DefaultResponse + { + Headers = responseMessage.Headers.ToDictionary(p => p.Key, p => string.Join(", ", p.Value)), + Address = Url.Convert(responseMessage.RequestMessage.RequestUri), + StatusCode = responseMessage.StatusCode + }; + + // get the anticipated content + var content = responseMessage.Content; + if (content != null) + { + var contentType = content.Headers.ContentType; + + // WAM: Hack 1, only read HTML + if (contentType is { MediaType: ("text/html" or "application/xml" or "application/xhtml+xml") }) + { + response.Content = await content.ReadAsStreamAsync() + .ConfigureAwait(false); + + foreach (var pair in content.Headers) + { + response.Headers[pair.Key] = String.Join(", ", pair.Value); + } + } + } + + if (IsRedirected(response) && !response.Headers.ContainsKey(HeaderNames.SetCookie)) + { + response.Headers[HeaderNames.SetCookie] = String.Empty; + } + + return response; + } + catch (Exception) + { + // create a response to avoid failing (#28) + return new DefaultResponse + { + Address = Url.Convert(request.Address), + StatusCode = 0 + }; + } + } + + private static Boolean IsRedirected(IResponse response) + { + var status = response.StatusCode; + + return status == HttpStatusCode.Redirect || status == HttpStatusCode.RedirectKeepVerb || + status == HttpStatusCode.RedirectMethod || status == HttpStatusCode.TemporaryRedirect || + status == HttpStatusCode.MovedPermanently || status == HttpStatusCode.MultipleChoices; + } + + #endregion +} \ No newline at end of file diff --git a/UniSky/Helpers/FacetHelpers.cs b/UniSky/Helpers/FacetHelpers.cs new file mode 100644 index 0000000..cc6e070 --- /dev/null +++ b/UniSky/Helpers/FacetHelpers.cs @@ -0,0 +1,322 @@ +// +// Copyright (c) Drastic Actions. All rights reserved. +// + +using FishyFlip.Models; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Text; +using System; +using FishyFlip.Lexicon.App.Bsky.Richtext; +using FishyFlip.Lexicon; +using FishyFlip.Lexicon.App.Bsky.Actor; + +namespace UniSky.Helpers; + +/// +/// Facets. +/// +public class FacetHelpers +{ + /// + /// Creates a facet with a link feature. + /// + /// The start index of the link. + /// The end index of the link. + /// The URI of the link. + /// The created facet. + public static Facet CreateFacetLink(int start, int end, string uri) + { + var link = new Link(); + link.Uri = uri; + var facet = new Facet(); + facet.Features = new List { link }; + facet.Index = new ByteSlice(); + facet.Index.ByteStart = start; + facet.Index.ByteEnd = end; + return facet; + } + + /// + /// Creates a facet with a hashtag feature. + /// + /// The start index of the hashtag. + /// The end index of the hashtag. + /// The hashtag value. + /// The created facet. + public static Facet CreateFacetHashtag(int start, int end, string hashtag) + { + var facet = new Facet(); + var hashtagFeature = new Tag(); + hashtagFeature.TagValue = hashtag; + facet.Features = new List { hashtagFeature }; + facet.Index = new ByteSlice(); + facet.Index.ByteStart = start; + facet.Index.ByteEnd = end; + return facet; + } + + /// + /// Creates a facet with a mention feature. + /// + /// The start index of the mention. + /// The end index of the mention. + /// The mention value. + /// The created facet. + public static Facet CreateFacetMention(int start, int end, ATDid mention) + { + var facet = new Facet(); + var mentionFeature = new Mention(); + mentionFeature.Did = mention; + facet.Features = new List { mentionFeature }; + facet.Index = new ByteSlice(); + facet.Index.ByteStart = start; + facet.Index.ByteEnd = end; + return facet; + } + + /// + /// Creates an array of facets with link features for the URIs in the specified post. + /// + /// Post text. + /// Array of Facets. + public static Facet[] ForUris(string post) + { + var facets = new List(); + var matches = Regex.Matches(post, @"(https?://[^\s]+)"); + var postBytes = Encoding.UTF8.GetBytes(post); + var startIndex = 0; + foreach (Match match in matches) + { + var matchBytes = Encoding.UTF8.GetBytes(match.Value); + var position = FindPattern(postBytes, matchBytes, startIndex); + startIndex = position.End; + facets.Add(CreateFacetLink(position.Start, position.End, match.Value)); + } + + return [.. facets]; + } + + /// + /// Creates an array of facets with link features for the URIs in the specified post. + /// + /// Post text. + /// Text to embed with link. + /// Link Uri. + /// Array of Facets. + public static Facet[] ForUris(string post, string baseText, string uri) + { + var facets = new List(); + var matches = Regex.Matches(post, baseText); + var postBytes = Encoding.UTF8.GetBytes(post); + var startIndex = 0; + foreach (Match match in matches) + { + var matchBytes = Encoding.UTF8.GetBytes(match.Value); + var position = FindPattern(postBytes, matchBytes, startIndex); + startIndex = position.End; + facets.Add(CreateFacetLink(position.Start, position.End, uri)); + } + + return [.. facets]; + } + + /// + /// Creates an array of facets with hashtag features for the hashtags in the specified post. + /// + /// Post text. + /// Array of Facets. + public static Facet[] ForHashtags(string post) + { + var facets = new List(); + + // Match all hashtags in the post that are not part of a URL. + var matches = Regex.Matches(post, @"(? + /// Creates an array of facets with mention features for the mentions in the specified post. + /// + /// Post text. + /// Array of actors profiles. + /// Array of Facets. + public static Facet[] ForMentions(string post, FacetActorIdentifier[] actors) + { + var facets = new List(); + + // Match all mentions in the post that are not part of a URL. + var matches = Regex.Matches(post, @"@(?!http)[a-zA-Z0-9][-a-zA-Z0-9_.]{1,}"); + var postBytes = Encoding.UTF8.GetBytes(post); + var startIndex = 0; + foreach (Match match in matches) + { + var matchBytes = Encoding.UTF8.GetBytes(match.Value); + var position = FindPattern(postBytes, matchBytes, startIndex); + + var mention = match.Value; + if (mention.StartsWith("@")) + { + mention = mention.Substring(1); + } + + if (string.IsNullOrEmpty(mention)) + { + continue; + } + + var actor = actors.FirstOrDefault(n => n.Handle.ToString() == mention); + if (actor?.Did is not null) + { + facets.Add(CreateFacetMention(position.Start, position.End, actor.Did)); + } + + startIndex = position.End; + } + + return [.. facets]; + } + + /// + /// Creates an array of facets with mention features for the mentions in the specified post. + /// + /// Post text. + /// Actor profiles. + /// Array of Facets. + public static Facet[] ForMentions(string post, ProfileViewDetailed[] actors) + { + var actorList = new List(); + foreach (var actor in actors) + { + if (actor.Handle is null) + { + continue; + } + + if (actor.Handle is null || actor.Did is null) + { + continue; + } + + actorList.Add(new FacetActorIdentifier(actor.Handle, actor.Did)); + } + + return ForMentions(post, actorList.ToArray()); + } + + /// + /// Creates an array of facets with mention features for the mentions in the specified post. + /// + /// Post text. + /// Actor profiles. + /// Array of Facets. + public static Facet[] ForMentions(string post, ProfileViewBasic[] actors) + { + var actorList = new List(); + foreach (var actor in actors) + { + if (actor.Handle is null) + { + continue; + } + + if (actor.Handle is null || actor.Did is null) + { + continue; + } + + actorList.Add(new FacetActorIdentifier(actor.Handle, actor.Did)); + } + + return ForMentions(post, actorList.ToArray()); + } + + /// + /// Creates an array of facets with mention features for the mentions in the specified post. + /// + /// Post text. + /// Actor profiles. + /// Array of Facets. + public static Facet[] ForMentions(string post, ProfileViewBasic actor) + => ForMentions(post, [actor]); + + /// + /// Parses a post and returns an array of facets. + /// + /// The post text. + /// Optional list of Actor DID values, used for creating Mention Facets. + /// Array of Facets. + public static Facet[] Parse(string post, ProfileViewBasic[]? actors = null) + { + var uriFacets = ForUris(post); + var hashtagFacets = ForHashtags(post); + var mentionFacets = ForMentions(post, actors ?? []); + return [.. uriFacets, .. hashtagFacets, .. mentionFacets]; + } + + /// + /// Parses a post and returns an array of facets. + /// + /// The post text. + /// Optional list of Actor DID values, used for creating Mention Facets. + /// Array of Facets. + public static Facet[] Parse(string post, ProfileViewDetailed[]? actors = null) + { + var uriFacets = ForUris(post); + var hashtagFacets = ForHashtags(post); + var mentionFacets = ForMentions(post, actors ?? []); + return [.. uriFacets, .. hashtagFacets, .. mentionFacets]; + } + + + /// + /// Gets the handles from a post text. + /// + /// Text of the post. + /// Array of ATHandle. + public static ATHandle[] HandlesForMentions(string post) + => ATHandle.FromPostText(post); + + private static (int Start, int End) FindPattern(byte[] source, byte[] pattern, int startIndex = 0) + { + return FindPattern(source.AsSpan(), pattern.AsSpan(), startIndex); + } + + private static (int Start, int End) FindPattern(ReadOnlySpan source, ReadOnlySpan pattern, int startIndex = 0) + { + if (pattern.IsEmpty || pattern.Length > source.Length) + { + return (0, 0); + } + + for (int i = startIndex; i <= source.Length - pattern.Length; i++) + { + if (source.Slice(i, pattern.Length).SequenceEqual(pattern)) + { + return (i, i + pattern.Length); + } + } + + return (0, 0); + } +} + diff --git a/UniSky/Package.appxmanifest b/UniSky/Package.appxmanifest index 3b4f3fd..17eadd6 100644 --- a/UniSky/Package.appxmanifest +++ b/UniSky/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.0.188.0" /> diff --git a/UniSky/Properties/Default.rd.xml b/UniSky/Properties/Default.rd.xml index 3b41ac1..a57952e 100644 --- a/UniSky/Properties/Default.rd.xml +++ b/UniSky/Properties/Default.rd.xml @@ -18,6 +18,7 @@ + diff --git a/UniSky/RootPage.xaml b/UniSky/RootPage.xaml index 36d7b77..a39c723 100644 --- a/UniSky/RootPage.xaml +++ b/UniSky/RootPage.xaml @@ -15,6 +15,7 @@ + diff --git a/UniSky/Services/AngleSharpEmbedExtractor.cs b/UniSky/Services/AngleSharpEmbedExtractor.cs new file mode 100644 index 0000000..59542c6 --- /dev/null +++ b/UniSky/Services/AngleSharpEmbedExtractor.cs @@ -0,0 +1,99 @@ +using System; +using System.Globalization; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using AngleSharp; +using AngleSharp.Dom; +using AngleSharp.Html.Dom; +using AngleSharp.Io; +using Microsoft.Extensions.Logging; +using UniSky.Helpers.AngleSharp; +using UniSky.Models.Embed; + +namespace UniSky.Services; + +public class AngleSharpEmbedExtractor : IEmbedExtractor +{ + private readonly IConfiguration configuration; + private readonly ILogger logger + = ServiceContainer.Default.GetRequiredService>(); + private readonly HttpClient httpClient + = new HttpClient(); + + public AngleSharpEmbedExtractor() + { + httpClient.DefaultRequestHeaders.Add("User-Agent", Constants.CrawlerUserAgent); + + configuration = Configuration.Default + .WithCulture(CultureInfo.CurrentCulture) + .WithRequester(new CustomHttpClientRequester(httpClient)) + .WithDefaultLoader(new LoaderOptions() { IsNavigationDisabled = false }) + .WithTemporaryCookies(); + } + + public async Task ExtractEmbedAsync(Uri uri, CancellationToken cancellationToken = default) + { + if (uri.Scheme.ToLowerInvariant() is not ("http" or "https")) + return null; + + var browsingContext = BrowsingContext.New(configuration); + var document = await browsingContext.OpenAsync(new Url(uri.ToString()), cancellationToken); + cancellationToken.ThrowIfCancellationRequested(); + + var title = ExtractTitleFromDocument(document); + var description = ExtractDescriptionFromDocument(document); + var imageUrl = ExtractImageFromDocument(document); + + logger.LogDebug($"{title} - {description}, {imageUrl}"); + if (string.IsNullOrWhiteSpace(title) && string.IsNullOrWhiteSpace(description) && imageUrl == null) + return null; + + return new UriEmbedDetails(title, description, imageUrl); + } + + private string ExtractTitleFromDocument(IDocument document) + { + var titleOpenGraph = document.QuerySelector("meta[property='og:title']"); + if (titleOpenGraph != null) + return titleOpenGraph.Content; + + return document.Title; + } + + private string ExtractDescriptionFromDocument(IDocument document) + { + var descriptionOpenGraph = document.QuerySelector("meta[property='og:description']"); + if (descriptionOpenGraph != null) + return descriptionOpenGraph.Content; + + var metaDescription = document.QuerySelector("meta[name='description']"); + if (metaDescription != null) + return metaDescription.Content; + + return null; + } + + private UriEmbedImage? ExtractImageFromDocument(IDocument document) + { + var imageOpenGraph = document.QuerySelector("meta[property='og:image'], meta[property='og:image:secure_url']"); + if (!string.IsNullOrWhiteSpace(imageOpenGraph?.Content) && Uri.TryCreate(imageOpenGraph.Content, UriKind.RelativeOrAbsolute, out var uri)) + { + var url = new Url(imageOpenGraph.Content, document.BaseUri); + + var widthElement = document.QuerySelector("meta[property='og:image:width']"); + var heightElement = document.QuerySelector("meta[property='og:image:height']"); + var altElement = document.QuerySelector("meta[property='og:image:alt']"); + + int? width = null, height = null; + if (!string.IsNullOrWhiteSpace(widthElement?.Content) && int.TryParse(widthElement.Content, out var widthInt)) + width = widthInt; + if (!string.IsNullOrWhiteSpace(heightElement?.Content) && int.TryParse(heightElement.Content, out var heightInt)) + height = heightInt; + + return new UriEmbedImage(url.ToString(), altElement?.Content, width, height); + } + + return null; + } +} diff --git a/UniSky/Services/Overlay/AppWindowOverlayController.cs b/UniSky/Services/Overlay/AppWindowOverlayController.cs index 74160c2..d0fc197 100644 --- a/UniSky/Services/Overlay/AppWindowOverlayController.cs +++ b/UniSky/Services/Overlay/AppWindowOverlayController.cs @@ -128,14 +128,21 @@ private void PlaceAppWindow(Size initialSize) SizeHelpers.Scale(ref width, ref height, maxWidth, maxHeight); if ((applicationView.AdjacentToLeftDisplayEdge && applicationView.AdjacentToRightDisplayEdge) || - Math.Max(offsetFromLeftEdge, offsetFromRightEdge) < width) // not enough space + Math.Max(offsetFromLeftEdge, offsetFromRightEdge) < ((currentDisplaySize.Width / 3.0) * 1.0)) // not enough space { + var windowCenter = new Point( + (applicationView.VisibleBounds.X - currentRegion.WorkAreaOffset.X) + (applicationView.VisibleBounds.Width / 2.0), + (applicationView.VisibleBounds.Y - currentRegion.WorkAreaOffset.Y) + (applicationView.VisibleBounds.Height / 2.0)); + var windowSize = new Size(applicationView.VisibleBounds.Width, applicationView.VisibleBounds.Height); + width = initialSize.Width; height = initialSize.Height; - SizeHelpers.Scale(ref width, ref height, currentDisplayRect.Width / 4.0 * 3.0, currentDisplayRect.Height / 4.0 * 3.0); + SizeHelpers.Scale(ref width, ref height, (windowSize.Width / 5.0) * 4.0, (windowSize.Height / 5.0) * 4.0); + + var position = new Point(windowCenter.X - (width / 2.0), windowCenter.Y - (height / 2.0)); appWindow.RequestSize(new Size(width, height + 32)); - appWindow.RequestMoveRelativeToDisplayRegion(currentRegion, new Point((currentDisplayCenter - (width / 2)) + 20, 150)); + appWindow.RequestMoveRelativeToDisplayRegion(currentRegion, position); } else if (offsetFromRightEdge > offsetFromLeftEdge) { diff --git a/UniSky/Services/Overlay/ApplicationViewOverlayController.cs b/UniSky/Services/Overlay/ApplicationViewOverlayController.cs index 9b85be5..cfbf44f 100644 --- a/UniSky/Services/Overlay/ApplicationViewOverlayController.cs +++ b/UniSky/Services/Overlay/ApplicationViewOverlayController.cs @@ -7,6 +7,7 @@ using Windows.UI.Core.Preview; using Windows.UI.ViewManagement; using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; namespace UniSky.Services.Overlay; @@ -22,7 +23,7 @@ internal class ApplicationViewOverlayController : IOverlayController private bool hasActivated = false; private long titlePropertyChangedRef; - private FrameworkElement Control + private FrameworkElement Control => (FrameworkElement)control; public ApplicationViewOverlayController(IOverlayControl control, @@ -57,6 +58,15 @@ public ApplicationViewOverlayController(IOverlayControl control, titlePropertyChangedRef = Control.RegisterPropertyChangedCallback(OverlayControl.TitleContentProperty, OnTitleChanged); OnTitleChanged(Control, OverlayControl.TitleContentProperty); + + Window.Current.Content = new Grid() + { + Children = + { + new Canvas() { Name = "RenderTargetRoot" }, + (UIElement)control, + } + }; } private void OnTitleChanged(DependencyObject sender, DependencyProperty dp) diff --git a/UniSky/Services/Overlay/OverlayService.cs b/UniSky/Services/Overlay/OverlayService.cs index dccc357..c2a7e00 100644 --- a/UniSky/Services/Overlay/OverlayService.cs +++ b/UniSky/Services/Overlay/OverlayService.cs @@ -59,7 +59,6 @@ await view.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => controller = new ApplicationViewOverlayController(control, currentViewId, newViewId, parameter as IOverlaySizeProvider); control.SetOverlayController(controller); - Window.Current.Content = control; Window.Current.Activate(); control.InvokeShowing(parameter); diff --git a/UniSky/Services/XamlElementCaptureService.cs b/UniSky/Services/XamlElementCaptureService.cs new file mode 100644 index 0000000..dd1803b --- /dev/null +++ b/UniSky/Services/XamlElementCaptureService.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Toolkit.Uwp.UI.Extensions; +using Windows.Foundation; +using Windows.Graphics.Imaging; +using Windows.UI.Core; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; + +namespace UniSky.Services; + +public class XamlElementCaptureService : IElementCaptureService +{ + private readonly CoreDispatcher dispatcher; + private readonly Canvas rootElement; + + public XamlElementCaptureService() + { + this.dispatcher = Window.Current.Dispatcher; + this.rootElement = (Canvas)Window.Current.Content.FindDescendantByName("RenderTargetRoot"); + } + + public async Task CaptureElementAsync(Func elementFactory, Size targetSize) + { + TaskCompletionSource softwareBitmapCompletion = new TaskCompletionSource(); + await dispatcher.RunAsync(CoreDispatcherPriority.Low, async () => + { + var element = elementFactory(); + + try + { + if (VisualTreeHelper.GetParent(element) == null) + rootElement.Children.Add(element); + + element.Measure(targetSize); + element.Arrange(new Rect(new Point(), targetSize)); + + var rtb = new RenderTargetBitmap(); + await rtb.RenderAsync(element); + + var pixels = await rtb.GetPixelsAsync(); + var softwareBitmap = SoftwareBitmap.CreateCopyFromBuffer( + pixels, + BitmapPixelFormat.Bgra8, + rtb.PixelWidth, + rtb.PixelHeight, + BitmapAlphaMode.Premultiplied); + + softwareBitmapCompletion.SetResult(softwareBitmap); + } + catch (Exception ex) + { + softwareBitmapCompletion.TrySetException(ex); + } + finally + { + rootElement.Children.Remove(element); + } + }); + + return await softwareBitmapCompletion.Task; + } +} diff --git a/UniSky/Services/XamlEmbedThumbnailGenerator.cs b/UniSky/Services/XamlEmbedThumbnailGenerator.cs new file mode 100644 index 0000000..7cc07ab --- /dev/null +++ b/UniSky/Services/XamlEmbedThumbnailGenerator.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.Graphics.Imaging; +using Windows.UI.Core; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml; +using Windows.Storage.Streams; +using UniSky.Controls.Compose.Renderer; +using UniSky.Models.Embed; +using Windows.Foundation; + +namespace UniSky.Services; + +public class XamlEmbedThumbnailGenerator(IElementCaptureService elementCaptureService) : IEmbedThumbnailGenerator +{ + private readonly CoreDispatcher dispatcher = Window.Current.Dispatcher; + + public async Task GenerateThumbnailAsync(UriEmbedDetails embedDetails) + { + if (embedDetails.Image == null) + { + // TODO: in this case we can do an article renderer + return null; + } + + TaskCompletionSource softwareBitmapCompletion = new TaskCompletionSource(); + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => + { + try + { + var renderer = new ComposeImageRenderer(); + await renderer.LoadImage(RandomAccessStreamReference.CreateFromUri(new Uri(embedDetails.Image.Value.Url))); + + var bitmap = await elementCaptureService.CaptureElementAsync(() => renderer, new Size(640, 320)); + softwareBitmapCompletion.SetResult(bitmap); + } + catch (Exception ex) + { + softwareBitmapCompletion.TrySetException(ex); + } + }); + + return await softwareBitmapCompletion.Task; + } +} diff --git a/UniSky/UniSky.csproj b/UniSky/UniSky.csproj index d88cce9..aa58763 100644 --- a/UniSky/UniSky.csproj +++ b/UniSky/UniSky.csproj @@ -34,7 +34,7 @@ False False Always - x86|x64|arm|arm64 + arm True 0 @@ -157,6 +157,9 @@ ComposeSheet.xaml + + ComposeImageRenderer.xaml + @@ -201,7 +204,9 @@ + + @@ -260,6 +265,7 @@ + FeedTemplates.xaml @@ -273,8 +279,11 @@ + + + @@ -427,6 +436,7 @@ + @@ -457,6 +467,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -583,6 +597,12 @@ + + 1.2.0-beta.439 + + + 1.0.0 + 8.4.0 @@ -622,6 +642,9 @@ 2.0.1 + + 0.6.1 + 9.0.0 diff --git a/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs index 9cef584..9fc1f80 100644 --- a/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs +++ b/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs @@ -121,7 +121,7 @@ protected override void OnLoadingChanged(bool value) { base.OnLoadingChanged(value); - syncContext.Post(() => parent.UpdateLoading(this, value)); + syncContext.Post(() => parent.UpdateLoading(value)); } private async Task TryDeleteTemporaryFile(IStorageFile storageFile) diff --git a/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs new file mode 100644 index 0000000..c9ae599 --- /dev/null +++ b/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Microsoft.Extensions.DependencyInjection; +using OwlCore; +using UniSky.Controls.Compose; +using UniSky.Extensions; +using UniSky.Services; +using Windows.Foundation.Metadata; +using Windows.Foundation; +using Windows.Graphics.Imaging; +using Windows.UI.Core; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media.Imaging; + +namespace UniSky.ViewModels.Compose; + +public partial class ComposeViewLinkCardViewModel : ViewModelBase, IDisposable +{ + private static readonly string DebounceKey + = nameof(ComposeViewLinkCardViewModel) + "_" + nameof(GenerateEmbedAsync); + + private readonly ComposeViewModel parent; + private readonly Task executingTask; + private readonly CancellationTokenSource cancellationTokenSource; + private readonly IEmbedExtractor embedExtractor; + private readonly IEmbedThumbnailGenerator thumbnailGenerator; + private readonly CoreDispatcher dispatcher = Window.Current.Dispatcher; + + private SoftwareBitmap thumbnailBitmap; + + [ObservableProperty] + private string title; + [ObservableProperty] + private string description; + [ObservableProperty] + private string source; + [ObservableProperty] + private object thumbnail; + + public Uri Url { get; } + + public ComposeViewLinkCardViewModel(ComposeViewModel parent, Uri url) + { + this.Url = url; + this.parent = parent; + this.embedExtractor = ServiceContainer.Scoped.GetRequiredService(); + this.thumbnailGenerator = ServiceContainer.Scoped.GetRequiredService(); + this.cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)); + this.executingTask = Task.Run(() => GenerateEmbedAsync(cancellationTokenSource.Token)); + } + + private async Task GenerateEmbedAsync(CancellationToken token) + { + using var loading = this.GetLoadingContext(); + + try + { + if (!await Flow.Debounce(DebounceKey, TimeSpan.FromMilliseconds(500))) + return; + + token.ThrowIfCancellationRequested(); + var embedDetails = await embedExtractor.ExtractEmbedAsync(this.Url, token); + if (embedDetails == null) + return; + + Title = embedDetails.Value.Title; + Description = embedDetails.Value.Description; + Source = this.Url.Host; + + if (embedDetails.Value.Image == null) + return; + + try + { + this.thumbnailBitmap = await thumbnailGenerator.GenerateThumbnailAsync(embedDetails.Value); + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => + { + var softwareSource = new SoftwareBitmapSource(); + await softwareSource.SetBitmapAsync(thumbnailBitmap); + + Thumbnail = softwareSource; + }); + } + catch + { + + } + } + catch (Exception ex) + { + this.SetErrored(ex); + } + } + + + [RelayCommand] + private void Remove() + { + this.parent.AttachedUri = null; + } + + protected override void OnLoadingChanged(bool value) + { + base.OnLoadingChanged(value); + + syncContext.Post(() => parent.UpdateLoading(value)); + } + + public void Dispose() + { + this.cancellationTokenSource.Cancel(); + } +} diff --git a/UniSky/ViewModels/Compose/ComposeViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewModel.cs index bff7acd..68d3610 100644 --- a/UniSky/ViewModels/Compose/ComposeViewModel.cs +++ b/UniSky/ViewModels/Compose/ComposeViewModel.cs @@ -1,21 +1,27 @@ using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; +using System.Text.RegularExpressions; +using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using FishyFlip; using FishyFlip.Lexicon; using FishyFlip.Lexicon.App.Bsky.Actor; using FishyFlip.Lexicon.App.Bsky.Embed; using FishyFlip.Lexicon.App.Bsky.Feed; using FishyFlip.Lexicon.Com.Atproto.Repo; +using FishyFlip.Models; using FishyFlip.Tools; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using UniSky.Extensions; +using UniSky.Helpers; using UniSky.Helpers.Interop; using UniSky.Services; using UniSky.ViewModels.Posts; @@ -25,6 +31,8 @@ using Windows.Storage; using Windows.Storage.Pickers; using Windows.Storage.Streams; +using System.Threading; +using OwlCore; namespace UniSky.ViewModels.Compose; @@ -36,6 +44,7 @@ public partial class ComposeViewModel : ViewModelBase [ObservableProperty] [NotifyPropertyChangedFor(nameof(CanPost))] [NotifyPropertyChangedFor(nameof(Characters))] + [NotifyPropertyChangedFor(nameof(IsDirty))] private string _text; [ObservableProperty] private string _avatarUrl; @@ -46,19 +55,27 @@ public partial class ComposeViewModel : ViewModelBase [NotifyPropertyChangedFor(nameof(HasReply))] private PostViewModel replyTo; + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(CanPost))] + [NotifyPropertyChangedFor(nameof(IsDirty))] + private ComposeViewLinkCardViewModel attachedUri; + private readonly ResourceLoader resources; private readonly IProtocolService protocolService; private readonly ILogger logger; // TODO: this but better public bool IsDirty - => (!string.IsNullOrEmpty(Text) || HasAttachments); + => (!string.IsNullOrEmpty(Text) || HasAttachments || AttachedUri != null); // TODO: ditto public bool CanPost - => (!string.IsNullOrEmpty(Text) || HasAttachments) && Text.Length <= 300 && !AttachedFiles.Any(a => a.IsLoading || a.IsErrored); + => (!string.IsNullOrEmpty(Text) || HasAttachments || AttachedUri != null) && + Text.Length <= 300 && + AttachedUri?.IsLoading != true && + !AttachedFiles.Any(a => a.IsLoading || a.IsErrored); + public int Characters => Text?.Length ?? 0; - public bool HasReply => ReplyTo != null; @@ -69,8 +86,8 @@ public bool HasAttachments public IOverlayController SheetController { get; } - public ComposeViewModel(IProtocolService protocolService, - IOverlayController sheetController, + public ComposeViewModel(IOverlayController sheetController, + IProtocolService protocolService, ILogger logger, PostViewModel replyTo = null) { @@ -89,10 +106,45 @@ public ComposeViewModel(IProtocolService protocolService, this.OnPropertyChanged(nameof(HasAttachments)); this.OnPropertyChanged(nameof(CanPost)); }; - Task.Run(LoadAsync); } + partial void OnTextChanged(string value) + { + if (AttachedFiles != null && AttachedFiles.Count != 0) + return; + + Uri attachedUri = null; + var matches = Regex.Matches(value, @"(https?://[^\s]+)"); + foreach (Match match in matches) + { + if (!Uri.TryCreate(match.Value, UriKind.Absolute, out var uri)) + continue; + + attachedUri = uri; + break; + } + + if (attachedUri != null) + { + if (AttachedUri != null) + { + if (AttachedUri.Url == attachedUri) + return; + + AttachedUri.Dispose(); + } + + AttachedUri = new ComposeViewLinkCardViewModel(this, attachedUri); + } + else + { + AttachedUri?.Dispose(); + AttachedUri = null; + } + } + + private async Task LoadAsync() { using var loading = this.GetLoadingContext(); @@ -120,6 +172,8 @@ private async Task PostAsync() this.SetErrored(null); using var ctx = this.GetLoadingContext(); + var protocol = protocolService.Protocol; + try { var text = Text; @@ -127,6 +181,19 @@ private async Task PostAsync() text = text.Replace("\r\n", "\n") .Replace('\r', '\n'); + var handles = FacetHelpers.HandlesForMentions(text); + + ProfileViewDetailed[] profiles = []; + if (handles.Length > 0) + { + var feedProfiles = (await protocol.Actor.GetProfilesAsync(handles.Cast().ToList()) + .ConfigureAwait(false)) + .HandleResult(); + + profiles = [.. feedProfiles.Profiles]; + } + + var facets = FacetHelpers.Parse(text, profiles); var replyRef = await GetReplyDefAsync().ConfigureAwait(false); var embed = await CreateEmbedAsync().ConfigureAwait(false); @@ -328,6 +395,9 @@ private void AddFile(IStorageFile storageFile, bool isTemporary) { if (storageFile == null) return; + if (AttachedUri != null) + throw new InvalidOperationException("A link is attached to this post!"); + if (storageFile is IStorageFilePropertiesWithAvailability properties && !properties.IsAvailable) throw new InvalidOperationException(resources.GetString("E_FileUnavailable")); @@ -359,7 +429,7 @@ private void AddFile(IStorageFile storageFile, bool isTemporary) AttachedFiles.Add(ActivatorUtilities.CreateInstance(ServiceContainer.Scoped, this, storageFile, type, isTemporary)); } - internal void UpdateLoading(ComposeViewAttachmentViewModel attachmentViewModel, bool value) + internal void UpdateLoading(bool value) { OnPropertyChanged(nameof(CanPost)); } From f18a45647c42f7a312cf20fd15b9561f178be7ab Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 25 Dec 2024 18:47:03 +0000 Subject: [PATCH 17/26] Attach embeds and enable facets --- UniSky.Models/Embed/EmbedModels.cs | 19 ++- UniSky.Services/Compression.cs | 11 ++ UniSky.Services/IImageCompressionService.cs | 13 ++ UniSky.Services/UniSky.Services.csproj | 2 + UniSky/App.xaml.cs | 1 + UniSky/Services/ImageCompressionService.cs | 119 ++++++++++++++++++ UniSky/UniSky.csproj | 2 + .../Compose/ComposeViewAttachmentViewModel.cs | 97 +++----------- .../Compose/ComposeViewLinkCardViewModel.cs | 8 +- UniSky/ViewModels/Compose/ComposeViewModel.cs | 40 +++++- 10 files changed, 217 insertions(+), 95 deletions(-) create mode 100644 UniSky.Services/Compression.cs create mode 100644 UniSky.Services/IImageCompressionService.cs create mode 100644 UniSky/Services/ImageCompressionService.cs diff --git a/UniSky.Models/Embed/EmbedModels.cs b/UniSky.Models/Embed/EmbedModels.cs index 1d3569a..b5950eb 100644 --- a/UniSky.Models/Embed/EmbedModels.cs +++ b/UniSky.Models/Embed/EmbedModels.cs @@ -2,15 +2,14 @@ using System.Collections.Generic; using System.Text; -namespace UniSky.Models.Embed +namespace UniSky.Models.Embed; + +public enum UriEmbedType { - public enum UriEmbedType - { - Image, - Video, - Audio, - Article - } - public record struct UriEmbedImage(string Url, string? Alt, int? Width, int? Height); - public record struct UriEmbedDetails(string Title, string Description, UriEmbedImage? Image); + Image, + Video, + Audio, + Article } +public record struct UriEmbedImage(string Url, string? Alt, int? Width, int? Height); +public record struct UriEmbedDetails(string Title, string Description, UriEmbedImage? Image); diff --git a/UniSky.Services/Compression.cs b/UniSky.Services/Compression.cs new file mode 100644 index 0000000..5129da4 --- /dev/null +++ b/UniSky.Services/Compression.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Windows.Storage; +using Windows.Storage.Streams; + +namespace UniSky.Models; + +public record class CompressedImageFile(int Width, int Height, string ContentType, StorageFile StorageFile); +public record class CompressedImageStream(int Width, int Height, string ContentType, IRandomAccessStream Stream); + diff --git a/UniSky.Services/IImageCompressionService.cs b/UniSky.Services/IImageCompressionService.cs new file mode 100644 index 0000000..7e5dd5c --- /dev/null +++ b/UniSky.Services/IImageCompressionService.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using UniSky.Models; +using Windows.Graphics.Imaging; +using Windows.Storage; +using Windows.Storage.Streams; + +namespace UniSky.Services; + +public interface IImageCompressionService +{ + Task CompressSoftwareBitmapAsync(SoftwareBitmap softwareBitmap, IRandomAccessStream outputStream, int size = 4096); + Task CompressStorageFileAsync(IStorageFile input, int size = 4096); +} \ No newline at end of file diff --git a/UniSky.Services/UniSky.Services.csproj b/UniSky.Services/UniSky.Services.csproj index 4f2d996..9219dce 100644 --- a/UniSky.Services/UniSky.Services.csproj +++ b/UniSky.Services/UniSky.Services.csproj @@ -121,9 +121,11 @@ PackageReference + + diff --git a/UniSky/App.xaml.cs b/UniSky/App.xaml.cs index d4aba7a..834555b 100644 --- a/UniSky/App.xaml.cs +++ b/UniSky/App.xaml.cs @@ -73,6 +73,7 @@ private void ConfigureServices() collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); + collection.AddSingleton(); collection.AddScoped(); collection.AddScoped(); diff --git a/UniSky/Services/ImageCompressionService.cs b/UniSky/Services/ImageCompressionService.cs new file mode 100644 index 0000000..a3455a5 --- /dev/null +++ b/UniSky/Services/ImageCompressionService.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UniSky.Helpers; +using UniSky.Models; +using Windows.Foundation.Metadata; +using Windows.Graphics.Imaging; +using Windows.Storage; +using Windows.Storage.Streams; + +namespace UniSky.Services; + +public class ImageCompressionService : IImageCompressionService +{ + public async Task CompressStorageFileAsync(IStorageFile input, int size = 4096) + { + return await CompressImageAsync(input, CheckHeifSupport(), size); + } + + public async Task CompressSoftwareBitmapAsync( + SoftwareBitmap softwareBitmap, + IRandomAccessStream outputStream, + int size = 4096) + { + return await CompressSoftwareBitmapAsync(softwareBitmap, outputStream, CheckHeifSupport(), size, (int)softwareBitmap.PixelWidth, (int)softwareBitmap.PixelHeight); + } + + private async Task CompressImageAsync(IStorageFile input, bool useHeif, int size) + { + var output = await ApplicationData.Current.TemporaryFolder.CreateFileAsync($"{Guid.NewGuid()}"); + + using var inputStream = await input.OpenAsync(FileAccessMode.Read); + using var outputStream = await output.OpenAsync(FileAccessMode.ReadWrite); + + var decoder = await BitmapDecoder.CreateAsync(inputStream); + var softwareBitmap = await decoder.GetSoftwareBitmapAsync(); + var compressedStream = await CompressSoftwareBitmapAsync( + softwareBitmap, + outputStream, + useHeif, + size, + (int)decoder.OrientedPixelWidth, + (int)decoder.OrientedPixelHeight); + + // dodgy logic but sure it'll probably work + if (compressedStream.ContentType.Contains("jpeg") || compressedStream.ContentType.Contains("jpg")) + { + await output.RenameAsync($"{Guid.NewGuid()}.jpeg"); + } + else + { + await output.RenameAsync($"{Guid.NewGuid()}.heic"); + } + + return new CompressedImageFile(compressedStream.Width, compressedStream.Height, compressedStream.ContentType, output); + } + + private async Task CompressSoftwareBitmapAsync( + SoftwareBitmap softwareBitmap, + IRandomAccessStream outputStream, + bool useHeif, + int size, + int? rawWidth, + int? rawHeight) + { + double width = rawWidth ?? (double)softwareBitmap.PixelWidth; + double height = rawHeight ?? (double)softwareBitmap.PixelHeight; + + var contentType = useHeif ? "image/heic" : "image/jpeg"; + var codec = useHeif ? BitmapEncoder.HeifEncoderId : BitmapEncoder.JpegEncoderId; + + try + { + return await Task.Run(async () => + { + do + { + outputStream.Size = 0; + SizeHelpers.Scale(ref width, ref height, size, size); + + var encoder = await BitmapEncoder.CreateAsync(codec, outputStream); + encoder.SetSoftwareBitmap(softwareBitmap); + encoder.BitmapTransform.ScaledWidth = (uint)Math.Ceiling(width); + encoder.BitmapTransform.ScaledHeight = (uint)Math.Ceiling(height); + encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant; + + await encoder.FlushAsync(); + + contentType = encoder.EncoderInformation.MimeTypes.FirstOrDefault() + ?? contentType; + size = (int)Math.Floor(size * 0.75); + } + while (outputStream.Size > 1_000_000); + + return new CompressedImageStream((int)Math.Ceiling(width), (int)Math.Ceiling(height), contentType, outputStream); + }); + } + catch (Exception ex) when ((uint)ex.HResult == 0xc00d5212) // missing heif codec + { + return await CompressSoftwareBitmapAsync(softwareBitmap, outputStream, false, size, rawWidth, rawHeight); + } + } + + private static bool CheckHeifSupport() + { + if (!ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 7, 0)) + return false; + + foreach (var item in BitmapEncoder.GetEncoderInformationEnumerator()) + { + if (item.CodecId == BitmapEncoder.HeifEncoderId) + return true; + } + + return false; + } +} diff --git a/UniSky/UniSky.csproj b/UniSky/UniSky.csproj index aa58763..e447329 100644 --- a/UniSky/UniSky.csproj +++ b/UniSky/UniSky.csproj @@ -265,6 +265,8 @@ + + diff --git a/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs index 9fc1f80..e72273b 100644 --- a/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs +++ b/UniSky/ViewModels/Compose/ComposeViewAttachmentViewModel.cs @@ -8,6 +8,7 @@ using UniSky.Controls.Compose; using UniSky.Extensions; using UniSky.Helpers; +using UniSky.Services; using Windows.Foundation; using Windows.Foundation.Metadata; using Windows.Graphics.Imaging; @@ -27,6 +28,7 @@ public partial class ComposeViewAttachmentViewModel : ViewModelBase { private readonly ComposeViewModel parent; private readonly ILogger logger; + private readonly IImageCompressionService imageCompressionService; [ObservableProperty] private BitmapImage thumbnail; @@ -45,10 +47,12 @@ public ComposeViewAttachmentViewModel(ComposeViewModel parent, IStorageFile storageFile, ComposeViewAttachmentType type, bool isTemporary, + IImageCompressionService imageCompressionService, ILogger logger) { this.parent = parent; this.logger = logger; + this.imageCompressionService = imageCompressionService; this.IsTemporary = isTemporary; this.StorageFile = storageFile; @@ -59,11 +63,6 @@ public ComposeViewAttachmentViewModel(ComposeViewModel parent, Task.Run(LoadAsync); } - public void SetErrored(Exception ex) - { - base.SetErrored(ex); - } - private async Task LoadAsync() { using var loading = this.GetLoadingContext(); @@ -72,7 +71,18 @@ private async Task LoadAsync() { if (this.AttachmentType == ComposeViewAttachmentType.Image) { - await CompressImageAsync(StorageFile, CheckHeifSupport()); + var oldFile = this.StorageFile; + var compressedImage = await imageCompressionService.CompressStorageFileAsync(oldFile); + + if (IsTemporary) + { + await TryDeleteTemporaryFile(oldFile); + } + + Width = compressedImage.Width; + Height = compressedImage.Height; + ContentType = compressedImage.ContentType; + StorageFile = compressedImage.StorageFile; } if (this.StorageFile is not IStorageItemProperties properties) @@ -136,79 +146,8 @@ private async Task TryDeleteTemporaryFile(IStorageFile storageFile) } } - private async Task CompressImageAsync(IStorageFile input, bool useHeif, int size = 4096) - { - var extension = useHeif ? "heic" : "jpeg"; - var contentType = useHeif ? "image/heic" : "image/jpeg"; - var codec = useHeif ? BitmapEncoder.HeifEncoderId : BitmapEncoder.JpegEncoderId; - - var output = await ApplicationData.Current.TemporaryFolder.CreateFileAsync($"{Guid.NewGuid()}.{extension}"); - - try - { - double width, height; - using (var inputStream = await input.OpenAsync(FileAccessMode.Read)) - using (var outputStream = await output.OpenAsync(FileAccessMode.ReadWrite)) - { - var decoder = await BitmapDecoder.CreateAsync(inputStream); - var softwareBitmap = await decoder.GetSoftwareBitmapAsync(); - width = (int)decoder.OrientedPixelWidth; - height = (int)decoder.OrientedPixelHeight; - - do - { - outputStream.Size = 0; - - SizeHelpers.Scale(ref width, ref height, size, size); - - var encoder = await BitmapEncoder.CreateAsync(codec, outputStream); - encoder.SetSoftwareBitmap(softwareBitmap); - encoder.BitmapTransform.ScaledWidth = (uint)Math.Ceiling(width); - encoder.BitmapTransform.ScaledHeight = (uint)Math.Ceiling(height); - encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant; - - await encoder.FlushAsync(); - - contentType = encoder.EncoderInformation.MimeTypes.FirstOrDefault() ?? contentType; - size = (int)Math.Floor(size * 0.75); - } - while (outputStream.Size > 1_000_000); - } - - if (IsTemporary) - { - await TryDeleteTemporaryFile(input); - } - - Width = (int)Math.Ceiling(width); - Height = (int)Math.Ceiling(height); - ContentType = contentType; - IsTemporary = true; - StorageFile = output; - } - catch (Exception ex) when ((uint)ex.HResult == 0xc00d5212) // missing heif codec - { - await output.DeleteAsync(StorageDeleteOption.PermanentDelete); - await CompressImageAsync(input, false, size); - } - catch (Exception ex) - { - SetErrored(ex); - } - } - - - private static bool CheckHeifSupport() + public void SetErrored(Exception ex) { - if (!ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 7, 0)) - return false; - - foreach (var item in BitmapEncoder.GetEncoderInformationEnumerator()) - { - if (item.CodecId == BitmapEncoder.HeifEncoderId) - return true; - } - - return false; + base.SetErrored(ex); } } diff --git a/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs index c9ae599..bb18f74 100644 --- a/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs +++ b/UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs @@ -32,9 +32,6 @@ private static readonly string DebounceKey private readonly IEmbedExtractor embedExtractor; private readonly IEmbedThumbnailGenerator thumbnailGenerator; private readonly CoreDispatcher dispatcher = Window.Current.Dispatcher; - - private SoftwareBitmap thumbnailBitmap; - [ObservableProperty] private string title; [ObservableProperty] @@ -45,6 +42,7 @@ private static readonly string DebounceKey private object thumbnail; public Uri Url { get; } + public SoftwareBitmap ThumbnailBitmap { get; private set; } public ComposeViewLinkCardViewModel(ComposeViewModel parent, Uri url) { @@ -79,11 +77,11 @@ private async Task GenerateEmbedAsync(CancellationToken token) try { - this.thumbnailBitmap = await thumbnailGenerator.GenerateThumbnailAsync(embedDetails.Value); + this.ThumbnailBitmap = await thumbnailGenerator.GenerateThumbnailAsync(embedDetails.Value); await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { var softwareSource = new SoftwareBitmapSource(); - await softwareSource.SetBitmapAsync(thumbnailBitmap); + await softwareSource.SetBitmapAsync(ThumbnailBitmap); Thumbnail = softwareSource; }); diff --git a/UniSky/ViewModels/Compose/ComposeViewModel.cs b/UniSky/ViewModels/Compose/ComposeViewModel.cs index 68d3610..b894aee 100644 --- a/UniSky/ViewModels/Compose/ComposeViewModel.cs +++ b/UniSky/ViewModels/Compose/ComposeViewModel.cs @@ -62,6 +62,7 @@ public partial class ComposeViewModel : ViewModelBase private readonly ResourceLoader resources; private readonly IProtocolService protocolService; + private readonly IImageCompressionService compressionService; private readonly ILogger logger; // TODO: this but better @@ -88,12 +89,14 @@ public bool HasAttachments public ComposeViewModel(IOverlayController sheetController, IProtocolService protocolService, + IImageCompressionService compressionService, ILogger logger, PostViewModel replyTo = null) { this.protocolService = protocolService; this.logger = logger; this.SheetController = sheetController; + this.compressionService = compressionService; this.resources = ResourceLoader.GetForCurrentView(); this.Text = ""; @@ -197,7 +200,7 @@ private async Task PostAsync() var replyRef = await GetReplyDefAsync().ConfigureAwait(false); var embed = await CreateEmbedAsync().ConfigureAwait(false); - var postModel = new Post(text, reply: replyRef, embed: embed); + var postModel = new Post(text, reply: replyRef, embed: embed, facets: [..facets]); var post = (await protocolService.Protocol.CreatePostAsync(postModel) .ConfigureAwait(false)) .HandleResult(); @@ -216,6 +219,41 @@ private async Task PostAsync() } private async Task CreateEmbedAsync() + { + if (AttachedUri != null) + { + var card = AttachedUri; + if (card.ThumbnailBitmap != null) + { + using var memoryStream = new MemoryStream(10_000_000); + var image = await compressionService.CompressSoftwareBitmapAsync(card.ThumbnailBitmap, memoryStream.AsRandomAccessStream()); + + memoryStream.Seek(0, SeekOrigin.Begin); + using var content = new StreamContent(memoryStream); + content.Headers.ContentType = new MediaTypeHeaderValue(image.ContentType); + + var blob = (await protocolService.Protocol.UploadBlobAsync(content) + .ConfigureAwait(false)) + .HandleResult(); + + var external = new EmbedExternal() + { + External = new External(card.Url.ToString(), card.Title, card.Description, blob.Blob) + }; + + return external; + } + + return null; + } + else + { + return await UploadImageEmbedAsync() + .ConfigureAwait(false); + } + } + + private async Task UploadImageEmbedAsync() { EmbedImages embed = null; foreach (var image in this.AttachedFiles.Where(f => f.AttachmentType == ComposeViewAttachmentType.Image)) From 3967b9d9bd93e556d794e63e445d4903aec0cc09 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 25 Dec 2024 20:38:57 +0000 Subject: [PATCH 18/26] further fixes --- UniSky/Controls/Compose/ComposeSheet.xaml | 2 +- UniSky/Package.appxmanifest | 2 +- UniSky/Services/AngleSharpEmbedExtractor.cs | 3 +++ UniSky/Services/ImageCompressionService.cs | 26 ++++++++++++------- UniSky/UniSky.csproj | 1 - .../Compose/ComposeViewLinkCardViewModel.cs | 6 +++-- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/UniSky/Controls/Compose/ComposeSheet.xaml b/UniSky/Controls/Compose/ComposeSheet.xaml index 02149e9..7b318ed 100644 --- a/UniSky/Controls/Compose/ComposeSheet.xaml +++ b/UniSky/Controls/Compose/ComposeSheet.xaml @@ -362,7 +362,7 @@

rry3Imp za|gQ}Pu?nv*fXP*$+L?Dg+>%uw6fBEpb>6|< zo*j*Iosg4ec)M%8HEPl`H*KYd$)WX7N;S4*@zo(Grtok9^V8Ua`|xr>s^lR2uv#Ir zEWwp-OBkaL4Wl9#ljkqv@5h-;{S(_A=+Ms82JJms_;jZZOR&aCEfYTA*q|w^sx@D8 z#s<*#Qs%F7H_chcV{;mU5v^!1VVi`C<|-oqRp=>mKJ_Gwo!9>auZ-5mmb$ zL(ZJ6)4}9bTbqh32AdhV{=mkJ38_HvjFi9{f7xS)I;%~YW?a{VK(j|%GI_xxmS=6l znc&*@0qeP1z1tsNv9|uxCYjt6TlEa0#2ihax;`=bv}7%PiErb}scNRvE2ufqmwi$iIeDt*F58R+PJI#&@{LWb^o z>SVWucmG>56g(&Mc;q3aqArwS#ulPZ=}z?F;ip?lr^ZbJy9Ue~McrJ-ZAq)I{)u-iF){2M*#x(_Q=D5C=d{m63hRE7_h=dCqn8pdQT>k zQ?#|*8qk1cc|1WOKDs9&zI*7=FDnpG5(=fi(o0v%3_^=792QsjJM9NB-^ISPWD-p_ zF{EB`vV^1Q4~+viUKU0lp^s7Xl<6xYRCEN-&laTmkI%iz;L$9~s&)>GQ+`s*EtvLZ;d2rQBsB}Z?x@4J(*;Aw?pFNM&eI!xnAGXER zgs+f@q`f7=XE&1R=Rs+u*pOt);a}N)?2=|NJ}JS-UyI|fFZ;K#iZOjgqP`zlLxw$V zGw((vrjI8Dc;%cofaydsm*Mqg1R?PxuQw)LiM;HuvQ!&PEM-b0p)u%qcdG@})()$! zC(mDvbfk4;y1ZQYI%TNk5|CbAP|y0f|CIEJ?D^D+_V+@GsNAkhQ|obT>H3>2oAuL2 zpLD*EmQLjC%H6y<^U>9&qk#r1PIT_5t%2?saVj@#h4fQ<=jNjwA6e?GLl4um+b)*F z?H{CA9}D+3#ds|>8ofA|cI-*P)cN`lwCb&D3{ehF4_c`2O5t}2v=WGP<0U5GUx!Ao zOIh1L&)vzsbN_fiXdqxPuyRyqYK!D@QJ=8dm)R;6U(pQREjH9{MWlbFeIF6p=KhC|zoEUjCWRs@MWEdju9d=ol$+M+knW9e`>7hV(zdE|z3LjhvsIP$7gE+A z#DXQ40dc+tms|{w)J-=VC8IfiXsrv!#4jaLcW5bNj;^J3|VNO6q}vnIwo^%P?b zwy2&_(w(a{w1eeZ1T6gl+6T9kYuTN9C0KKucaUHT=XSRZ6LM*6x+;w&q>mJfzbNJXOsQJpz>F~o6&DgbX`qA8yJMCRCj+BEj}ZY_+qCR%~EM; zcSOnjsI;TL7Ei_Df$OZPF z9D^44HBt(ZSnq>swkx@##%>b6It_@({4&(l{P(WCaheeR}fseieM*tEBr{v(xU$Tstf1+@Iy; z<)C1d6(_S*?d|-I{-fHkkGgqF26UUQe9j54;H4pChui*it+pxi-4|bY=!}zDnsQ7U zzHi5B(-M4*%aw&7p|dU?R=7oyBQoSNp|U1M?hV+IvG8Y-hLk4Lp*NIY*4u(3EQrO5 zGw?0!ipO)TdP!Z8GOv@=KT(1E59YRujDGOPQ0S=FzPtbP;H@j7o@dP~iTWfrKE}}-ZPdYQcdWV2OC?Jl7^Yz1XrF2-?1V@Nl z>`Ag(2`9KyH)*=TPeydKbJk|tp8mk*N?L?n4*}8Vi)CDLErEjh67b(_fAgu7(H;A& zldKXK0He&HO8kk@ui_d{^3H}+#e79sQrzp~i5N)+AWqCzN9=JKALaPbG~y89R$f?=J=;GaW1Ji$;scIz(1fRvwU~tcF=_f~X``{vH|9vj{anb+GzfUa z39*s8HO*mHAe!5n(w8!MBuh0a(rgVE&hwoSEdGCdwLoGGzXJ?UZu)K|R`#;(pUeo_87yJaS?EE7l?+J<>=?!ff7m zb>c95YucRRjkkiM7(D%H-76-t1EAH>tk7oDtl{75nGf@|zp~0u;2~$!Em2&cua!9I;V_8(iX%VG$MTkP)6LJ=ktylig!`V>zp0%k)2jv`O zi2!fB*Ic3WtT2jX=A~|wXmB>LSje$i8uY36-;gjh>;q8x(^G5XZgJbVuTJa8JAr#A zhdZouNiV|C7IzD&JP*-(lsR~`N-&@GMM#K`0KXfVNR}RP_T&I|EwbXzszvTH2M$~?(oHL_e}f%=%h000bq zeUO0wz#6#L=L2=L{kWiFQ7d|}KEVk9zMQ`D^Vt`9=y+1GOwvY$L~MSC z?VXg6z0{7z9#w8G5Bm*tx9MHnAd1?X`o(Hn#O*s5?AM7g#w@e8hK6TY z`fatM%^b;~1b-{d2F`UXyTL3#x@psW)GKcboNKU1OV%k` zJj{|hkz7}~J@MFT3#fZsd2gT=7LHlz0 zet5Z;@M{pPYQ4m!q{USKstG)q=YRIujtoWv#S2O|)D9dGp3G2U22Vj73~7PQjb3wP zN@$`$w7xK{PLQa+XyJYyQy#{izM5&BfQ((XgdESlA*w{>#|z2yx#DiiY)IV?ewDN$st3hH&p#0E zVRLPQf+V*kba*V2Wkz+1Ir3#4<+2{c*-tl`XIfmw+=i7Ri$KL?3uR&Bi6!R%cX~wmX>C4?xYBRVdvvMv|{7k za?=ot(9IMtgl)7tRk~!GJg5+C6#}uiUmRW`h(uz`pj+rT8Q#oUUJ?pSO7m9IX@^sH zl78BRU)iU0+O3{AASY9pz;-7)(8DwOKSGR9s$Ykeb~Y6aDw-$6x^XMZLG+K3@XV}5 zjA74k&x5DUu??c@JybZs?qP=>bjbv?s&x43?4)@Uu)`zjjA;!a{|Uf-Lv64 zW@Ji=EogPQLNhixF!AlfIS$V+l0@4dmQs;CR&FUUhRxa$EaDl(s-+hrQ%}uR20YXZ z))0kr&~k`MvXt9N`4z-CG#}mI^%l){&98?ZQ{9dGIA08}rbklXkqa1<^rV)lxn8fF zax<{o`zn1z>bPhO_jl>-&`6`r7r&&-+Cw+Q|G z(;UiLb9+LM?5m>wb*?WR6CJoe$`GNSWX$Gzh~|-fyFFt=snUn$&8YgXV3Ve>_I9Nk z3a7nswgWT;Yly#6-V1wwM0n#8+0e)P{~#J8))s4A|JqA3?b`$Rdio<79^p6t0W=?t A+W-In literal 2257 zcmds(>01(r7RJ%ImWG;H<~nZO93{6<5*3?Br?8<#aY-~q)6`H(+SJ^Q7T3%Kg>=f& zRLq4Y+#RKfCKVkw5L`jy+K5J=q(ol3_rI7A?>Xl=&vTyNIq#=)@64&=ni_^0002M} zdBW2N08oK$)g?RBwj!GIOuCiSFP}I^006X@-=)IBzqkMZ?8riT9!1}zil;(ygCkAS zC1PB=(@*Pn^WJ7!++9N;qF>o$pJ>rBF9K*DR_%1~vPHz%;~MMjfEo{W{sctqRC#|q zJqIzTx_fuwrzb?uJRlUuqK`Nm(RzDe!81;Uuf*Z4t`;AQ54}Ok% zy!PK7aG+WpwZiqz)|5q4iObgn*%giLbq|Mo2mN&mk2I%fX7CRWNL{ldxAobu zQ#_S}WZ@jm|1&*=)<9t=)({M!d1fHOIsac|1l8vBG1s+q#|#WI?3=rZR1jR9z~;j? ztu?QA7Axb!x-%BZBv%S{M9qYEqZSK5Z^X4VqBh=G(%r!i=Bwp?M!IK^42|j+MdgD$`JtYr2e8*nyr$Jm-*l zFI(lm81^h)7Npm;h4P&6AH$q@}uv-fp@|Dno0D zSl`aqy(POy!X0B-xN^VGg^GJT4iAnGAhv?Fm{mzDAM~?Zl!f4?Rp2Gz1x3@~qa{V9 zvFMFk>D#jaB5HM-?Yyg}t>m&Y=4rwC=LOzPWlpzHhj4}wT=YskHA_--b!Xq7p3A}w z(Y>IJ6kex$Xy45?8iCUv#YN+9uzOm9+#WPOcZ;Xhq0>0FGweqY7N)Km(%ZbeTUKLER4 z$iICwuABdcmt8iq=)PzCnVv_sy;c$^C6jE9BZHXNUnbMa$kObgovc6)wrC z75S(UIv>{cbO*q-ujw(XBsA;kwCh1*x}_k(*PZ6y{KlkbM2enmlSj$S^WzPlC+WEE zVxjx}fySC*0dvXHG}uX7hG88GpQ_#ewVJe7n-~xB_odl*f_wV@-8nHzXM8US`9?E_4JBVVq z?!Ynwip>Qjsf!hsxMaxxyT}!D437-}#<^inR_KQjzG#l;K>Cqoh1ij28w$nYRhf)t z@w51AC=$QdpmiUAXlN*o79VrXtk>lo70PhjH=w#@bJ>x!Z`Z@G!YSQx3pWwPUBfHO zZPm+jtuwpY>=`c4XCT!ajJrQQ8|!<_^94!YHcrx)mwf3r9(QGtyBt9~52bW{6tq;A z9y^&awiM1CJ(Fbcryu`N@8|vei^cGKW$1-XlrZ;(l`tgu*7&QXz`<(FkLxwt9$~p? zjesE2z4GYfU;E)auKmx{@8qCMu)Z-~fx~d#IDOjT zFOE#-sR@m3N!%>IK-+X+pId6r6E~c8V0-u*8HjksQqB^VJL-g>JEqX?eR^i^;c-!> zt>T_~XRPvIcSOaFletnGA@%*00O@4|;jJcps}M2#j|59a2lU$JZm&r0Xpw~rc*jWQ z%RvwIAr$#~W5>+w&^8uQr6ZSI4}Oabtz=Yw)7J8#gD5;7;D0K_`M$uv@Dv|CBFe|* cpQZ{`I{R9HUCDg<){g=}dY$roi3rR5FK}ovmH+?% diff --git a/UniSky/Assets/Wide310x150Logo.scale-125.png b/UniSky/Assets/Wide310x150Logo.scale-125.png index 7e49500b689fb958590b3907245a08a1852589b0..262b64d2a2b34f8491691c2382cbc02a6011cd37 100644 GIT binary patch literal 2308 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 literal 3403 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 E01aaW_W%F@ diff --git a/UniSky/Assets/Wide310x150Logo.scale-200.png b/UniSky/Assets/Wide310x150Logo.scale-200.png index ee5aa9ae950bb91b5830d7cb10d443efd3b48c30..107f4c17753302260105204b613ec8fd681973a8 100644 GIT binary patch literal 3307 zcmeHKdpwi-AAe>NX^1Y1=yJNLFlkDOh%W9W42`9Ww2l4hj3O)*b(H$mDWX}rnCnbq zY9X4h3I;AcK0%1^Wxyy8J-w~gl*He(T-RgvX}Lvgyt2TvVHxuZ z#r18Pmj3cndOK4ZQkVB_@j)}*3j}*d?rfQ{npECem6`DL(aGiky1y!p`VoR|#GW5o z072i*rXZj-k8yBFcas=`-s;&y6w*Jczjq}l`sruJqS3|kAqL3-B2~9xO|G;cDx1z1 z1WDO*otK@|t$8B&DI)@}s5vk|_4B2q$_DAoNJ%2zHgtBNeA;%*{wa&aq7TrOgPz;E zEoo|cHSIz3yu9VB)_GlfTzf6Q@2boN+m79JIo>Hp&5X*feb86M@7qbns{8KhJ1)mQ zr{?B51sRNfEb55#D8bH$&yy*qVR_nS-|n(!zmV4+322YxpP2mf^Y*SJtVQjzm>f%* z?0$b?dc}%|wBhTGGzZ?6IvvN>pMD=vJ)l-~a|TAvHR4;F;#w`1ML~Dgi7AybrgCCl zuBLm(khxSUH8H}8<{a*nHaLTCjbDclr{du3^X^<~xH8bfnR^?qFY^hp!z+#v$@FUy zdSJ5eb6B-8f!AdHK}uYS!Q?6~zu~Ht!%g3lBIo)e*CCMiaBv;69IhYvsl%Vn5+sp& zW`B-!UcaW5QVwdcqiM}$$L)A;^z3_{2$7hJEXLRHjMu3%lcUL{v*z79c0tdL3Hxpp`{dXY zmFaAv+Al-x!0+y0ueQ8H%XC)PXNsV^u1wg!r%6S{)BDq7$08hN>yXL5labBEQ)$;t z?|Ly|V@1KLqf)lBS$t-x6pNP(yjZLDqS)%%uL-GA1_Y@-yceGiRWK4iDopSCFk$ym zEY^1?chA(bLKrJkJ*3`U5*zLx>eoPOcSG4kxr}0Q6vV?Rz#K?>c=U z2;P$gdiI@>jU@k&d(Lj#bf9}EL)H%M+L(gawPdgGT{ zyP@-amFYQeDL3@#R2Wv2yu0TfWnT*7;vv1%NxmTAEz!~NT8O`EDP#20*Vle<#(FUY zuUFNJ-L0C6p7I*~H0X-BxT8*|^DMg4qoC$^kc#z|Xcu%n+n>hcXqz$Z_eAF;oXvVt z)Ma#zmk$)Sy|H%n+Pu3!ME6dhfQSU5UGJGJ2$=~sM9Cw$O5Yp}bG{(g=)?=_bQUuV ztBg_M+r}oo+onoi;MfQs!ZLDj@B^Z>P{EF}IJ!sU*Xb6##Ql=trxNO1MXspZVLXH)1yz0a zHBQX$9i&^}sr?BT3$=&tr+56miLM$>NDDI|b%FuQR#&K}B4lkgne~xhPSedlp$P%1 zy6@wi|B?Uk+BiDKW_kKfAK&X{Cz$Yf^)}rP z{i@|xNX6NQEn(+7_#{LApmy@P%fQ7SpOuhak^N z(@Q-+bu0=XK|h8Fo=h0N8d0yk-|jKA7$m)ubNk1Q9MFMiyBEr_UXN$5;Z{pS6R-Y_ z%2X4IH<*1_!H(t!^c9VL!R%k_p!a#ejQM$cWkb(*8$o71)Ll{|KU! zI!vuJrj|XVRrV)xcfXiiE2IwKxAvM1LcYCQcSr}8dPx;jSEUai235Hy442A61?0+ zyIe=ps8BP!(TM^O`ZoH;8X+YQaL}gxGz;^Y9Yf?)3pXSDUwg&MdphD*E;Rd+Z4cbM znXs#3w8X$1UxR%HK%WG7aBOoov4~Q~0Vi<6fUz#{UbtjpFOJCoXM-tfqh@$zf@hX= zmok<@1N!|&G37|-QsQvAuzFY%S$-94)CFvX_Xc6S$UO%GpU~_h$MHss=Smbt)bDaF z7w9xQ6>9D_6h=pYOvpxg306W%BIsh+wm3=d=CnJ$y#RdE!X?@7OxjC0Ha{MA{mOep vC@9@hH^t8rL7mqBd_n%bzaalN`neVEUZJdb)foZ!dw~wS`?xV&aVh@=qquP5 literal 4972 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 diff --git a/UniSky/Assets/Wide310x150Logo.scale-400.png b/UniSky/Assets/Wide310x150Logo.scale-400.png index b849fa555c6a0db6944286e32abe13daf41eb1cf..dec608f0c0a3a05f258326780daf3056803920c4 100644 GIT binary patch literal 8559 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 diff --git a/UniSky/Controls/Settings/SettingsSheet.xaml b/UniSky/Controls/Settings/SettingsSheet.xaml index 324c07c..0acfa6d 100644 --- a/UniSky/Controls/Settings/SettingsSheet.xaml +++ b/UniSky/Controls/Settings/SettingsSheet.xaml @@ -67,6 +67,9 @@ + + Icon by @xubiod.net <3 + diff --git a/UniSky/Package.appxmanifest b/UniSky/Package.appxmanifest index a00a562..3b4f3fd 100644 --- a/UniSky/Package.appxmanifest +++ b/UniSky/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.0.187.0" /> diff --git a/UniSky/Templates/Icons.xaml b/UniSky/Templates/Icons.xaml index 9158c7d..fccf32c 100644 --- a/UniSky/Templates/Icons.xaml +++ b/UniSky/Templates/Icons.xaml @@ -2,8 +2,8 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - M13.873 3.77C21.21 9.243 29.103 20.342 32 26.3v15.732c0-.335-.13.043-.41.858-1.512 4.414-7.418 21.642-20.923 7.87-7.111-7.252-3.819-14.503 9.125-16.692-7.405 1.252-15.73-.817-18.014-8.93C1.12 22.804 0 8.431 0 6.488 0-3.237 8.579-.18 13.873 3.77ZM50.127 3.77C42.79 9.243 34.897 20.342 32 26.3v15.732c0-.335.13.043.41.858 1.512 4.414 7.418 21.642 20.923 7.87 7.111-7.252 3.819-14.503-9.125-16.692 7.405 1.252 15.73-.817 18.014-8.93C62.88 22.804 64 8.431 64 6.488 64-3.237 55.422-.18 50.127 3.77Z + M32 24.0025l-7.9975-15.995-23.9925-7.9975 0 31.99 15.995 7.9975-15.995 7.9975 15.995 15.995 15.995-15.995 15.995 15.995 15.995-15.995-15.995-7.9975 15.995-7.9975 0-31.99-23.9925 7.9975-7.9975 15.995Z 64 - 57 + 64 From 163c419602e2e02380b4888d34a4f18364cf5586 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Tue, 24 Dec 2024 20:04:48 +0000 Subject: [PATCH 14/26] Cleanup --- UniSky/Controls/Compose/ComposeSheet.xaml | 38 ++++++++++------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/UniSky/Controls/Compose/ComposeSheet.xaml b/UniSky/Controls/Compose/ComposeSheet.xaml index dd2a91a..c73c62c 100644 --- a/UniSky/Controls/Compose/ComposeSheet.xaml +++ b/UniSky/Controls/Compose/ComposeSheet.xaml @@ -14,7 +14,8 @@ xmlns:compose="using:UniSky.ViewModels.Compose" xmlns:templates="using:UniSky.Templates" xmlns:labels="using:UniSky.Controls.Labels" - xmlns:localControls="using:UniSky.Controls" xmlns:posts="using:UniSky.ViewModels.Posts" + xmlns:localControls="using:UniSky.Controls" + xmlns:posts="using:UniSky.ViewModels.Posts" mc:Ignorable="d" d:DesignHeight="350" d:DesignWidth="480" DataContext="{x:Bind ViewModel, Mode=OneWay}" PrimaryButtonCommand="{x:Bind ViewModel.PostCommand}" @@ -81,27 +82,21 @@ - + Height="42" + VerticalAlignment="Top"> + + + + + + + + @@ -215,7 +210,6 @@ BorderBrush="{ThemeResource SystemControlSeparatorBrush}" extensions:Hairline.BorderThickness="0,0,0,1"> Date: Wed, 25 Dec 2024 00:25:24 +0000 Subject: [PATCH 15/26] small nit fixes, logging, performance, reliability improcements --- .../InterpretedLabelValueDefinition.cs | 8 ++- UniSky.Moderation/ModerationExtensions.cs | 2 +- .../Implementation/ProtocolService.cs | 38 +++++++++----- UniSky.Services/ModerationService.cs | 52 ++++++++++++++----- UniSky/Controls/Compose/ComposeSheet.xaml | 7 +-- UniSky/DataTemplates/FeedTemplates.xaml | 1 + UniSky/DataTemplates/ThreadTemplates.xaml | 1 + UniSky/Pages/SearchPage.xaml.cs | 7 ++- UniSky/UniSky.csproj | 2 +- UniSky/ViewModels/HomeViewModel.cs | 50 ++++++++++++++---- 10 files changed, 121 insertions(+), 47 deletions(-) diff --git a/UniSky.Moderation/InterpretedLabelValueDefinition.cs b/UniSky.Moderation/InterpretedLabelValueDefinition.cs index 3bc2581..c861b7f 100644 --- a/UniSky.Moderation/InterpretedLabelValueDefinition.cs +++ b/UniSky.Moderation/InterpretedLabelValueDefinition.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using FishyFlip.Lexicon.App.Bsky.Labeler; using FishyFlip.Lexicon.Com.Atproto.Label; using FishyFlip.Models; @@ -16,7 +17,7 @@ public InterpretedLabelValueDefinition() Locales = []; } - public InterpretedLabelValueDefinition(LabelValueDefinition def, ATDid definedBy) + public InterpretedLabelValueDefinition(LabelValueDefinition def, LabelerViewDetailed definedBy) { var behaviors = new ModerationBehaviors(); var alertOrInform = def.Severity switch @@ -95,7 +96,8 @@ public InterpretedLabelValueDefinition(LabelValueDefinition def, ATDid definedBy "media" => LabelBlurs.Media, _ => LabelBlurs.None }; - DefinedBy = definedBy; + Detailed = definedBy; + DefinedBy = definedBy.Creator!.Did; Configurable = true; AdultOnly = def.AdultOnly ?? false; DefaultSetting = defaultSetting; @@ -104,6 +106,8 @@ public InterpretedLabelValueDefinition(LabelValueDefinition def, ATDid definedBy Locales = def.Locales != null ? [.. def.Locales] : []; } + public LabelerViewDetailed Detailed { get; } + public string Identifier { get; init; } public LabelSeverity Severity { get; init; } public LabelBlurs Blurs { get; init; } diff --git a/UniSky.Moderation/ModerationExtensions.cs b/UniSky.Moderation/ModerationExtensions.cs index 7765941..81aefc6 100644 --- a/UniSky.Moderation/ModerationExtensions.cs +++ b/UniSky.Moderation/ModerationExtensions.cs @@ -118,7 +118,7 @@ public static async Task GetLabelDefinitionsAsync( labelersDict[def.Creator.Did.Handler] = def; labelDefs[def.Creator.Did.Handler] = - def.Policies?.LabelValueDefinitions?.Select(s => new InterpretedLabelValueDefinition(s, def.Creator.Did)).ToArray() ?? []; + def.Policies?.LabelValueDefinitions?.Select(s => new InterpretedLabelValueDefinition(s, def)).ToArray() ?? []; } return new(labelersDict.ToFrozenDictionary(), labelDefs.ToFrozenDictionary()); diff --git a/UniSky.Services/Implementation/ProtocolService.cs b/UniSky.Services/Implementation/ProtocolService.cs index 891a596..8dc1f12 100644 --- a/UniSky.Services/Implementation/ProtocolService.cs +++ b/UniSky.Services/Implementation/ProtocolService.cs @@ -19,6 +19,7 @@ public class ProtocolService(ILogger logger) : IProtocolService private readonly SemaphoreSlim refreshTokenSemaphore = new SemaphoreSlim(1, 1); private ATProtocol _protocol = null; + private DateTimeOffset _lastRefreshed; public ATProtocol Protocol => _protocol ?? throw new InvalidOperationException("Protocol not yet initialized."); @@ -36,39 +37,40 @@ public void SetProtocol(ATProtocol protocol) public async Task RefreshSessionAsync(SessionModel sessionModel) { - var protocol = Protocol; + //var protocol = Protocol; // make sure we're not doing this multiple times - if (!await refreshTokenSemaphore.WaitAsync(100)) - return; + await refreshTokenSemaphore.WaitAsync(); try { + // dont refresh more than once per hour + if ((DateTimeOffset.Now - _lastRefreshed) < TimeSpan.FromHours(1)) + return; + + _lastRefreshed = DateTimeOffset.Now; + // to ensure the session gets refreshed properly: // - initially authenticate the client with the refresh token // - refresh the sesssion // - reauthenticate with the new session + var temporaryProtocol = new ATProtocolBuilder(Protocol.Options) + .Build(); + var sessionRefresh = sessionModel.Session.Session; var authSessionRefresh = new AuthSession( new Session(sessionRefresh.Did, sessionRefresh.DidDoc, sessionRefresh.Handle, null, sessionRefresh.RefreshJwt, sessionRefresh.RefreshJwt)); - await protocol.AuthenticateWithPasswordSessionAsync(authSessionRefresh); - var refreshSession = (await protocol.RefreshSessionAsync() + await temporaryProtocol.AuthenticateWithPasswordSessionAsync(authSessionRefresh); + var refreshSession = (await temporaryProtocol.RefreshSessionAsync() .ConfigureAwait(false)) .HandleResult(); var authSession2 = new AuthSession( new Session(refreshSession.Did, refreshSession.DidDoc, refreshSession.Handle, null, refreshSession.AccessJwt, refreshSession.RefreshJwt)); - var session2 = await protocol.AuthenticateWithPasswordSessionAsync(authSession2) + var session2 = await temporaryProtocol.AuthenticateWithPasswordSessionAsync(authSession2) .ConfigureAwait(false); - - var moderationService = ServiceContainer.Default.GetService(); - if (moderationService != null) - { - await protocol.ConfigureLabelersAsync(moderationService.ModerationOptions?.Prefs?.Labelers ?? []); - } - if (session2 == null) throw new InvalidOperationException("Authentication failed!"); @@ -78,7 +80,15 @@ public async Task RefreshSessionAsync(SessionModel sessionModel) var sessionService = ServiceContainer.Scoped.GetRequiredService(); sessionService.SaveSession(sessionModel2); - SetProtocol(protocol); + SetProtocol(temporaryProtocol); + + var moderationService = ServiceContainer.Default.GetService(); + if (moderationService != null) + { + await moderationService.ConfigureModerationAsync() + .ConfigureAwait(false); + } + } finally { diff --git a/UniSky.Services/ModerationService.cs b/UniSky.Services/ModerationService.cs index 0d1417f..5a816ee 100644 --- a/UniSky.Services/ModerationService.cs +++ b/UniSky.Services/ModerationService.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using FishyFlip; using FishyFlip.Lexicon.App.Bsky.Labeler; +using Microsoft.Extensions.Logging; using UniSky.Moderation; using Windows.ApplicationModel.Resources; @@ -13,41 +15,63 @@ namespace UniSky.Services; public record struct LabelStrings(string Name, string Description); -public class ModerationService(IProtocolService protocolService) : IModerationService +public class ModerationService(IProtocolService protocolService, ILogger logger) : IModerationService { private readonly ResourceLoader resources = ResourceLoader.GetForCurrentView(); - private IReadOnlyDictionary labelers; public ModerationOptions ModerationOptions { get; set; } public async Task ConfigureModerationAsync() { - var protocol = protocolService.Protocol; - var moderationPrefs = await protocol.GetModerationPrefsAsync() - .ConfigureAwait(false); + logger.LogInformation("Configuring moderation..."); + try + { + var protocol = protocolService.Protocol; + var moderationPrefs = await protocol.GetModerationPrefsAsync() + .ConfigureAwait(false); + + logger.LogDebug("Got moderation preferences, AdultContent = {AdultContentEnabled}, Labels = {Labels}, Labelers = {Labelers}, MutedWords = {MutedWords}", + moderationPrefs.AdultContentEnabled, + moderationPrefs.Labels.Count, + moderationPrefs.Labelers.Count, + moderationPrefs.MutedWords.Count); + + var labelDefs = await protocol.GetLabelDefinitionsAsync(moderationPrefs) + .ConfigureAwait(false); - var labelDefs = await protocol.GetLabelDefinitionsAsync(moderationPrefs) - .ConfigureAwait(false); + // check if we got all the labelers + Debug.Assert(labelDefs.Labelers.Count == moderationPrefs.Labelers.Count); + logger.LogDebug("Fetched label definitions, Expected {LabelerCount}, got {FetchedLabelerCount}", + moderationPrefs.Labelers.Count, + labelDefs.Labelers.Count); - await protocol.ConfigureLabelersAsync(moderationPrefs.Labelers) - .ConfigureAwait(false); + await protocol.ConfigureLabelersAsync(moderationPrefs.Labelers) + .ConfigureAwait(false); - labelers = labelDefs.Labelers; - ModerationOptions = new ModerationOptions(protocol.Session.Did, moderationPrefs, labelDefs.LabelDefs); + logger.LogDebug("Configured labelers header on protocol: {Header}", string.Join(", ", moderationPrefs.Labelers.Select(l => l.Id))); + + ModerationOptions = new ModerationOptions(protocol.Session.Did, moderationPrefs, labelDefs.LabelDefs); + } + catch (Exception ex) + { + // TODO: do i just kill the app here? cause this is _bad_ + logger.LogCritical(ex, "Failed to configure moderation, this is bad."); + } } + public bool TryGetDisplayNameForLabeler(InterpretedLabelValueDefinition labelDef, out string displayName) { - if (labelDef.DefinedBy == null) + if (labelDef.DefinedBy == null || labelDef.Detailed == null) { displayName = "Bluesky Moderation Service"; return true; } - if (labelers.TryGetValue(labelDef.DefinedBy.ToString(), out var labelerViewDetailed)) + if (labelDef.Detailed != null) { - displayName = labelerViewDetailed.Creator?.DisplayName ?? "Unknown Labeler"; + displayName = labelDef.Detailed.Creator?.DisplayName ?? "Unknown Labeler"; return true; } diff --git a/UniSky/Controls/Compose/ComposeSheet.xaml b/UniSky/Controls/Compose/ComposeSheet.xaml index c73c62c..2122b68 100644 --- a/UniSky/Controls/Compose/ComposeSheet.xaml +++ b/UniSky/Controls/Compose/ComposeSheet.xaml @@ -124,9 +124,10 @@ + x:Load="{x:Bind converters:Static.Any(Author.Labels)}" + x:Phase="3" + Labels="{x:Bind Author.Labels}" + Margin="0,4,0,2"/> diff --git a/UniSky/DataTemplates/ThreadTemplates.xaml b/UniSky/DataTemplates/ThreadTemplates.xaml index b110811..4b78912 100644 --- a/UniSky/DataTemplates/ThreadTemplates.xaml +++ b/UniSky/DataTemplates/ThreadTemplates.xaml @@ -113,6 +113,7 @@ diff --git a/UniSky/Pages/SearchPage.xaml.cs b/UniSky/Pages/SearchPage.xaml.cs index 1c22e44..2ff08b4 100644 --- a/UniSky/Pages/SearchPage.xaml.cs +++ b/UniSky/Pages/SearchPage.xaml.cs @@ -25,6 +25,12 @@ public SearchPageViewModel ViewModel public SearchPage() { this.InitializeComponent(); + this.Loaded += OnLoaded; + } + + private void OnLoaded(object sender, RoutedEventArgs e) + { + this.SearchBox.Focus(FocusState.Keyboard); } protected override void OnNavigatedTo(NavigationEventArgs e) @@ -36,7 +42,6 @@ protected override void OnNavigatedTo(NavigationEventArgs e) if (this.ViewModel == null) this.DataContext = this.ViewModel = ActivatorUtilities.CreateInstance(ServiceContainer.Scoped); - this.SearchBox.Focus(FocusState.Programmatic); } protected override void OnNavigatedFrom(NavigationEventArgs e) diff --git a/UniSky/UniSky.csproj b/UniSky/UniSky.csproj index ee889ad..d88cce9 100644 --- a/UniSky/UniSky.csproj +++ b/UniSky/UniSky.csproj @@ -34,7 +34,7 @@ False False Always - arm + x86|x64|arm|arm64 True 0 diff --git a/UniSky/ViewModels/HomeViewModel.cs b/UniSky/ViewModels/HomeViewModel.cs index 6ae3538..5ff2b02 100644 --- a/UniSky/ViewModels/HomeViewModel.cs +++ b/UniSky/ViewModels/HomeViewModel.cs @@ -55,6 +55,7 @@ public partial class HomeViewModel : ViewModelBase private readonly DispatcherTimer notificationUpdateTimer; private readonly DispatcherTimer refreshTokenTimer; + private bool isLoaded; private ProfileViewDetailed profile; [ObservableProperty] @@ -143,6 +144,7 @@ public HomeViewModel( navigationManager.BackRequested += OnBackRequested; var window = Window.Current; + window.Activated += OnWindowActivatedAsync; window.VisibilityChanged += OnVisibilityChanged; //Task.Run(LoadAsync); @@ -156,6 +158,11 @@ private void GoBack() private async Task LoadAsync() { + if (isLoaded) + return; + + isLoaded = true; + using var loading = this.GetLoadingContext(); var protocol = this.protocolService.Protocol; @@ -285,6 +292,23 @@ private void OnVisibilityChanged(object sender, VisibilityChangedEventArgs e) } } + private async void OnWindowActivatedAsync(object sender, WindowActivatedEventArgs e) + { + if (e.WindowActivationState == CoreWindowActivationState.Deactivated) + return; + + try + { + await RefreshSessionAsync() + .ConfigureAwait(false); + } + catch (Exception ex) + { + logger.LogError(ex, "Failed to authenticate!"); + return; + } + } + partial void OnPageChanged(HomePages oldValue, HomePages newValue) { if (oldValue != newValue) @@ -300,19 +324,23 @@ protected override void OnLoadingChanged(bool value) this.syncContext.Post(() => { - var statusBar = StatusBar.GetForCurrentView(); - _ = statusBar.ShowAsync(); - - statusBar.ProgressIndicator.ProgressValue = null; - - if (value) - { - _ = statusBar.ProgressIndicator.ShowAsync(); - } - else + try { - _ = statusBar.ProgressIndicator.HideAsync(); + var statusBar = StatusBar.GetForCurrentView(); + _ = statusBar.ShowAsync(); + + statusBar.ProgressIndicator.ProgressValue = null; + + if (value) + { + _ = statusBar.ProgressIndicator.ShowAsync(); + } + else + { + _ = statusBar.ProgressIndicator.HideAsync(); + } } + catch { } }); } From f5cbba4513a879f095ef6b224f0ed52345422d79 Mon Sep 17 00:00:00 2001 From: Thomas May Date: Wed, 25 Dec 2024 16:48:35 +0000 Subject: [PATCH 16/26] Add embed crawler and renderer --- UniSky.Models/Embed/EmbedModels.cs | 16 + UniSky.Services/Constants.cs | 3 + UniSky.Services/IElementCaptureService.cs | 12 + UniSky.Services/IEmbedExtractor.cs | 11 + UniSky.Services/IEmbedThumbnailGenerator.cs | 10 + UniSky.Services/UniSky.Services.csproj | 3 + UniSky/App.xaml.cs | 3 + UniSky/Assets/WatermarkLogo.png | Bin 0 -> 1098 bytes UniSky/Controls/Compose/ComposeSheet.xaml | 105 +++++- .../Renderer/ComposeImageRenderer.xaml | 33 ++ .../Renderer/ComposeImageRenderer.xaml.cs | 45 +++ .../AngleSharp/CustomHttpClientRequester.cs | 168 +++++++++ UniSky/Helpers/FacetHelpers.cs | 322 ++++++++++++++++++ UniSky/Package.appxmanifest | 2 +- UniSky/Properties/Default.rd.xml | 1 + UniSky/RootPage.xaml | 1 + UniSky/Services/AngleSharpEmbedExtractor.cs | 99 ++++++ .../Overlay/AppWindowOverlayController.cs | 13 +- .../ApplicationViewOverlayController.cs | 12 +- UniSky/Services/Overlay/OverlayService.cs | 1 - UniSky/Services/XamlElementCaptureService.cs | 68 ++++ .../Services/XamlEmbedThumbnailGenerator.cs | 48 +++ UniSky/UniSky.csproj | 25 +- .../Compose/ComposeViewAttachmentViewModel.cs | 2 +- .../Compose/ComposeViewLinkCardViewModel.cs | 120 +++++++ UniSky/ViewModels/Compose/ComposeViewModel.cs | 84 ++++- 26 files changed, 1183 insertions(+), 24 deletions(-) create mode 100644 UniSky.Models/Embed/EmbedModels.cs create mode 100644 UniSky.Services/IElementCaptureService.cs create mode 100644 UniSky.Services/IEmbedExtractor.cs create mode 100644 UniSky.Services/IEmbedThumbnailGenerator.cs create mode 100644 UniSky/Assets/WatermarkLogo.png create mode 100644 UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml create mode 100644 UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml.cs create mode 100644 UniSky/Helpers/AngleSharp/CustomHttpClientRequester.cs create mode 100644 UniSky/Helpers/FacetHelpers.cs create mode 100644 UniSky/Services/AngleSharpEmbedExtractor.cs create mode 100644 UniSky/Services/XamlElementCaptureService.cs create mode 100644 UniSky/Services/XamlEmbedThumbnailGenerator.cs create mode 100644 UniSky/ViewModels/Compose/ComposeViewLinkCardViewModel.cs diff --git a/UniSky.Models/Embed/EmbedModels.cs b/UniSky.Models/Embed/EmbedModels.cs new file mode 100644 index 0000000..1d3569a --- /dev/null +++ b/UniSky.Models/Embed/EmbedModels.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace UniSky.Models.Embed +{ + public enum UriEmbedType + { + Image, + Video, + Audio, + Article + } + public record struct UriEmbedImage(string Url, string? Alt, int? Width, int? Height); + public record struct UriEmbedDetails(string Title, string Description, UriEmbedImage? Image); +} diff --git a/UniSky.Services/Constants.cs b/UniSky.Services/Constants.cs index 6d5e639..2947576 100644 --- a/UniSky.Services/Constants.cs +++ b/UniSky.Services/Constants.cs @@ -29,6 +29,9 @@ public static string Version public static string UserAgent => $"UniSky/{Version} (https://github.com/UnicordDev/UniSky)"; + public static string CrawlerUserAgent + => $"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 UniSky/{Version} (https://github.com/UnicordDev/UniSky)"; + public static class Settings { public const string REQUESTED_COLOUR_SCHEME = "RequestedColourScheme_v1"; diff --git a/UniSky.Services/IElementCaptureService.cs b/UniSky.Services/IElementCaptureService.cs new file mode 100644 index 0000000..3bda34b --- /dev/null +++ b/UniSky.Services/IElementCaptureService.cs @@ -0,0 +1,12 @@ +using System; +using System.Threading.Tasks; +using Windows.Foundation; +using Windows.Graphics.Imaging; +using Windows.UI.Xaml; + +namespace UniSky.Services; + +public interface IElementCaptureService +{ + Task CaptureElementAsync(Func element, Size targetSize); +} \ No newline at end of file diff --git a/UniSky.Services/IEmbedExtractor.cs b/UniSky.Services/IEmbedExtractor.cs new file mode 100644 index 0000000..4f5157d --- /dev/null +++ b/UniSky.Services/IEmbedExtractor.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using UniSky.Models.Embed; + +namespace UniSky.Services; + +public interface IEmbedExtractor +{ + Task ExtractEmbedAsync(Uri uri, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/UniSky.Services/IEmbedThumbnailGenerator.cs b/UniSky.Services/IEmbedThumbnailGenerator.cs new file mode 100644 index 0000000..f70695e --- /dev/null +++ b/UniSky.Services/IEmbedThumbnailGenerator.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using UniSky.Models.Embed; +using Windows.Graphics.Imaging; + +namespace UniSky.Services; + +public interface IEmbedThumbnailGenerator +{ + Task GenerateThumbnailAsync(UriEmbedDetails embedDetails); +} \ No newline at end of file diff --git a/UniSky.Services/UniSky.Services.csproj b/UniSky.Services/UniSky.Services.csproj index 23189df..4f2d996 100644 --- a/UniSky.Services/UniSky.Services.csproj +++ b/UniSky.Services/UniSky.Services.csproj @@ -121,6 +121,9 @@ PackageReference + + + diff --git a/UniSky/App.xaml.cs b/UniSky/App.xaml.cs index acfa8f4..d4aba7a 100644 --- a/UniSky/App.xaml.cs +++ b/UniSky/App.xaml.cs @@ -72,10 +72,13 @@ private void ConfigureServices() collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); + collection.AddSingleton(); collection.AddScoped(); collection.AddScoped(); collection.AddScoped(); + collection.AddScoped(); + collection.AddScoped(); collection.AddTransient(); collection.AddTransient(); diff --git a/UniSky/Assets/WatermarkLogo.png b/UniSky/Assets/WatermarkLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0da33317add9e6fd330f2a317b06f0ca4f8736 GIT binary patch literal 1098 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSK$uZf!>a)(C|2ScQ4*Y=R#Ki=l*$m0n3-3i=jR%tV5(>M zz4`lOpo%T25uRzDo>~kXKn^Q|6eBAGBar0<#L`eU$SoR-%wTaQAls0UiGdGDM*(qW zI}2Dm1IPw}Pi2e@FPITDij@pNi3#isEI@SzM#ct=3m|5K>|)^4dEBz&&>JhWwO})!6bpQ0D z&2zFZS>*kUoVN7)yUO{`&!um^IrHYSYrnh&SiF1Z9+PTd_&@#7ksn7&76$ClZP{^r zRdFa2!&=j=x8K?)O6dLGx4&v$qQ&EPFK)b86J7AURp9f^n0H3c=NKOoVDC_LxP0?) z#4>Z`;I#9}S6_!7>MU|epCNkx`*bPm-ud6Qs60-7Y#wucZ|SVeNtc-;S`t0>y}!Rc z|GNF{WQGS*_v~Kxx=zSx$s3M>-33xk9LuIuu^rfWoWa6t<@4ql$rl(H6qe5Uz zUA5|ZwWV`5z5XjZ&|>*cw~mnTFNHga1s>|C?@ z_=0#xA*DnA{{53xTJ-SY!}oic1WNy<@ubx)lXbYFF#r7i5HHzfZmzpMgW=?I#bAamJ(X>nq(7P!^C_}eJby6fcTU z47}&a7#kdWWG$({w|wh1Q`sBKJSQ!zI%}xXEK#h~w4>tTqx^F}IiA<3?40{o>ehxA zUd)0EuV$@fcl>ZjLuUPxt5brwgHF9Psl7By)$mw*d;9v=x4*7u_;)K7B>72eKhX2f zbS_KUI+`aNr?DG6@tVA}a_N;v6O2RNS!%N$KYl#g-Q9ittJ_~i8FH)t)J(h4{G$50 ziwM(Q{;7Mn^=&S=Wp2lDQ9GhL?w~n?uJN_60`sPC^xdwI^Xb%+W~YT8T)ZqzS8V*b zH0|QnsI~Eq0(+i1b!11LZC0odXE`|g$$nej9zze!^cI2Qr2PE+oe?^5lY-)WrJFhm z3JN~dB^N&~+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -202,6 +278,7 @@ + - + + + + + - + diff --git a/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml b/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml new file mode 100644 index 0000000..67a57ec --- /dev/null +++ b/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml.cs b/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml.cs new file mode 100644 index 0000000..ce28e07 --- /dev/null +++ b/UniSky/Controls/Compose/Renderer/ComposeImageRenderer.xaml.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Threading.Tasks; +using Microsoft.Toolkit.Uwp.UI.Media; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.Graphics.Imaging; +using Windows.Storage; +using Windows.Storage.Streams; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +using Windows.UI.Xaml.Navigation; + +// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 + +namespace UniSky.Controls.Compose.Renderer +{ + public sealed partial class ComposeImageRenderer : UserControl + { + public ComposeImageRenderer() + { + this.InitializeComponent(); + } + + public async Task LoadImage(RandomAccessStreamReference reference) + { + using var bmp = await reference.OpenReadAsync(); + var decoder = await BitmapDecoder.CreateAsync(bmp); + using var softwareBmp = await decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); + + var softwreBitmapSource = new SoftwareBitmapSource(); + await softwreBitmapSource.SetBitmapAsync(softwareBmp); + + Image.Source = softwreBitmapSource; + } + } +} diff --git a/UniSky/Helpers/AngleSharp/CustomHttpClientRequester.cs b/UniSky/Helpers/AngleSharp/CustomHttpClientRequester.cs new file mode 100644 index 0000000..62d9903 --- /dev/null +++ b/UniSky/Helpers/AngleSharp/CustomHttpClientRequester.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using AngleSharp.Dom; +using AngleSharp.Io; +using HttpMethod = System.Net.Http.HttpMethod; + +namespace UniSky.Helpers.AngleSharp; + + +///