From 4e09baff76e686e07c3d774344acfc0fd47190fe Mon Sep 17 00:00:00 2001
From: simda545 <simda545@su10-209.ad.liu.se>
Date: Wed, 4 Dec 2024 17:18:06 +0100
Subject: [PATCH] =?UTF-8?q?labb2=20f=C3=A4rdig?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 TDDE43/labb2/.gitignore                       |  43 ++
 TDDE43/labb2/.metadata                        |  45 ++
 TDDE43/labb2/README.md                        |  16 +
 TDDE43/labb2/analysis_options.yaml            |  28 +
 TDDE43/labb2/android/.gitignore               |  13 +
 TDDE43/labb2/android/app/build.gradle         |  44 ++
 .../android/app/src/debug/AndroidManifest.xml |   7 +
 .../android/app/src/main/AndroidManifest.xml  |  45 ++
 .../kotlin/com/example/labb2/MainActivity.kt  |   5 +
 .../res/drawable-v21/launch_background.xml    |  12 +
 .../main/res/drawable/launch_background.xml   |  12 +
 .../src/main/res/mipmap-hdpi/ic_launcher.png  | Bin 0 -> 544 bytes
 .../src/main/res/mipmap-mdpi/ic_launcher.png  | Bin 0 -> 442 bytes
 .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    | Bin 0 -> 1031 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 0 -> 1443 bytes
 .../app/src/main/res/values-night/styles.xml  |  18 +
 .../app/src/main/res/values/styles.xml        |  18 +
 .../app/src/profile/AndroidManifest.xml       |   7 +
 TDDE43/labb2/android/build.gradle             |  18 +
 TDDE43/labb2/android/gradle.properties        |   3 +
 .../gradle/wrapper/gradle-wrapper.properties  |   5 +
 TDDE43/labb2/android/settings.gradle          |  25 +
 TDDE43/labb2/ios/.gitignore                   |  34 +
 .../labb2/ios/Flutter/AppFrameworkInfo.plist  |  26 +
 TDDE43/labb2/ios/Flutter/Debug.xcconfig       |   1 +
 TDDE43/labb2/ios/Flutter/Release.xcconfig     |   1 +
 .../ios/Runner.xcodeproj/project.pbxproj      | 616 +++++++++++++++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/WorkspaceSettings.xcsettings |   8 +
 .../xcshareddata/xcschemes/Runner.xcscheme    |  98 +++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/WorkspaceSettings.xcsettings |   8 +
 TDDE43/labb2/ios/Runner/AppDelegate.swift     |  13 +
 .../AppIcon.appiconset/Contents.json          | 122 +++
 .../Icon-App-1024x1024@1x.png                 | Bin 0 -> 10932 bytes
 .../AppIcon.appiconset/Icon-App-20x20@1x.png  | Bin 0 -> 295 bytes
 .../AppIcon.appiconset/Icon-App-20x20@2x.png  | Bin 0 -> 406 bytes
 .../AppIcon.appiconset/Icon-App-20x20@3x.png  | Bin 0 -> 450 bytes
 .../AppIcon.appiconset/Icon-App-29x29@1x.png  | Bin 0 -> 282 bytes
 .../AppIcon.appiconset/Icon-App-29x29@2x.png  | Bin 0 -> 462 bytes
 .../AppIcon.appiconset/Icon-App-29x29@3x.png  | Bin 0 -> 704 bytes
 .../AppIcon.appiconset/Icon-App-40x40@1x.png  | Bin 0 -> 406 bytes
 .../AppIcon.appiconset/Icon-App-40x40@2x.png  | Bin 0 -> 586 bytes
 .../AppIcon.appiconset/Icon-App-40x40@3x.png  | Bin 0 -> 862 bytes
 .../AppIcon.appiconset/Icon-App-60x60@2x.png  | Bin 0 -> 862 bytes
 .../AppIcon.appiconset/Icon-App-60x60@3x.png  | Bin 0 -> 1674 bytes
 .../AppIcon.appiconset/Icon-App-76x76@1x.png  | Bin 0 -> 762 bytes
 .../AppIcon.appiconset/Icon-App-76x76@2x.png  | Bin 0 -> 1226 bytes
 .../Icon-App-83.5x83.5@2x.png                 | Bin 0 -> 1418 bytes
 .../LaunchImage.imageset/Contents.json        |  23 +
 .../LaunchImage.imageset/LaunchImage.png      | Bin 0 -> 68 bytes
 .../LaunchImage.imageset/LaunchImage@2x.png   | Bin 0 -> 68 bytes
 .../LaunchImage.imageset/LaunchImage@3x.png   | Bin 0 -> 68 bytes
 .../LaunchImage.imageset/README.md            |   5 +
 .../Runner/Base.lproj/LaunchScreen.storyboard |  37 +
 .../ios/Runner/Base.lproj/Main.storyboard     |  26 +
 TDDE43/labb2/ios/Runner/Info.plist            |  49 ++
 .../labb2/ios/Runner/Runner-Bridging-Header.h |   1 +
 .../labb2/ios/RunnerTests/RunnerTests.swift   |  12 +
 TDDE43/labb2/lib/githubservice.dart           |  17 +
 TDDE43/labb2/lib/main.dart                    | 191 +++++
 TDDE43/labb2/linux/.gitignore                 |   1 +
 TDDE43/labb2/linux/CMakeLists.txt             | 145 ++++
 TDDE43/labb2/linux/flutter/CMakeLists.txt     |  88 +++
 .../flutter/generated_plugin_registrant.cc    |  15 +
 .../flutter/generated_plugin_registrant.h     |  15 +
 .../linux/flutter/generated_plugins.cmake     |  24 +
 TDDE43/labb2/linux/main.cc                    |   6 +
 TDDE43/labb2/linux/my_application.cc          | 124 +++
 TDDE43/labb2/linux/my_application.h           |  18 +
 TDDE43/labb2/macos/.gitignore                 |   7 +
 .../macos/Flutter/Flutter-Debug.xcconfig      |   1 +
 .../macos/Flutter/Flutter-Release.xcconfig    |   1 +
 .../Flutter/GeneratedPluginRegistrant.swift   |  12 +
 .../macos/Runner.xcodeproj/project.pbxproj    | 705 ++++++++++++++++++
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/xcschemes/Runner.xcscheme    |  98 +++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 TDDE43/labb2/macos/Runner/AppDelegate.swift   |   9 +
 .../AppIcon.appiconset/Contents.json          |  68 ++
 .../AppIcon.appiconset/app_icon_1024.png      | Bin 0 -> 102994 bytes
 .../AppIcon.appiconset/app_icon_128.png       | Bin 0 -> 5680 bytes
 .../AppIcon.appiconset/app_icon_16.png        | Bin 0 -> 520 bytes
 .../AppIcon.appiconset/app_icon_256.png       | Bin 0 -> 14142 bytes
 .../AppIcon.appiconset/app_icon_32.png        | Bin 0 -> 1066 bytes
 .../AppIcon.appiconset/app_icon_512.png       | Bin 0 -> 36406 bytes
 .../AppIcon.appiconset/app_icon_64.png        | Bin 0 -> 2218 bytes
 .../macos/Runner/Base.lproj/MainMenu.xib      | 343 +++++++++
 .../macos/Runner/Configs/AppInfo.xcconfig     |  14 +
 .../labb2/macos/Runner/Configs/Debug.xcconfig |   2 +
 .../macos/Runner/Configs/Release.xcconfig     |   2 +
 .../macos/Runner/Configs/Warnings.xcconfig    |  13 +
 .../macos/Runner/DebugProfile.entitlements    |  12 +
 TDDE43/labb2/macos/Runner/Info.plist          |  32 +
 .../macos/Runner/MainFlutterWindow.swift      |  15 +
 .../labb2/macos/Runner/Release.entitlements   |   8 +
 .../labb2/macos/RunnerTests/RunnerTests.swift |  12 +
 TDDE43/labb2/pubspec.lock                     | 322 ++++++++
 TDDE43/labb2/pubspec.yaml                     |  94 +++
 TDDE43/labb2/test/widget_test.dart            |  30 +
 TDDE43/labb2/web/favicon.png                  | Bin 0 -> 917 bytes
 TDDE43/labb2/web/icons/Icon-192.png           | Bin 0 -> 5292 bytes
 TDDE43/labb2/web/icons/Icon-512.png           | Bin 0 -> 8252 bytes
 TDDE43/labb2/web/icons/Icon-maskable-192.png  | Bin 0 -> 5594 bytes
 TDDE43/labb2/web/icons/Icon-maskable-512.png  | Bin 0 -> 20998 bytes
 TDDE43/labb2/web/index.html                   |  38 +
 TDDE43/labb2/web/manifest.json                |  35 +
 TDDE43/labb2/windows/.gitignore               |  17 +
 TDDE43/labb2/windows/CMakeLists.txt           | 108 +++
 TDDE43/labb2/windows/flutter/CMakeLists.txt   | 109 +++
 .../flutter/generated_plugin_registrant.cc    |  14 +
 .../flutter/generated_plugin_registrant.h     |  15 +
 .../windows/flutter/generated_plugins.cmake   |  24 +
 TDDE43/labb2/windows/runner/CMakeLists.txt    |  40 +
 TDDE43/labb2/windows/runner/Runner.rc         | 121 +++
 .../labb2/windows/runner/flutter_window.cpp   |  71 ++
 TDDE43/labb2/windows/runner/flutter_window.h  |  33 +
 TDDE43/labb2/windows/runner/main.cpp          |  43 ++
 TDDE43/labb2/windows/runner/resource.h        |  16 +
 .../windows/runner/resources/app_icon.ico     | Bin 0 -> 33772 bytes
 .../labb2/windows/runner/runner.exe.manifest  |  14 +
 TDDE43/labb2/windows/runner/utils.cpp         |  65 ++
 TDDE43/labb2/windows/runner/utils.h           |  19 +
 TDDE43/labb2/windows/runner/win32_window.cpp  | 288 +++++++
 TDDE43/labb2/windows/runner/win32_window.h    | 102 +++
 129 files changed, 5113 insertions(+)
 create mode 100644 TDDE43/labb2/.gitignore
 create mode 100644 TDDE43/labb2/.metadata
 create mode 100644 TDDE43/labb2/README.md
 create mode 100644 TDDE43/labb2/analysis_options.yaml
 create mode 100644 TDDE43/labb2/android/.gitignore
 create mode 100644 TDDE43/labb2/android/app/build.gradle
 create mode 100644 TDDE43/labb2/android/app/src/debug/AndroidManifest.xml
 create mode 100644 TDDE43/labb2/android/app/src/main/AndroidManifest.xml
 create mode 100644 TDDE43/labb2/android/app/src/main/kotlin/com/example/labb2/MainActivity.kt
 create mode 100644 TDDE43/labb2/android/app/src/main/res/drawable-v21/launch_background.xml
 create mode 100644 TDDE43/labb2/android/app/src/main/res/drawable/launch_background.xml
 create mode 100644 TDDE43/labb2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
 create mode 100644 TDDE43/labb2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
 create mode 100644 TDDE43/labb2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
 create mode 100644 TDDE43/labb2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
 create mode 100644 TDDE43/labb2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
 create mode 100644 TDDE43/labb2/android/app/src/main/res/values-night/styles.xml
 create mode 100644 TDDE43/labb2/android/app/src/main/res/values/styles.xml
 create mode 100644 TDDE43/labb2/android/app/src/profile/AndroidManifest.xml
 create mode 100644 TDDE43/labb2/android/build.gradle
 create mode 100644 TDDE43/labb2/android/gradle.properties
 create mode 100644 TDDE43/labb2/android/gradle/wrapper/gradle-wrapper.properties
 create mode 100644 TDDE43/labb2/android/settings.gradle
 create mode 100644 TDDE43/labb2/ios/.gitignore
 create mode 100644 TDDE43/labb2/ios/Flutter/AppFrameworkInfo.plist
 create mode 100644 TDDE43/labb2/ios/Flutter/Debug.xcconfig
 create mode 100644 TDDE43/labb2/ios/Flutter/Release.xcconfig
 create mode 100644 TDDE43/labb2/ios/Runner.xcodeproj/project.pbxproj
 create mode 100644 TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
 create mode 100644 TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
 create mode 100644 TDDE43/labb2/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
 create mode 100644 TDDE43/labb2/ios/Runner.xcworkspace/contents.xcworkspacedata
 create mode 100644 TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
 create mode 100644 TDDE43/labb2/ios/Runner/AppDelegate.swift
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
 create mode 100644 TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
 create mode 100644 TDDE43/labb2/ios/Runner/Base.lproj/LaunchScreen.storyboard
 create mode 100644 TDDE43/labb2/ios/Runner/Base.lproj/Main.storyboard
 create mode 100644 TDDE43/labb2/ios/Runner/Info.plist
 create mode 100644 TDDE43/labb2/ios/Runner/Runner-Bridging-Header.h
 create mode 100644 TDDE43/labb2/ios/RunnerTests/RunnerTests.swift
 create mode 100644 TDDE43/labb2/lib/githubservice.dart
 create mode 100644 TDDE43/labb2/lib/main.dart
 create mode 100644 TDDE43/labb2/linux/.gitignore
 create mode 100644 TDDE43/labb2/linux/CMakeLists.txt
 create mode 100644 TDDE43/labb2/linux/flutter/CMakeLists.txt
 create mode 100644 TDDE43/labb2/linux/flutter/generated_plugin_registrant.cc
 create mode 100644 TDDE43/labb2/linux/flutter/generated_plugin_registrant.h
 create mode 100644 TDDE43/labb2/linux/flutter/generated_plugins.cmake
 create mode 100644 TDDE43/labb2/linux/main.cc
 create mode 100644 TDDE43/labb2/linux/my_application.cc
 create mode 100644 TDDE43/labb2/linux/my_application.h
 create mode 100644 TDDE43/labb2/macos/.gitignore
 create mode 100644 TDDE43/labb2/macos/Flutter/Flutter-Debug.xcconfig
 create mode 100644 TDDE43/labb2/macos/Flutter/Flutter-Release.xcconfig
 create mode 100644 TDDE43/labb2/macos/Flutter/GeneratedPluginRegistrant.swift
 create mode 100644 TDDE43/labb2/macos/Runner.xcodeproj/project.pbxproj
 create mode 100644 TDDE43/labb2/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 TDDE43/labb2/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
 create mode 100644 TDDE43/labb2/macos/Runner.xcworkspace/contents.xcworkspacedata
 create mode 100644 TDDE43/labb2/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 TDDE43/labb2/macos/Runner/AppDelegate.swift
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
 create mode 100644 TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
 create mode 100644 TDDE43/labb2/macos/Runner/Base.lproj/MainMenu.xib
 create mode 100644 TDDE43/labb2/macos/Runner/Configs/AppInfo.xcconfig
 create mode 100644 TDDE43/labb2/macos/Runner/Configs/Debug.xcconfig
 create mode 100644 TDDE43/labb2/macos/Runner/Configs/Release.xcconfig
 create mode 100644 TDDE43/labb2/macos/Runner/Configs/Warnings.xcconfig
 create mode 100644 TDDE43/labb2/macos/Runner/DebugProfile.entitlements
 create mode 100644 TDDE43/labb2/macos/Runner/Info.plist
 create mode 100644 TDDE43/labb2/macos/Runner/MainFlutterWindow.swift
 create mode 100644 TDDE43/labb2/macos/Runner/Release.entitlements
 create mode 100644 TDDE43/labb2/macos/RunnerTests/RunnerTests.swift
 create mode 100644 TDDE43/labb2/pubspec.lock
 create mode 100644 TDDE43/labb2/pubspec.yaml
 create mode 100644 TDDE43/labb2/test/widget_test.dart
 create mode 100644 TDDE43/labb2/web/favicon.png
 create mode 100644 TDDE43/labb2/web/icons/Icon-192.png
 create mode 100644 TDDE43/labb2/web/icons/Icon-512.png
 create mode 100644 TDDE43/labb2/web/icons/Icon-maskable-192.png
 create mode 100644 TDDE43/labb2/web/icons/Icon-maskable-512.png
 create mode 100644 TDDE43/labb2/web/index.html
 create mode 100644 TDDE43/labb2/web/manifest.json
 create mode 100644 TDDE43/labb2/windows/.gitignore
 create mode 100644 TDDE43/labb2/windows/CMakeLists.txt
 create mode 100644 TDDE43/labb2/windows/flutter/CMakeLists.txt
 create mode 100644 TDDE43/labb2/windows/flutter/generated_plugin_registrant.cc
 create mode 100644 TDDE43/labb2/windows/flutter/generated_plugin_registrant.h
 create mode 100644 TDDE43/labb2/windows/flutter/generated_plugins.cmake
 create mode 100644 TDDE43/labb2/windows/runner/CMakeLists.txt
 create mode 100644 TDDE43/labb2/windows/runner/Runner.rc
 create mode 100644 TDDE43/labb2/windows/runner/flutter_window.cpp
 create mode 100644 TDDE43/labb2/windows/runner/flutter_window.h
 create mode 100644 TDDE43/labb2/windows/runner/main.cpp
 create mode 100644 TDDE43/labb2/windows/runner/resource.h
 create mode 100644 TDDE43/labb2/windows/runner/resources/app_icon.ico
 create mode 100644 TDDE43/labb2/windows/runner/runner.exe.manifest
 create mode 100644 TDDE43/labb2/windows/runner/utils.cpp
 create mode 100644 TDDE43/labb2/windows/runner/utils.h
 create mode 100644 TDDE43/labb2/windows/runner/win32_window.cpp
 create mode 100644 TDDE43/labb2/windows/runner/win32_window.h

diff --git a/TDDE43/labb2/.gitignore b/TDDE43/labb2/.gitignore
new file mode 100644
index 0000000..29a3a50
--- /dev/null
+++ b/TDDE43/labb2/.gitignore
@@ -0,0 +1,43 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.pub-cache/
+.pub/
+/build/
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/TDDE43/labb2/.metadata b/TDDE43/labb2/.metadata
new file mode 100644
index 0000000..2d1be89
--- /dev/null
+++ b/TDDE43/labb2/.metadata
@@ -0,0 +1,45 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+  revision: "2663184aa79047d0a33a14a3b607954f8fdd8730"
+  channel: "stable"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+  platforms:
+    - platform: root
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: android
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: ios
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: linux
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: macos
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: web
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+    - platform: windows
+      create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+      base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
+
+  # User provided section
+
+  # List of Local paths (relative to this file) that should be
+  # ignored by the migrate tool.
+  #
+  # Files that are not part of the templates will be ignored by default.
+  unmanaged_files:
+    - 'lib/main.dart'
+    - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/TDDE43/labb2/README.md b/TDDE43/labb2/README.md
new file mode 100644
index 0000000..b341d02
--- /dev/null
+++ b/TDDE43/labb2/README.md
@@ -0,0 +1,16 @@
+# labb2
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+
+For help getting started with Flutter development, view the
+[online documentation](https://docs.flutter.dev/), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/TDDE43/labb2/analysis_options.yaml b/TDDE43/labb2/analysis_options.yaml
new file mode 100644
index 0000000..0d29021
--- /dev/null
+++ b/TDDE43/labb2/analysis_options.yaml
@@ -0,0 +1,28 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+  # The lint rules applied to this project can be customized in the
+  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+  # included above or to enable additional rules. A list of all available lints
+  # and their documentation is published at https://dart.dev/lints.
+  #
+  # Instead of disabling a lint rule for the entire project in the
+  # section below, it can also be suppressed for a single line of code
+  # or a specific dart file by using the `// ignore: name_of_lint` and
+  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+  # producing the lint.
+  rules:
+    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
+    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/TDDE43/labb2/android/.gitignore b/TDDE43/labb2/android/.gitignore
new file mode 100644
index 0000000..55afd91
--- /dev/null
+++ b/TDDE43/labb2/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/to/reference-keystore
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/TDDE43/labb2/android/app/build.gradle b/TDDE43/labb2/android/app/build.gradle
new file mode 100644
index 0000000..83b112c
--- /dev/null
+++ b/TDDE43/labb2/android/app/build.gradle
@@ -0,0 +1,44 @@
+plugins {
+    id "com.android.application"
+    id "kotlin-android"
+    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+    id "dev.flutter.flutter-gradle-plugin"
+}
+
+android {
+    namespace = "com.example.labb2"
+    compileSdk = flutter.compileSdkVersion
+    ndkVersion = flutter.ndkVersion
+
+    compileOptions {
+        sourceCompatibility = JavaVersion.VERSION_1_8
+        targetCompatibility = JavaVersion.VERSION_1_8
+    }
+
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_1_8
+    }
+
+    defaultConfig {
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+        applicationId = "com.example.labb2"
+        // You can update the following values to match your application needs.
+        // For more information, see: https://flutter.dev/to/review-gradle-config.
+        minSdk = flutter.minSdkVersion
+        targetSdk = flutter.targetSdkVersion
+        versionCode = flutter.versionCode
+        versionName = flutter.versionName
+    }
+
+    buildTypes {
+        release {
+            // TODO: Add your own signing config for the release build.
+            // Signing with the debug keys for now, so `flutter run --release` works.
+            signingConfig = signingConfigs.debug
+        }
+    }
+}
+
+flutter {
+    source = "../.."
+}
diff --git a/TDDE43/labb2/android/app/src/debug/AndroidManifest.xml b/TDDE43/labb2/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- The INTERNET permission is required for development. Specifically,
+         the Flutter tool needs it to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/TDDE43/labb2/android/app/src/main/AndroidManifest.xml b/TDDE43/labb2/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..d64fdf5
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,45 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <application
+        android:label="labb2"
+        android:name="${applicationName}"
+        android:icon="@mipmap/ic_launcher">
+        <activity
+            android:name=".MainActivity"
+            android:exported="true"
+            android:launchMode="singleTop"
+            android:taskAffinity=""
+            android:theme="@style/LaunchTheme"
+            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
+            android:hardwareAccelerated="true"
+            android:windowSoftInputMode="adjustResize">
+            <!-- Specifies an Android theme to apply to this Activity as soon as
+                 the Android process has started. This theme is visible to the user
+                 while the Flutter UI initializes. After that, this theme continues
+                 to determine the Window background behind the Flutter UI. -->
+            <meta-data
+              android:name="io.flutter.embedding.android.NormalTheme"
+              android:resource="@style/NormalTheme"
+              />
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <!-- Don't delete the meta-data below.
+             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
+        <meta-data
+            android:name="flutterEmbedding"
+            android:value="2" />
+    </application>
+    <!-- Required to query activities that can process text, see:
+         https://developer.android.com/training/package-visibility and
+         https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
+
+         In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
+    <queries>
+        <intent>
+            <action android:name="android.intent.action.PROCESS_TEXT"/>
+            <data android:mimeType="text/plain"/>
+        </intent>
+    </queries>
+</manifest>
diff --git a/TDDE43/labb2/android/app/src/main/kotlin/com/example/labb2/MainActivity.kt b/TDDE43/labb2/android/app/src/main/kotlin/com/example/labb2/MainActivity.kt
new file mode 100644
index 0000000..f09178a
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/kotlin/com/example/labb2/MainActivity.kt
@@ -0,0 +1,5 @@
+package com.example.labb2
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity()
diff --git a/TDDE43/labb2/android/app/src/main/res/drawable-v21/launch_background.xml b/TDDE43/labb2/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="?android:colorBackground" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>
diff --git a/TDDE43/labb2/android/app/src/main/res/drawable/launch_background.xml b/TDDE43/labb2/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@android:color/white" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>
diff --git a/TDDE43/labb2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/TDDE43/labb2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29
GIT binary patch
literal 544
zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84rT@hh9qO>QU(SF$r9IylHmNblJdl&R0hYC
z{G?O`&)mfH)S%SFl*+=BsWuD@4C?}XLR=Xb7#RJ!7{h04Zu=H;^aq4w44VZJaXaum
z<miu(qdyqKW-^A)mMB{aQDD37F@sSggGCCXwl||eFr!@_qg_6udp)CP6QfT%$Uwht
zM!z1$z=@1OlNf_0GX_s#44uvxI)gE62H0?r`ApX7Ob!K1&SgxV4a~l6%>G@>0o`I5
z6U6gpN>(hBs@ovlyiK}omrVN}&28UY_JdsVcA=Cl0|SF_NswPKgMfg5KtMnO2sE4r
zf%}pIPku2lFue41aSVw#{PxUsz9t6&hrp0GdlTMw^~h@f`fs1s!olsWbZ#C0v7PJ9
zExVjNeb(Ol`RU07XFf|X@qSK7qke0_C&kUH>MnD(8u-m<DX!pr&7!*J@$?w=?>i5B
zt(&|xZ@%@sBNk%nt_5+E&U1QAlyT>>sMB2Zd5T5*R3&Sld5=98o%0qdm+@@-JjKB8
z(xcUiGOB?O=e)LCdt!o~wXBiQlFwyn4J<FWNWSJ4nBMpL;FUI(rH3~e&pDIh;bAoU
ztzZ2bW)81qVfkN|u{A76$?AP4bE6=r(zGc-Lo<wJg7Q&smA|XLthZ(8RZ(WK&f9r_
Qfq{X+)78&qol`;+05GG~Q2+n{

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/TDDE43/labb2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be
GIT binary patch
literal 442
zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4rT@hhJ-tuTNxM_BuiW)N`mv#O3D+9QW+dm
z@{>{(JaZG%Q-e|yQz{EjrrIztFmwg@gt#&=FffMC4mtWmbKAF&qdyqKXG0ipk&vT5
zAmZ%d{SXF=bCKq@Z-GZZ;tV#~j83JDzFmxd-Hahq8AGNqhE8V;o5>h9i!po_WB6=l
zU2kT?Kvt(bR^JA;;7+;DUGlvL6sMk6nsrHO&Q;BA-wby`jSBSdXJueu5G@Jv3uX`y
zP*5;1FzBB@fBpXR=g+?ff&5MV!VC-yOFdm2Lp+YZy>e2h$w0vMVh8iNMNLhM)++IJ
z{QqCg*LgRGXKpKZaOLSMJFo8MNc{figWv3mbJp+w<kyyaNLPH_7hlO)dzZ0qy_k(Z
z>-BoBm(|-hT|4dcbJ2lEyX!??Y`jpZ81*D{;rF6b`?;0>>pbJRKPRw2)?8wK8GH9>
zL)n=k&vkA#ITl(SS<U;QyJmmHI>sBW`??>AG{pM|AK2Jc#t<e_zlr_!#IRdOVook+
QU|?YIboFyt=akR{0OC)($p8QV

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/TDDE43/labb2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1
GIT binary patch
literal 721
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4rT@hhO2JvAPLD5*NBqf{Irtt#G+IN$CUh}
zR0Yr6#Prml)Wnp^!jq{s3=9n40(?ST85kHsj{eZx_Kne_fiZlx=C*GkM}LGI{lOSM
zJLKpO-pGCkS99Ap_k-UdY{uXzjN!Aza;8BPGwAv==mjz8hcFm~FxcfWYPvCMc`=&B
zF`6eaTBI;qXENFsFgg@5I+ifHRx`TQGP>6>y4N#$)H8ZEGkUc!`m{6pbTImMF#2{f
z`gJk-_b~?aGX_m$44TXsJQ-wH$W+GA>5O4B7{g{VhRtFOpT!tHo5?tW$tsn}K99+{
zjLE&4*|Uz>tC88eNi3sZJbQ{n(LBkD<x;ilq#8F%H*b?}-67q!OSbEP=C*Gx`$4`a
z+^}{50|SFtNswPKgMfm8fq_9lLP9}7!~FU4&%XzO-7Kks3=E9^o-U3d8Ta1ayzY0{
zL7?@agT}(|SylOrK1ofFmnI8kJ@^~XcG_jy^?RKu*=(E^&#S)H&w8yZvf=)&eKY-w
zm|raJxBG=m{J;Op`S6opmcNp}?EbiJ|LylI8@^a`_|yg^ycT9kzOS+28!uC_y=una
zz_vQ43%``t^0)0%Q~9Oqb>d1t=Sn-plsE283-d*czTa-zm@iQD#kujt@|Kvt4hp|H
z71QJA-@DE-vCc=}m3vdfeqD}l&W>B;IduNM%M_}RPx;yPVrk2E_T?&?d+vqXsA}xF
zGk52_Ny78;-$vOoENNLjTll#WOG?YLuZ?eO;uVxk)@?h*_~6>qo(~l}_f@BaD>p=c
zm>y<U&gZXf>aWRpaQm|`^KGX?!;c=*_;Kycp<DlUdiD5zSo`y6a;n5+gROg>Yksb1
rdBk${xlomwC<})`ozH<A-&hmd*~)g$ZRcZPU|{fc^>bP0l+XkKcl<5t

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/TDDE43/labb2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c
GIT binary patch
literal 1031
zcmeAS@N?(olHy`uVBq!ia0y~yV3+{H9Lx+13>Rhybuln7NS3%plmzFem6RtIr7}3C
z<R_&nc;+Uirv{}arc@T5OtoQPU<?lM32|j$V9?z5E#&AA2-4j4jWK94WB6=Nj{=Ce
zWWgfMZQrc+d=EMLgF(ZcLED!>$Dctjh(SM?K|h4SAdJB{hQT_6!9JhSFr3jep3y9U
z(L9OKDxJ|flhG!d(I$t{HiywRm(ebd(Y}z;v6#`Zgwd&#(Yb=rrHawDn$fL>(XE!z
zt&Y*Xj?trm(W8;kvysuWiP5u}(X)lotC`WOh0&*-(Wisaw}a8QlhLo6(XWTmzlYJk
zmocD^F|eO8Z~|lCM8?2Lj6o9_gC>F8A3T{ccnV|4RK}2LjG@yRLuW9C&0q|h$rv_^
zF?<$d_-uBwU=HgjPRC?Uw`?x2A}+rQ?!a2^kVfvX7VhwN?#NE=s4niP9-inPl?69d
z7T#1{bVqf`J=LWT)RsR~Tk%+J<rB4)Pt{gEQ(OH^ZS`|?5PG4x?VBYylx82DV9LP2
zz+V#N7tA0a;E>QT9|ZQFKYxDR#LKT37?|`uT^vIyZoR#b9vmDf()v(?iz7_L)oF78
zkJJ<)r<N9%0|$JqH#XSb$PoJRf4+y|q?Y3Mca3Ad+3~&pyDx2Cq@BDI+qFWEwajuA
z4;tBtBK{elKPpyaGw=12pQ;rPEUWotk33QAzG34cxVT*<>8pUt8M$!5-N#*39u$gn
zR>-(G$wg0`aolam=a?PG9$oC(GH>-!X0d*^l*gJvuFJp95x7~EvFLL3EEhhxt`pq;
z%_lBC*86lUSiR`uj?O)w{s`}^n&Wz}@?RH+ochG+^SU~oY!t72t=ZWjXFc({Ty9i<
zoXX3Kohi2Ju9xPeP296QFr{gETuR&Xh?K77YDUL{MQ1+I?2fS6ciP3jaR24wmqlki
zKfgU-wdbO}>o1>vX;$n~9ltDoY4ItEi|?MFbkSNqMRU<y|MTK&bIwUz{B}H{#59<7
zroydX0u?)xQa9b?@`(FVovb6{AN5koBkD_bt%XSJD)y6Ib^Gc?=5*_tH>kMU-}~Bs
z)+NdN<kpgB5-RGy{$2ZDVI$J1wo0M!;<MSmnHT$~D_#8YI&}3vMa4kH`pxATB{f-P
z3t7BUL!FrxIsH2}cOScQ<H?&pk3<Q(JB56@^Xi?n44==@ATROFE8e_(_07IUFuZJI
zm)5-7wuw(g7O!}-(>zgg`VE)XKX=tVT|2z5{L4{YJjHWS*rIm-E6Ws`IFvdRnm87H
fR&jd1QhDAN-h`R^uRUjAU|{fc^>bP0l+XkKAv&s=

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/TDDE43/labb2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0
GIT binary patch
literal 1443
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$BuiW)N`mv#O3D+9QW+dm
z@{>{(JaZG%Q-e|yQz{EjrrIztFy0FA32|j$U<f(-Bjo50M(1+Iz=@1uvlzo?Yi|1%
za`cB-@^pxl=C*H)-ffKD?Tn$*8N+9b<xJDu_DyFyNDYIg2ZN3ugN{FgZUBQ`AcI~I
zgMKiBeh7m>7=vLLgJC#>aTJ4T9D`W`gLwjjbtZ#N4x^eAqnb0LmM5cOIHO54qe%>-
zNi3sjJfm3xqeU{KMGB*38lzP@qg4i@bta=t7NczrqirsuT`r?t9;018qkTT3eF39G
z5u;-<qhkr9Qz@fU8KX-jqe~T|YZaqwHKSV%qkA2rdp)B^1EWVHqh}MNXEUQ$Gox1v
zqgN}VcMGF;E7Uta?TkJhj6R)=z8#Fdos7O+jDB5=e%*|IJ&gW6jQ+ih0ey@C{fq$<
z7z6tm11EsOCukyL&?Ls-NsPgh8H1-V22W)SnZg({l`&)*W9T$c_=L`244ugsHiI#2
zCO9xb;mM@u&tw?JWD?C}p1@?4!eo=dWS7n4kjLa$$mCSa<Xp<+QpV(3!Q@uS<W|Mx
zUL}^%FP1q$Ja?LS!EA}*`I2ReB`cRpR<Dw(T`N_;L8@Vsbki2;=55j~+ofA~NVo2k
zZrdf(wp+gY03=>~4uK+6lW`UY0|SF-NswPKgMfko7&thbzyBTz-gcI+Wnf^o^K@|x
zskrs_3VX0{ph#Pyi^G})N%|2R%{L?-ZV(U%Y+lqcfu(WAio}U)uIrV(+3WUaecD+A
zmQ6SJem|G<Y|hO0zZt9Nm6w%qa~bfQe(k0G@73BxB6U9=w#!qC$o$Qnp1E#9Tm0{Z
zo0lKtxBv5@_+$3{MUSrUbvwSkynj;sb0yvVzkIXmuCD&_C#ziZSE%0QFQ@M>do_Kp
z-*x@+`J3Y19B#kQTkx(t_`-K<>p6dn#rh_GuokuWC9d+nXX1zFdIcZVw{qEhc&=6O
z^|eUFqwV?=KCBk6c(Pr4!l%_@70=G=P581}wBp75D22D-njfy%?{qk*AOB#Z{bq-g
z`q2+|)-Q6ns2@Io{eMN{rubzF`u|EA+wSjG@UL6#aQc1N1oQe;4(H#;OmN?SS>~@F
ztIeOC+&g|0i+=ccTfE@YZP5>((!~ot`|Cb<K0oHb#rcs3F53qlxN0AF;QD;M2XD4>
zb^PFdrt<Y$wHojKchWz;7Uc;(Z<?=v>-VXypJEaJ95?T2$v)Ws{O#V4Ednvz`|Pb}
zf4VOe!@bWom-}e`tT2YtP3!%mny<H?DPcI=q~9OCYq6V>=z+}-K6mV2ZEt5Icwo(g
z%Zr!wX>UAuh9QhqUj7<;)5IBxDQpH>KRz6|eoM6P*rQ_`EdPlXYgN?$U-3W2|NYf9
z3~H?J-^u1!lq%j3KgpL6_~F~TxcJXA&m~w0?N0Rh)m167XXobE9?sqiHmlnth&$|i
z@b&H6->;<n*{pUSW)9rV@Q8K2S^mw~*V#FiwHvLk$nTx@ub=DSvV@Y$lX9=NuW9Hz
zz0mHpeOA|-i@FkPqqY>epMCgPeb()B(Tr|RH~O+1PwlVxdT!ROU2OGQ3PvhLeQAwP
z<HL5Y`*mPrRekss5x>O|AMWqpQ}lM;-?Ix_3Z(ZoZK*%HiZ|EUDeVf^rGH<21r@EM
zSf|zZ`p5aNP1ut4@|gFs0GYW>Kcl68^QPJ_Y<l^5%bymmu2W$0H0$RkA&~_PtQroC
lTmcPCQ07b~p2b`1KQB5V5V4<OEdv7sgQu&X%Q~loCIB3;a@_y`

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/android/app/src/main/res/values-night/styles.xml b/TDDE43/labb2/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>
diff --git a/TDDE43/labb2/android/app/src/main/res/values/styles.xml b/TDDE43/labb2/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..cb1ef88
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>
diff --git a/TDDE43/labb2/android/app/src/profile/AndroidManifest.xml b/TDDE43/labb2/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/TDDE43/labb2/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- The INTERNET permission is required for development. Specifically,
+         the Flutter tool needs it to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/TDDE43/labb2/android/build.gradle b/TDDE43/labb2/android/build.gradle
new file mode 100644
index 0000000..d2ffbff
--- /dev/null
+++ b/TDDE43/labb2/android/build.gradle
@@ -0,0 +1,18 @@
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+rootProject.buildDir = "../build"
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(":app")
+}
+
+tasks.register("clean", Delete) {
+    delete rootProject.buildDir
+}
diff --git a/TDDE43/labb2/android/gradle.properties b/TDDE43/labb2/android/gradle.properties
new file mode 100644
index 0000000..2597170
--- /dev/null
+++ b/TDDE43/labb2/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/TDDE43/labb2/android/gradle/wrapper/gradle-wrapper.properties b/TDDE43/labb2/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..7bb2df6
--- /dev/null
+++ b/TDDE43/labb2/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
diff --git a/TDDE43/labb2/android/settings.gradle b/TDDE43/labb2/android/settings.gradle
new file mode 100644
index 0000000..b9e43bd
--- /dev/null
+++ b/TDDE43/labb2/android/settings.gradle
@@ -0,0 +1,25 @@
+pluginManagement {
+    def flutterSdkPath = {
+        def properties = new Properties()
+        file("local.properties").withInputStream { properties.load(it) }
+        def flutterSdkPath = properties.getProperty("flutter.sdk")
+        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+        return flutterSdkPath
+    }()
+
+    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+    repositories {
+        google()
+        mavenCentral()
+        gradlePluginPortal()
+    }
+}
+
+plugins {
+    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+    id "com.android.application" version "8.1.0" apply false
+    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
+}
+
+include ":app"
diff --git a/TDDE43/labb2/ios/.gitignore b/TDDE43/labb2/ios/.gitignore
new file mode 100644
index 0000000..7a7f987
--- /dev/null
+++ b/TDDE43/labb2/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/TDDE43/labb2/ios/Flutter/AppFrameworkInfo.plist b/TDDE43/labb2/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..7c56964
--- /dev/null
+++ b/TDDE43/labb2/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+  <key>CFBundleDevelopmentRegion</key>
+  <string>en</string>
+  <key>CFBundleExecutable</key>
+  <string>App</string>
+  <key>CFBundleIdentifier</key>
+  <string>io.flutter.flutter.app</string>
+  <key>CFBundleInfoDictionaryVersion</key>
+  <string>6.0</string>
+  <key>CFBundleName</key>
+  <string>App</string>
+  <key>CFBundlePackageType</key>
+  <string>FMWK</string>
+  <key>CFBundleShortVersionString</key>
+  <string>1.0</string>
+  <key>CFBundleSignature</key>
+  <string>????</string>
+  <key>CFBundleVersion</key>
+  <string>1.0</string>
+  <key>MinimumOSVersion</key>
+  <string>12.0</string>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Flutter/Debug.xcconfig b/TDDE43/labb2/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/TDDE43/labb2/ios/Flutter/Debug.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/TDDE43/labb2/ios/Flutter/Release.xcconfig b/TDDE43/labb2/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/TDDE43/labb2/ios/Flutter/Release.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/TDDE43/labb2/ios/Runner.xcodeproj/project.pbxproj b/TDDE43/labb2/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..804b58d
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,616 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 54;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+		331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
+		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+			remoteInfo = Runner;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
+		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
+		331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
+		331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
+		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
+		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
+		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
+		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
+		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		97C146EB1CF9000F007C117D /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		331C8082294A63A400263BE5 /* RunnerTests */ = {
+			isa = PBXGroup;
+			children = (
+				331C807B294A618700263BE5 /* RunnerTests.swift */,
+			);
+			path = RunnerTests;
+			sourceTree = "<group>";
+		};
+		9740EEB11CF90186004384FC /* Flutter */ = {
+			isa = PBXGroup;
+			children = (
+				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+				9740EEB21CF90195004384FC /* Debug.xcconfig */,
+				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+				9740EEB31CF90195004384FC /* Generated.xcconfig */,
+			);
+			name = Flutter;
+			sourceTree = "<group>";
+		};
+		97C146E51CF9000F007C117D = {
+			isa = PBXGroup;
+			children = (
+				9740EEB11CF90186004384FC /* Flutter */,
+				97C146F01CF9000F007C117D /* Runner */,
+				97C146EF1CF9000F007C117D /* Products */,
+				331C8082294A63A400263BE5 /* RunnerTests */,
+			);
+			sourceTree = "<group>";
+		};
+		97C146EF1CF9000F007C117D /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				97C146EE1CF9000F007C117D /* Runner.app */,
+				331C8081294A63A400263BE5 /* RunnerTests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		97C146F01CF9000F007C117D /* Runner */ = {
+			isa = PBXGroup;
+			children = (
+				97C146FA1CF9000F007C117D /* Main.storyboard */,
+				97C146FD1CF9000F007C117D /* Assets.xcassets */,
+				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+				97C147021CF9000F007C117D /* Info.plist */,
+				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+				74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+				74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+			);
+			path = Runner;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		331C8080294A63A400263BE5 /* RunnerTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+			buildPhases = (
+				331C807D294A63A400263BE5 /* Sources */,
+				331C807F294A63A400263BE5 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				331C8086294A63A400263BE5 /* PBXTargetDependency */,
+			);
+			name = RunnerTests;
+			productName = RunnerTests;
+			productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+		97C146ED1CF9000F007C117D /* Runner */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+			buildPhases = (
+				9740EEB61CF901F6004384FC /* Run Script */,
+				97C146EA1CF9000F007C117D /* Sources */,
+				97C146EB1CF9000F007C117D /* Frameworks */,
+				97C146EC1CF9000F007C117D /* Resources */,
+				9705A1C41CF9048500538489 /* Embed Frameworks */,
+				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Runner;
+			productName = Runner;
+			productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		97C146E61CF9000F007C117D /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				BuildIndependentTargetsInParallel = YES;
+				LastUpgradeCheck = 1510;
+				ORGANIZATIONNAME = "";
+				TargetAttributes = {
+					331C8080294A63A400263BE5 = {
+						CreatedOnToolsVersion = 14.0;
+						TestTargetID = 97C146ED1CF9000F007C117D;
+					};
+					97C146ED1CF9000F007C117D = {
+						CreatedOnToolsVersion = 7.3.1;
+						LastSwiftMigration = 1100;
+					};
+				};
+			};
+			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 97C146E51CF9000F007C117D;
+			productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				97C146ED1CF9000F007C117D /* Runner */,
+				331C8080294A63A400263BE5 /* RunnerTests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		331C807F294A63A400263BE5 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		97C146EC1CF9000F007C117D /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+			isa = PBXShellScriptBuildPhase;
+			alwaysOutOfDate = 1;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+				"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+			);
+			name = "Thin Binary";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+		};
+		9740EEB61CF901F6004384FC /* Run Script */ = {
+			isa = PBXShellScriptBuildPhase;
+			alwaysOutOfDate = 1;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Run Script";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		331C807D294A63A400263BE5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		97C146EA1CF9000F007C117D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 97C146ED1CF9000F007C117D /* Runner */;
+			targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				97C146FB1CF9000F007C117D /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				97C147001CF9000F007C117D /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		249021D3217E4FDB00AE95B9 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				SUPPORTED_PLATFORMS = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Profile;
+		};
+		249021D4217E4FDB00AE95B9 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				ENABLE_BITCODE = NO;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Profile;
+		};
+		331C8088294A63A400263BE5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+			};
+			name = Debug;
+		};
+		331C8089294A63A400263BE5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+			};
+			name = Release;
+		};
+		331C808A294A63A400263BE5 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+			};
+			name = Profile;
+		};
+		97C147031CF9000F007C117D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		97C147041CF9000F007C117D /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				SUPPORTED_PLATFORMS = iphoneos;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		97C147061CF9000F007C117D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				ENABLE_BITCODE = NO;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Debug;
+		};
+		97C147071CF9000F007C117D /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				ENABLE_BITCODE = NO;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				331C8088294A63A400263BE5 /* Debug */,
+				331C8089294A63A400263BE5 /* Release */,
+				331C808A294A63A400263BE5 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				97C147031CF9000F007C117D /* Debug */,
+				97C147041CF9000F007C117D /* Release */,
+				249021D3217E4FDB00AE95B9 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				97C147061CF9000F007C117D /* Debug */,
+				97C147071CF9000F007C117D /* Release */,
+				249021D4217E4FDB00AE95B9 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:">
+   </FileRef>
+</Workspace>
diff --git a/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>PreviewsEnabled</key>
+	<false/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/TDDE43/labb2/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..8e3ca5d
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1510"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+               BuildableName = "Runner.app"
+               BlueprintName = "Runner"
+               ReferencedContainer = "container:Runner.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+            BuildableName = "Runner.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <Testables>
+         <TestableReference
+            skipped = "NO"
+            parallelizable = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "331C8080294A63A400263BE5"
+               BuildableName = "RunnerTests.xctest"
+               BlueprintName = "RunnerTests"
+               ReferencedContainer = "container:Runner.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+            BuildableName = "Runner.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Profile"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+            BuildableName = "Runner.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/TDDE43/labb2/ios/Runner.xcworkspace/contents.xcworkspacedata b/TDDE43/labb2/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1d526a1
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:Runner.xcodeproj">
+   </FileRef>
+</Workspace>
diff --git a/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>PreviewsEnabled</key>
+	<false/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Runner/AppDelegate.swift b/TDDE43/labb2/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..6266644
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import Flutter
+import UIKit
+
+@main
+@objc class AppDelegate: FlutterAppDelegate {
+  override func application(
+    _ application: UIApplication,
+    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+  ) -> Bool {
+    GeneratedPluginRegistrant.register(with: self)
+    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+  }
+}
diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+  "images" : [
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-20x20@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-20x20@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-29x29@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-29x29@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-29x29@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-40x40@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-40x40@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-60x60@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-App-60x60@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-20x20@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-20x20@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-29x29@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-29x29@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-40x40@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-40x40@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-76x76@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-76x76@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "Icon-App-83.5x83.5@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "1024x1024",
+      "idiom" : "ios-marketing",
+      "filename" : "Icon-App-1024x1024@1x.png",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332
GIT binary patch
literal 10932
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
QlAxuUp00i_>zopr0K8b=b^rhX

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..7353c41ecf9ca08017312dc233d9830079b50717
GIT binary patch
literal 295
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4rT@hhF#%r?HL#tasqrpT>t<7A9D1^uYdo)
z|M|}tKKsk>|9v-q-Td@-#@*lDH-5EW`xVx|ck=Dun%lnZzw+$;uYV7|{`>yx&%T#`
zTCV<j|Mh3-g`eTaf7tB(uCe*^i|_v~zW;md&EJpTer25b>3itMfospaXP=IqbwD6@
zDPzzip<9;X3=9lqo-U3d5|`&rILX&+z{6^2n0tA`hWFNg{@V-13-F02^evt^FXuh)
zqioI{pPd<gSif`bYiBII^f+KT=e>!OAH8$?v)QG6$`(O>hSVxQ<BL7lO5aHAUt7Yu
zEm<V$dhw$ZD^`SuOfT1wUUW)!w#Jd{+y2KSyyQ19e?7p`ntQ?R90LObgQu&X%Q~lo
FCIG0Nnu!1a

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017
GIT binary patch
literal 406
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4rT@hhTRGt@eB+MT>(BJuK)l44>|gSF?_b>
zwr?MP{mVP|^ZECG7vKLax$yJ*-~WlHet!D>|IN>T*=K)lIQ^jZ@~?Ye{(b)a|LvEb
z0Y`rP`S(BO#1F%r-yXdFthWBGQTaOk(zO$A{%XGZ>(QGprd1nM@>Vc<G(P?I@65Zu
z*Wdr1d+)dN{_mc9J{oNKc<b4RYfs+u=C0<9nZg~}$sOJnwqnOc1_p-Xo-U3d7N_4%
z@Dyq?5MecD<do{<;4-o}U-kcW=CUG3)k5E!uh)HFZ7*T3V)%wBj>S~)W7Xv|RU5C*
z4t{O;f8N&}_5C+?Px*80;D6b3eMw0P|M;#gk<w#JlBu=6A((aP$izj~UB@bx-jdD>
zx@(v(e(d({O*>zm_z*O6Wr4j%SwPR!NVNm(*@j`u-h7ytc=jp7AC47!Ud63vN~@W4
zk9lFKoRQ+XxagJud84C0HTRxRdr`H|an>x>GuioP5(3lB4!hnxQ^36V3Geh@-1Dxk
T&il&1z`)??>gTe~DWM4f7<1Pq

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae
GIT binary patch
literal 450
zcmeAS@N?(olHy`uVBq!ia0y~yV6XvU4rY*ulBNR#14B!IPl)UP|Nldd{?Od^jWK+7
z_^}_6$A7&2`ESXC-;cljn{xa2-OvA`C+~mt<KM%t|6)%3c>4X{jZc3$W9B8C{Hed=
z8<T(My)XYRKYGU#H~;tF|9*#my#Dn4&Wn$XAyb)c)4u%vfARg_Gw=Qe9{KU;%@@^G
z&tJU%roR52+UghSvk%8i-p>_2k<Gi7(Wy*AuwI6Nf#Ij8i(`n#@wb<6@--O<I9!Yp
z+Zbf#Sm4N7{`dd?&1_EXGp6v=D!9B;KIwT|Q#CmF{u@i3!;$%F#xvWVT4X!EUcBb^
zroOhXrr*w(>PWxn6Pj~%=4X!F-+NASyf5FAZxGq=O!5^k+lS~S7VV#{pC1U0k_eAF
zuX?KD_kORa=N1$CWGvF-&NxWE?3vyBRr9XNl}WExZ3&HbTX|*TT9=^kZ#xzRx$7M)
z5!!ZfV*j>M*0R`*=`%BhLwcI#MPG_O?pERWYQeo9ruU@XcD-JjuiyAPBk}yt=m&PQ
zIA<Ss3yn&;F1FgN^~TKgtWrMh0n??V>_2}^*4&+*^6LLD2H{SDEiagFJZ4~EVDNPH
Kb6Mw<&;$TA1m_0;

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76
GIT binary patch
literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yV2}l24rT@hhD6`#whRmmu>n3IuK)l44>|fnbK5t@
z@Y%or{ZBpp^T*%+w?6;d`1H@($A4l@{7}eQzVzYmx%YnOo%^}{`JXAbe=~;7y!P?$
z*Pp+g_J4QW_uXvQ_qN?PtCpXxTz*QX?T~2g4zbb|j3Lt)JsX>Dzf@&lV5snPaSYKo
zfA-u>z7_)xhrng260+ZGzyG(t93(6({9^Sz^-01^A0|DrpT4+9{++jyo1%{2kqc=b
zo*DCBJYRnJ*P%Q9ns>Y;JzezDj)XbsIUTqs(Jtu`m>$FBl(s|Cab3xdkj`_j<07ZF
ppWQXd?cvEPwbtX41?Ao{q_1Z2;nvxn!@$76;OXk;vd$@?2>{PTh06c{

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182
GIT binary patch
literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yV6XyV4rT@hhHI(2q!<_&rUm$fxc>kDKji2S#_-vi
z+rG`a_xsT6zZqwKvP8~3`S$PDXMff|`7`tGZ_h(Nu6_J_{{7#nw|_GRPd@hM@9r0W
z9)10H`NQAdo4<5+d^>yZ&F)K2Zhii@<N2R;kN+%x_<PZV-yPR~MI8IF_sY|)=N{Fp
zI90UhghbUEM!#+b$C6h+{_T44=klX>#fM*(E;%XDen_%)pG4yh@ro6UE>#SM;nKc$
z`xqD)K6|=2hIkx*d+9k}lYvOv!>U&fOCKHB>mc}j*Z<kUZC_lJo-qh6-ed1MZ_8h%
z)4xxfrB3mixRq(u7s<$@n;a*;y-_sfp!M;HZAK9uigRZkblO@Xc4>d@!a^%<&5i#n
zCKfF86I9jU=KQnrT$~y2$zwKNkJS9Pi$-J#3Pj$mPJcM}i0H+7>k#Mdz1t32i=GQ@
zD%tiab@lP3Q;jzDZGRif7M9%7cE^9I*TJ1zO1omd@5njsQM%OTKttNrb{n&Wm-<WJ
zWnN`z&^>!jCiA8qYje)|>)qN5lZ4*q+~oVBQ@EP-#ER&*jILX}Yu+g|nhNi^o=~~}
bK5y&<-lE%Whh{M_Ffe$!`njxgN@xNAiC*)Y

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..321773cd857a8a0f0c9c7d3dc3f5ff4fb298dc10
GIT binary patch
literal 704
zcmeAS@N?(olHy`uVBq!ia0y~yU<e0c4rT@h1~)OyI0goW?EyX^uK)l44>|fnbK5t@
z@Y%or{r~y*fB3N<p+|qzU-?yY`PYYE|GxbAEt9#FIdaaoKmR}f{y*#P@2=~={{H*F
z`^BI2PySS1`pFnJtNq%qpd&w~-1^NJ(7WQ%@0M%7Qf407{Opf!*G|UZsSED^?z{QR
zV)u8w9pA(&S2KFIGCCCPc>c#~&-be3r%RWdlx#l~KlQ+;U;oT^e=l5gJhXq0MAI(D
z&>0NIQD1)lzy0~&q6fdb4&9f@T*l;4$6yl6Xb`Nr)u4cZf$@l^i(^Q{;kQ?^gPR;g
zjulRc6*pPO#u2r$(tESc?(5(G$277^%Vce^HM{lZ^R$`v`z6~JpE!B)q~hAOjisFh
zQ|FmwwQh_Hj;ZF^wDsQ99c64=Z{=-iR9%<ryjE{rsrQz?9n+>{*cR$GMwKN*wfM7b
zHRXR;?r`zY)XcSeubx{Fw!N%Kf|*74%r%qj{PPu^+pbSZkD2$e`SQD0J?T+S4+Z!Z
z|6b9&HTI#gU)uvo?$w3zb(d~^m}?fgYVGNL){oa6b}%cM+GWhX=1-6CY)9Qdt^OxR
zqL#^;Etr;9TExaPuQ01wYxDNKsWUB33(f7!*lAIJ%y(_w#gpOE4$+}!&RcwR`}(WY
zE@$@sU4qQVzUbeo*cjn5d)qF*Wmnxj%>=nKEG=uB=b7xBk=^RHC1UowJ%_g@8SnL-
z&^~diP0vErnbX>xU2B#x@0xykTGNI^L+PL95)Xebm=OE>80W4ZWtYC!hT0zHn9X>8
zpUZ5$z8Nj^Z+<Kh`g(nzRJ-BP$GexzPT6?G#Aj3f`pYjCcd0Eq=r%j-<B?~<SDuIZ
zeDq><7To@fO+TsY?$nRvNmHU1>MW?}RBB6Pex7q~et%bVKu^E>0})Hho%K7*8M`#J
Vrpz(l%D}+D;OXk;vd$@?2>@$NY7PJZ

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017
GIT binary patch
literal 406
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4rT@hhTRGt@eB+MT>(BJuK)l44>|gSF?_b>
zwr?MP{mVP|^ZECG7vKLax$yJ*-~WlHet!D>|IN>T*=K)lIQ^jZ@~?Ye{(b)a|LvEb
z0Y`rP`S(BO#1F%r-yXdFthWBGQTaOk(zO$A{%XGZ>(QGprd1nM@>Vc<G(P?I@65Zu
z*Wdr1d+)dN{_mc9J{oNKc<b4RYfs+u=C0<9nZg~}$sOJnwqnOc1_p-Xo-U3d7N_4%
z@Dyq?5MecD<do{<;4-o}U-kcW=CUG3)k5E!uh)HFZ7*T3V)%wBj>S~)W7Xv|RU5C*
z4t{O;f8N&}_5C+?Px*80;D6b3eMw0P|M;#gk<w#JlBu=6A((aP$izj~UB@bx-jdD>
zx@(v(e(d({O*>zm_z*O6Wr4j%SwPR!NVNm(*@j`u-h7ytc=jp7AC47!Ud63vN~@W4
zk9lFKoRQ+XxagJud84C0HTRxRdr`H|an>x>GuioP5(3lB4!hnxQ^36V3Geh@-1Dxk
T&il&1z`)??>gTe~DWM4f7<1Pq

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725
GIT binary patch
literal 586
zcmeAS@N?(olHy`uVBq!ia0y~yU<d$V4rT@hhMnh`<})xbtO)Q4asB`Qf5_1vn%llH
zhR^={?|;~_AG==si8%hF_VTYk|NdY9^j9il>E@?@xZ~!3`}6<6t3NR(eq8zR_vG8Z
zjN!8uAG+;!;JeoLZ?As*JNo8t>4l#~=YMWE{b0qz-wJcCGlow4@caMM@Bb1{{?Oa;
zjX88Oqkj*xMf`>*e;Tj+s<`+w<MhuxSDwz;b%i5(F0*fI+qGXRi|#8<JICl=$7GxR
z<M01V58qDRc~v=Y1*3EM?f0i9GB7a4db&7<L>zuQ?PgfBfrx8x$CQvpt>#;t-U~ym
zBcA{NZ@hR-s={_X&GvS?l==g4&(rp|Nb<A=r$5MA^G@Nu@BZ-TZ<>_%c|R(aICOQw
z50)p3zZ<=X+ob<sS^LYxsu^<2+Fur0*~YP3X<j*8UM;08|5CAR*ZY67{`Oz~zu0}3
z((hS6B>4Hh3mhqby*bUIz3PYcqwIfExqk)lbCrAWZ+GR7a{D?%{o_U349Tm>d68jv
zR<$2m`K4lmiszkG?Mgr18cx}DX+;$S$IkV6Q*0T6e%6&f=J+_(R>bh_MVYIMcLjcP
z;4oT!?y_=wOU<M!HJ5LyB}q(Pvn$__d+){rW_sGcw{;tA*=x8f@aL!eg>PMDjP*8O
z`u=Io>B+g7Z<d_dH{p={e3P<(v?!7JJFiTAkoxUt*t*~Ysn?eJGEVO_GnJ2XTa&v<
zaPO=fmeU;`!jDq#y*+n&PIk>6Lms~bw&sPR@y{3(UKgy1-p#<kz~JfX=d#Wzp$Py&
CXEa&>

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790
GIT binary patch
literal 862
zcmeAS@N?(olHy`uVBq!ia0y~yV5k6L4rT@h2EJX#9xyO4JP+^*asB`Qf5_1v4B@ji
zw|)Eb?|;OxAHV<p_dNLh-@pHE2fl|M{qghfzoPR$8A4}HxcSTH(08`zxnF<(3pnya
zZ^!qG58g0%PEy<QC8%fD?>~PpefT@|_OGOqKfe9>_vP0=-Gl$NwtbV?_%;9BPqSU$
z7=x!uZTxChwVuIy%9LBb$}j%B^!{)8g`Y{Meuy>iW%Oxhuq%+LT*c_$%jj0eXc+na
z#~%jA3I=)Wo*Ta;8@34)FJ%mzz~I%)V4lLD<$LAB-}CSOo_h0V?)^VaSAM3Q{*ip@
zhxzXBvYWn2ZTNEa@w<x;-yXgBBC2f-NBm;5+?iXooRk?Dn2bDK978hhy}gkgd@Dep
z;i2g~6?F$L#)}cIOIAjCE#%7D`?YTWpa1tS+gi-coqaSc;ry0!`{X|<8rW<;={JKj
zW7e|FTd`-(@u=+n_?$J9c|z*VvTeP8YYt4l>Nz!q@w-CJ?x#{b+t}WHSZqG^It%xX
z?~~MSdtEwx=eeGw`I>^(!nIm&))lN=y>8d5Rjb$SGVqNpy&4)0BEFy7b?wX<u3hHm
zb5-xYIhwYA|Ig@Jo3DRT+1D(H_I{OfwtV@uD9i2Q=PT|{xwHT8(rpQTkN21Te6Px$
zz<Wn(-L*#rhT_jnKd+fqDbwD)Gw)vI6ON~?G28~r|7h^l-ieR<W~+bF?pxRNNb{z1
zM&G;c8`Ry~aeDWcI}tT$dG~(heRp)th?``&ee15iO+DV>zs0Y|>|Px^$-8>1&d#`b
z;>DW|>`|E=wcbYmq|>^^oBT54Cb7m$lANBRDZY7Hspqo2LMxt3I`dy&=WCk(-A!+9
zsz%<JtMdNh(<j%oJ9Icw7hb-T`ta*q^>`Pt?s+Ox+jXzmX65g=D$MniBlVoGv|MUY
z|K$VAeexzQ%Y5Le_WkCI4H^R9R3=wj+RQ&>ms&EvufOfO@b4)X_ev?&yi4de+NC~y
z@#F5phc^C8c^=p6e)v$Q+*5w*boCRv68D~}tT5Z>A<esG&ndwt_rL9D+Y$0Fb@TOQ
zmA0oWpH%<u4N0A<$!Ph5J(W4ga;L}5rf+V3`l>2Vw)$u1$lLoLd0@X^L;Q@J@#Y1Y
gvzBH455CXX<`VnX;r43{1_lNOPgg&ebxsLQ0IGJ#9smFU

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790
GIT binary patch
literal 862
zcmeAS@N?(olHy`uVBq!ia0y~yV5k6L4rT@h2EJX#9xyO4JP+^*asB`Qf5_1v4B@ji
zw|)Eb?|;OxAHV<p_dNLh-@pHE2fl|M{qghfzoPR$8A4}HxcSTH(08`zxnF<(3pnya
zZ^!qG58g0%PEy<QC8%fD?>~PpefT@|_OGOqKfe9>_vP0=-Gl$NwtbV?_%;9BPqSU$
z7=x!uZTxChwVuIy%9LBb$}j%B^!{)8g`Y{Meuy>iW%Oxhuq%+LT*c_$%jj0eXc+na
z#~%jA3I=)Wo*Ta;8@34)FJ%mzz~I%)V4lLD<$LAB-}CSOo_h0V?)^VaSAM3Q{*ip@
zhxzXBvYWn2ZTNEa@w<x;-yXgBBC2f-NBm;5+?iXooRk?Dn2bDK978hhy}gkgd@Dep
z;i2g~6?F$L#)}cIOIAjCE#%7D`?YTWpa1tS+gi-coqaSc;ry0!`{X|<8rW<;={JKj
zW7e|FTd`-(@u=+n_?$J9c|z*VvTeP8YYt4l>Nz!q@w-CJ?x#{b+t}WHSZqG^It%xX
z?~~MSdtEwx=eeGw`I>^(!nIm&))lN=y>8d5Rjb$SGVqNpy&4)0BEFy7b?wX<u3hHm
zb5-xYIhwYA|Ig@Jo3DRT+1D(H_I{OfwtV@uD9i2Q=PT|{xwHT8(rpQTkN21Te6Px$
zz<Wn(-L*#rhT_jnKd+fqDbwD)Gw)vI6ON~?G28~r|7h^l-ieR<W~+bF?pxRNNb{z1
zM&G;c8`Ry~aeDWcI}tT$dG~(heRp)th?``&ee15iO+DV>zs0Y|>|Px^$-8>1&d#`b
z;>DW|>`|E=wcbYmq|>^^oBT54Cb7m$lANBRDZY7Hspqo2LMxt3I`dy&=WCk(-A!+9
zsz%<JtMdNh(<j%oJ9Icw7hb-T`ta*q^>`Pt?s+Ox+jXzmX65g=D$MniBlVoGv|MUY
z|K$VAeexzQ%Y5Le_WkCI4H^R9R3=wj+RQ&>ms&EvufOfO@b4)X_ev?&yi4de+NC~y
z@#F5phc^C8c^=p6e)v$Q+*5w*boCRv68D~}tT5Z>A<esG&ndwt_rL9D+Y$0Fb@TOQ
zmA0oWpH%<u4N0A<$!Ph5J(W4ga;L}5rf+V3`l>2Vw)$u1$lLoLd0@X^L;Q@J@#Y1Y
gvzBH455CXX<`VnX;r43{1_lNOPgg&ebxsLQ0IGJ#9smFU

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90
GIT binary patch
literal 1674
zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Lx+13|zwB7#J8B`2u`GT>t<7A9D1E=C*H)
z;j=@J{`mXv|F6IQgO2=&IQHZBzyE*!{&PL>{onup^Y8s)2%F_~=sR=d9G^qq{SW`p
z+V+jXXNvfSZ@>Tib#L9a>e26_^FJ8^r@J5ce&+2ThTxeDp))Rh_{$zWx8d?njm@7l
zHoVu`^G|2{w-pb6&${#L$M3(V-u$Uwb>`~FziW=&U2)_NW5`qn&q<SS{nFk3jWM8~
z(YK4qtC>MB`24#+=idD}_x8_(o4*)?CNVfwGdUJ>IwmuiCapSphbv|xvu7=Xbq+(+
zf~60BGss#!`Sx%1qu-?$e)e7evGV90uJF#RGe0f%eAnCl&8}fHgOaoU{{Kf_{h4z6
zSM|l8cb<JvUG;3{u50b<&sWXc_hrUwMg|5}b59q?kcwMxZ&wxz8A`ByXt_J#u4>G>
zMNLPAkFL)0w*6=q_5Sy-fAL4mPb$6IG<(aY!_sQ!<==iucxL{-<w>T-k>jX<-SyQp
z#R{dQBx$z^Ek~a`*?c$o*qe7|@e^h&;P5_iwBSPS>`QO={XN6d7ufuh<!xI`YmwJe
zcF}eAA9NBIccxZ)7{7O0Xeg*;ti1i_!VanC%yT_=n2gOQ70%3Gw{qrUBlWQCX7^Kb
z1b7k+cjhK86FizEmbHHKEMr*{&aP&GGhhGCFf>ukT^74|rjl_yi}BVQujiO@Z+ewc
z{Nl=-^u6a+<tyAYKOhr5%W$q{QGMCjH+kYqvv0hPG1+~?Rdb%6R?cn>_p7e2&y@wf
zidf%Vd|~H5p1tSN)*ntSTX%hD#<$olo1W}mQM~uuRlQw(d(X}Oubnjay=!4<;O^?c
zt_|J0uD$lV;QYEu|J5SN!1cxFbnd)a)cJl<>c`kCOZ%2o-<@^u>8=X>S4rYiYneN5
z?sv=Q=(_&GHAmd7#Gphatv6BIl-tOk=l%vyBf0ec=)Ze4YOdC7F26HluX**adSAgi
z-G{=(rE-gR^?q~x8o=^>QK!je4HMNz7gG-%`E=&Zf%O+(TedI!dB@&Ge{w}-n&OG&
z&1HdU>B}xoI{S&UcAsFY+oywPV`iT;I_zM(Kyka_^XqOYhR^eMq!_DA%Ze+L_>^S4
zRP5R0pIZa>T3vU2d)DTa+pU<!Uy>`n7wboDpJzPdwdjn-15;*2mjy07o0yTA=CV|(
z^h9pe+`Tiyv)I}uRC~-jcyX4g%gUWU<3eUX49~sZrV#47GO^}Z-14(FPqgQ4_FHpR
z?AhgfW$EG!gYYHSVolQRf}~yURFq{GKTV7}+g&}^Y<cEd!JA*Kns;)2J+wJ`cJ_j2
z>~9x^t~`B4*<kt7th^VCrmoOjaaidyFT?36YbJ2*S`iv-I{WLI)$bR5o7?Zk`mDSw
z+AKRRP~3F&ZPx0$cVc#|Tm5R$v&|bTAHLt~m+_f*!?UZ;;=*f9rf+0TOPIF$=c+Sa
zbIf1w&6_w&dB*0XXJ>x-Xa+1c_&<50Q9ncEg1Eo80#25z7>KXFc(yW6FYtBT^DfI^
zWs~IzW-Ch9A5QG+O<OBh!1wIx{%-x%{_$64CI!r2xix+QOZ!ZQ$4@6->98w)_hxbX
zlJ?}n6;BIg=e4DM-g`JaVC8$6m3IwhH7Cknk%+6A=DFoof*hZ<^xyV~D*-lJZYAVx
zwL1JyJ3zTYc|#EQQa!_buaehS-2Q7xeh*mb&id^7<+Hv9-lg@2S+|<l@2n1A%)Iv9
zSB|!nS0=F;_ioKvxK--v=8sk@ik}_l-?qJe@x+y#Vf~lpR2l_ltmON!@^Ssugn94o
zRR2+rTK)TmUrE6Ev){{?Nmd0f-de@HHfol=O@$Hbmv3S-R4do*a}o-9Wiof>{PzsM
z?y;QlvI#F2SmkcK*~Ncbn^0F=taR$Lx$2X5JGxtb&dTxqdd7XL*|OUQFZ0<jimx^_
zy}Ij9^t0Q4`7e9EetFrUTYP1q=~W9weR+Eh2OE~6#7)b(mfH5R{=CWGATvcRdsW1(
z%QGf;UyqVyj+*}>BJJ#n856zR&t`@EmAb-|COc)-#jWZA!Ylb?g1;}>^>|v;8|S<A
zt<Q6Oe6ptaZjI^Py3(t(j{o4jpJFRNmfJ1Oi(Jt@Bkiv8ryLvBrMrTsJqY2x!ZY=j
z+Vyp{$2U2JRR8+;Z-whU`M+KTA$9?``}2FA^p>*7c>13)dGvmM%KVlI_6ZU9cxG%A
kTD{<=Z4D~;^po}1tFt@5&(mDRz`(%Z>FVdQ&MBb@0GqsRX#fBK

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..84ac32ae7d989f82d5e46a60405adcc8279e8001
GIT binary patch
literal 762
zcmeAS@N?(olHy`uVBq!ia0y~yVDJH94rT@hh7X<#B^ekP?gjXSxc>kDKji3-KmYzm
z9Q&cU?HgnG?B9R?HD3Ao^Y8y3zyJCl{*id{$BXZO!;bxMJMf(?YOeR8?_LMLyYBz~
z>c_uNzy4kQ^e^W4j}=GnFoey_KJ!y=`!@!^sUb(c$4uJC6fu{<W73_^f5kU^WeA-5
z@8AE6@Bdov{-(YEf7ykf20OkfZvLjS<*UY~Pp9s@VhreGa<6;$<FCrR>pELMD=)go
z;5nJmI)l+5`0MX~H$MJV+5NZX($BQhKNx*GAAkLO=Ix*3um3!J{psrCcNXiPt1fwP
z;>x`R`)|(NeJyUv{)CCU{W^CrIP_?R%>Ki`z<Ax$#W5t}@Z0N|!H*mS8Xl%4r4?In
zcAik0eRfypb-5U&d*9#w|L?r*;|rOtqde1sRr3#uuc}zJyOICEn#ic5ULQjaHhEo=
zYQJ|XY2Vz%at4vvb@l~Ct`Fz+&RFu4ZIPSgJ@bH#J$pp8BEL30&CF_zx^w!{kGRIR
z?^UVpzWM9F&E+up>-VBU|KG#!kEGuHVBD`5rWd+lL6BCZe$9rTtxoN|<tE>*?X|d3
zy=dm?(reNOjzyndr@YE~QR>?EiOyFK{bk*B??9Q-p{{A^9IGPZ7wtUOqxNc1mHrm4
z)9e|M@9Sr*uylJFS0t8pa8sky+m7`GlHDeb#gQA{R{3gjKfZbQ#HPjfSEqLOtDo9j
zX_@`_{i+#vlypx;7Z<Pa-KU(p>u<tGb?wVfbb2nv<Svmj_2gbDGCw6XO83)=Srxn5
zPL!$Su2j!-<kE|}lJI>E`?fFflOFflzZHLd|5oL5wg&HP?c6K#)}Hk<`lGo%a>>Hd
z3m^Z+zlusL<&V-W=8}r~yEadKW|vvS>wW=e?^x+K-`p4HT{7A%veos@#h&DrE2h$V
zXKoyqUB2Y+cj5i1b)si`&RTHiTkK&=;JWp}ech9H)3h^|PruI{JJ&-$s#bZe=Hi=6
hCC<$HDtVWg>A&sfRbjFV85kHCJYD@<);T3K0RZc2mlps4

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..8953cba09064923c5daf2d37e7c3c836ccdd794b
GIT binary patch
literal 1226
zcmeAS@N?(olHy`uVBq!ia0y~yV3+~I9Lx+14Eiz`gc%qZIRbn_T>t<7A9D1E=C*H)
z;j@E}{`mFxf5fpLfByad`|sbs|Nj}nW`!O7;eF`)^KX9>PyX;c_<i2pUw{7obKU>_
z_n*J)(Q_F*C$U7$dGhU_#@25P-cvR`{j>eqAGZVF!~6IA{QcLuW~1)*Z?VUJh;R6&
zy5%cl==8eFKb5z9)7bLG|L}K*hRqk>|Iyy_$7ts_#-PcJ0sVSAzA<_>F*sKpd;RCw
zt3Sp&zX|3nVz4V=G))kQY-G?2(%$p$*z4bne%%aKS$97F-TUHC>Zu=$J{{kG{{H*p
zd(!lS0;$sl;(Himtr?`vBG3JQ_w(P0*MC+#{M~!wSLMZ@FW!Hhvi(YM?=Fk(U0Q{!
z?2G3!*!M7mwlgR?|Mv2VU|?Xb^>lFzskrra`s*MmM}gMr#Kba|WU&B4Ay-4T#R^AU
zj#OM%c~<9t@4v5+a!Az8GXh-}m$T|a|7~3GW7YYE+Zo#uCBUdd$@s9q17^)c4WT>A
z41DqtGwb)Wz7rIBC%!D_3HMIs0=Z=!Q^L<VO*kv>>%`L6x#SzynU<S>_IjRZ@V=m}
z@_cF0niS5emz9EFghGl{Ua9VgzdkXU=iGsN;T+$(U;PsjJo{exs;yw)+v{iV3BUPz
zy!*wx1-JAU%vSc)Uvyq^)$i{28T%HqKd_$lUHtyV8u!~foh^gDD(zHX@vZy)i|CIs
zi+1h*(YJ4N`4)+;`PNYl%q}LM<|;pUyJqUio6RSj_Zxjsk$%Qxd{e=m|Ipoe4(ko%
zThf{eyed5<*g2J}kDgjRZ}T4I@ALO8bDJM-oBf&V*mowzkH@{rT-HCZ+IxXVPW8;1
zxNkBW;~&p<J=GJk|5wVSv~M!S*C#AKs`KZ#%-xE_S*<x9E8@e?9=k8hwtnN~B^&nh
z*lw=cyW0B2^u+8Nd*)qRwNs(w^7<t+Z)UIFGwW7>{QG6`Crx@kYpo9p-kN^uOkm&1
zd6IiitqkE!e|Cy{JKMdBocbok7uLI+pZ4#X{@bMoO=Q1hE1W%aalv)&FHXkpmXFRD
z$@BHZWjxbyH@RG&rvGN9wf-N~>{sDMX)_ixFS*K{{_G65=R3}3$!9M_=1f1x^Sy=n
z%wGR*Iv*x27STE`Ri&CPc17Fnnd$?BtFxzHd~<doyT0bbjLO50zV6ud>#K<00ZS&M
z@6*iB#;yGN{B}3@28MHj0=l~4r_<JdJM$&!VtZswV%oP^Gc+<cD_N*7K5OP1r!9Qy
z%;hr|bZ)K}Reg5d=ey3!s{u*>&a&-|duKk|*4WARa@^d<d-p|H`7TXA^*VHUsi%(b
z;`CdqZ|7~TO1gEXeAd-{*WaC6|MzX#>mQenaOCj5{km)M(Qi_FD>e5l-+A-%t1|1`
zYnO#N?aA-GJNI*5`TnaH^un*$e9x(UzUOk@vh+(<E=S7GKe=?iZ_}lyjFt*x?L#lW
z?-VkNb6k?{IwAY=($!HWRbee2GncCSB>lS-v%}zZy638NTVqwX4e8rv{;baP(zxXR
z`Pj_LJ5nxZm&}S>b0$q^%Cl<+HcBqDOke!*@on{vgOV9#Mc<w-?A^Teyg+01Bf+@G
w({@PkGukLB_x3ztcokpU0L?LZ()$^|b}yRos%l0G0|Nttr>mdKI;Vst06J}e(f|Me

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8
GIT binary patch
literal 1418
zcmeAS@N?(olHy`uVBq!ia0y~yU|0^q9Lx+149+L^++$#1_#EI9;`;yp|B$0UG`D?Y
z44)l*<j3EC|Ns2`_v`Qfh+{u~|N9?)?1$gs?=JhlGk8sA44c_?{a3)@A1qOGFTDH1
z95LtL|NrlP{yX~mkJrKPaVLIAZ1`HV@c8p@f0IuAXj^;E?Z9`v9p66v`gigDpU!K)
z);<1hzxTWLzW?f*KFzxGOLfavMz^|>^FJ9wruiNI(XswKW6)$KzfNY8aK?asmBsg%
zy<5Ki{>$i8#%PzXy8JPdWlG_~V~o1~55N3nP;~h6``@b{|D-m4Q(f_l!Ds5e7k?_Q
z{+W08SImhYGjDv&JNv`$(2qOMJ_yggGiUGht_>Gj)}GItb2x40AqLy-#pN|e85mfC
zJY5_^DsH{KlN~H<D8lwY*zD%roQ=22w#G4X$AwK0%g$zX{aAPX|Nm^C?b_`#r=%2G
zRST)DU#xt1ditb2?JQ{x6HtJb(aMQ3E0h<8u}pCDu&63OJgfZpmJ2qGdAIWao{r1T
zpQryS|7YOTZ0qKhE1D`Lk==#Go4ztmFs{^2J(lwFSZGoj&-Y60$7-tSFLxz*E$H@m
z<MWJVbM$0M=eGey!V9`Pp8NXip2^ub%hE(X<&)GI#=AF<EL(nU8UKoNYDRxo1W0(S
zPQ9i5<g~-0yj@pjuTxh|uQHk-6wem)y@*%k(lT|^S?4xS@~r)O!+WNs<j<RHE|xrV
zxV(2~)sN4ncc(WV(L3+3Xl=mSZkeCUs*AqvC}BR?xa{}FS#f(>vkdO8n4q7p`0N+2
z=AKrCJ+0?<R`KkS^!Rkhf7=JKqHQnd8T{Q@6*1#Zf8&$$yf0Uo-`6dxRVY-~Dw$cY
zH|4aH;MskxJMMj%#dI;_@>lr~Z-MJ;Z|>U6`g7H+dw=I|4`7OZe|h$_JE`;g9fRtM
z)f%t+U;AmA998r9@x`tgkD5deU9H)aSo`wp`+JeR!Yp^vOK03#W*_d8cdvEQ%rz~V
z4<*d^zKhn#pTk+ncf0o7kE3isM^lci>F7M1TkY()HeYdWW?9<mq@;-=CXb(Sz4S>-
zDN0$#GiyHo)92=UJ2$UfpD|yzHS5ftlxwReuw*cF`FLI}k=43-&G=a9vU^{yr(Wiq
z5utYMY&gG+$61rRe6Gu`gc(2PHIHrI)HC~@(<-OyX7)x>%lNL&?mH8mZ7q55=9Q@P
zq9OTKM&{S$-lxnFHvB4j^?BOS7-tPm;e|c=JF66m8JDIcy*6Gm;h0MXGxJG~quW8O
z$G+F~RcrUYJmI3T{ANi@oxyrFC+Qtk5(}={S6w!|@#|T*aH5j<v#Tx|jKaz3N>ds-
zHyV7smab>)|6HSdPUO~mZ+-1stqx4F3T|Ka`ic*udyL`P${nBoai|2SHRf7>KDhn1
zLb5_{1ON7%Gusb8Qs;<T!BA0>oqPF=%=Yznl-s$KLky2UE)&_wSX<0>b%y>i*WG&?
zj{P{dykkn1tM8du*0-SnrxZfc#g4w4Be|1juCe;>-%EoXWi1wO(wTg2jt@Vdn4kLs
zrQ_F>i>+k&re4-uv0}lA8nfA=kAs&R2SoO&r}U|%&rvlgTI<tgX*Fk>AM4r~6P4HY
zi;B!#pLQy8#aErF?;MJAYER1ard>|jQP1}BoMh~jl__#^eQJmATAq!3(VX7C-feTz
z{_EXJ<qPNETfrsDKG)A*)~9@-Va+T*tGRyFD=*FcDB``NTu9g1>e?@h_UiCO^Vly)
z%$wJ^tJ*F3q3D*!j3K#yJAbE_Fn(R&bI)OKX6?J!*UHu=<xIC;ODwXh{KV|Q5V*nT
z+n-9#CJC(vzt`XP{v`B&@xMR+xLmCJ*M5I^ol$FrM^ZJ5Wk{fF?*(ILCj{7YD&By3
X-Nacj>(dw*7#KWV{an^LB{Ts5B8|zr

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..0bedcf2
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "LaunchImage.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "LaunchImage@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "LaunchImage@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
GIT binary patch
literal 68
zcmeAS@N?(olHy`uVBq!ia0y~yU|<Ac4i*LmhOII@ObiSR+@3CuAr*6yf1PJwU}9%v
Vnk8dc$iTqB;OXk;vd$@?2>@r242}Q*

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
GIT binary patch
literal 68
zcmeAS@N?(olHy`uVBq!ia0y~yU|<Ac4i*LmhOII@ObiSR+@3CuAr*6yf1PJwU}9%v
Vnk8dc$iTqB;OXk;vd$@?2>@r242}Q*

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
GIT binary patch
literal 68
zcmeAS@N?(olHy`uVBq!ia0y~yU|<Ac4i*LmhOII@ObiSR+@3CuAr*6yf1PJwU}9%v
Vnk8dc$iTqB;OXk;vd$@?2>@r242}Q*

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/TDDE43/labb2/ios/Runner/Base.lproj/LaunchScreen.storyboard b/TDDE43/labb2/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..f2e259c
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
+                        <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="LaunchImage" width="168" height="185"/>
+    </resources>
+</document>
diff --git a/TDDE43/labb2/ios/Runner/Base.lproj/Main.storyboard b/TDDE43/labb2/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+    </dependencies>
+    <scenes>
+        <!--Flutter View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+        </scene>
+    </scenes>
+</document>
diff --git a/TDDE43/labb2/ios/Runner/Info.plist b/TDDE43/labb2/ios/Runner/Info.plist
new file mode 100644
index 0000000..2867dee
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Info.plist
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleDisplayName</key>
+	<string>Labb2</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>labb2</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>$(FLUTTER_BUILD_NAME)</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>$(FLUTTER_BUILD_NUMBER)</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UILaunchStoryboardName</key>
+	<string>LaunchScreen</string>
+	<key>UIMainStoryboardFile</key>
+	<string>Main</string>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>CADisableMinimumFrameDurationOnPhone</key>
+	<true/>
+	<key>UIApplicationSupportsIndirectInputEvents</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/ios/Runner/Runner-Bridging-Header.h b/TDDE43/labb2/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..308a2a5
--- /dev/null
+++ b/TDDE43/labb2/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/TDDE43/labb2/ios/RunnerTests/RunnerTests.swift b/TDDE43/labb2/ios/RunnerTests/RunnerTests.swift
new file mode 100644
index 0000000..86a7c3b
--- /dev/null
+++ b/TDDE43/labb2/ios/RunnerTests/RunnerTests.swift
@@ -0,0 +1,12 @@
+import Flutter
+import UIKit
+import XCTest
+
+class RunnerTests: XCTestCase {
+
+  func testExample() {
+    // If you add code to the Runner application, consider adding tests here.
+    // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
+  }
+
+}
diff --git a/TDDE43/labb2/lib/githubservice.dart b/TDDE43/labb2/lib/githubservice.dart
new file mode 100644
index 0000000..5bd15e8
--- /dev/null
+++ b/TDDE43/labb2/lib/githubservice.dart
@@ -0,0 +1,17 @@
+import 'dart:convert';
+import 'package:http/http.dart' as http;
+
+class GitHubService {
+  final String baseUrl = 'https://api.github.com/search/repositories';
+
+  Future<List<Map<String, dynamic>>> fetchTrendingProjects(
+      String language) async {
+    final response = await http
+        .get(Uri.parse('$baseUrl?q=language:$language&sort=stars&order=desc'));
+
+    final data = json.decode(response.body);
+    List<Map<String, dynamic>> projects =
+        List<Map<String, dynamic>>.from(data['items']);
+    return projects;
+  }
+}
diff --git a/TDDE43/labb2/lib/main.dart b/TDDE43/labb2/lib/main.dart
new file mode 100644
index 0000000..c501083
--- /dev/null
+++ b/TDDE43/labb2/lib/main.dart
@@ -0,0 +1,191 @@
+import 'package:flutter/material.dart';
+import 'githubservice.dart' as gitserv;
+
+void main() {
+  runApp(MyApp());
+}
+
+class MyApp extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      title: 'GitHub Trending Projects',
+      home: LanguageSelectionPage(),
+    );
+  }
+}
+
+// Första sidan där användaren kan välja språk
+class LanguageSelectionPage extends StatefulWidget {
+  @override
+  _LanguageSelectionPageState createState() => _LanguageSelectionPageState();
+}
+
+class _LanguageSelectionPageState extends State<LanguageSelectionPage> {
+  @override
+  Widget build(BuildContext context) {
+    String? language;
+    String? language_title;
+
+    return Scaffold(
+      appBar: AppBar(
+        title: Text('Välj språk'),
+      ),
+      body: Padding(
+        padding: const EdgeInsets.all(16.0),
+        child: Column(
+          children: [
+            DropdownButtonFormField(
+              items: <String>[
+                'Java',
+                'CSS',
+                'C',
+                'C++',
+                'C#',
+                'JavaScript',
+                'TypeScript',
+                'Go',
+                'Rust',
+                'Swift',
+                'Web',
+                'PHP',
+                'Ruby',
+                'Python'
+              ].map((String value) {
+                return DropdownMenuItem<String>(
+                  value: value,
+                  child: Text(value),
+                );
+              }).toList(),
+              onChanged: (String? newValue) {
+                if (newValue == "C++") {
+                  language = "C%2B%2B";
+                  language_title = "C++";
+                } else if (newValue == "C#") {
+                  language = "C%23";
+                  language_title = "C#";
+                } else {
+                  language = newValue;
+                  language_title = newValue;
+                }
+
+                Navigator.push(
+                  context,
+                  MaterialPageRoute(
+                    builder: (context) => TrendingProjectsPage(
+                      language: language.toString(),
+                      title: language_title.toString(),
+                    ),
+                  ),
+                );
+              },
+            ),
+          ],
+        ),
+      ),
+    );
+  }
+}
+
+class _projects {}
+
+// Andra sidan som visar de trendande projekten
+class TrendingProjectsPage extends StatefulWidget {
+  final String language;
+  final String title;
+
+  TrendingProjectsPage({required this.language, required this.title});
+
+  @override
+  _TrendingProjectsPageState createState() => _TrendingProjectsPageState();
+}
+
+class _TrendingProjectsPageState extends State<TrendingProjectsPage> {
+  late Future<List<Map<String, dynamic>>> _projects;
+
+  @override
+  void initState() {
+    super.initState();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: Text('Trending Projects in ${widget.title}'),
+      ),
+      body: FutureBuilder<List<Map<String, dynamic>>>(
+        future: gitserv.GitHubService().fetchTrendingProjects(widget.language),
+        builder: (context, snapshot) {
+          /* 
+          
+          */
+          if (snapshot.connectionState == ConnectionState.waiting) {
+            return Center(
+              child: CircularProgressIndicator(),
+            );
+          }
+          /*
+
+          */
+          else if (snapshot.hasData) {
+            List<Map<String, dynamic>> projects = snapshot.data!;
+            return ListView.builder(
+              itemCount: projects.length,
+              itemBuilder: (context, index) {
+                var project = projects[index];
+                return ListTile(
+                  title: Text(project['name']),
+                  subtitle: Text(project['owner']['login']),
+                  onTap: () {
+                    // Navigera till detaljsidan för projektet
+                    Navigator.push(
+                      context,
+                      MaterialPageRoute(
+                        builder: (context) =>
+                            ProjectDetailPage(projekt: project),
+                      ),
+                    );
+                  },
+                );
+              },
+            );
+          } else {
+            return Center(
+              child: Text('No projects found.'),
+            );
+          }
+        },
+      ),
+    );
+  }
+}
+
+class ProjectDetailPage extends StatelessWidget {
+  final Map<String, dynamic> projekt;
+
+  ProjectDetailPage({required this.projekt});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: Text(projekt['name']),
+      ),
+      body: Padding(
+        padding: const EdgeInsets.all(16.0),
+        child: Column(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            Text(
+              'Description: ${projekt['description']}',
+              style: TextStyle(fontSize: 16),
+            ),
+            SizedBox(height: 16),
+            Text('Stars: ${projekt['stargazers_count']}'),
+          ],
+        ),
+      ),
+    );
+  }
+}
diff --git a/TDDE43/labb2/linux/.gitignore b/TDDE43/labb2/linux/.gitignore
new file mode 100644
index 0000000..d3896c9
--- /dev/null
+++ b/TDDE43/labb2/linux/.gitignore
@@ -0,0 +1 @@
+flutter/ephemeral
diff --git a/TDDE43/labb2/linux/CMakeLists.txt b/TDDE43/labb2/linux/CMakeLists.txt
new file mode 100644
index 0000000..a6327da
--- /dev/null
+++ b/TDDE43/labb2/linux/CMakeLists.txt
@@ -0,0 +1,145 @@
+# Project-level configuration.
+cmake_minimum_required(VERSION 3.10)
+project(runner LANGUAGES CXX)
+
+# The name of the executable created for the application. Change this to change
+# the on-disk name of your application.
+set(BINARY_NAME "labb2")
+# The unique GTK application identifier for this application. See:
+# https://wiki.gnome.org/HowDoI/ChooseApplicationID
+set(APPLICATION_ID "com.example.labb2")
+
+# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
+# versions of CMake.
+cmake_policy(SET CMP0063 NEW)
+
+# Load bundled libraries from the lib/ directory relative to the binary.
+set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
+
+# Root filesystem for cross-building.
+if(FLUTTER_TARGET_PLATFORM_SYSROOT)
+  set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
+  set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
+  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+endif()
+
+# Define build configuration options.
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+  set(CMAKE_BUILD_TYPE "Debug" CACHE
+    STRING "Flutter build mode" FORCE)
+  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+    "Debug" "Profile" "Release")
+endif()
+
+# Compilation settings that should be applied to most targets.
+#
+# Be cautious about adding new options here, as plugins use this function by
+# default. In most cases, you should add new options to specific targets instead
+# of modifying this function.
+function(APPLY_STANDARD_SETTINGS TARGET)
+  target_compile_features(${TARGET} PUBLIC cxx_std_14)
+  target_compile_options(${TARGET} PRIVATE -Wall -Werror)
+  target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
+  target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
+endfunction()
+
+# Flutter library and tool build rules.
+set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
+add_subdirectory(${FLUTTER_MANAGED_DIR})
+
+# System-level dependencies.
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
+
+add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
+
+# Define the application target. To change its name, change BINARY_NAME above,
+# not the value here, or `flutter run` will no longer work.
+#
+# Any new source files that you add to the application should be added here.
+add_executable(${BINARY_NAME}
+  "main.cc"
+  "my_application.cc"
+  "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
+)
+
+# Apply the standard set of build settings. This can be removed for applications
+# that need different build settings.
+apply_standard_settings(${BINARY_NAME})
+
+# Add dependency libraries. Add any application-specific dependencies here.
+target_link_libraries(${BINARY_NAME} PRIVATE flutter)
+target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
+
+# Run the Flutter tool portions of the build. This must not be removed.
+add_dependencies(${BINARY_NAME} flutter_assemble)
+
+# Only the install-generated bundle's copy of the executable will launch
+# correctly, since the resources must in the right relative locations. To avoid
+# people trying to run the unbundled copy, put it in a subdirectory instead of
+# the default top-level location.
+set_target_properties(${BINARY_NAME}
+  PROPERTIES
+  RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
+)
+
+
+# Generated plugin build rules, which manage building the plugins and adding
+# them to the application.
+include(flutter/generated_plugins.cmake)
+
+
+# === Installation ===
+# By default, "installing" just makes a relocatable bundle in the build
+# directory.
+set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+  set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
+endif()
+
+# Start with a clean build bundle directory every time.
+install(CODE "
+  file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
+  " COMPONENT Runtime)
+
+set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
+set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
+
+install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
+  COMPONENT Runtime)
+
+install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
+  COMPONENT Runtime)
+
+install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+
+foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
+  install(FILES "${bundled_library}"
+    DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+    COMPONENT Runtime)
+endforeach(bundled_library)
+
+# Copy the native assets provided by the build.dart from all packages.
+set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
+install(DIRECTORY "${NATIVE_ASSETS_DIR}"
+   DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+   COMPONENT Runtime)
+
+# Fully re-copy the assets directory on each build to avoid having stale files
+# from a previous install.
+set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
+install(CODE "
+  file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
+  " COMPONENT Runtime)
+install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
+  DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
+
+# Install the AOT library on non-Debug builds only.
+if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
+  install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+    COMPONENT Runtime)
+endif()
diff --git a/TDDE43/labb2/linux/flutter/CMakeLists.txt b/TDDE43/labb2/linux/flutter/CMakeLists.txt
new file mode 100644
index 0000000..d5bd016
--- /dev/null
+++ b/TDDE43/labb2/linux/flutter/CMakeLists.txt
@@ -0,0 +1,88 @@
+# This file controls Flutter-level build steps. It should not be edited.
+cmake_minimum_required(VERSION 3.10)
+
+set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
+
+# Configuration provided via flutter tool.
+include(${EPHEMERAL_DIR}/generated_config.cmake)
+
+# TODO: Move the rest of this into files in ephemeral. See
+# https://github.com/flutter/flutter/issues/57146.
+
+# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
+# which isn't available in 3.10.
+function(list_prepend LIST_NAME PREFIX)
+    set(NEW_LIST "")
+    foreach(element ${${LIST_NAME}})
+        list(APPEND NEW_LIST "${PREFIX}${element}")
+    endforeach(element)
+    set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
+endfunction()
+
+# === Flutter Library ===
+# System-level dependencies.
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
+pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
+pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
+
+set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
+
+# Published to parent scope for install step.
+set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
+set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
+set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
+set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
+
+list(APPEND FLUTTER_LIBRARY_HEADERS
+  "fl_basic_message_channel.h"
+  "fl_binary_codec.h"
+  "fl_binary_messenger.h"
+  "fl_dart_project.h"
+  "fl_engine.h"
+  "fl_json_message_codec.h"
+  "fl_json_method_codec.h"
+  "fl_message_codec.h"
+  "fl_method_call.h"
+  "fl_method_channel.h"
+  "fl_method_codec.h"
+  "fl_method_response.h"
+  "fl_plugin_registrar.h"
+  "fl_plugin_registry.h"
+  "fl_standard_message_codec.h"
+  "fl_standard_method_codec.h"
+  "fl_string_codec.h"
+  "fl_value.h"
+  "fl_view.h"
+  "flutter_linux.h"
+)
+list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
+add_library(flutter INTERFACE)
+target_include_directories(flutter INTERFACE
+  "${EPHEMERAL_DIR}"
+)
+target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
+target_link_libraries(flutter INTERFACE
+  PkgConfig::GTK
+  PkgConfig::GLIB
+  PkgConfig::GIO
+)
+add_dependencies(flutter flutter_assemble)
+
+# === Flutter tool backend ===
+# _phony_ is a non-existent file to force this command to run every time,
+# since currently there's no way to get a full input/output list from the
+# flutter tool.
+add_custom_command(
+  OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
+    ${CMAKE_CURRENT_BINARY_DIR}/_phony_
+  COMMAND ${CMAKE_COMMAND} -E env
+    ${FLUTTER_TOOL_ENVIRONMENT}
+    "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
+      ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
+  VERBATIM
+)
+add_custom_target(flutter_assemble DEPENDS
+  "${FLUTTER_LIBRARY}"
+  ${FLUTTER_LIBRARY_HEADERS}
+)
diff --git a/TDDE43/labb2/linux/flutter/generated_plugin_registrant.cc b/TDDE43/labb2/linux/flutter/generated_plugin_registrant.cc
new file mode 100644
index 0000000..f6f23bf
--- /dev/null
+++ b/TDDE43/labb2/linux/flutter/generated_plugin_registrant.cc
@@ -0,0 +1,15 @@
+//
+//  Generated file. Do not edit.
+//
+
+// clang-format off
+
+#include "generated_plugin_registrant.h"
+
+#include <url_launcher_linux/url_launcher_plugin.h>
+
+void fl_register_plugins(FlPluginRegistry* registry) {
+  g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
+      fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
+  url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
+}
diff --git a/TDDE43/labb2/linux/flutter/generated_plugin_registrant.h b/TDDE43/labb2/linux/flutter/generated_plugin_registrant.h
new file mode 100644
index 0000000..e0f0a47
--- /dev/null
+++ b/TDDE43/labb2/linux/flutter/generated_plugin_registrant.h
@@ -0,0 +1,15 @@
+//
+//  Generated file. Do not edit.
+//
+
+// clang-format off
+
+#ifndef GENERATED_PLUGIN_REGISTRANT_
+#define GENERATED_PLUGIN_REGISTRANT_
+
+#include <flutter_linux/flutter_linux.h>
+
+// Registers Flutter plugins.
+void fl_register_plugins(FlPluginRegistry* registry);
+
+#endif  // GENERATED_PLUGIN_REGISTRANT_
diff --git a/TDDE43/labb2/linux/flutter/generated_plugins.cmake b/TDDE43/labb2/linux/flutter/generated_plugins.cmake
new file mode 100644
index 0000000..f16b4c3
--- /dev/null
+++ b/TDDE43/labb2/linux/flutter/generated_plugins.cmake
@@ -0,0 +1,24 @@
+#
+# Generated file, do not edit.
+#
+
+list(APPEND FLUTTER_PLUGIN_LIST
+  url_launcher_linux
+)
+
+list(APPEND FLUTTER_FFI_PLUGIN_LIST
+)
+
+set(PLUGIN_BUNDLED_LIBRARIES)
+
+foreach(plugin ${FLUTTER_PLUGIN_LIST})
+  add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
+  target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
+endforeach(plugin)
+
+foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
+  add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
+endforeach(ffi_plugin)
diff --git a/TDDE43/labb2/linux/main.cc b/TDDE43/labb2/linux/main.cc
new file mode 100644
index 0000000..e7c5c54
--- /dev/null
+++ b/TDDE43/labb2/linux/main.cc
@@ -0,0 +1,6 @@
+#include "my_application.h"
+
+int main(int argc, char** argv) {
+  g_autoptr(MyApplication) app = my_application_new();
+  return g_application_run(G_APPLICATION(app), argc, argv);
+}
diff --git a/TDDE43/labb2/linux/my_application.cc b/TDDE43/labb2/linux/my_application.cc
new file mode 100644
index 0000000..5597b86
--- /dev/null
+++ b/TDDE43/labb2/linux/my_application.cc
@@ -0,0 +1,124 @@
+#include "my_application.h"
+
+#include <flutter_linux/flutter_linux.h>
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif
+
+#include "flutter/generated_plugin_registrant.h"
+
+struct _MyApplication {
+  GtkApplication parent_instance;
+  char** dart_entrypoint_arguments;
+};
+
+G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
+
+// Implements GApplication::activate.
+static void my_application_activate(GApplication* application) {
+  MyApplication* self = MY_APPLICATION(application);
+  GtkWindow* window =
+      GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
+
+  // Use a header bar when running in GNOME as this is the common style used
+  // by applications and is the setup most users will be using (e.g. Ubuntu
+  // desktop).
+  // If running on X and not using GNOME then just use a traditional title bar
+  // in case the window manager does more exotic layout, e.g. tiling.
+  // If running on Wayland assume the header bar will work (may need changing
+  // if future cases occur).
+  gboolean use_header_bar = TRUE;
+#ifdef GDK_WINDOWING_X11
+  GdkScreen* screen = gtk_window_get_screen(window);
+  if (GDK_IS_X11_SCREEN(screen)) {
+    const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
+    if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
+      use_header_bar = FALSE;
+    }
+  }
+#endif
+  if (use_header_bar) {
+    GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
+    gtk_widget_show(GTK_WIDGET(header_bar));
+    gtk_header_bar_set_title(header_bar, "labb2");
+    gtk_header_bar_set_show_close_button(header_bar, TRUE);
+    gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
+  } else {
+    gtk_window_set_title(window, "labb2");
+  }
+
+  gtk_window_set_default_size(window, 1280, 720);
+  gtk_widget_show(GTK_WIDGET(window));
+
+  g_autoptr(FlDartProject) project = fl_dart_project_new();
+  fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
+
+  FlView* view = fl_view_new(project);
+  gtk_widget_show(GTK_WIDGET(view));
+  gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
+
+  fl_register_plugins(FL_PLUGIN_REGISTRY(view));
+
+  gtk_widget_grab_focus(GTK_WIDGET(view));
+}
+
+// Implements GApplication::local_command_line.
+static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
+  MyApplication* self = MY_APPLICATION(application);
+  // Strip out the first argument as it is the binary name.
+  self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
+
+  g_autoptr(GError) error = nullptr;
+  if (!g_application_register(application, nullptr, &error)) {
+     g_warning("Failed to register: %s", error->message);
+     *exit_status = 1;
+     return TRUE;
+  }
+
+  g_application_activate(application);
+  *exit_status = 0;
+
+  return TRUE;
+}
+
+// Implements GApplication::startup.
+static void my_application_startup(GApplication* application) {
+  //MyApplication* self = MY_APPLICATION(object);
+
+  // Perform any actions required at application startup.
+
+  G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
+}
+
+// Implements GApplication::shutdown.
+static void my_application_shutdown(GApplication* application) {
+  //MyApplication* self = MY_APPLICATION(object);
+
+  // Perform any actions required at application shutdown.
+
+  G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
+}
+
+// Implements GObject::dispose.
+static void my_application_dispose(GObject* object) {
+  MyApplication* self = MY_APPLICATION(object);
+  g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
+  G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
+}
+
+static void my_application_class_init(MyApplicationClass* klass) {
+  G_APPLICATION_CLASS(klass)->activate = my_application_activate;
+  G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
+  G_APPLICATION_CLASS(klass)->startup = my_application_startup;
+  G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
+  G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
+}
+
+static void my_application_init(MyApplication* self) {}
+
+MyApplication* my_application_new() {
+  return MY_APPLICATION(g_object_new(my_application_get_type(),
+                                     "application-id", APPLICATION_ID,
+                                     "flags", G_APPLICATION_NON_UNIQUE,
+                                     nullptr));
+}
diff --git a/TDDE43/labb2/linux/my_application.h b/TDDE43/labb2/linux/my_application.h
new file mode 100644
index 0000000..72271d5
--- /dev/null
+++ b/TDDE43/labb2/linux/my_application.h
@@ -0,0 +1,18 @@
+#ifndef FLUTTER_MY_APPLICATION_H_
+#define FLUTTER_MY_APPLICATION_H_
+
+#include <gtk/gtk.h>
+
+G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
+                     GtkApplication)
+
+/**
+ * my_application_new:
+ *
+ * Creates a new Flutter-based application.
+ *
+ * Returns: a new #MyApplication.
+ */
+MyApplication* my_application_new();
+
+#endif  // FLUTTER_MY_APPLICATION_H_
diff --git a/TDDE43/labb2/macos/.gitignore b/TDDE43/labb2/macos/.gitignore
new file mode 100644
index 0000000..746adbb
--- /dev/null
+++ b/TDDE43/labb2/macos/.gitignore
@@ -0,0 +1,7 @@
+# Flutter-related
+**/Flutter/ephemeral/
+**/Pods/
+
+# Xcode-related
+**/dgph
+**/xcuserdata/
diff --git a/TDDE43/labb2/macos/Flutter/Flutter-Debug.xcconfig b/TDDE43/labb2/macos/Flutter/Flutter-Debug.xcconfig
new file mode 100644
index 0000000..c2efd0b
--- /dev/null
+++ b/TDDE43/labb2/macos/Flutter/Flutter-Debug.xcconfig
@@ -0,0 +1 @@
+#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/TDDE43/labb2/macos/Flutter/Flutter-Release.xcconfig b/TDDE43/labb2/macos/Flutter/Flutter-Release.xcconfig
new file mode 100644
index 0000000..c2efd0b
--- /dev/null
+++ b/TDDE43/labb2/macos/Flutter/Flutter-Release.xcconfig
@@ -0,0 +1 @@
+#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/TDDE43/labb2/macos/Flutter/GeneratedPluginRegistrant.swift b/TDDE43/labb2/macos/Flutter/GeneratedPluginRegistrant.swift
new file mode 100644
index 0000000..8236f57
--- /dev/null
+++ b/TDDE43/labb2/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -0,0 +1,12 @@
+//
+//  Generated file. Do not edit.
+//
+
+import FlutterMacOS
+import Foundation
+
+import url_launcher_macos
+
+func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
+  UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
+}
diff --git a/TDDE43/labb2/macos/Runner.xcodeproj/project.pbxproj b/TDDE43/labb2/macos/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..704c2b7
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,705 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 54;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
+			buildPhases = (
+				33CC111E2044C6BF0003C045 /* ShellScript */,
+			);
+			dependencies = (
+			);
+			name = "Flutter Assemble";
+			productName = FLX;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; };
+		335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
+		33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
+		33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
+		33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
+		33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 33CC10EC2044A3C60003C045;
+			remoteInfo = Runner;
+		};
+		33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 33CC111A2044C6BA0003C045;
+			remoteInfo = FLX;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		33CC110E2044A8840003C045 /* Bundle Framework */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+			);
+			name = "Bundle Framework";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
+		333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
+		335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
+		33CC10ED2044A3C60003C045 /* labb2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "labb2.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+		33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
+		33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
+		33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
+		33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
+		33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
+		33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
+		33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
+		33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
+		33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
+		33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
+		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
+		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		331C80D2294CF70F00263BE5 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		33CC10EA2044A3C60003C045 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		331C80D6294CF71000263BE5 /* RunnerTests */ = {
+			isa = PBXGroup;
+			children = (
+				331C80D7294CF71000263BE5 /* RunnerTests.swift */,
+			);
+			path = RunnerTests;
+			sourceTree = "<group>";
+		};
+		33BA886A226E78AF003329D5 /* Configs */ = {
+			isa = PBXGroup;
+			children = (
+				33E5194F232828860026EE4D /* AppInfo.xcconfig */,
+				9740EEB21CF90195004384FC /* Debug.xcconfig */,
+				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+				333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
+			);
+			path = Configs;
+			sourceTree = "<group>";
+		};
+		33CC10E42044A3C60003C045 = {
+			isa = PBXGroup;
+			children = (
+				33FAB671232836740065AC1E /* Runner */,
+				33CEB47122A05771004F2AC0 /* Flutter */,
+				331C80D6294CF71000263BE5 /* RunnerTests */,
+				33CC10EE2044A3C60003C045 /* Products */,
+				D73912EC22F37F3D000D13A0 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		33CC10EE2044A3C60003C045 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10ED2044A3C60003C045 /* labb2.app */,
+				331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		33CC11242044D66E0003C045 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10F22044A3C60003C045 /* Assets.xcassets */,
+				33CC10F42044A3C60003C045 /* MainMenu.xib */,
+				33CC10F72044A3C60003C045 /* Info.plist */,
+			);
+			name = Resources;
+			path = ..;
+			sourceTree = "<group>";
+		};
+		33CEB47122A05771004F2AC0 /* Flutter */ = {
+			isa = PBXGroup;
+			children = (
+				335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
+				33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
+				33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
+				33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
+			);
+			path = Flutter;
+			sourceTree = "<group>";
+		};
+		33FAB671232836740065AC1E /* Runner */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10F02044A3C60003C045 /* AppDelegate.swift */,
+				33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
+				33E51913231747F40026EE4D /* DebugProfile.entitlements */,
+				33E51914231749380026EE4D /* Release.entitlements */,
+				33CC11242044D66E0003C045 /* Resources */,
+				33BA886A226E78AF003329D5 /* Configs */,
+			);
+			path = Runner;
+			sourceTree = "<group>";
+		};
+		D73912EC22F37F3D000D13A0 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		331C80D4294CF70F00263BE5 /* RunnerTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+			buildPhases = (
+				331C80D1294CF70F00263BE5 /* Sources */,
+				331C80D2294CF70F00263BE5 /* Frameworks */,
+				331C80D3294CF70F00263BE5 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				331C80DA294CF71000263BE5 /* PBXTargetDependency */,
+			);
+			name = RunnerTests;
+			productName = RunnerTests;
+			productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+		33CC10EC2044A3C60003C045 /* Runner */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
+			buildPhases = (
+				33CC10E92044A3C60003C045 /* Sources */,
+				33CC10EA2044A3C60003C045 /* Frameworks */,
+				33CC10EB2044A3C60003C045 /* Resources */,
+				33CC110E2044A8840003C045 /* Bundle Framework */,
+				3399D490228B24CF009A79C7 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				33CC11202044C79F0003C045 /* PBXTargetDependency */,
+			);
+			name = Runner;
+			productName = Runner;
+			productReference = 33CC10ED2044A3C60003C045 /* labb2.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		33CC10E52044A3C60003C045 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				BuildIndependentTargetsInParallel = YES;
+				LastSwiftUpdateCheck = 0920;
+				LastUpgradeCheck = 1510;
+				ORGANIZATIONNAME = "";
+				TargetAttributes = {
+					331C80D4294CF70F00263BE5 = {
+						CreatedOnToolsVersion = 14.0;
+						TestTargetID = 33CC10EC2044A3C60003C045;
+					};
+					33CC10EC2044A3C60003C045 = {
+						CreatedOnToolsVersion = 9.2;
+						LastSwiftMigration = 1100;
+						ProvisioningStyle = Automatic;
+						SystemCapabilities = {
+							com.apple.Sandbox = {
+								enabled = 1;
+							};
+						};
+					};
+					33CC111A2044C6BA0003C045 = {
+						CreatedOnToolsVersion = 9.2;
+						ProvisioningStyle = Manual;
+					};
+				};
+			};
+			buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 33CC10E42044A3C60003C045;
+			productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				33CC10EC2044A3C60003C045 /* Runner */,
+				331C80D4294CF70F00263BE5 /* RunnerTests */,
+				33CC111A2044C6BA0003C045 /* Flutter Assemble */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		331C80D3294CF70F00263BE5 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		33CC10EB2044A3C60003C045 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
+				33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		3399D490228B24CF009A79C7 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			alwaysOutOfDate = 1;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+			);
+			outputFileListPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
+		};
+		33CC111E2044C6BF0003C045 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				Flutter/ephemeral/FlutterInputs.xcfilelist,
+			);
+			inputPaths = (
+				Flutter/ephemeral/tripwire,
+			);
+			outputFileListPaths = (
+				Flutter/ephemeral/FlutterOutputs.xcfilelist,
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		331C80D1294CF70F00263BE5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		33CC10E92044A3C60003C045 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
+				33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
+				335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		331C80DA294CF71000263BE5 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 33CC10EC2044A3C60003C045 /* Runner */;
+			targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */;
+		};
+		33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
+			targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				33CC10F52044A3C60003C045 /* Base */,
+			);
+			name = MainMenu.xib;
+			path = Runner;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		331C80DB294CF71000263BE5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/labb2.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/labb2";
+			};
+			name = Debug;
+		};
+		331C80DC294CF71000263BE5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/labb2.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/labb2";
+			};
+			name = Release;
+		};
+		331C80DD294CF71000263BE5 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				CURRENT_PROJECT_VERSION = 1;
+				GENERATE_INFOPLIST_FILE = YES;
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2.RunnerTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/labb2.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/labb2";
+			};
+			name = Profile;
+		};
+		338D0CE9231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+			};
+			name = Profile;
+		};
+		338D0CEA231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Profile;
+		};
+		338D0CEB231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Manual;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Profile;
+		};
+		33CC10F92044A3C60003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+			};
+			name = Debug;
+		};
+		33CC10FA2044A3C60003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_USER_SCRIPT_SANDBOXING = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+			};
+			name = Release;
+		};
+		33CC10FC2044A3C60003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Debug;
+		};
+		33CC10FD2044A3C60003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				INFOPLIST_FILE = Runner/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Release;
+		};
+		33CC111C2044C6BA0003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Manual;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		33CC111D2044C6BA0003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				331C80DB294CF71000263BE5 /* Debug */,
+				331C80DC294CF71000263BE5 /* Release */,
+				331C80DD294CF71000263BE5 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC10F92044A3C60003C045 /* Debug */,
+				33CC10FA2044A3C60003C045 /* Release */,
+				338D0CE9231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC10FC2044A3C60003C045 /* Debug */,
+				33CC10FD2044A3C60003C045 /* Release */,
+				338D0CEA231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC111C2044C6BA0003C045 /* Debug */,
+				33CC111D2044C6BA0003C045 /* Release */,
+				338D0CEB231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 33CC10E52044A3C60003C045 /* Project object */;
+}
diff --git a/TDDE43/labb2/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TDDE43/labb2/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/TDDE43/labb2/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..4b7da79
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1510"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+               BuildableName = "labb2.app"
+               BlueprintName = "Runner"
+               ReferencedContainer = "container:Runner.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "labb2.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <Testables>
+         <TestableReference
+            skipped = "NO"
+            parallelizable = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "331C80D4294CF70F00263BE5"
+               BuildableName = "RunnerTests.xctest"
+               BlueprintName = "RunnerTests"
+               ReferencedContainer = "container:Runner.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "labb2.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Profile"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "labb2.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/TDDE43/labb2/macos/Runner.xcworkspace/contents.xcworkspacedata b/TDDE43/labb2/macos/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1d526a1
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:Runner.xcodeproj">
+   </FileRef>
+</Workspace>
diff --git a/TDDE43/labb2/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TDDE43/labb2/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/macos/Runner/AppDelegate.swift b/TDDE43/labb2/macos/Runner/AppDelegate.swift
new file mode 100644
index 0000000..8e02df2
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/AppDelegate.swift
@@ -0,0 +1,9 @@
+import Cocoa
+import FlutterMacOS
+
+@main
+class AppDelegate: FlutterAppDelegate {
+  override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
+    return true
+  }
+}
diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..a2ec33f
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "app_icon_16.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "app_icon_32.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "app_icon_32.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "app_icon_64.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "app_icon_128.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "app_icon_256.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "app_icon_256.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "app_icon_512.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "app_icon_512.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "app_icon_1024.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5
GIT binary patch
literal 102994
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%0AxuB<2>mJhsM6f2C1mP1V8w%&T8~&X;T9
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

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
new file mode 100644
index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0
GIT binary patch
literal 5680
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

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d
GIT binary patch
literal 520
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z~GV^
z;hE;^%b>-;z`()4*q+J20#d@jz#zo{0?Z2-8JNK$j0_A5nBcMk3z!jXkV2Et!cPng
zj76R<jv*F;$q5St43u8~|Nno#>V);&M{-U)@^};P@J-as?O3u$l7L#kXB!1IF&zg(
zh83rU=AWx~@Dy-kzNX+jV}aVs1v5CF*8KW9f8pa(@@+>Z+e?Ps``f*aWes~8gY~XA
z)9?S6e8y;c_t&@S2P0>+Dn?9{jOEn!Xkd*MIr9J8?8d}HXX|;sH_no6jgUwRH8456
zHBsUNZ$|Ouuk}3Z>;EJcFlF_H99t`y!qvu@9``@J;;ZZm$rm~Dk!o!}%l{eK{QTDM
zIJ>`7k>#@V47P|4W5Yi`&Ywz9J$1t1`?2`8$MOG-B0d-!SDa2N=hPASf7s?ITgY>@
zvqv_(duQMFRKL#nPv!rqioP%Hnbq5(6|EB38iFLaI<6(8bv*rZXhZeYw6-5@ygc#y
z|GP|NFKTe?^<WRbm^!nu)8?j6!@|S9or#AZ`}2efmo3tEyvpp8`uSpzl-)a}8JRC;
xa!#>v)a04tk<c|EW5VY3OvaZ5RSZwfVE9}5t)nw}dKf4cJYD@<);T3K0RS%<#rpsN

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdb57226d5f2bd20f11934f4903f16459cf52379
GIT binary patch
literal 14142
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
GLK6Uo-0fok

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..f083318e09ca1b6b8484b1694a149f0c5d5cac1d
GIT binary patch
literal 1066
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U~ox|
z@J#ddWzb?^VBlb2Y|mt10V!c%V31+}0p<ma49s8=Mh1ojOmJC+1<VLGNa32cq|Xct
z%u_sF977^F--e&{7j_i+|29uNsw?;J184s*)>G~#A0PZ*Fk^zlqu$waK7Tx}yb!gO
z@^x7kw<F_Al9N(katDiR)5R5?2@I+oA_fv60iO0{wd-$d-hG)DExcMhuHwzPGu5Ae
zpRLYM+jgMs&vOoqydTRl<(6#ZyTp;%5TY)6sBY7G&)PLkLSH`3{UZA^_EL4%qLlvN
z>CFNK4O`}a$v@3J%isk==6j{ZK@HtUZI*~fKgr>hda~jBZOy0os+uc=PqUpcPd<@<
z`>)ovirmZHAI-d6=Vw$L@&0wvQa_5vNh;Ey;Bm6e)58bYGJR)utrI(&JFiTtK=s0d
zXHT#Euef($t-sg~3I1x+n2c`=oZ@B~Z0NGOJn8I?TijghOA^i<c$=ZLHR<7nN7oD1
z_?>1yx6F)Zro+q`XWpK)lwY>NxMI>Ly`cL63m<7TvY(dyJkNISth*C9Z?J9V{W<rb
z#GZ1qyxSib`@1F!%Km#Z*{Lip|F*;_mTPBa?y)VpcFK}f$4BE$aN#yjeUY-$2Ori4
zvh29UzVgAlC5QD6%+`1=^Ua3!IYZ`qEsus`yG<Dnp2f)csHlFq<EowhLEx#)v@QOp
zbbBYQyxBB2`>-u5r;YFPIlZn2LxawpH@OscSybn*QDL2pC+kVJmG(2bn!LYi9h%K$
ztl^;`6!Kv9^$*7Ld_?19Lw~>QV71$wwW!*tv0_f&{F0JATiz7!E`6iJG)H{u_E$F-
z>~eApU)=VpNc3#U9=Y}31GZ|<_?h<TRD{g@<eG1hkJLX1C-O^~X<LRb-7s<fHi?Us
z=fami&iv8p^fplR*7F08_=T6xJ8t0oAhhIO`zetRrzC6cZ)?h)wP3eGv*L0ES&y0O
z8?L4o_O6@pLZ&y-)KgqwrtX@V52W^N3wN(wp-^$|Nc|f}$A)#QRw~bE&X-_2*6z0P
zOPy8vrzEQsrgee>ldpzpy|8`YxY@tiG4RK)SEkeM`7KzS&T&|OSxe-;<-E>n3Hxuw
zEL-_ed&i#m<Ma3*N7NX%vE=@G+S2&#ouW;(rK(v=_x88{PTgeH&WkImH=VenZVBJS
z2J=$859}w!yFAj*3-<_g+8nyyDLGO3!0rVZE7x)@djBZ#&4snI9yDiF={8<l-7GP?
zXV=-seU7UwT%xivi<8|JnuuQdt(x+o!!U;P1B2v;^h!++g9;C}@|4MGH@%KMYUiv!
zU%c1i*6GPXv$sph3&#{ZYWIu}wD&oY==?8}rH=WC;KzH9iX93;`P9?Z&t;ucLK6V|
CRorR-

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
new file mode 100644
index 0000000000000000000000000000000000000000..326c0e72c9d820600887813b3b98d0dd69c5d4e8
GIT binary patch
literal 36406
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
SmN76eFnGH9xvX<aXaWF^o$Ma~

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/TDDE43/labb2/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46
GIT binary patch
literal 2218
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
MboFyt=akR{0K)zWz5oCK

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/macos/Runner/Base.lproj/MainMenu.xib b/TDDE43/labb2/macos/Runner/Base.lproj/MainMenu.xib
new file mode 100644
index 0000000..80e867a
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Base.lproj/MainMenu.xib
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
+            <connections>
+                <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target">
+            <connections>
+                <outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
+                <outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
+        <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
+            <items>
+                <menuItem title="APP_NAME" id="1Xt-HY-uBw">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr">
+                        <items>
+                            <menuItem title="About APP_NAME" id="5kV-Vb-QxS">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
+                            <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
+                            <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
+                            <menuItem title="Services" id="NMo-om-nkz">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
+                            <menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN">
+                                <connections>
+                                    <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                <connections>
+                                    <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Show All" id="Kd2-mp-pUS">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
+                            <menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi">
+                                <connections>
+                                    <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Edit" id="5QF-Oa-p0T">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Edit" id="W48-6f-4Dl">
+                        <items>
+                            <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
+                                <connections>
+                                    <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
+                                <connections>
+                                    <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
+                            <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
+                                <connections>
+                                    <action selector="cut:" target="-1" id="YJe-68-I9s"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
+                                <connections>
+                                    <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
+                                <connections>
+                                    <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                <connections>
+                                    <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Delete" id="pa3-QI-u2k">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
+                                <connections>
+                                    <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
+                            <menuItem title="Find" id="4EN-yA-p0u">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Find" id="1b7-l0-nxx">
+                                    <items>
+                                        <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
+                                            <connections>
+                                                <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
+                                    <items>
+                                        <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
+                                            <connections>
+                                                <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
+                                            <connections>
+                                                <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
+                                        <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Substitutions" id="9ic-FL-obx">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
+                                    <items>
+                                        <menuItem title="Show Substitutions" id="z6F-FW-3nz">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
+                                        <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Quotes" id="hQb-2v-fYv">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Dashes" id="rgM-f4-ycn">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Links" id="cwL-P1-jid">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Data Detectors" id="tRr-pd-1PS">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Text Replacement" id="HFQ-gK-NFA">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Transformations" id="2oI-Rn-ZJC">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
+                                    <items>
+                                        <menuItem title="Make Upper Case" id="vmV-6d-7jI">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Make Lower Case" id="d9M-CD-aMd">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Capitalize" id="UEZ-Bs-lqG">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Speech" id="xrE-MZ-jX0">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
+                                    <items>
+                                        <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="View" id="H8h-7b-M4v">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="View" id="HyV-fh-RgO">
+                        <items>
+                            <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
+                                <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
+                                <connections>
+                                    <action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Window" id="aUF-d1-5bR">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
+                        <items>
+                            <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
+                                <connections>
+                                    <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Zoom" id="R4o-n2-Eq4">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
+                            <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Help" id="EPT-qC-fAb">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Help" systemMenu="help" id="rJ0-wn-3NY"/>
+                </menuItem>
+            </items>
+            <point key="canvasLocation" x="142" y="-258"/>
+        </menu>
+        <window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <rect key="contentRect" x="335" y="390" width="800" height="600"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/>
+            <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
+                <rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
+                <autoresizingMask key="autoresizingMask"/>
+            </view>
+        </window>
+    </objects>
+</document>
diff --git a/TDDE43/labb2/macos/Runner/Configs/AppInfo.xcconfig b/TDDE43/labb2/macos/Runner/Configs/AppInfo.xcconfig
new file mode 100644
index 0000000..b56f6dc
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Configs/AppInfo.xcconfig
@@ -0,0 +1,14 @@
+// Application-level settings for the Runner target.
+//
+// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
+// future. If not, the values below would default to using the project name when this becomes a
+// 'flutter create' template.
+
+// The application's name. By default this is also the title of the Flutter window.
+PRODUCT_NAME = labb2
+
+// The application's bundle identifier
+PRODUCT_BUNDLE_IDENTIFIER = com.example.labb2
+
+// The copyright displayed in application information
+PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved.
diff --git a/TDDE43/labb2/macos/Runner/Configs/Debug.xcconfig b/TDDE43/labb2/macos/Runner/Configs/Debug.xcconfig
new file mode 100644
index 0000000..36b0fd9
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Configs/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include "../../Flutter/Flutter-Debug.xcconfig"
+#include "Warnings.xcconfig"
diff --git a/TDDE43/labb2/macos/Runner/Configs/Release.xcconfig b/TDDE43/labb2/macos/Runner/Configs/Release.xcconfig
new file mode 100644
index 0000000..dff4f49
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Configs/Release.xcconfig
@@ -0,0 +1,2 @@
+#include "../../Flutter/Flutter-Release.xcconfig"
+#include "Warnings.xcconfig"
diff --git a/TDDE43/labb2/macos/Runner/Configs/Warnings.xcconfig b/TDDE43/labb2/macos/Runner/Configs/Warnings.xcconfig
new file mode 100644
index 0000000..42bcbf4
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Configs/Warnings.xcconfig
@@ -0,0 +1,13 @@
+WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
+GCC_WARN_UNDECLARED_SELECTOR = YES
+CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
+CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
+CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
+CLANG_WARN_PRAGMA_PACK = YES
+CLANG_WARN_STRICT_PROTOTYPES = YES
+CLANG_WARN_COMMA = YES
+GCC_WARN_STRICT_SELECTOR_MATCH = YES
+CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
+CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
+GCC_WARN_SHADOW = YES
+CLANG_WARN_UNREACHABLE_CODE = YES
diff --git a/TDDE43/labb2/macos/Runner/DebugProfile.entitlements b/TDDE43/labb2/macos/Runner/DebugProfile.entitlements
new file mode 100644
index 0000000..dddb8a3
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/DebugProfile.entitlements
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.security.app-sandbox</key>
+	<true/>
+	<key>com.apple.security.cs.allow-jit</key>
+	<true/>
+	<key>com.apple.security.network.server</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/macos/Runner/Info.plist b/TDDE43/labb2/macos/Runner/Info.plist
new file mode 100644
index 0000000..4789daa
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>$(FLUTTER_BUILD_NAME)</string>
+	<key>CFBundleVersion</key>
+	<string>$(FLUTTER_BUILD_NUMBER)</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>$(PRODUCT_COPYRIGHT)</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/macos/Runner/MainFlutterWindow.swift b/TDDE43/labb2/macos/Runner/MainFlutterWindow.swift
new file mode 100644
index 0000000..3cc05eb
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/MainFlutterWindow.swift
@@ -0,0 +1,15 @@
+import Cocoa
+import FlutterMacOS
+
+class MainFlutterWindow: NSWindow {
+  override func awakeFromNib() {
+    let flutterViewController = FlutterViewController()
+    let windowFrame = self.frame
+    self.contentViewController = flutterViewController
+    self.setFrame(windowFrame, display: true)
+
+    RegisterGeneratedPlugins(registry: flutterViewController)
+
+    super.awakeFromNib()
+  }
+}
diff --git a/TDDE43/labb2/macos/Runner/Release.entitlements b/TDDE43/labb2/macos/Runner/Release.entitlements
new file mode 100644
index 0000000..852fa1a
--- /dev/null
+++ b/TDDE43/labb2/macos/Runner/Release.entitlements
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.security.app-sandbox</key>
+	<true/>
+</dict>
+</plist>
diff --git a/TDDE43/labb2/macos/RunnerTests/RunnerTests.swift b/TDDE43/labb2/macos/RunnerTests/RunnerTests.swift
new file mode 100644
index 0000000..61f3bd1
--- /dev/null
+++ b/TDDE43/labb2/macos/RunnerTests/RunnerTests.swift
@@ -0,0 +1,12 @@
+import Cocoa
+import FlutterMacOS
+import XCTest
+
+class RunnerTests: XCTestCase {
+
+  func testExample() {
+    // If you add code to the Runner application, consider adding tests here.
+    // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
+  }
+
+}
diff --git a/TDDE43/labb2/pubspec.lock b/TDDE43/labb2/pubspec.lock
new file mode 100644
index 0000000..d06d64d
--- /dev/null
+++ b/TDDE43/labb2/pubspec.lock
@@ -0,0 +1,322 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+  async:
+    dependency: transitive
+    description:
+      name: async
+      sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.11.0"
+  boolean_selector:
+    dependency: transitive
+    description:
+      name: boolean_selector
+      sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  characters:
+    dependency: transitive
+    description:
+      name: characters
+      sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.0"
+  clock:
+    dependency: transitive
+    description:
+      name: clock
+      sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  collection:
+    dependency: transitive
+    description:
+      name: collection
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.18.0"
+  cupertino_icons:
+    dependency: "direct main"
+    description:
+      name: cupertino_icons
+      sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.8"
+  fake_async:
+    dependency: transitive
+    description:
+      name: fake_async
+      sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.1"
+  flutter:
+    dependency: "direct main"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_lints:
+    dependency: "direct dev"
+    description:
+      name: flutter_lints
+      sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.0.0"
+  flutter_test:
+    dependency: "direct dev"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_web_plugins:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  http:
+    dependency: "direct main"
+    description:
+      name: http
+      sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.2"
+  http_parser:
+    dependency: transitive
+    description:
+      name: http_parser
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.0.2"
+  leak_tracker:
+    dependency: transitive
+    description:
+      name: leak_tracker
+      sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
+      url: "https://pub.dev"
+    source: hosted
+    version: "10.0.5"
+  leak_tracker_flutter_testing:
+    dependency: transitive
+    description:
+      name: leak_tracker_flutter_testing
+      sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.5"
+  leak_tracker_testing:
+    dependency: transitive
+    description:
+      name: leak_tracker_testing
+      sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.1"
+  lints:
+    dependency: transitive
+    description:
+      name: lints
+      sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.0.0"
+  matcher:
+    dependency: transitive
+    description:
+      name: matcher
+      sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.12.16+1"
+  material_color_utilities:
+    dependency: transitive
+    description:
+      name: material_color_utilities
+      sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.11.1"
+  meta:
+    dependency: transitive
+    description:
+      name: meta
+      sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.15.0"
+  path:
+    dependency: transitive
+    description:
+      name: path
+      sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.9.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.8"
+  sky_engine:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.99"
+  source_span:
+    dependency: transitive
+    description:
+      name: source_span
+      sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.10.0"
+  stack_trace:
+    dependency: transitive
+    description:
+      name: stack_trace
+      sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.11.1"
+  stream_channel:
+    dependency: transitive
+    description:
+      name: stream_channel
+      sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.2"
+  string_scanner:
+    dependency: transitive
+    description:
+      name: string_scanner
+      sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
+  term_glyph:
+    dependency: transitive
+    description:
+      name: term_glyph
+      sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.1"
+  test_api:
+    dependency: transitive
+    description:
+      name: test_api
+      sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.7.2"
+  typed_data:
+    dependency: transitive
+    description:
+      name: typed_data
+      sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.4.0"
+  url_launcher:
+    dependency: "direct main"
+    description:
+      name: url_launcher
+      sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
+      url: "https://pub.dev"
+    source: hosted
+    version: "6.3.1"
+  url_launcher_android:
+    dependency: transitive
+    description:
+      name: url_launcher_android
+      sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
+      url: "https://pub.dev"
+    source: hosted
+    version: "6.3.14"
+  url_launcher_ios:
+    dependency: transitive
+    description:
+      name: url_launcher_ios
+      sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
+      url: "https://pub.dev"
+    source: hosted
+    version: "6.3.1"
+  url_launcher_linux:
+    dependency: transitive
+    description:
+      name: url_launcher_linux
+      sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.2.1"
+  url_launcher_macos:
+    dependency: transitive
+    description:
+      name: url_launcher_macos
+      sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.2.1"
+  url_launcher_platform_interface:
+    dependency: transitive
+    description:
+      name: url_launcher_platform_interface
+      sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.3.2"
+  url_launcher_web:
+    dependency: transitive
+    description:
+      name: url_launcher_web
+      sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.3.3"
+  url_launcher_windows:
+    dependency: transitive
+    description:
+      name: url_launcher_windows
+      sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.3"
+  vector_math:
+    dependency: transitive
+    description:
+      name: vector_math
+      sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.4"
+  vm_service:
+    dependency: transitive
+    description:
+      name: vm_service
+      sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
+      url: "https://pub.dev"
+    source: hosted
+    version: "14.2.5"
+  web:
+    dependency: transitive
+    description:
+      name: web
+      sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.0"
+sdks:
+  dart: ">=3.5.3 <4.0.0"
+  flutter: ">=3.24.0"
diff --git a/TDDE43/labb2/pubspec.yaml b/TDDE43/labb2/pubspec.yaml
new file mode 100644
index 0000000..0c13916
--- /dev/null
+++ b/TDDE43/labb2/pubspec.yaml
@@ -0,0 +1,94 @@
+name: labb2
+description: "A new Flutter project."
+# The following line prevents the package from being accidentally published to
+# pub.dev using `flutter pub publish`. This is preferred for private packages.
+publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+# In Windows, build-name is used as the major, minor, and patch parts
+# of the product and file versions while build-number is used as the build suffix.
+version: 1.0.0+1
+
+environment:
+  sdk: ^3.5.3
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+
+  url_launcher: ^6.1.10
+
+  flutter:
+    sdk: flutter
+
+
+  # The following adds the Cupertino Icons font to your application.
+  # Use with the CupertinoIcons class for iOS style icons.
+  cupertino_icons: ^1.0.8
+  http: ^1.2.2
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+
+  # The "flutter_lints" package below contains a set of recommended lints to
+  # encourage good coding practices. The lint set provided by the package is
+  # activated in the `analysis_options.yaml` file located at the root of your
+  # package. See that file for information about deactivating specific lint
+  # rules and activating additional ones.
+  flutter_lints: ^4.0.0
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter packages.
+flutter:
+
+  # The following line ensures that the Material Icons font is
+  # included with your application, so that you can use the icons in
+  # the material Icons class.
+  uses-material-design: true
+
+  # To add assets to your application, add an assets section, like this:
+  # assets:
+  #   - images/a_dot_burr.jpeg
+  #   - images/a_dot_ham.jpeg
+
+  # An image asset can refer to one or more resolution-specific "variants", see
+  # https://flutter.dev/to/resolution-aware-images
+
+  # For details regarding adding assets from package dependencies, see
+  # https://flutter.dev/to/asset-from-package
+
+  # To add custom fonts to your application, add a fonts section here,
+  # in this "flutter" section. Each entry in this list should have a
+  # "family" key with the font family name, and a "fonts" key with a
+  # list giving the asset and other descriptors for the font. For
+  # example:
+  # fonts:
+  #   - family: Schyler
+  #     fonts:
+  #       - asset: fonts/Schyler-Regular.ttf
+  #       - asset: fonts/Schyler-Italic.ttf
+  #         style: italic
+  #   - family: Trajan Pro
+  #     fonts:
+  #       - asset: fonts/TrajanPro.ttf
+  #       - asset: fonts/TrajanPro_Bold.ttf
+  #         weight: 700
+  #
+  # For details regarding fonts from package dependencies,
+  # see https://flutter.dev/to/font-from-package
diff --git a/TDDE43/labb2/test/widget_test.dart b/TDDE43/labb2/test/widget_test.dart
new file mode 100644
index 0000000..59b9b42
--- /dev/null
+++ b/TDDE43/labb2/test/widget_test.dart
@@ -0,0 +1,30 @@
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility in the flutter_test package. For example, you can send tap and scroll
+// gestures. You can also use WidgetTester to find child widgets in the widget
+// tree, read text, and verify that the values of widget properties are correct.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:labb2/main.dart';
+
+void main() {
+  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+    // Build our app and trigger a frame.
+    await tester.pumpWidget(const MyApp());
+
+    // Verify that our counter starts at 0.
+    expect(find.text('0'), findsOneWidget);
+    expect(find.text('1'), findsNothing);
+
+    // Tap the '+' icon and trigger a frame.
+    await tester.tap(find.byIcon(Icons.add));
+    await tester.pump();
+
+    // Verify that our counter has incremented.
+    expect(find.text('0'), findsNothing);
+    expect(find.text('1'), findsOneWidget);
+  });
+}
diff --git a/TDDE43/labb2/web/favicon.png b/TDDE43/labb2/web/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1
GIT binary patch
literal 917
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH
z5n0T@pr;JNj1^1m%NQ6KBQrxHN+NuHtdjF{^%7I^lT!66atjzhz^1~gBDWwnwIorY
zA~z?m*s8)-39P~@uh<GCtgoa1R#K8}s}$iIpx~Tel&WB=XQF4IWXGkTpkPy!l4cd;
z;s(`Tl#*tvlu=SrV5P5LUS6(OZmgGIl&)`RX=$l%V5Dzkq+67drdwQ@SCUwvn^&w1
zF$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tW3NQe1XGvxn!lt}psJD{ybM-+o`i6Q2
z`f#&B#)Cwy{EISE^GXsy=Gz(CfK{T1LG7{82U(8f7>G~7qCqZhc3d|4;4lG&j~$oK
zA@xWG2F9zNE{-7<g0;c6{?d*DwbkWz%`Qn?huRyIJUkyNsBkNLtyodm`{EO`fUnl9
zCB0MBRvzN_m}%w8WX9n>;ld7wO#(qnZWJZzI2E3_xA*Lsx!2?73+ET^w%+}I@67GR
zPL~gKB+lnDthp%7_f?t4uW8c8|3WP+WgZ_FE&TA=jOG3EO9#GP7O}Aw)>E_$k#Ij{
zy7GD-^V?e9l7~+mufGc|5hy!fsr=)zztlt_?dh+%eqZG?+EVFvYJGT3%B4l+c?Nxv
zA961J%WD)5K5(#z=Uq!-q}j6RjfU+9tC!e#p8CvEH~sU+6WhDDJxnp0o^W94eWCU1
zQd#DyR^MO$Yr>MKOsyrcjGjlI&9nHBnS0EEGw0Y$CX2WHmGZe!`~O@#c5SN5zDu26
zDI4BKt!FtLvCi9OcFDt_gv}BORd*bZl^1SM*<kdx(e>A_yFxrSX8ds2x$lS21HT;^
zTCIz7I(nCKmV|Unv7TVUR`#dH$H;AN(TuMbbG%<I39k9|LvpRXBg-;5gQ|}*vuFG$
zvwnK}seW&(xzxRA+wH|GvU|fy47XTio?u><%3CMZUe|J|QuJuIw1-!H;WNWB?$;ib
zdFQ+9g^uhz>as0SX1QKp$Jx0PS=bUhTs~c2!d=hEU?gX@B64~UD6e?B`njxgN@xNA
DfL3B_

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/web/icons/Icon-192.png b/TDDE43/labb2/web/icons/Icon-192.png
new file mode 100644
index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa
GIT binary patch
literal 5292
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
L>gTe~DWM4f2kRIC

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/web/icons/Icon-512.png b/TDDE43/labb2/web/icons/Icon-512.png
new file mode 100644
index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6
GIT binary patch
literal 8252
zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4iHr><-C@Gfv>eHB%&lJv0R~`C_gPTCsm=O
zvLIC<wIVZ(fuZ8o)mh<X%GN?I|2K9;G6~6@ZaiI_#=iN_&Pbh=sVl-}fB)>#dDLxT
z!X+1%rnl$*|6Bde{?8JjChwiwE_r|avt(YCL`}xOkDqsR`CtEi+J8s%{jIyNOE)e%
zVQQB*<@1hH3vB;aELgU?c3*yZ>D|j)sue2D*Y}%kuHE;0YxM#Nxwl3CZ-4#0bK<?6
z=l{50%YBpk^LT&oQ3-3~I3B$@8W%s`%bE7$hxDJ5U*ldrNq$`1(fVEDcJb|<*ZV)6
zT=D5lS>2ttANOj`(JycRbkMDQ_Y?lNA4_L_$aDRa{H)x3%ioAw?zdOITUI5vTY6=}
z%17^f_vSqP<#N1J^YPb+hoL`D*Q~p~`g2xJ;lqu+=IZO8F7ZBaOUrW`PoU-X(vwM@
znsXX<I&)|rS-m##pWL;lJt_JZ1Csl1Kb$Ba9@lNsetqi+)BOF<qA$&;<hE@#nDODr
z^6AyreyFd%-WZ}=;#yO^RrEEN*kzr=HtFxb98z4g-S>0q{nt<bus^@k*IQu_pO%+X
z@Z+aMQrb_!=#QU@m&AWN`O`hi<L-Bc867)~yC-(A*G!zTv}3(uh~S$WAI>K{Ra|E9
zvEhl#HjAU?hGKIrH=R9e9J+3wV!ONXg(hVq&7eZxe&+P0Q#$9*k}@<YI&<>r9Pf2I
zpU!jdRGk{*weqMz)|H6hvs<r3MZYcGawF*U+AX)DUgv(fpe!)0`sLNH*Q({4J=vZ4
z=gEDMNN$r%pH(?6GJSS!pX-k`TRv&6UbpR+l=Yh(p8sRZN_W5AcYLC=#@v!mn#<>v
z{gU)rlX+!HWOrEZt<pVJZ@;~&UVoDP{NFp-Mb&3*rmd^{+I~G_-PcqOLyMEojBUgw
zJ@}X<r?8;;=NWTP%^A<nr0-*&q{O~Q?dF`#M{U~JFHf8h8dv-MaIyW@*{5G_|0A~V
z(;VaLe}(52KihS?c>dpSN3yG9dW7`ZBgJO<)`m3n`YD^#9eixRf7gE52l4h7PFbIw
zS~YX=yHINm3op?#(Z4=D<25hS^Ln%G+2;(_{N<ajDdxP`{$$OL&}ucCK&?O5CT!vJ
zy?S2E|E#yJUwHBAIYQ@easA1WHGY(oymiY05xY{=Nnc+~2`O!zw0EoC+tsUuEFP;&
ztDScF;x_v=*PNDYs|z`3=N23+cRl0$v0d&?&+a7e6zqR^|I4=6h@3+U-cESau96$-
zAFICd+~!YPo$gn6t$L#sayRM_i_EsX=gFT^<t|CTlGgN>pKiZlUe>nWZ(#<(Ia0!!
zdsu^8j4%5g6#mrdGiBm=h2QS}3q|I-O$fUB`Cw5=`$Fp$N3Lyid^;Q`zc5w&?&noI
zrI;Zy@P}f%4xeDbxm|aB)V3dIuYPB~{$29nH?MDJ90-uiaWjxe`^EdfWV^Nhui{19
zc1Ukq7A>LvOFQe5=MTgAe7k@8O*muvOC&*w>1Fn{i7ySx^ZeHR`(gC1c&%4)@cesv
zwPB`zm7J?jXB$tM^7QKQOu-GOBhpi*-#V<CJAK>I&1WtKt+DyB)!O#<yv+=2HGdy0
zx#=z(wR~psJrlcI9&1`(e>z$DBx-qvSXfJO<k^#NHLOof+Vn*2HtX*r694qqe~2<$
zZnEG;JMU5ETY?|@wa>Xt$(~r8dOgGb>$2*?=gYs$+qb=>>)mAGTf%`HIrD8gLlXY<
ze7&|_(|TIy@l|i{ihaKFkh^KUUPxl%3bVvmpTx@YG(A&exrh*J@i6ut8zFbK5LZUw
z&2Ic3zsMZQE2>$WVwcUf{aej6!}8g`XSf|=GIa<q-n8&ygy0h%*=rlJQr-JGl!bm-
zE0or=US*%J;w`3`*D-PFgwL|Adp-VJ^}gD0TK{L!rnJpFn|C^H_Px~5p7Gx610ToE
zhstfd(i=G5n2G<twmSS(&Vi_RUw0mNYTWTYh^goFi}S+Q`PLYy*|hrz?B^`wcdDD%
zEmtCuUS4$E=JJ{lm(JsjzbY?HyBlDCBl7&x=e(S6j?7vUc2H*Tk(2Y}1l?qox@Re#
zwTr(SZoY3v(199<Ez%e6NV_=8@3r`x9k0}T&q+d(+0pY&p4M%nb!%1|W$4dhvwbz=
z-^KqAuWA?a-FR_7cm0c<pAXi~6sR>`)T6aL#>OSlrfkU{?UrB9T}t$4a!m6*@<^#z
zs?IZvHTc@8Z*ArCZyj3q<PPJZbSZc5k`HUPx2T4s`WpVKZ;>c8xwL-sq~FU9uitR_
zsPDU(+V?9ziO)Q_cj2=ANowC`@wxfcAM!Of-s!LNrTxs4o>`l8RFzJDD}I|{dT86@
zR*&mO9-RiqV>Y)l34U?#cvN-&L{o*I=>m1byE9kJcd`sVd9^iU_2x;tOP#p>PHJp8
zV34_Vcih1!(Yy%O8s=k@Jq=m4WGB5#IJ9kL?3OFqCe_xBdASR|98*f)@aa})=ZzZA
zgU0%&51B^$r))5~6TW$^^Zksbf>ah27L!d&qi1HE<&2J-6cV_V<3O)X*d@(CUfCd1
zUN6f_YnL5;*Pz?udMYc$NWkcIly5-!y#->ESr$(|%xe3BsbHbtT5;yKv|XFU>o~Y_
zUQAtc+_|atyM^Wqp+?VJn^&;AE&L@{@L-?2ain*z|BVFQB`<qAUuym9b}3QgZ&=zU
z!Rm8d^QysHp#z0sOw0IxsPtWBZDwWl)v>*BCg>t_wfbAbsK4bl<;P3H;&Yf*-n-#?
z=LGwiDz?b^45w?mBl4FVKL6lUZF9K)!&P%{`OjG@$os(6Bh|%ySHH{C+X<e_-hW|S
z<9)bu^(Ky(y{FGCbeNd>-1HMq>~4nF)tX_Ni{!QxTCbS<JfzKvP47mR&G}^GgC4UN
zdfaS%Iyv;DY0~F;`q@gKSxduu|GLBmO!l$4EdEKyKB26k;~Qg|;3VY*M^e57c`vbz
zdhu&Q?x`<T_xHY^VD1r;X!=cW>-mIb{-^uCT77)KcEYW?<6ESdOPE&%rj(jIdElnE
zB<1#<!`Hp;Zdrb;LMrl7fWc3v(5Y3QLNo5psI0m3GgN!$eUb2u-@ADZv~Hfrv$SNH
zrSXmshhLo9i&c(X(R#qUL}sS3pU=G0nGDKv@--dzF8dX9<(*r@Q`X{)4nH*=+u-#o
zpYNU65Zv`&ZQ1;lLEp8!?N<b;RS8cow&V1+_GN6loYMAq-4Ad5kLp+b<~aPY<UN+S
zVgie^O98V$gyuYjxo778XnR$r#&sv*(gns@Pu6uNSUmlpB)wk1IeTG*&cA}ag}Ofk
zG}DzAI^X4)yKQ^mt6w?^M|#v5w;kNXz4iE}(go+8oKH2Y-0Yj$c_))|e(Q?)6C^nu
zmi6%}O?@RMdBSO0=;3tnd2=)03Oc6+v*q0KYw<UFBU-$}a0VCC8;`rMau$BN_Cjxt
z9&<^igUE%sWv=T^WnRefeDd9h{oRX$lbT{0oVH&Vx!k9ip(Dv;zjtSs9Cz;`>+>@r
zlNFk#&zqdY_`382Q__Y@OZRIpyx(~=I>!Hz-TlIM{}veiuh=TM+*oFlhl<Fg_d+%g
z^a?Zt(zU;oO%T}Z6Rfp+Ns!S~UX5mlsa}?i9rpvn%Ts=HHRK-NH??o$O-H5}_B8=p
zC;Touq$H=LSvfsvw|?2XH>IXe1m5s>o+xcFI4>b<dssg;l+8V?C32girDfW@x{NZV
zGoRDaJ9kfxS6Hekd?81jeX7t6Rk3wP&7*Hbojk=a<8#*W#*|!%l<aL)6Acth`dSYv
z{5`f%;OV|<wjgmgM!~JF-kc8(d|Obb-Ffro4Z+D)8<v(tOzbjS<y<ImK4j&UxJ$vC
zgG?nKU6?B47=Q4Imx%qMg}PnhB_fqKIoon?*5uy4dBpf{?Z@}??lU~*TXXnKinr_b
zEe<Y0eUIla3-0|OuU;U<A5`z}Zm`hm#0ne!P@YZMo-W%amhtY{zf1b#>na<IEeGGb
zg)dvP;@_+<eIW%0{;{qIkTo^=nRZGdBKG=9^IOcT`(_(Vmz~GIWV(>BUE}1F`<xbe
zdxx!Oj5+3Ramv3%*qcQ{{mOjaotrolRo3)*zdQJ)_=e;Oww1r4CNAn(IElGMY9`;8
zhxQ%WDcuGseE;rCPg=X|#UC3T*~Adtd2c^3$+i@!zFVO^vFqg3*f+DMJpDcI-i2k8
zFO~h`*!{(;<oZ47qgCcV)E+3$?){)HIFES>qZ?nuvYiqq7Cs2Hx~snWb;S#>wOQ={
zUmlp2Frja%!z#550WGFg%;yhXEC{=(y*j9!r%J5*z_UALYS*(PdXzgBC5QgHrS#P9
z>W#P8Pp`SZ_WA^0ZlT8R0^_M?lo{SyC~sI^Asg@GF)6}%k@KnURcfv=%@wNxXVnIV
z|C!SA#(3?mTIST7+f%Z1ykmB(NicY@Q&nTnmX{A*-*DMV`Of@tK4ItMOs~1eO@99}
zGP;p@qT%k^Z5^xir)>4=<6v^QG%tloMf>D!&WmXsoB9u@UGh7Af^$x;_c~=gQG>h(
z8C^;qJ*OTho^RB97sRxuTajDwyDyL6{F@TS+*@3|ZXRS3<}p}la)6`sLE;iq85<EL
z@6K&vEzSuiZ<w^~V?I^syy2|aQ^zl&3qLViFFg3>bn-Tz1%bsqs_UFzC=_O`W<BNj
zZL7xAHWq{LF~`q*3w^xkKw9OC*}oZz>vT-+te?OB&!1N}eyE769a{de?am41H8<1_
z#wpk(-QCmfrl{4hGGz5s{RvXv9OO<+WiPgP@&3V`U58pCFWhKu>e=*O=ZfM%&zC|1
z1`Wz(Go`t8&ba0JRs>|lJv#4~DZ}Dkb>3Ccuc_DSD&IMu>rc3aKmKM^Te*C8?arF3
zGtXSMyH}i_cc`UB)$;E0UqO2}@o#*b-+F0+y}j%mTj{@d&)B>TT;VYx%)ZBFrG4Lo
ziUTV)uNT(N<h1<~QL|{rHm?NT_=%2IZ+9{;jE?O)ut>q&x8iJZEvNC?2T%K|tGYM6
zVcGJLS>U4Ex4S-@izWUv-a5TtlIXO{9>P~S7wzny(02ZJ*thn{Hzu<S3gn83UNJ2Y
zbN#;Izk9&6m4OR(3z@$#Nq4mo>d@NL-q$pD$x(%x2~R^Z$~R6qwq3RDH~YTDzo+xI
z2$z@tXXnbzn_vG;JDY)lfi20~-G$*l2rk&Wd@=(A180FpWHAGSo-znCRxGtIV_;xl
zFY)wsWq-oRE+C~ge}i2%1B0N2r;B4q#jUq@{d?w=${zpt{(a@VnKyH{@74`q4l!}#
zcM&#ysK9QUVIw7Usaf5&GU&-8!9{9aosPZRrYLYJDTHjeQgM;RS7cStRQqY$8WggY
zD@+t{X1WwK?fBtyZ_d5hpI4r~-S~I)-b;s_q%!2Do&P;EeO{&6)lyl8C(8>s7+4q>
z7#SQG7z7x|Vh*f!0fvT}P(H>rceR(ls^1r8&BuI2<59D?g|jGwM4tZqRr`y+oH?D(
zb>KkH^p9J=o6EL;Rojs8x4rQ1{k^)DB1{a|?*CF|Ncg+fo;W5qNbP<GkTxi@;p_2V
z+zb)*YxXl>VZP4)%gV53|5ta01HYo{S;%F+&Ih>=WWF+PtNIxlzHa}=!4OgZnjGe}
z`(PKo?*Hn}u;E`sJqrUS6C7G(nvbOIn*8g2hJ?Qx|8X$jVBY`L3<_y`4p2yAXX1@E
zP)J;pXFTvL`L7_u8hfnF{ov5LMub&(9RQCNdnPQ**ZCj^?ElKn2uc6~paeh;6Py4z
zK;}1t5`aAt6K?D4_W=r^$meGQ`JQa%HTl>4OrXe707VWOb1ldx8~$CB7hrgu|Cf;w
z#AE?69T`Yrt^tKTHuE?BgNv@UR{%vmb9R^|%eDKz*57s3_r3rB(U$)y%wHCsd{q42
zIDjeP@7n(t*8jiv{Qjr;ISuRPXxV+1d%fjd4AZ86*Y5w~zxyk`xN>o*l@LfF$Vv`S
z$bb_uIJLj-2Za|nZzcR)OOyg|*j~H;iyP#&==#_C3}=4+?A*R)Kd2aR=(GEM@7UB}
zzA0c{T~umJ@lG~y*^mJWOnn9^P!w`Euz|vtX#pcd3hXF(#tWcuTx-v?fD!CC76)c<
zFmW`nMbv|n5$^_&uap_2z>aliFaag0*Zm9`Bp47;4>H&OT0Dac6E7&6GdeJ@0dX&Y
zvb#9cOnruwTVU7hXPA%-amMV>Rj+Ra-bh%!{PD8o=WRZ{x_zy_q3-jcFS`FX{ktZ=
zo?#E)iJZUnm5<iy%T<2fzkKdluvJFU|Mg|9g$4EJtuj6EOPN7x!rfozL3S}@IP|?<
z&v;Fq@j^q*^?2qrAdmlCx1SBH?Ne+$?}mRI4Qx+#|C37iE6BimqWmw^fcL+$8@{?T
zm?+%;dYu8}eTRLx3{v>c_GAy(fQB0BgulgkAdR1L8@`_339|XbcE)S=&p|dS+-HmU
zKSw&@uOQVGT86J&XDeH7Y+)<A-LCrCs@SPt<rjD#ztk5d)tL`+zX6k5>R<O2jMwI0
zE#%~Qy?@Tb{bDJgQlq{P6b1~}?2m(-$nbi8GANW9zMkI*a{Pf`&u@UVC;TnW0eNe~
zKT9)E2uJ*v0r`Vr&0x~rAZQSKeBtzEvh9pj?^Zs3|LeQ(wfTtwmMl7peG31IuC4g;
z<zV=|GLviX>i<`)sxA1xygMw^Y~8;f?Xm)Um=ad>P6w%4t^Z}MQODQ%g!<Smi==M<
zz01!3@7;>zCWZx!H`mnP?8?$vl{TgKZgqY2hlP*(c$ga4o)o>a-~2ByWa6p2=C(B-
z9xj)aXJOzyk?{BQ&aeF;E?Q;pFEfAyUf!_}>I!k`>ey0!Uy;{=;X=ckYxU2{vly5f
z*m9PAwZB*Q;NGqbx2sV}e}89y1*d(r-|*+x@(2M&uyVop|Ihok^WTY{e)j14KQ1N9
z>nA>M25ay6@k{)y>iXZyxBRhpWENmBNf5dIKjQZR+tQmo$M#s;Rj>QA=0Um(MD2rL
z=VQL>Pv8AKUDbqv(Sg}5<?sJ{vH#uP{}NvvT@SG->i=%*>wm3Z$Dgaa_WjQEc(9o!
z*ZybxPA@NA|Hov}i@l#F?|Qxe7YEp-Jg<M<zrXq4+~WU>KCd?ZdwNa%-bwY{Yzhn+
z2R5wzKl$zN_iy%px?FoIdda-k|Gsjy$AQfgx%Pjj^4s6<VhY~fuYRh&_U#^sJvXlJ
zzq$Y4>OIfh!OC7-|9=ytY(=+Q$XV9!f0lfWtOL99^ZtMJx%bPfV@-BF{}=jy>im*z
z<+Y|@FBScrpYi|8w_O=-H(%|08toeB;wAlO|0J-B*w+2OKhI+0|7}*Li*nqqzPa;0
zUPN&7_dg|9zdnlB&zow_kqHj{Gr#QXlK%52eLLkJSo;3^{Jo!qKd=Au#rHqMJC>`U
z7`^e~YyGp0!r$*nt-QGRQ?Q%XVvVYI-{(jEFP`~>@u>sY@q73DJF{5*-OsuuZr|(v
zud4oK|NhASclW<m9sbuM)xfZT@%4s({{NT$ogBR=<BR=+&CmV*n~2o=f&JIG?tgH7
z-u>EQk*jyk{&T(fc}Y9#^}nw_|6C5XUgFBH|0`?1@B3H$|J~nzdtdGPoR+_qk%OV9
zjycZ0Zb$9)dm2)Ak6V|^e~`TU{Lh*HJNJG4v;O>BzW}h|i4p&k+i#cG=?96XZatDL
zC-!&ezV5Yuyxz0OrYM5bMcCu5$@Mw^e^^hfI{){yhM3)h;+5KV&mTe!FkS!uqWzpb
zk8jT{{(rB(>gXHix}<k?|EnHOn7`fH5gZNIHvIGd_wPx6UQfu`yKnCAd~EzR{$qT9
z?e{ksEDXFB{=5}$PdcmT|4*BHN@LZ|`L9f?f5p51U%prD^g*pf8~*k4f&Cd#_P1Zg
z>gVD7D=T|81)jILzxKQC{mSou&cr@jX}$m4SHBDUj<c_|2K#F1_5a(Xt)Bl|`ThCM
z<@4f=o$aF=e&yu<*V`d%vgo<$Q8#c_jL7=CdgtuF*8LUT`=slBEvuht{I_c3<iCq1
zPy77q3J2IE*X#Rd{a$hX&9CK^&wqQ*{iOfxd+;k8hoon7pFCW^$iX1B;moh)|Gvg=
zc=L5n|Br9=rkj6XjhM3b++(Nq9ySGrC-)jyU&p&${9UvC=FauI)BkUN&v?aFpF8cp
zk?YN#W79J7dRJN6EdK*e1KKhFXY9Tf|NY*Z{a23f3kq4Ak=y-oWk!#CVBe|0s|+j+
zGSUUpivM3R{@`tUP<QEyV@WmcJ~1L|a|6xXKCZ}On4AB6*E(6&wmZ_7KYn%hm#=yH
zwlw;`$jXjQb9TyVh~B*)JZ0jp_$_LSw(3enw|#i@@0HAtL+<PU-FUihHw%MVCG)v$
z|1_0c1Kk2$BbT0gzjBezVpGZJGMD0{7QIj448Er3ud>pj7yFnrR!iKL6Shvy$#T($
zN>%(-R+_po)qU0;lWlPVS0n7)Lz!6^%o3TycKtiMHuHDt#;=Pqe4kW?m^v^d1e-p1
z^ZLGofAIUB&bfwWFIQwWFdR_JJW%vHe(R+x>u!`4_T-nVKvX7t{HiaNnHBC6Clp=A
z^YeMBDFb7}Rg;8&zoz%j*rVe6u4}EhTj1CK8Sy3#3<;Y}67v3@cFWmq;rq6$b8ev7
z?*8h{|D+liHb_cei2Sc>efitzq@;9{?Ir8}M}UgC8%KD5ygGP1|If91Gb-G-s4dQN
zySd??)PYZXM31Ez#2uS%|FtoD{jZj<@(SmBK65d+9ecg}T+H_8;?;7NnSb~4IWU~q
z#Q3{z>+^||uYn4#PuT}v8ee}~U2y)P_?rD}3JfVX8)nz<eg1))ua#{BPd?LT&fHwn
zydQtm*Z)1C*Phg{M_q?u0i#p{Ljzj|0~3Q3C|PARuqn_$kOO2U*x&_>Obk*DY#a<3
z3{oJ043PCi2}(V%;9x*?U-P6_yUIiodj00l{C9qJz6D=%=}lK*z9t3+g9<%HMh?)7
ydIJN40s{j%Omg%fS;f)dOs>rkQv?P7v%gq!G?VFEdME<}1B0ilpUXO@geCwa(?FmA

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/web/icons/Icon-maskable-192.png b/TDDE43/labb2/web/icons/Icon-maskable-192.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d
GIT binary patch
literal 5594
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
O1B0ilpUXO@geCy8{()cs

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/web/icons/Icon-maskable-512.png b/TDDE43/labb2/web/icons/Icon-maskable-512.png
new file mode 100644
index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e
GIT binary patch
literal 20998
zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelaj8FnGE+hE&A8o%{Q;s(a=A
z`Nj9X->nT-5ZJY*g~e~flGr)jZxarD)8F{SUU_PFa*d)}5trw>7@3-tH#QcpRN1EO
z7dpu+$m7N_CY2b&08a+)*zgAZNestVaye-?wv?5+?!Hxfzu0e8`m*ygjnnn++S(Q`
zTW){+X;j=^W81s)m!JP#GynO^cQbXwx?4XqGO#ExFmgC3XfX-1ID~vl+aS;Y5^8K=
zU~1?D$uKYpbWC7iQgB*qoWkM2z$DPXz|>$lDl-}eqv>EYFO10Y;EPwnz87B$ZFH0k
z<~A@fy=D<$IK#o=u)v&2{JB!R{q_mXk)2!{MA<r>FURGUZZ0%FCLZ-D^4sZ0jAGNn
zzAjtE`Si#AE#?!q%g*LdI&f*4@_rdcgCb^Q8xEe<1Fbtx)ZU+WQhmRrH)})DlvCL+
z>t(HG?ceKad|LhWw=eY>Z{n`<Mlv6JYsuBH?4x#j{ht>u|2|sxpP1ce!SHNaps)i&
z&#gT?d`yQG7R>#>_q@!h>~^Kep09pS_Fp`Gt90{X{k1h6@4roZe70>LQ=<8~Wj+l>
z|MK^zD9P_B^j~*pzD}`f-8?7lWQ7I>iDpqrW)?P|1y_DfZ(YZySQE_hrt9dgySoD7
zJ7uSSSn*?fH%~{=Kdq<rw@=#c{G@U2eyLo~UptlqH+0YZP}tzgRQbF<Z`-|zy(ex3
zuXww1=GJrHE-hQ$uCegrw&dWQZ=dL$tM4whZ*f;<aM~bL+v3o`BJ}+KpO|;GzZ}lV
zF5CLAMrF@Nwgd)AhR3sNH`WAx+$^`=@AvdnrkXT{f`5#4f!l7RvK$b5_&I~4XX=4d
zKjlyDJk<5ScT)Ym*Hs-&wk8*Izs#4;zZCADtuSfJf7Rfh4>*<nZ>(Ei)6dQLV7A6v
zM};D$m7nLI-0Lqt&F$aOsEXNl8Ln-ua=sn0efLsRhANA$m$wW5wOxC<>FJ(Gosgg|
zeij9W#&0awF8ynrRlo7;glh~h9QN8S4CUT;%>T*z%UXq7UD*`$s*R&KO57IY9GoA@
zTho%waP87>**8oIpWf$KxnDG3Qs6Q+_TVV-Rw(^fyz~1^X3cfq)>nUu;=L0*<E{15
zmn&WN%l%4cm)I7`?C|9N+c|v;OIaLv!qR#KUQBR!8Mfa^@NS0u9%nWO{?pqh%l(pK
z*n9qe^PA7_3)1@cXR;jlk$Z+i@q#4d^%MI|ZhRNnRh^aA94Y>G-PX(>4Of2pKLshx
zi93GDfJs5j+t`nzLM=f0r?~UyH_va?e&Ca2c<r&bvGIK|L(O`|13#<h9hqp}&d^cA
zWKhGgLtsPX+xY8t*$ijSGamT4`%K8YmC6ka33Uz(OktpiyR-1l@3WC#o9wSKtl9ha
zLI$r(uV}%)u;3}(yqpRQJdTBuED8!i<=gh_%E$kHaC%;Lgx~g8MbC4?Y#Ofq3rl;H
z#LdLPz#S38)i{H5irc?X*J9pPAAZ|iW3bRsjhI!Mk<C!>&#?aSE_rLF1=YuF7?}<V
z2b}xQeg6DYxvxp{+l2q+u$`7_cxB3P>Sug)j?(tcSI?(;6|QAvWNBd4(Q9?+VF`==
zYZm_|_+)Z-Hp8tHhOSQT$Ddhk_H#Q}|G(|`=49ya$xli-YZM;LW?(vC9(b$yKnKT?
ziS@sd=3lpQ`&a3{ds_YXBkMj_)r$W;W3_h9|LE_RPsl%i&uMaYijV_?fuRCJV-Qo-
z!Taj-R~G(T!{`zITRfOubY;seQvsz-MgMjeUHv!Z#QgVZ%UJ{%<~~|l$kF1tK;q|b
zkJZyBCh#7};yn=JvhMEu6S*$`66-RV-k35eI4r)H%2DEZp!;(=Z^Knf28;iC=_a}1
zf({G@<_Zjrs*QU->#zIve$TqRJ&)GiOqlz9>rQUB@D+7x-2XzJoNuyMPK$Zc&%ks*
z-aD$v;Q}a<-p;)9yC>@He7>a@)n~6`JhASv48z2eE-u9ZOGUR{<$o^!C0zZ+Ic0_>
zQ(4*e279K|bMf2nX)r~VC_gi0s5&TrZvRo1N7uqw1Q^zSC^Tj{q<%r<r?f7^myP`Q
zUN}D8v%5-r!NwmOW$LAV`aj(!oVC^d_n*W6#ab<ySR7`QExs=B!D)fsCw;pE<*|EL
zmoxr&mu@Hgh<R7npY@if?CRxpG8fA-vN%}R-QjIa;Jo7c@7T-#jO!RPk|(UY&$>XV
zp6_R7vf{h1o(zl+CadK-DhM#$?)me%BPoh`g4@5~oqts_|2yncTl`*)DdCG+T7y7@
z`hq$C|DNowU3LE3_H`?xuO0Zjn{m?PcRk&2pI*zU{Oz`Q-|_iw|19eFbstu0V33$*
z`+}FnN_E4_KVL1keVzJQ@71e~YZw(iy)W^)T*1x6(IEC=hbWVxpho$>*LgR}d1Ksv
zSsi-+Sf;_u?4xa6>7n^ufAW>z-an>u=e8gti-UVYrWlj6(gdsjGw*!<;&blor@VER
z+w%7vs$G&C$2{TP=k(R{f4_NfZXKrr!!9+S-vT#`8jGIC$D4kSW!CTh^R=@g_ZmaQ
z_sbW=uDultV%Pe#zb*Wi)TL*eas?e2a=LBKw>t2%tWvK3TJU*kacl~sQxtQ8aox9{
z-wifawum!vFz8EUvM?Q1z9926Uv6)>*w1Tn7p@oZIoy?M=sj`&p^C$6kG%(da<4N8
z{N#UM?a;r9Q-NWItbl}K<Fga@Yc7~wT<^JBx|02~ON-}c&$z?Sk8iP6s-J%)b2UE`
zM}wWlXC96(9tUhbt>@dhR{8a=3zpx%?biGL-&#dLYi*MCKa)@C^XvOB&vCC*Xkhrj
zFi}mxK!oY+#Qit-{r^+pqnr@UmK@1^z^*>}bn)K+4h4p`B+g%qjnh~rJ+7TU|K#56
z=)Z4P{n|G1eUa?Kch!o*30v6?B>uVfH@BkgtrUY&J^SLq(+M033~b3<R!ofLOi$14
zKcpQUcCt2|VOnZK(svu16VAfYZY#1TpSWMUujsh}$cjYvDn`b1rq$xVpYZ=&+5KlV
z|NZj571eRf3Dd7{aKC-T(enT5&Edb~?$1||mipnKV8X=Fa6!kdUU7o*g8uJ&zrS>@
z%zfKpUmAE=&i1g6Lw;cCY4)vq_Ljvxy?yNGXHgk$MwSB+Iwvg_DF?j!b64sArkt9W
ztEz;3Cvvyfu4l~fFp=<@^=joMiJ$4}f9{qQ`FH$T{QFdI-T{t=i!-M%9(7pIe<J?5
zK+WfnMG3m;?+i=6-?&nAW0&u@pTFmEZrPs8#L<u&-SFJ`z@&zIua<}XUcF`iDhK^*
zeP4C2{a9TWXS<`+cdz2d3&*1wYUeNqOl3?sIRB~2(@zQ<3JgsK!gE_3ycFL5`JDgN
zdvVC@KQ+Z`?$osI4mG>=?Slco?-V|dy<1+)S}gPFabE5_87)SZ0|C0u`xOEd0-pT|
zeR5xoIUzQ9`$Y+_NjffHqW^dO-?fKz!@B);YCeX{6D;aW58dyK-Pv{ZpPj(vV-28q
zN#WVW)TqT2I<a2r`|XNUS@qen%y(K{Yt}QKu+E+T*Ej6<>+oN4sjKJvZ`)$Z!^F{$
zc%w1SVZkH^@rm^x6Ma|Tmp&W3k?lbF+xYK`OY61SmfQ~g<Y8SO_S-yaJ~xwU0|UpE
zf)Z;!rqYS~*Zo|db${7RhRs<!Z-#y=i`e$svgG^K_|iS=i+*jNe`o4r_vN0P&HOCK
zJQx@a+*TVc3lzxc`g8lrzwU`8ktwlU7ekU$%zvL_DA~)FAo}z1ANP-{NdjA01Q>h-
zICv&Bcs^ObD|h>^`#NrByHD{(T`HR?UY@PD^K^Lq)X(7)|I51k(_M3Lt)id<LraS8
zFDX{W%O~!;vn|m1RDR1pUgOm7xWDlxd)}Ke-1>RHu1MeV@%%0IBJo>auy-<a)NwH+
zc(7cXTR-)-_y65@U)Ar9xEUTYSKd*)`u}I9V^{lDe)j+Vb9HO|ls~baMe!Ld0t^cy
zd;axJYbg51KWFA?+vWVO@}Cxe|G8f5&(_=D^MyRGr!h!fW4JQ+@A~tM1vmf4PhVMZ
zDk6pV(I5BUrAY~FECLK{6LzpL#R_W_|685DuKMoPhxV@9Bff9`$x-9}|L48@HH;rV
z7+hB?`1h>1N&C1b1EYc8ZlhHV94hDj|J-@!^B1j8@oT4e-%bB_WWVE;f3K%K_CMv%
zaHr#stW$aX*7~=9CbQNr`OExk+lA2iECLL6nU};^bU2rst5^GOV>`Kc^Rn6Dao20U
z?$5e>?(#0TD{6b=cOSdloHN^V&i{*@cmAET&HCr-_W1i^wFU->t(B5@CUCB?{=ezQ
zHk(iPv)C3Km1;2C`ah}g@K+wiIsYf@7yPm|pNXSkU*~5Vj+Feb(XRi>mcM4%{%il^
z%hf){4B63tJ$`?-ZD~+on870OVx~j=#QLuXPJQMTYkzgcG+`Ipfu`!){~rC(O(@PZ
zVG&@sIAc~LUt>e|S^KxuyF?1Ut~@O><Ji&HYfF!==r(5XaX*puf883d-3x^s7+Ufi
zf64PO&OWg}=l=fwTl-7R?ya*@+~?1bb0g<M1&_fw`x)!mW$!XEvK$aw@cG0Kjw#ml
zXBXZ(z3csN^XR|tcP%(~rOQhsM@7#kUvFpL<Cw;-Z3X{y6^gS(SOgdXXUufWo7~{}
z<o@-2{}(+mDEp_ju!4PS{q=uZ&+D&V?7VX@Y=5p_?L6B8CXR+i>5g};z6)~C#<!n)
z_WR#gDaOlOm8Y)1%d(!WbK5LTI_+)vSIOu3$NE<*G%zIaIV@0S+NV@6zqS6l$F46|
z_wFq1sGa*a{@Q<|%@6-r&pKmb?Zw2=5IAe9WA1EFDw{X+w0e>Lx5%$2^HO7{|Nd9q
z`OmleTbrBmCv%pgsR9`wL%SRf7=x;={e}D9togrAxqh>1ljNK>Q-*!v|HXZS-1O^t
zC+>gl=~Emi;K1OLn8tQfys`9o{_iWL`qD*D;%7yE*l|JOzR2poxz8o9J1eL*FeIos
z91w22^7H%?;pJDmYo+>5o$h*V_38WO_w~gJYTe(jzuUChPv`sJ*ISu>`Z&m^|1Ul?
zfB8vo<3J$?2A9k-wzsn#c7DF@zwz^`cfbFgb$eQA`0tpr_xHciSEXMaU%2@Hp3mX=
z-)BGL_cU=n7%I>)i-AcY>$7o%JWGty|AX&;>o;Y3WK3Dhm@%1gMRm-iT~~hp@qc&n
zW9^*%{gpn_9|av4j-(g6y_x9n=+FH5C)MYLW!B$rTW!qz?f1W{o6mN?c@}=FPjheG
z;#z<HD@P_d*ZI9W_3^Lf#Qn27cW^VUVNBq2I4~6yxN~QoJia~b^YzNFul`g8tL&Y*
zU*B@u_Gf>c-6rmL{k1>yY||_KbN5S+70I()<D9^l;O20k5#%x6n^*sYKV^`$-F+wD
zj>G?8#Z%_m`G42TFDW@P)#cx_wr5@(CISu&2CfPTo(V7igx>mpA!qA;&$IVy@BdHh
z$d&ymF3FQ~-+to$rz%g2I3xrd7$h7X32|gFy*_t;ns;r=`)%*<+w8wr`6OOdDax)w
z^ylUW=gW>2+OoXjP+*uLFJPcjV0ioa|3dzW^*8tZFUj5Q>z26rv9IZuOGhhBP5(XG
z&G5_acRi>q<z22h-SNN-2BrfNqT<JV94!C0pF8(7`Bl#U)LZewg)48a-?J|I$@=+s
z=P<rVzW?84FV_wp_wE<=H(zbHpLpB<!Jp)R?+m}a<4|DOmF#_5Sux<<pIoJ{oj+_}
z-#_=#JU%vQ#k}u-r~6JV*=m2TUL{_+&Cr2~qk&PXRgbs*z^>2vx7UC2IjH4fc2?y^
z`_*sdH+r{jsXgAl>DK)|+i>RtQyG{JOqKcGJFnsViT$fL|Lb<s;J%a1o4U$!liRMk
z*Ym4*e*ba*e>JIrS+RjZqC@e;u?-w0v7i07|9RQJQoL;SGi$a-$Jjn@eLw%ieF;l(
zrvu!KEDhp4CPr#ZcFO<vW&L0H{<r!k`OD@V8(W+h7zMhPzDU<+33_fnxqs#3TK?O1
zm%`7+e?4s1w|)QNyggH+xpd{{xcvJqytDc0zcRK5SsYtb8W=J-C)_^noN)K&?X{ou
zul@LY<<Hskzx2g~wQ4tHZdJ_Q@VfTD=ac>RzVUAkYu6tCoSLNKDB!@rlBi~N(-f2|
zOIGLEzcxCc)wliQp<7dD=Re!bb71X7J#nUK4>wfokh&=99{jxCbp4mD+nCKA7U(jv
zI7Bzyk+*3)@^k*lOaF|wpV+VWD8K&L{=1R?p9LwVTgm_arz^KcZ||QIE_LtbR$Kgk
zu-}nKA%uyeAwbuC|6YNJ@_)Ir*Yv%)eBg%Kr}(GbIn}9xEw|0~?%8*C-~Xkb|If4C
zIcv-Q&AdAVnQ}Q57;XtY`Io@?qvKEb%fDB4PG9?LyZz(+yS~M%D)yLjL}dxw|NSp~
z;(o8+{;9L-`5iYHclJ3e_%Lxa7`$~`A1$O&{%=>Hw|->Do7-3ayjA{RlV9EW@AL<W
z8_du189KccE+{jyIP`C*ykfxdqvy}=o6qmZ_~>ijjJ}xbp(^k*`r?x$4i--aMu8<a
zUu@B4eELV;&U*Up`BqbkjjxBzGG={eT0d8Kd-v0~>&m3Jzus4`RBwLo4r?Q<$=<B^
z;B(9Vyl+3l*MHOZ>RXrnZ`Z1c=UF@oGo6YTDeZjvX|eFnohhs3P5&RPk$l0ya%I)h
zqe_-1XY;eT`6fvIoNqU!xczO`pQBg*)Mfq4o4DU7>Uw;__1gay{{!onO5EY#P+)LN
zaA^zhKal?9zVF%i@B6Kmth>D|Kc#;1TV`Rw_^tJG_D>Am!NC-*+Q4u_t4{8oY2()u
z_rGO6o7q%mTEAW5-dnwBHc`p8S?!Piyp=3wXW8b+z_@|;mCa^xPzue<`gc}hjdFeQ
z*-18cUat8+>z4hw{Wq7zFg7j}aA4p$D)i;BcB9Fs`6ut5jQ*>$H|cO^?P{ZjcSW<m
zy?tEq+xpH$wev=IzV9#j_x{e*)%}|uoS$n|?zBLjiKC&;;`0<a&L1_a<IPR$KX3oD
z_1^pVD;lDjt($J`Kf9`4>A#%1MSoL+Iui$jzd~l31gH^o+it4+x78eXR6m8+7Da!&
zpZ;V$^MBJOQP~4Ox6e(#!{7K;z=0vB-P-?cLxcB|{Gw_5>t@G`=YQ2sS`ob_zUz!@
z^OJM;^LM|Je}4a<%Q8=nFD?v>7lbq9F6)A_!I}Eqf7iGi(#pENvGAX+*|PoR-4E}+
zD|$Y64o{HT9w+yLfA4yB3Ntx_M!uRvUpQ+s<tqK(CAEKlM}4>H|3%ME&e<LMBz_af
z^sG}w#w=`(42%XG#uqrlnNIz*uP9TK_YeDhds~qF&flGXa({2xweS0h{j200pS;g=
zdDn8Ffm4BjEk|Zon7=~p>iaQv%lf|0ovNR|e$~h8Z(o0x{~6wY*x>fQbzCv4_#?SX
zfB*9h`@7mbzOY28e9oQ8tG}xoo&Da*$<4^Y;>y4%FlFb9HEJ7do~T!@o}bCPZw9}A
z{ki#1*VpI8f4+X+s3O_#;F`Ve|4M%p%{}<@^WWwJJ2(^=j-{U0aJ#Jb>Hf8S|8~8p
z`pm`1y!qNvA*pje=BMnxe}dtOT=!@54UE$r6bzU+8V>M?RhM5^u8)?Aee>EpLNEWu
z*?r3YYwS`Mcf0&+3wvzD(c;a(D6sDBqSuv?Pwp=}cHe#Neno@$JOh)mf77n^ZA<?v
z{L}rrY4QO<K?eqxls6OFqvm}(e|*DL?Z>-Ter%WislT1!+QZX*ObG|$Pu!RK#n)KH
z#KDku;sL1RulD=L-}z6%*W5DK|FYVm$^ImRMJ-P-_qyMIJO9jGbI4bKql<w_L8JKS
z^_!qJLUPvp|7$Y;T>bg+%EhQ>=d;&eU$^__&+xCeZvHe+H26{ba`Wc@9iPn^PN)h<
zFfy_n;OMcqrnuzX{{XwPs(p7}ZJ)dO_v$%+p4FT4oH?sp?|s(kZ2g-1Y{ys`|FZ}%
z{F`}c5j)fCiS?g5Yqid<x3Ba2kZqNFymmsZ`@hPnlbcT$1br?y*C=;V2w>u9aNsq6
zmZ$yv|A(71@BE$O^?UifQ%kPRm%A4no}2%>y7<-YRX<-poPPD+YrkL0Z}an_*R>po
z07XvH$%#G6pfSN{+4t2qWPWb9-?(1$Qu+Fi;=Y&4pUkhfGyOlY#!-Te#YV`1p`yhz
z_$`Ny^8Y7C?aofD|1Ma+`E!2k=k04gieLVI<<IT2mhaje&aenD7)IASB(LxO^LypX
z-*>Oa=j2AOSot#_G<0y_1E&H*TmIsU-vccFyPrGv^t-?OsqA*{kM&OTGvD5q*?Q88
z`SUfebz3}jP3C-!FFR&$`akU2!!(YbCI+Siku;ui0oUjE{e9y<--?i*zqU0$er^7J
zr|Q{xUlgU^r5x0*y?uEpD@Thz1Eat`-e%dxvVZci(I3)<qG!8(*>*j5k%{ib=hd;<
z0+-oNn{?fJyg?u^|NZLdxAEW0>}5gyr0{h&=bti(U(HdbcCnDd;Xo?`(}7m0?_1OY
z-u=<uGjF@_pRPwvw(D!x<h}V59c-NK(AjclBZv3K1vP)4x~mr*@3h^SR^Rm5{P4+8
z0SR43mIE2S)^{3TvevJ9w*S_v>#0xHN1CjEl|M=0-uLg;b{D?&{0EJX@`?VGKl+pZ
z`)$Yb3K!%VSsd!uR8H#nBL4Haa&__X{NyFyb~4XiZW<pQ_4)iH#_8|<pY%<xw)mgc
z6T{e;!J)vg$nfho_FM5!^6kPdPpXN0lK(~IGJ8l0Q_Yn>p|}2jn_T@V?9x9swZ}>v
zM?lSi?xovp{Ay2}fB&5CXJqNhrPJ3~-MM#p#_6i(D>Ij;nSIj>DG9j#r|_TOjGdfJ
zi`5$#B=&Z0w?9zy{Qcr*>yM|+f3*Eh+Woqf3sxRGxo-99kKyY+oqx+05dF8~&vyIo
zFBw_dd>9xFQeO8g$iM6QZ`Y%>-#3<qPkg^FwVZkSH_hMuF8|)e>=b4)1T|+<-p)Jz
zO8-;&`yHtdVt?r!ytRC`orC$Mg1w$+_rF|Q=ko8}=T>V)0bxcK2cK*23fKHouD@FO
zJ7oXK3GHEz^}khWa(!9JdgYJrnNy|$4GzqVEDXU%tQo(bxE~*WYmLE&OWdbj+16(L
zt6D9;`tRNueQpW@+>9&^I@8`|&N=)0&uOKfc}mrn75O(F+dq+2Lz>65K3KR|mPH}J
ziGlIJmJe<Ve&*EwU9sq}xj4f*)$h4)AM3vhIJ5k-C~wxkd&}f`9T}LWu?R3sJFsKV
zoCC`~uP^%cS6HU1w_f?y`M4jO&-es<eqVp-gA0d?0|TQ#<HX%^Nn1ac*KbPY+*|Us
z?qh7jyS<t_FPn%4Zj@-8wLd)jf&`1g0|y4i2MoQ@VJy1}{_XqG7I6D~|JIHBl~?|h
z*SmCyef~d=71!<Fe|Yu$UjzFm6&44DHmM}@t)Ij5zgGMH4UONstnOy)WrxW750pP`
zPkOq#S(Mpe<;U4`-YoA|3aLMQfB(BqL)cn?E#?#Jzt|?udt0BU_G#zyw4#3nirp@(
zEB?=4_GQZSQw_di-6bbZmrIu~mY8$ex%Jl>7fHk4Y&vFqSsP|ee5<FI5M=+(*L9t>
z+0^ebJDWK&+{;VKl^NX9FV(SyJp1#z^3$iU-?Eh!uTL-kIA>}9>R?CZ8?V04J>2@|
zojKpri{j6XW@ne*WWD&+>~rXhrCx7eY`lA7%Gr-IO5#0*p8lzSp&R@&`u&Zm-X4rI
z61rbWu{eZ0`(}LO$j|vRPr8F!FstpK9Gz8t-Tt?vudDX5nT=wm|BjuozrOWC|M#os
z{!bKtR%GDsI_K*0rp<AG61Ofp^y=VKaqIV5hBak(3wmcobjaKk{CV)S+NbUJH>yv6
zH}SvuBe9#V91SOU?v?HEeqR48AjE3>`Tnh!Uu-VsJAX^UKd$6Sou%0G`d6(xSNvRT
zS9_~SH~M{o`sL_da+7_3yDw9Ezc)vz{<&=Rr(=6PgQh%SZd77qVJJQ{!(ry<e2z0c
zVb8-;xq7U_$`@v;tiQcs&%M|C{!Mx;aO}|^ZRL9JdsCllrM#Vz%2YG$NwoVj-pRZ2
zczs^3RW)A$8t#9({`d=NM~0qzN9x!j#D8x8BYiL1<VAa1thQVF&v2{%EAP}5h2Ps{
z?|JP+>z9j}|Mw~X_qu1MxP|pa->leg2bTR+7M}P$#%$vL-*;X9iK+E`3u1BDvdmn*
z;@;2wX3={m9p82=|KAb0bta*@yry-_rM5VpQtth8xcuMG6Zik@IX>&HideRuQ`etv
zPL0>5Y~3XX?^oZmnYh2)_T2vV{R)dKSU`pIn><kAe0TD(>qW^=rv2BRFJ1TJT>PY~
z|CYzi(9QmrRnco><Jb5kQZ!qu#&+5Ik27rC*M9unXx{nf2Cw@h*7`=(?wXk`WjdS+
z3_6WROLi9h<DY9e<-Wb`>)M0&qy8EHzkbG~NWU$l&wlrnAJXC9ueTg}X#Kxr_58vo
z`I-Kci$!;J{CTbP#jIZVRo1_ymzO+Y6aBgW^`+K7H@><*@pWHr@!yQC^GzI!LkgR@
z?7Dl;|5y9V=A8dIyR7W=_1r(cW`$X*wQ}8`&tLyj-T8-m&-HVm2AuPCpZmK$I<`r4
z^Xb{U)+_xlkJb8=eEt2yKW8Tth1%WT;nDy25p$y|qzOOyOUr(T12Zh{Zt`)OZ(67H
z|JBJ9A+G1w{I0zH{e33m3$0K3O&jjTPPqE#|1oLtPv7$uKJh<Uf91h0Pqu^twVQeE
zY1|Wo^>v;o-?xa6d%ydx9Pj^^Q@L(!VDo+Q{`fKJvKIzhUT%1)+OsQt#fksF^<z);
zPyY7ZxKb&Xl~G{j!_{qTSq?a-r+?b*pSt|dPPc1EFJvyT55GFaH|%@9%Ph9lzq{`U
zKi_XZ^|pV@-mB|Z&#M2Z(78^zezHr;d3(v;iS@2$|Np*cG5!19f+<_}`zO2H5Mxqs
zT5Qhy^H9u_gT}@`Z;1K*&VF^<tnPitWAhuIx0U?Mn*aZz!1tf4ul{2<S}|+?ECt!N
z=dxzGGC%9@OF#Sc*j#3!`TO@99^^~c3%GspVL8yz^RifDZZ|{x%+_53tDY@jn!Ne(
z*Q~n7p?}%@;%{g0ocsTMo|VtFt{0pC>bAxIb5nP({u=suyHxz)=^G6{>F<nR`gi)d
z|1bJ<;vHUm?)Hxk1U2$f^L8IB(_?zGYxCCCy;*<6CZ@kQ7r*zHW$C}wAY<O2?W?`^
z=eJD!&6?nI|EupCcwhRLf9z-VZ0C*UEesvCY$iSR&MZH=?tCq_-F`joe%*Az|5Z;w
zqX6$%XMWSS`hQHfaNW1F?^fUbE?@K{e$KzCGMlgdyI*}W=3e<@!8!Kz>-U1%Mn^5r
z9h<`O<Iv~go$h=8g|8Koxw+iOWQ}O}>#(-S4Hxvk?R@)WUX1jEoBvMztpBpoxiaJS
z#QK@GI&TuHGp`%(^K)5w;{W=1qsjAk6vp3M!}s%Hhkf+t!dhNN7KY1*I}UiUq_8t@
z?RgWmS8c<Rus1=M-zz_g@BY*8m!flSzu_nSb6S(1er3M>{Qc%<@vVzb{;Yq$aps=)
zEa&dO=ob->6n0>UQ11TDrpom0_cxz+wQi|Qhn`=MxLMg{()s7_xv5L<O7Y%!w^P=9
z|FxZuHcy)MU)8u$eqz0~a#6W1BMXD@k*))692?HCgj{>EIc~<a55C`CiYwQ=zWPVb
z>A*(I|Hn?;FS1*+cZ2)e2hkq0p6RV&Jds{8ZEOANnbCC{m%s8$_4g5ycU4_*?wk7C
z_Xl^FT=ZaIywK6X-NkaL=zvbNuz`);In!EO5&wnrKPBf|&eHp__}P0q|7qv$Z?0Wc
z_2lHAW6bC5`)BPpG}HS6svjAXdVF&_8fr2uR`xyVnixCVW1rTc^1d&&E`O@@GM?Ap
z?zG+cE~29SkBImmQ@4Ld^&353WJi2nza_m}KQ3|CG(FGEi+_%-Ej@o({Jo#czgrt;
z{t+>)pZ_9rbsGay!^?+04xJ6ZK_hIF?lPV`Te171Rng{eS!uDdvp>Jr{IITNci89e
z8ke@sWjt~I`jMaUM$_lp6uRgI|Ne7!nN+yr0#Qa52kn|WF(Qn)=dR^<y_g&R)_Tsx
z_gOasE&g9_|8!yImkIOT0-r{G*1z(jH|w9=oc*3jhpv80{XTPz;ensORs5pOSOgf%
zw(Qt8#o@Nkfn)NXdj)i=qcV9d<dtq(EOhICmiJ_%WxeYn=a{R4^=be2DgEygay%=^
zD;Rk0|N2#1{-0dz^6y=|?Yk0{28IHb<GHU{ws8FTak;&yZd(-dg|zy8A8&ulIyd3{
z>E_-;KcDmc+*tNUZQ)n3?0-k!XGi+pdtQEP%d`0w|ApP38pXYNENq`EDdfN)(e!9j
z8k6tL1|#{4ce2iks{Ong#&59Ovf_FDh6(+vw$#6CvCn2qXgl>{)jp;FHR-=()>nlI
z{d}K3(f-{1jJSe{^-LTL|9uwc8P4bQ5M!IAvpuit!R)&IsgI_w7XIfH`!>GdUvJ-q
zWp@^3bL=eYy=wP=;?+N23kv>4|2y>Qhbkir!{me3jb4Ha=3lwg`DN<0d?x27_gzlB
z`93w<M(S!u<nPk(uOB*0dH1aOIr&?DzD-nyF9YKRDMj8Xf*)paN@zS%`DDLS{W|N9
zr1`}+wQEan-M=Lm^m+Z<si~d%bN)N*KOtDo%_y+(<8HYsEv9FS#MspG1=mEeJW#xP
z`)kCfxBANe8|MDMyPW@Nqj7Pd*`~68^AhtHKU=?AcwT$Z%{zYoCd~h<`TNgrrt`&F
zpczetxk3?L4VQ05vsl;8`hTo@maDDemlN@p|9`Lk_Vc&K`6+9@$zQUopI>!ZMbPQV
z`~TIR-E|xa41WriOqF8tV)-+%s{4V1A5V#Cn9xu8nJ04J^O(NXFZ%wn`N&W0**UL+
ztJgX6zwD5c+vu`dseaq9-0Wo^@2D|xG^jcKxyRjj!Np-?+iaJAjMnv~+x{Q-JOAXL
zv9bB{e4$r-HS_nMKe7ME(gn}nKRwUV`^ATW@q+P(8S>(@I4*4SQvSd4&bM=SABg?Y
zJpSd>(bhlL)%l-%oGxCp;pmC@&pivDt-t)w{$$qw8ULT~*1h3qI5;~aM)uA&4g=l7
z=j(UdBs~9r>1gYpKgr@xwb!3{+O;@%XG-`r@dY!PPFBC)lssc|S=)~D``@34-+L*1
z>EFVCkAK}ZJ$6xn;aJAi#{SIPN(V&zUrelj^he%)f_-h~G?#zX!4tE;dAl@d3LJmE
zZRh#;(w*mL?eF@t|M?A{x>+ag7j7$v22J?XUV0Yk%~adXaGRMk)E(66ak%_XKX!)t
zx&QugvraF()i{&U!bouEvxsgV2Ud^C<#suHZXbO7ec`!%a`KyVR=ugz`V@Zdzk0rn
z()9Q5yQ->H<vDm}GB72axF%V7|Cbo!GK;JC-=21R@aO-Rr8{L(9_HI|trKBf)}XV#
zd+D?O&)ern#Oy0&;%HbqTj3p_Nhia3)mO*Dg?mgt>GRcSGL@y+2IVrug+7*lZTJ7t
z_Q@yg-|Y`imbPU|$Pwc$u<=zo@O{E7J{2CTxAS#>L@)bmx}%FxJ}{f<)G0>Y#^Yh1
z|7#yl`y{;NZ}d5-y!&j7EC<Y1d_Kd=w31`S>An8T)!Cx*tn+)`oL1UiqyD97e?s;@
zaq&<7@~6fAtUM?sc67RuLpl?Wxc8N-f6TM~%IX|8mzlRcKPvUf{`whfzAb<Dp4XK3
zE2v0T&XEiCcj#<5Z*M-idcNh9&#yuc&9e_(eef%1{dV?>L-VC3N4@=jUe11k{kgE;
z;Yq6*7PuU^dVJZZwnt))-v6Y}KHs}6HCk`__kFkO<8!|zADrL4c1OAdivYvn4a|E_
zaKy~$tcjDAp3}*2xM7RQ1JlM`Hut_inYZWd4VPt%YwyGr|I<HriM8H$WgnM@w_reo
zaKfhb@oUSj@8*e_AD^l{+h;=O-rV(?)peV0$v@BUp7fd>G_~rm_{hDbi#Rkst%zQp
zCd}G*?q_yDrGuD5k1-=Fv(DW5e?M*glDZYQy$juRUjF(0S<1XT%?wNl5@id-S((&k
zHke&-d;UjO`M=WPCmR$(`83vWZdmnmyP?m~y@yx+oc!(mfjuTWRhc*%bQ_;<Jj*hL
z!{eUPk24GRJS+5dIB_mM@Ur@!+$(=<uio)BW?X9eKW%f>?xqv>rM;xOrZ6xm1RZWS
z%F$(dSNY7~rtF1p#%$03FI4Ay;;ldB%AebZPU<RNnAzZ6rV=S0IF0eeqZIqBe{ww@
z!U6^=4Gab>M^kSrFK{`KK7aN}_5C;V$`8Dlv)|0qePKZ$i;jHwv!&H@<Yalbm#|#<
zQ*ENt|7tD+(}MCRHWykCyf&VAeyafE;(~wu@+YQ$TKzZHA?!|YX!7~)h9^1I{@J{<
zcG*ptW#9hCB(m#%yAK1Sz^1QCuXnHJkZArK{`=4VHFNiGs^(AJQ0MZrv(fg8qW#g|
zHFN4#%j<vZeADlfa@du@CGEq7_Sqc``RAWZZfj@lJ@<3_mnJpSZ<{QGs*)D8pG>(l
zpN~%{=G&gE`Two^&pur~>2Ym&#p?O&)|ZbMfX09_#j8S{4}`Gvoceiw_iUkM$Jy3&
zHoV)l`C^gx+2pIiqCd5t|G%u>cOts)(Vw*s3JVKZ1Q-s^?BUa9@>ODZzTeLORn{vr
z!Lo3r1P#;wlYbjm{y(|cqW<3*7e@w0f!3MFEl+3(HhkW`d3$clT9*US{k~6USm~U2
z7Z?_P``hVN9}gYX`eeV;e){+MDxdNXPpk&5#Njv{_hp;I0u82P5C7<&njSyrbffdF
z{p)A#TFvodb$w|3lvT6r&&{{jH577SIFj*oVsB)3gMG!bfWCJ=Prfn4zgg@vY2VfJ
zcYn^Fbu~QYZmQ*h5}n-j-b(+Ii!1F-|8LXSX%CttV(4|7ZqBJ8_~FCNnRE7(XkCBP
z{xxjB-kkb))6!DE1}*j#!pyHvF{)(?<Xls_QOAC2-uip5+COhsJ^3{mv|MPisj~d(
zhfXQ!mvUowaUbz~^8beG&rjZYne~_Les=xoKJRVB_&a!K%JsRm;kB!ioS)=dW$(xX
z4a+5O(@U1NY20@1{*q<)R9XK1Q4tPMVrsi&f7an^`-%OhB^__WmJ?WMF`fEZ?;-#G
z^@a!Qx!mmT-c{eAB^dCg`Q=XL*e|iJ|J1*wf8xLK>N;!OEuJ0*CIy4$i+2kJJm&s)
z{TX!n>c85nzgEww`1mu5Mdr5X%&<LH3r<JX+g;M%x68rxpT+;entF*=c_t19dznmD
zreiF(tp4vhaes%fY|M=Ma)(Guh5sjVuly<eCo3^mty!&sf#X(9iJb}4sh|H3J!b#p
z`ZY<udCPuJ-o2+gZhifE(vtCau;yu&lFZGkYX4dM*IRkHYz1h^LR4QJyZeD_Kd-y~
zsyZEee_~0b=7Lr8Q<WCvFAn_tezwJV?oI|K1(ocJ*AqBzSk+Ii{TzGf!`DB1I9~j^
zk&yK-_8iA8Ib}wc0}^Xb&0up?DE%k?w7ZY{-<O1KvTt`^`|w+c@#nvlC;lJ%yYmlE
z`fvVMyB*ToTp1V*bgD1Ro+y}6^lzQ%w{-?HzbyZDQ<S$vm1$Mhzf(W=|39W&bks2J
z<?X963-5x4Ll13NRF=?aRC^wO^=<CE$@;G+uP<iZCB&FI(f(Zhf_Sc7rW#Bf4URLL
z&-JuAO#b{mH2M3{)4wa3LT5I3e$#p=cARasVffs){!iX#yIt_(0gb;#%ryMw<zV?g
zzUGmGT<yV})$`xonUMA8*2yx)bH{fxcm2I&TCen9PseR`vT6f^#OhSZ>tP%sbN74t
z?mb=m$CYF4@8GKraYvs_|1G{QUdKgk@)w(bPjs86&1A^>7d`WuP011#0S0ALox`u@
zH)KAszamvXJ+OYJsn31cfOJo#|Nov_`pfV$vK*+$Iq9*@V}aHu{nerQi)Y`vE^}jv
zkeZU!C;flfvp5$#+us{`*!Z{~1EWD1xADGnoHtzl%`HFnknwg@^@f`A24_o!-aq1>
z{z-qo@#=X(ab9DCQUgPRoWlav#+0r9h1owH%{h2~n{wUk19viROf#*QefT={SLnq3
zzur%>-u2!iue_nEd%?dDw|~dQKK+v}_~&N!M2RB=G(&Bw@W8{tx_;}e{|4Wa=I6Rz
zS$6nF+5c(h?B73iRk2iGkeK+u?~_+N-%rD>rq>-8^f53s{A6TgXVRBl68+b2uJ7Fc
z*XF*ea){mKzwc@u^Xw~5zGwGK{1iW!DH!lg?BJK9b{6&RFHh+TXn+<KBsm<I<Z$oj
z>^+yRZ~Ez{C*S07QzF83d7q!_I?WWOjz88j#Z06u8Ce{j2sb>uEqG(wXLH??((?DS
zZzb5p&cFRUKj`!M>%V-1Riju|_%z(oba;|)?!QxtNsUE-L2b$oHYTM{UemtSKY8P$
z_blt5b93^WKi02)6g`ZenX$pcRYS1g?Z(cU|I*^0jMXbP`nx|{bhCp~fkDa4&e>dj
zLC|0M%1;6RZclFiG}oD1KkZ+~Ep6X#ANiLaTkrQPd)3$334xDyhUlHzZ>9N(Ilq4L
zn^jf}@*EBaq#0Qn%%_-`lrgQB(|K}zUztMvm$x%xBof#b)JJa0``G(@yN9b!ilVi6
z-1PAMUtBHq*grkw|Ks~}-D<t5FGU0mzP*=x{JNikX@UJUn@kp#IJ<}w>+9b-ynF4z
zGGp44-rCif&8aV|zFyn==1tx0+P~Si1$5r7oBRKCd`-x{(qB7MI1hf``&YN<xvu%i
za@qYM%e0OjU}qA5HTsXZEyxzUaOCohpXR1dUVab#{VR4>_`2HXhbk|gt2grw*46s^
z|8M^On0I@=rd9q9&39qhap0*OhX`n)fsjCf!UC5A`@cl+NksMTub9yAva@d4>OZF^
zWIz9ZX>tFl&Hnc4w|>6PE-zm;lVb;`-~)s7ovci*OdJf)SXg90W&7%Q%L%{Fm+aS0
zxc&97(xOZMw!BE0{5f8j@qX#fJEf<6KbaXZ_8CvVtuO(!h*wzQLQ{hf<Ni-aTq_^E
zxs#E-;AvykS;o@SQvZ!EotKz#<&XKduiJ0cP1q;ou=MX~rT?2AzFq0VptRuVnx|nP
z7c&cda5@miVq&|+RpIWHEtlWdzI|Qp`Fr}^#Xodh53Dsmd3#-oZ^PuootjllDGZC|
zGcja%J6JB6u7B=n_`V_q{<N74(>?ZwD&)@MToI9z5c)X(>P6Aq$tU)&+5NNV!0vyS
zL{GkJ*dF_nO^j{Z+!J@?Wf@r<O4QO1#0qE#GcG$X8Fgg+@3+PA^%GrR{fVDGUCuUi
z*Ms$1pY;EgZ#DQ3TmO@5=WAy3lcgODmo<-<3V48=%pvf>B|(#E-VP1^eH%Qkv0PdE
z&b(?(X3G5Uw|?e+YW?k-^=GR3&&rNJq2<d=&+XSM4my>+al+oavX$4Z*G;glXA?{?
zS-yjVNfI>X&&VXlxyI!{qs<SeT?Pj4ue3?L)pu>Q`r*D&<MW|;5-(5uf9mdka=X{I
zUo+kQ9esUeR)dOg!D-*3x1v*+ZDw|-xq*tHB4*<~|2Utx9$=oyk#V=%teb1o=AWf0
z@n6@!zxwy5;dABxM}E$)^LzIB=cl=h*Je)YmA>S2fPaNggBE+tN4A*-NeQnr-I*V&
zH84nQua&$zjiW?~$x7<9k@m&JRY{UR=Ub_spH~-__PKS%|6speTH22$=?2bhaACPq
zv^l2yr)oz--!q=GeW0ePOj(Kuv&sV31NQZQ7TNqr+NHL@WN%#X=IwjyZkzsFBzaBg
zfAI1r(f+pDpIg^;`=sb~r+ocqQ~lgw@#XW^wI>z1zB`uE>okkA;(K}g%oL_|t}Hws
zW;;%Ab7EjL5b?gy9|-E2-Z^w&AA8g@<H;ra|Cv<9ewWif|IPmE3Y*_ky8aZe4?Od0
z!M|=H##PdOv6?4iR`?vKUbo-N?oXq<Bg>B2{nqZV5PK^e(b;hI(1G4K*0{&(`~I9i
zeY$_eiT{?7XP&R_h|hIAbxm!>|BX8AB9>2FyY974aQ$_f&1;+Pif?^y-kjLIe!r2W
z`h#2B1Nd(IGjEjR>1AL_$Pim-zgQ(fg~>{)GBxC_NZ#zyBFUfjHD2?)v;J9q@}FD#
z>PzwbJsbwrM}CEhCI`-JD8D~pDzgBiUdqn&BcO`OOwU<bj8T`V?qw%)rOSK16<vS2
zC+2_qERg-@XqMBi^Z)nk`SU@u^4rS%lQxkbme=fC^)=nJelJ4+Z^o)1#!RmSW#J0}
zpW}7Jj85jpd%T;zX6~E&d*{kl@+&1o#IscybAamO8I68NoE(1coUW($WcvIaJA@c@
z+4Dmle=q3h_cWh={I^|+*F5{bx|VZNC)RIM)#tn-d~`x8!>3n@zwbxsTuIZ*I<{Ge
zQCoDW5##&44=Z-5HTX1iYVK5HV&Z7v=s6?M?wa7svZ9>*#nt?5(|2bA(<GaAZT_{}
zX6O2@Iesxu{>Qrg<6k<lKI*f-_>Yw*>UTcPuhetYdvyJfLpsxyua`Sl@G_sg*vQIY
z^+~_`M{w)J_mNgzAuKCe8`p43Tr+RFm($I_lo0)-GVcmYO$w7)Yz$*&yXn70AE%lA
zXP2Ltzj{`^*iZeEGJEgi>fGO_MKa9gJhAQ5Q)%63;R^=y&c^5e6E|WEtbZ#})5yTo
zpvl;%E2wdrr6u68{;}&;pXy&WUita@>OW6kd-0#@k_|O`liq%hY;({RyEAj$H5Q#`
zMl<~``#316t;+rvI<fxZo)o5SCJ!s$JOC}>O&78f5oVn1({M5JukF<ztCi}X{s}!B
z@A_}4>7STd`?CyBy8ioSGfiS~yxZCMbLy0|Onw&!pZi9~qFfmm58P=uFb$N652rsb
z+HgaoQvduJ{o1_=?0@xFe++m1r@#8d|CRZw(SNV;Jv;6CCo;2Mm9HzC>Di=fe@frR
zzvuJl<CxPG<!cc7U+;bN+Hdi$|H>4C1Phkd{9rcUY;b{3HoU)ufhj?yEkz<xSmQKH
z&XG;u8uOM1lwA$8fBI+tM63T#5ACkmGT-Ib&c5AiI5qMFb!-hU=zP-GXIEgdnyX=A
z7s15QaBx;z-%+;&RVKX?httKc?q;@WI+@LNHRtO2qdf;M{j~pi_RHG3n|A-7D%zjk
zvN!JUeA$1&F~SR44u`B&@;J@3YVFEZKhtM2d@bI@rm$20EX#`e@NCXIGW*?D2=Tg?
zE&p`y_4+CN_np)ZJifAMB?E^71CxPJY)|`vSsWFL-<cNbDrs2#pL_lM>C@lsb<#_2
z*>6uS{MpwS(|f<l*FlYKO0l2#zf{kEscDL$%r8GW)!CiwY<$J)wEdpW^+LY}`4wA?
zDnOo?-NARvEkRj$LUnzgzSy#fb@z^H{onojS7oKA<^P&n_A9@pr~jUw#`I;;zpHu;
zPpY=wu>V;u`cvKX-;?yxqy)W3=ll4t@n=;{Ef8M5saW(|S+HP%xY7bn`Tg>oj4TH{
zcupD|b9Lx$h_Cw7WV6Va(UyPXnV+jq{I7iaCw+73ExW?^H?{sgO>3!nd%w)rLGP2l
zKhK%D!V^+iuH8$!G0D4bj+Jl&M+WEA+sz6M3>=4iN{rl?IyrW1nBc;)XU0@!9mgG4
zesuR=nE3y6e89Q=0iVyy#{_J9AK%@a<9ncH;?*CU|F6sbm$k9JDk&lCv47qAtiLzU
zPxeW9($8m>aPfmy<E6Wzog6#n`7|)b>2c0sU{WYxzVx?H_=3`d>GJy(_^rDd)SP}w
z)zAFwpY`v%tw#F1s<3A}Pt>nvns5Cuf35A?4cXUNUKBNa`guC5T}b$qT&UWHl3&*z
z>oPWQWGp)I{<s4JqXC<?QClF$NOAey3d`e+PP6Q|@<V&>e{s1foBda9|F!h@pR2cj
zuk!zKdG+7x*ICwN{eHRV|C6;1moqOdi+Z~M&i(a4f3mLDZ!<h_b;Hrt?w_;%A6w0&
z#TV$rvg6Y8eE}Q_3{D$G{`Smj=;p{^3ftaRxAVdKee6%)nD0~l{HA4p=v&**vyKY?
z(lTb;`I&($n`x3TOWBmm`uiewWU`d)UoVr-%c072ulR5%xFJ@WUwQZzV_TX3^DGXY
zeg>w53bTdo0vf6TYD_g(ew<dS-+Ig5^S8e8|F3`loU~Ont(QIdy0!7NRQ<oT4Ovt7
z2MJjV&(vJLzbqnP_uAU2rvH1VH2hTYc5R3f{;;^{ZR&IdrZX1{pB~^;U|`Er*u~yx
z11jVne&jBCb+lDRB1dq|>W|m0{;yxXrM_-!{jRzCrT<#3rHvS0Wr;pq{pDYcyLIi|
zdA|H_pC4{pQgA`SN_asTy8_dj+yk<QRT>y1mc_mhWzpiC(%G<y;rh3~4q1oqp8NUv
z)2UkilQY%#&)joW-?m5nZrAer&z8rZS<F<vS50B%%hjQOUJ5aK_I(JqS6|O{XX4CX
z;a9(H-u`oG`;QynHdF<znd`jZNSodC1+GuxMdI8y6)`9^=s$-nzVSRJC<-d*d>70v
z|Chdh-S%Hkxp+iZ|Mb4jvO?s4U)PuAFTMUfn$0kM+NPHa=T>@0fBRrz#8_7L;8miq
z0|U=(yDxl9Y%?3Wi(VbA4B{*JSa|E_{$K9=Cugp=-(0ut|E=iXAuaRWepQJ#{Icx*
z66#y8wOMxRv-=Z|rhMJDuk-QZ@1GbL1h<0D1+Y7lp8Rv~-a_+hHc$K&&M4Ji4*jR*
zAD^mIvM))o+S>ZlJ?V8`emqNL5}YPxw|Oxz8ibs_pwA&85Ru9hBv^1U!PjA5r0AUY
zbL`dE*Vx^Dwf)ZX`LSESecKoF*8cW#`}@AiwO{{-F8{pt(%)Yv^^BIP{hj|h>{8Lq
zQy$FI)TY0fw|u?OHKhj;N=?YyUjh^!XfaJw|5N*pF);K0l4twZe0?5wWb&K~)8}1W
z|LE7zdm((GOZM-cZ232**Fo&%@17s4dt%F`?Qdr}{HbuZH@jJA>nWB!&wpt@RkmMk
z%-F%OZ%!g;yF{vf6?bD0Qxr>$hPBR$%<_h^f1XeN|DWgS_rv@8Z_V_5UH>LGL~$~R
zzI^}oL{7NtudjW1qW6Etz6jT3J5~44@MOUCkWFd~f(N!6LDpWmZ&wUZNzh`NcFw-@
z&(zQ7U$I3lnSbTSRj+?{Wi9W_J@M#7->N_9>!0~%|F$|mFaGL&$)DS|PrSOXuHBb)
zcH!Q*-5XZ@Tz}Q<(|bFQd!c(K?2R>Ie5>oreOsY{;RajjJkG{G4wFuX*w6J}i}};e
z)o(o?@A|9zZs(bAWvSbi`#m$Z?%)1es($8$$lv+%gn7T6eJaj&Z;CF@5}6AZMV3eQ
zvj{NAC0-I?X>(ZM#iFD9|NOoA*Zxf2^55lIb@0rUU;f?mtCD$t>}1VT(|>x|e{0{o
zJ}>JRQ>5j1laXnswU?M8sPT8TvvK<!o$LEt=Sp;NNF4g!Xcr>vz+hmlVBo|Q#R3}e
zf6}e5`=nsrx^MMgH}jw1_OA=(b4@8zDgDzOTk6n1ck`_^-PJm~!fzx$=A0*gbD!l@
z&Vb#_eWzo$-)Z5Hc=$al$JvRY=j@^$b|y*2rx)V(7)<B4EeqWD=S^kh$IbjFiqG3<
zvuBy^FZyM5$-nQ5cm5^Q+Rak?oiFZ9n0rcUzn%I9J%REKC9!AYg)>(DRF|A|DVIaj
zv^42Kb^e|%pN8hz9ZTau3q&hFn{a&bQV?W(&i8cwoxkayI@$NBt>0TWLH7OZU`}4!
zTW-Da&y{!GyFR~5?zX?9o62*=_4OfY58Cr=^yJlq6S$|pu2yMacp+%k-*mu?L*;41
zb-h#T>;CjV-GBeP_@`S(Bg;DK|7QL3%l@;|oKa=(iMe<8*Bp1)=y9JZu2|{dzGwT-
zusk^@cWS$n+Je@DJGP25aWupkd=}uynch(3qrbl_uufHw@qc*S?ge3tA@yv5kI$E%
zxAWO9GrzgkOR4^D*SmG6SpFzHWnkZN=Mp<3i-Y`>N;VcYhlE&`KdpPp9N#j%cy{LB
zs)tc)-<3xsCG1_lzap>Tq}~5zv+9EvDe1DusFrWCPGGptv}=NT14DwHgMt!M>dc0H
z*?(N`EM5Iuc251$7aIGt58S#}8M$#qtVzJs6&I8qtc$J>xmP9mo^OL0qj`xF1LFnG
zFsar91)LdzAF{vy>HIVO{Ay4~=*jBq|9<C%Jbr)R<$AZRGo>%2|6S@XGfl_oM#S6w
zQHBxQk`{E%(qpfAGHv$LwR40ov~=J9?!dr!fjLEvv2meb0N<Ob*Y!^9-|^hvSg_zi
zwz#))>iN<-+Xdgw?sEN`>hSelgY`|>3$JS)Cq4yjf9K(F@d7mvyj>3bpZMNHhsWfg
z$eVq2a~U;Ln8aS`cI<52?efnxuY+Oo%p<0?0uBsc9A~CGBrE{UhkmX8@AGf75aasa
z=UGCo{Sck}?cq<h$lq$--@d+fp5!I<IZ(%uh35;mVB~fIhKZ7M9y%@X03{o}6YK9k
z)?<3*^<w9A_NwTt3orN8?NwQjRKLGpa>=jt=Qsn}Sp)e#I8HH(;ZR_RSy9N(;^y&S
zYO%O$D$~Eq&;RWyRa<agYQI@)?UQ)5)>WH@-rl}H$0UWx?T0H@h6hJOLyv2?;sw*j
z@N@A~>i?cR{>1*@`}I@18WgYoxa`Xuy85?qP~Y!gpBEi^{H*0_TJxRVe0^^walWXE
zyIg0<$iiUE%p?$@{NdD3=AY*EA7=dd_W#$aK(z(ij;)XSCSxUD_S8CJ{gP+#m%E<7
z%eV2|y55M<-pBI5!D)9cwJ|U);I)0%dccEI#Pz_0tUq5T)<3(``|WG`(SKc0`>&ta
z|LiV%Rqv5|??UQ+v^_3*zIKmS#gh2d2YI;}4J;;KP~_lgb_iBmVD#y|M#{I_YxeK`
zt9NZxl=8+iEDB698;bf>8Ce=s4fNU_d{|ByF~+WWb=}82{QK*2QIYj0>ehi*B%g2n
zX7}yu^|S4p%H>TyI<p-4!h8E&gdoH1r{^y#8dQLa8uq<v3v%wpwlCh$|L5+vud5Yr
z*q_dOuxz*Tq@n}8;iu<r|I-n3dgH;e2|I5=_kTDk#4)Yp_+k9>?f;*qm0u4vmitGF
z{al{@HT*f-n)9FXGtMqAy}kc;f@1Y<>kfwbZVT7)GI21dv9c&6xIDP}nf=rIe;*2e
zo;_dVdgcGSPmk4w&PQctoH@UFRpt!0zp1(tIA0V^yJ!YEo<>4ALz~HLHT!C*{oiZ<
z?iBue>J!JY=5;#@l5Ku1ZQ5D;PuleV)^D%Q8wNa=k?}NQoFnn#aNL%SehiEUdKws5
z)^O;!9$3C#X?;~ixx;Ucnu_1Qu5T0AX1~MXk`IH@fviPEh02U94$4Y;4Gb(@EK@js
zY_I<@<IlC_`?FM-PKDiG|9<oO-A?VF+WzyU#Mjq8iC5XBmlX2Eexhg5rG@{(Q<>^s
z99#Y5Ty);F*AWsYre9)aWNBdUFkx(z;Jne*V6*sJ;Qp+&0#W=MudUzxGO<ZToo!We
zbH0UM`Q0jEr31{DZ_IXJIAX^vVb2mJ5Yg3ezQ#0C;znfe{=E45b^mMMzP{dnX8pJP
zTleSRyBza5TyXzBz4?q6cFTP$yX12qcKamG48zi$p=*O9b*_j!V`k)VIMCZr^ymM-
z%l;?wYhHC;y31I({LQzPO|^d`y;bY?+Dy5#cGu2}t>2jAs_SlY_g~u15$CIR;8ajd
zj7kGTf}aBe(^^gyZf5(hJN_J7zF+D7$yBDWa~G3)?YHmRUzzLpdg0omZ%;pedG+5p
z&GxU-r?dX;`nJF9p5wa}N`JKyjTq~4WRkTx8YI@9o1u7t5!99pe#>{lrQ!N<6BX^>
zKB?Po-p)U?q(*1<e^J2%r^(r?Km%9O0u2r3OrDkxg8fxg8^3H=u<6U+RmXHg(|@j)
zUAo<B@%Gmp^^2YIH?80QZEIti>Hkep^_frNFU4#!_~5qHV1g;*J+&egUPT5aLzBZT
z4)H8zt`3(cuXbtLwf^7Q+MA-j{25<=A2Vf@3+B%ZPF=LHj>Ag$!^HW219yJg<ef6f
z-gW2I7dtCq(>cutrg5xsIq>+?tDnw>-CwwW|0%95*V`K1w|~vC^>Z?VYEP)@O|#o|
z>1Vj>znAs;tAB=H{dL{M(bs+o$B%=;$Dfu9Fis2W|6au6uxDHP6M+{~K*Nw<XRcRc
zXInX))3n|wKT9A`I_A<Ji^JM&LGRbU&AWC|MY!P6jtQIwCV5Y$D>5j}XW)@%iWLfQ
zXI*`nX}Z#aH>Q=R1$I|Wud(~^_2&JjLM>}9rhfn8EEUY3X8JF*c((c<N!Nd(e?5Oi
zpO_*OII}^z|MdGm&Zijdo}ZGq?ZnV?aa9i|6SGo)CR0h?ZpAt8jc<j=-l~|F{&nNc
zn8#YprP*dN>+04TG1~7r!y+@8vzv+SORt1qxB$c9jjXnf2QoNyTo3%O@QDl57r3-A
zTkmy#Xi~msmhy)6x39<VKDA$B)^hvXZ(r+II^3Pr+*T}5(jTVu;8{+hf;Mxs-|UNb
z`xqqVdP)kgw0SBBGS2_G>d&#|a?`olH{bI6Ci_)=Hg6Z#5#wWL4K0_5WgVFES4)ub
zm2T7adn(iS7uK(hc~DtlBCf#5;?Ur>__P4W)B`)Y+l&6sw^v^;FSG3QtJ7UKOjkDi
z+WJ-X<?pr4T3;$QPB>X2+BsdWIUuYp!?5q}OP6(3pZD$gy?gznxpy{4o19#$4B7$K
zsVK?D;-pw$5&p33y<we3h1JXDQOpgW-?QXi=v889GLxU%&Hz49Ylol%!;ZqodXOWt
z94@d3FgVWcKj#cSFo)$1hXTW$9fjgxr49-iOdJgh&bmKWgdD4t$0ERxcV`DT=&UUk
z1pyOA7KaPZ7Jr7E%*ANV#KB;mcZZb`Y%~XG>te>|i<MwrLj!0wK-&CW6T}rPz6^{4
zTYkQ<fmn2)mx1X(uXMR1#1&1@2|YQ8MGxE<7#|$#-K_v|g`=<o152)*6+gtH0_6sV
zg2%^VA+Bg#z^O3m-O<<urH0YOJeqeQCCG>?sv7_EZ!d4=-H;snl!1YP!PC{xWt~$(
F695xY89M*~

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/web/index.html b/TDDE43/labb2/web/index.html
new file mode 100644
index 0000000..8800efe
--- /dev/null
+++ b/TDDE43/labb2/web/index.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <!--
+    If you are serving your web app in a path other than the root, change the
+    href value below to reflect the base path you are serving from.
+
+    The path provided below has to start and end with a slash "/" in order for
+    it to work correctly.
+
+    For more details:
+    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
+
+    This is a placeholder for base href that will be replaced by the value of
+    the `--base-href` argument provided to `flutter build`.
+  -->
+  <base href="$FLUTTER_BASE_HREF">
+
+  <meta charset="UTF-8">
+  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
+  <meta name="description" content="A new Flutter project.">
+
+  <!-- iOS meta tags & icons -->
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="apple-mobile-web-app-title" content="labb2">
+  <link rel="apple-touch-icon" href="icons/Icon-192.png">
+
+  <!-- Favicon -->
+  <link rel="icon" type="image/png" href="favicon.png"/>
+
+  <title>labb2</title>
+  <link rel="manifest" href="manifest.json">
+</head>
+<body>
+  <script src="flutter_bootstrap.js" async></script>
+</body>
+</html>
diff --git a/TDDE43/labb2/web/manifest.json b/TDDE43/labb2/web/manifest.json
new file mode 100644
index 0000000..83fbfe0
--- /dev/null
+++ b/TDDE43/labb2/web/manifest.json
@@ -0,0 +1,35 @@
+{
+    "name": "labb2",
+    "short_name": "labb2",
+    "start_url": ".",
+    "display": "standalone",
+    "background_color": "#0175C2",
+    "theme_color": "#0175C2",
+    "description": "A new Flutter project.",
+    "orientation": "portrait-primary",
+    "prefer_related_applications": false,
+    "icons": [
+        {
+            "src": "icons/Icon-192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "icons/Icon-512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        },
+        {
+            "src": "icons/Icon-maskable-192.png",
+            "sizes": "192x192",
+            "type": "image/png",
+            "purpose": "maskable"
+        },
+        {
+            "src": "icons/Icon-maskable-512.png",
+            "sizes": "512x512",
+            "type": "image/png",
+            "purpose": "maskable"
+        }
+    ]
+}
diff --git a/TDDE43/labb2/windows/.gitignore b/TDDE43/labb2/windows/.gitignore
new file mode 100644
index 0000000..d492d0d
--- /dev/null
+++ b/TDDE43/labb2/windows/.gitignore
@@ -0,0 +1,17 @@
+flutter/ephemeral/
+
+# Visual Studio user-specific files.
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# Visual Studio build-related files.
+x64/
+x86/
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
diff --git a/TDDE43/labb2/windows/CMakeLists.txt b/TDDE43/labb2/windows/CMakeLists.txt
new file mode 100644
index 0000000..d15f006
--- /dev/null
+++ b/TDDE43/labb2/windows/CMakeLists.txt
@@ -0,0 +1,108 @@
+# Project-level configuration.
+cmake_minimum_required(VERSION 3.14)
+project(labb2 LANGUAGES CXX)
+
+# The name of the executable created for the application. Change this to change
+# the on-disk name of your application.
+set(BINARY_NAME "labb2")
+
+# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
+# versions of CMake.
+cmake_policy(VERSION 3.14...3.25)
+
+# Define build configuration option.
+get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(IS_MULTICONFIG)
+  set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release"
+    CACHE STRING "" FORCE)
+else()
+  if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+    set(CMAKE_BUILD_TYPE "Debug" CACHE
+      STRING "Flutter build mode" FORCE)
+    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+      "Debug" "Profile" "Release")
+  endif()
+endif()
+# Define settings for the Profile build mode.
+set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
+set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
+set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}")
+set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}")
+
+# Use Unicode for all projects.
+add_definitions(-DUNICODE -D_UNICODE)
+
+# Compilation settings that should be applied to most targets.
+#
+# Be cautious about adding new options here, as plugins use this function by
+# default. In most cases, you should add new options to specific targets instead
+# of modifying this function.
+function(APPLY_STANDARD_SETTINGS TARGET)
+  target_compile_features(${TARGET} PUBLIC cxx_std_17)
+  target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100")
+  target_compile_options(${TARGET} PRIVATE /EHsc)
+  target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
+  target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>")
+endfunction()
+
+# Flutter library and tool build rules.
+set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
+add_subdirectory(${FLUTTER_MANAGED_DIR})
+
+# Application build; see runner/CMakeLists.txt.
+add_subdirectory("runner")
+
+
+# Generated plugin build rules, which manage building the plugins and adding
+# them to the application.
+include(flutter/generated_plugins.cmake)
+
+
+# === Installation ===
+# Support files are copied into place next to the executable, so that it can
+# run in place. This is done instead of making a separate bundle (as on Linux)
+# so that building and running from within Visual Studio will work.
+set(BUILD_BUNDLE_DIR "$<TARGET_FILE_DIR:${BINARY_NAME}>")
+# Make the "install" step default, as it's required to run.
+set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+  set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
+endif()
+
+set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
+set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
+
+install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
+  COMPONENT Runtime)
+
+install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
+  COMPONENT Runtime)
+
+install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+
+if(PLUGIN_BUNDLED_LIBRARIES)
+  install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
+    DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+    COMPONENT Runtime)
+endif()
+
+# Copy the native assets provided by the build.dart from all packages.
+set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/")
+install(DIRECTORY "${NATIVE_ASSETS_DIR}"
+   DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+   COMPONENT Runtime)
+
+# Fully re-copy the assets directory on each build to avoid having stale files
+# from a previous install.
+set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
+install(CODE "
+  file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
+  " COMPONENT Runtime)
+install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
+  DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
+
+# Install the AOT library on non-Debug builds only.
+install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
+  CONFIGURATIONS Profile;Release
+  COMPONENT Runtime)
diff --git a/TDDE43/labb2/windows/flutter/CMakeLists.txt b/TDDE43/labb2/windows/flutter/CMakeLists.txt
new file mode 100644
index 0000000..903f489
--- /dev/null
+++ b/TDDE43/labb2/windows/flutter/CMakeLists.txt
@@ -0,0 +1,109 @@
+# This file controls Flutter-level build steps. It should not be edited.
+cmake_minimum_required(VERSION 3.14)
+
+set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
+
+# Configuration provided via flutter tool.
+include(${EPHEMERAL_DIR}/generated_config.cmake)
+
+# TODO: Move the rest of this into files in ephemeral. See
+# https://github.com/flutter/flutter/issues/57146.
+set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
+
+# Set fallback configurations for older versions of the flutter tool.
+if (NOT DEFINED FLUTTER_TARGET_PLATFORM)
+  set(FLUTTER_TARGET_PLATFORM "windows-x64")
+endif()
+
+# === Flutter Library ===
+set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")
+
+# Published to parent scope for install step.
+set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
+set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
+set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
+set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE)
+
+list(APPEND FLUTTER_LIBRARY_HEADERS
+  "flutter_export.h"
+  "flutter_windows.h"
+  "flutter_messenger.h"
+  "flutter_plugin_registrar.h"
+  "flutter_texture_registrar.h"
+)
+list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
+add_library(flutter INTERFACE)
+target_include_directories(flutter INTERFACE
+  "${EPHEMERAL_DIR}"
+)
+target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
+add_dependencies(flutter flutter_assemble)
+
+# === Wrapper ===
+list(APPEND CPP_WRAPPER_SOURCES_CORE
+  "core_implementations.cc"
+  "standard_codec.cc"
+)
+list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
+list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
+  "plugin_registrar.cc"
+)
+list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
+list(APPEND CPP_WRAPPER_SOURCES_APP
+  "flutter_engine.cc"
+  "flutter_view_controller.cc"
+)
+list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
+
+# Wrapper sources needed for a plugin.
+add_library(flutter_wrapper_plugin STATIC
+  ${CPP_WRAPPER_SOURCES_CORE}
+  ${CPP_WRAPPER_SOURCES_PLUGIN}
+)
+apply_standard_settings(flutter_wrapper_plugin)
+set_target_properties(flutter_wrapper_plugin PROPERTIES
+  POSITION_INDEPENDENT_CODE ON)
+set_target_properties(flutter_wrapper_plugin PROPERTIES
+  CXX_VISIBILITY_PRESET hidden)
+target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
+target_include_directories(flutter_wrapper_plugin PUBLIC
+  "${WRAPPER_ROOT}/include"
+)
+add_dependencies(flutter_wrapper_plugin flutter_assemble)
+
+# Wrapper sources needed for the runner.
+add_library(flutter_wrapper_app STATIC
+  ${CPP_WRAPPER_SOURCES_CORE}
+  ${CPP_WRAPPER_SOURCES_APP}
+)
+apply_standard_settings(flutter_wrapper_app)
+target_link_libraries(flutter_wrapper_app PUBLIC flutter)
+target_include_directories(flutter_wrapper_app PUBLIC
+  "${WRAPPER_ROOT}/include"
+)
+add_dependencies(flutter_wrapper_app flutter_assemble)
+
+# === Flutter tool backend ===
+# _phony_ is a non-existent file to force this command to run every time,
+# since currently there's no way to get a full input/output list from the
+# flutter tool.
+set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_")
+set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE)
+add_custom_command(
+  OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
+    ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN}
+    ${CPP_WRAPPER_SOURCES_APP}
+    ${PHONY_OUTPUT}
+  COMMAND ${CMAKE_COMMAND} -E env
+    ${FLUTTER_TOOL_ENVIRONMENT}
+    "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
+      ${FLUTTER_TARGET_PLATFORM} $<CONFIG>
+  VERBATIM
+)
+add_custom_target(flutter_assemble DEPENDS
+  "${FLUTTER_LIBRARY}"
+  ${FLUTTER_LIBRARY_HEADERS}
+  ${CPP_WRAPPER_SOURCES_CORE}
+  ${CPP_WRAPPER_SOURCES_PLUGIN}
+  ${CPP_WRAPPER_SOURCES_APP}
+)
diff --git a/TDDE43/labb2/windows/flutter/generated_plugin_registrant.cc b/TDDE43/labb2/windows/flutter/generated_plugin_registrant.cc
new file mode 100644
index 0000000..4f78848
--- /dev/null
+++ b/TDDE43/labb2/windows/flutter/generated_plugin_registrant.cc
@@ -0,0 +1,14 @@
+//
+//  Generated file. Do not edit.
+//
+
+// clang-format off
+
+#include "generated_plugin_registrant.h"
+
+#include <url_launcher_windows/url_launcher_windows.h>
+
+void RegisterPlugins(flutter::PluginRegistry* registry) {
+  UrlLauncherWindowsRegisterWithRegistrar(
+      registry->GetRegistrarForPlugin("UrlLauncherWindows"));
+}
diff --git a/TDDE43/labb2/windows/flutter/generated_plugin_registrant.h b/TDDE43/labb2/windows/flutter/generated_plugin_registrant.h
new file mode 100644
index 0000000..dc139d8
--- /dev/null
+++ b/TDDE43/labb2/windows/flutter/generated_plugin_registrant.h
@@ -0,0 +1,15 @@
+//
+//  Generated file. Do not edit.
+//
+
+// clang-format off
+
+#ifndef GENERATED_PLUGIN_REGISTRANT_
+#define GENERATED_PLUGIN_REGISTRANT_
+
+#include <flutter/plugin_registry.h>
+
+// Registers Flutter plugins.
+void RegisterPlugins(flutter::PluginRegistry* registry);
+
+#endif  // GENERATED_PLUGIN_REGISTRANT_
diff --git a/TDDE43/labb2/windows/flutter/generated_plugins.cmake b/TDDE43/labb2/windows/flutter/generated_plugins.cmake
new file mode 100644
index 0000000..88b22e5
--- /dev/null
+++ b/TDDE43/labb2/windows/flutter/generated_plugins.cmake
@@ -0,0 +1,24 @@
+#
+# Generated file, do not edit.
+#
+
+list(APPEND FLUTTER_PLUGIN_LIST
+  url_launcher_windows
+)
+
+list(APPEND FLUTTER_FFI_PLUGIN_LIST
+)
+
+set(PLUGIN_BUNDLED_LIBRARIES)
+
+foreach(plugin ${FLUTTER_PLUGIN_LIST})
+  add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
+  target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
+endforeach(plugin)
+
+foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
+  add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
+endforeach(ffi_plugin)
diff --git a/TDDE43/labb2/windows/runner/CMakeLists.txt b/TDDE43/labb2/windows/runner/CMakeLists.txt
new file mode 100644
index 0000000..394917c
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/CMakeLists.txt
@@ -0,0 +1,40 @@
+cmake_minimum_required(VERSION 3.14)
+project(runner LANGUAGES CXX)
+
+# Define the application target. To change its name, change BINARY_NAME in the
+# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
+# work.
+#
+# Any new source files that you add to the application should be added here.
+add_executable(${BINARY_NAME} WIN32
+  "flutter_window.cpp"
+  "main.cpp"
+  "utils.cpp"
+  "win32_window.cpp"
+  "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
+  "Runner.rc"
+  "runner.exe.manifest"
+)
+
+# Apply the standard set of build settings. This can be removed for applications
+# that need different build settings.
+apply_standard_settings(${BINARY_NAME})
+
+# Add preprocessor definitions for the build version.
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}")
+
+# Disable Windows macros that collide with C++ standard library functions.
+target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
+
+# Add dependency libraries and include directories. Add any application-specific
+# dependencies here.
+target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
+target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib")
+target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
+
+# Run the Flutter tool portions of the build. This must not be removed.
+add_dependencies(${BINARY_NAME} flutter_assemble)
diff --git a/TDDE43/labb2/windows/runner/Runner.rc b/TDDE43/labb2/windows/runner/Runner.rc
new file mode 100644
index 0000000..9c3717d
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/Runner.rc
@@ -0,0 +1,121 @@
+// Microsoft Visual C++ generated resource script.
+//
+#pragma code_page(65001)
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (United States) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+    "#include ""winres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_APP_ICON            ICON                    "resources\\app_icon.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD)
+#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD
+#else
+#define VERSION_AS_NUMBER 1,0,0,0
+#endif
+
+#if defined(FLUTTER_VERSION)
+#define VERSION_AS_STRING FLUTTER_VERSION
+#else
+#define VERSION_AS_STRING "1.0.0"
+#endif
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION VERSION_AS_NUMBER
+ PRODUCTVERSION VERSION_AS_NUMBER
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904e4"
+        BEGIN
+            VALUE "CompanyName", "com.example" "\0"
+            VALUE "FileDescription", "labb2" "\0"
+            VALUE "FileVersion", VERSION_AS_STRING "\0"
+            VALUE "InternalName", "labb2" "\0"
+            VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0"
+            VALUE "OriginalFilename", "labb2.exe" "\0"
+            VALUE "ProductName", "labb2" "\0"
+            VALUE "ProductVersion", VERSION_AS_STRING "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1252
+    END
+END
+
+#endif    // English (United States) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
diff --git a/TDDE43/labb2/windows/runner/flutter_window.cpp b/TDDE43/labb2/windows/runner/flutter_window.cpp
new file mode 100644
index 0000000..955ee30
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/flutter_window.cpp
@@ -0,0 +1,71 @@
+#include "flutter_window.h"
+
+#include <optional>
+
+#include "flutter/generated_plugin_registrant.h"
+
+FlutterWindow::FlutterWindow(const flutter::DartProject& project)
+    : project_(project) {}
+
+FlutterWindow::~FlutterWindow() {}
+
+bool FlutterWindow::OnCreate() {
+  if (!Win32Window::OnCreate()) {
+    return false;
+  }
+
+  RECT frame = GetClientArea();
+
+  // The size here must match the window dimensions to avoid unnecessary surface
+  // creation / destruction in the startup path.
+  flutter_controller_ = std::make_unique<flutter::FlutterViewController>(
+      frame.right - frame.left, frame.bottom - frame.top, project_);
+  // Ensure that basic setup of the controller was successful.
+  if (!flutter_controller_->engine() || !flutter_controller_->view()) {
+    return false;
+  }
+  RegisterPlugins(flutter_controller_->engine());
+  SetChildContent(flutter_controller_->view()->GetNativeWindow());
+
+  flutter_controller_->engine()->SetNextFrameCallback([&]() {
+    this->Show();
+  });
+
+  // Flutter can complete the first frame before the "show window" callback is
+  // registered. The following call ensures a frame is pending to ensure the
+  // window is shown. It is a no-op if the first frame hasn't completed yet.
+  flutter_controller_->ForceRedraw();
+
+  return true;
+}
+
+void FlutterWindow::OnDestroy() {
+  if (flutter_controller_) {
+    flutter_controller_ = nullptr;
+  }
+
+  Win32Window::OnDestroy();
+}
+
+LRESULT
+FlutterWindow::MessageHandler(HWND hwnd, UINT const message,
+                              WPARAM const wparam,
+                              LPARAM const lparam) noexcept {
+  // Give Flutter, including plugins, an opportunity to handle window messages.
+  if (flutter_controller_) {
+    std::optional<LRESULT> result =
+        flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam,
+                                                      lparam);
+    if (result) {
+      return *result;
+    }
+  }
+
+  switch (message) {
+    case WM_FONTCHANGE:
+      flutter_controller_->engine()->ReloadSystemFonts();
+      break;
+  }
+
+  return Win32Window::MessageHandler(hwnd, message, wparam, lparam);
+}
diff --git a/TDDE43/labb2/windows/runner/flutter_window.h b/TDDE43/labb2/windows/runner/flutter_window.h
new file mode 100644
index 0000000..6da0652
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/flutter_window.h
@@ -0,0 +1,33 @@
+#ifndef RUNNER_FLUTTER_WINDOW_H_
+#define RUNNER_FLUTTER_WINDOW_H_
+
+#include <flutter/dart_project.h>
+#include <flutter/flutter_view_controller.h>
+
+#include <memory>
+
+#include "win32_window.h"
+
+// A window that does nothing but host a Flutter view.
+class FlutterWindow : public Win32Window {
+ public:
+  // Creates a new FlutterWindow hosting a Flutter view running |project|.
+  explicit FlutterWindow(const flutter::DartProject& project);
+  virtual ~FlutterWindow();
+
+ protected:
+  // Win32Window:
+  bool OnCreate() override;
+  void OnDestroy() override;
+  LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
+                         LPARAM const lparam) noexcept override;
+
+ private:
+  // The project to run.
+  flutter::DartProject project_;
+
+  // The Flutter instance hosted by this window.
+  std::unique_ptr<flutter::FlutterViewController> flutter_controller_;
+};
+
+#endif  // RUNNER_FLUTTER_WINDOW_H_
diff --git a/TDDE43/labb2/windows/runner/main.cpp b/TDDE43/labb2/windows/runner/main.cpp
new file mode 100644
index 0000000..c590fc1
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/main.cpp
@@ -0,0 +1,43 @@
+#include <flutter/dart_project.h>
+#include <flutter/flutter_view_controller.h>
+#include <windows.h>
+
+#include "flutter_window.h"
+#include "utils.h"
+
+int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
+                      _In_ wchar_t *command_line, _In_ int show_command) {
+  // Attach to console when present (e.g., 'flutter run') or create a
+  // new console when running with a debugger.
+  if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
+    CreateAndAttachConsole();
+  }
+
+  // Initialize COM, so that it is available for use in the library and/or
+  // plugins.
+  ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
+
+  flutter::DartProject project(L"data");
+
+  std::vector<std::string> command_line_arguments =
+      GetCommandLineArguments();
+
+  project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
+
+  FlutterWindow window(project);
+  Win32Window::Point origin(10, 10);
+  Win32Window::Size size(1280, 720);
+  if (!window.Create(L"labb2", origin, size)) {
+    return EXIT_FAILURE;
+  }
+  window.SetQuitOnClose(true);
+
+  ::MSG msg;
+  while (::GetMessage(&msg, nullptr, 0, 0)) {
+    ::TranslateMessage(&msg);
+    ::DispatchMessage(&msg);
+  }
+
+  ::CoUninitialize();
+  return EXIT_SUCCESS;
+}
diff --git a/TDDE43/labb2/windows/runner/resource.h b/TDDE43/labb2/windows/runner/resource.h
new file mode 100644
index 0000000..66a65d1
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/resource.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by Runner.rc
+//
+#define IDI_APP_ICON                    101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        102
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/TDDE43/labb2/windows/runner/resources/app_icon.ico b/TDDE43/labb2/windows/runner/resources/app_icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6
GIT binary patch
literal 33772
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

literal 0
HcmV?d00001

diff --git a/TDDE43/labb2/windows/runner/runner.exe.manifest b/TDDE43/labb2/windows/runner/runner.exe.manifest
new file mode 100644
index 0000000..153653e
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/runner.exe.manifest
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
+    </windowsSettings>
+  </application>
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- Windows 10 and Windows 11 -->
+      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
+    </application>
+  </compatibility>
+</assembly>
diff --git a/TDDE43/labb2/windows/runner/utils.cpp b/TDDE43/labb2/windows/runner/utils.cpp
new file mode 100644
index 0000000..3a0b465
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/utils.cpp
@@ -0,0 +1,65 @@
+#include "utils.h"
+
+#include <flutter_windows.h>
+#include <io.h>
+#include <stdio.h>
+#include <windows.h>
+
+#include <iostream>
+
+void CreateAndAttachConsole() {
+  if (::AllocConsole()) {
+    FILE *unused;
+    if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
+      _dup2(_fileno(stdout), 1);
+    }
+    if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
+      _dup2(_fileno(stdout), 2);
+    }
+    std::ios::sync_with_stdio();
+    FlutterDesktopResyncOutputStreams();
+  }
+}
+
+std::vector<std::string> GetCommandLineArguments() {
+  // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use.
+  int argc;
+  wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
+  if (argv == nullptr) {
+    return std::vector<std::string>();
+  }
+
+  std::vector<std::string> command_line_arguments;
+
+  // Skip the first argument as it's the binary name.
+  for (int i = 1; i < argc; i++) {
+    command_line_arguments.push_back(Utf8FromUtf16(argv[i]));
+  }
+
+  ::LocalFree(argv);
+
+  return command_line_arguments;
+}
+
+std::string Utf8FromUtf16(const wchar_t* utf16_string) {
+  if (utf16_string == nullptr) {
+    return std::string();
+  }
+  unsigned int target_length = ::WideCharToMultiByte(
+      CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
+      -1, nullptr, 0, nullptr, nullptr)
+    -1; // remove the trailing null character
+  int input_length = (int)wcslen(utf16_string);
+  std::string utf8_string;
+  if (target_length == 0 || target_length > utf8_string.max_size()) {
+    return utf8_string;
+  }
+  utf8_string.resize(target_length);
+  int converted_length = ::WideCharToMultiByte(
+      CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
+      input_length, utf8_string.data(), target_length, nullptr, nullptr);
+  if (converted_length == 0) {
+    return std::string();
+  }
+  return utf8_string;
+}
diff --git a/TDDE43/labb2/windows/runner/utils.h b/TDDE43/labb2/windows/runner/utils.h
new file mode 100644
index 0000000..3879d54
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/utils.h
@@ -0,0 +1,19 @@
+#ifndef RUNNER_UTILS_H_
+#define RUNNER_UTILS_H_
+
+#include <string>
+#include <vector>
+
+// Creates a console for the process, and redirects stdout and stderr to
+// it for both the runner and the Flutter library.
+void CreateAndAttachConsole();
+
+// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
+// encoded in UTF-8. Returns an empty std::string on failure.
+std::string Utf8FromUtf16(const wchar_t* utf16_string);
+
+// Gets the command line arguments passed in as a std::vector<std::string>,
+// encoded in UTF-8. Returns an empty std::vector<std::string> on failure.
+std::vector<std::string> GetCommandLineArguments();
+
+#endif  // RUNNER_UTILS_H_
diff --git a/TDDE43/labb2/windows/runner/win32_window.cpp b/TDDE43/labb2/windows/runner/win32_window.cpp
new file mode 100644
index 0000000..60608d0
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/win32_window.cpp
@@ -0,0 +1,288 @@
+#include "win32_window.h"
+
+#include <dwmapi.h>
+#include <flutter_windows.h>
+
+#include "resource.h"
+
+namespace {
+
+/// Window attribute that enables dark mode window decorations.
+///
+/// Redefined in case the developer's machine has a Windows SDK older than
+/// version 10.0.22000.0.
+/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
+#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
+#define DWMWA_USE_IMMERSIVE_DARK_MODE 20
+#endif
+
+constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW";
+
+/// Registry key for app theme preference.
+///
+/// A value of 0 indicates apps should use dark mode. A non-zero or missing
+/// value indicates apps should use light mode.
+constexpr const wchar_t kGetPreferredBrightnessRegKey[] =
+  L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
+constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme";
+
+// The number of Win32Window objects that currently exist.
+static int g_active_window_count = 0;
+
+using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd);
+
+// Scale helper to convert logical scaler values to physical using passed in
+// scale factor
+int Scale(int source, double scale_factor) {
+  return static_cast<int>(source * scale_factor);
+}
+
+// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module.
+// This API is only needed for PerMonitor V1 awareness mode.
+void EnableFullDpiSupportIfAvailable(HWND hwnd) {
+  HMODULE user32_module = LoadLibraryA("User32.dll");
+  if (!user32_module) {
+    return;
+  }
+  auto enable_non_client_dpi_scaling =
+      reinterpret_cast<EnableNonClientDpiScaling*>(
+          GetProcAddress(user32_module, "EnableNonClientDpiScaling"));
+  if (enable_non_client_dpi_scaling != nullptr) {
+    enable_non_client_dpi_scaling(hwnd);
+  }
+  FreeLibrary(user32_module);
+}
+
+}  // namespace
+
+// Manages the Win32Window's window class registration.
+class WindowClassRegistrar {
+ public:
+  ~WindowClassRegistrar() = default;
+
+  // Returns the singleton registrar instance.
+  static WindowClassRegistrar* GetInstance() {
+    if (!instance_) {
+      instance_ = new WindowClassRegistrar();
+    }
+    return instance_;
+  }
+
+  // Returns the name of the window class, registering the class if it hasn't
+  // previously been registered.
+  const wchar_t* GetWindowClass();
+
+  // Unregisters the window class. Should only be called if there are no
+  // instances of the window.
+  void UnregisterWindowClass();
+
+ private:
+  WindowClassRegistrar() = default;
+
+  static WindowClassRegistrar* instance_;
+
+  bool class_registered_ = false;
+};
+
+WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr;
+
+const wchar_t* WindowClassRegistrar::GetWindowClass() {
+  if (!class_registered_) {
+    WNDCLASS window_class{};
+    window_class.hCursor = LoadCursor(nullptr, IDC_ARROW);
+    window_class.lpszClassName = kWindowClassName;
+    window_class.style = CS_HREDRAW | CS_VREDRAW;
+    window_class.cbClsExtra = 0;
+    window_class.cbWndExtra = 0;
+    window_class.hInstance = GetModuleHandle(nullptr);
+    window_class.hIcon =
+        LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
+    window_class.hbrBackground = 0;
+    window_class.lpszMenuName = nullptr;
+    window_class.lpfnWndProc = Win32Window::WndProc;
+    RegisterClass(&window_class);
+    class_registered_ = true;
+  }
+  return kWindowClassName;
+}
+
+void WindowClassRegistrar::UnregisterWindowClass() {
+  UnregisterClass(kWindowClassName, nullptr);
+  class_registered_ = false;
+}
+
+Win32Window::Win32Window() {
+  ++g_active_window_count;
+}
+
+Win32Window::~Win32Window() {
+  --g_active_window_count;
+  Destroy();
+}
+
+bool Win32Window::Create(const std::wstring& title,
+                         const Point& origin,
+                         const Size& size) {
+  Destroy();
+
+  const wchar_t* window_class =
+      WindowClassRegistrar::GetInstance()->GetWindowClass();
+
+  const POINT target_point = {static_cast<LONG>(origin.x),
+                              static_cast<LONG>(origin.y)};
+  HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
+  UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
+  double scale_factor = dpi / 96.0;
+
+  HWND window = CreateWindow(
+      window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
+      Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
+      Scale(size.width, scale_factor), Scale(size.height, scale_factor),
+      nullptr, nullptr, GetModuleHandle(nullptr), this);
+
+  if (!window) {
+    return false;
+  }
+
+  UpdateTheme(window);
+
+  return OnCreate();
+}
+
+bool Win32Window::Show() {
+  return ShowWindow(window_handle_, SW_SHOWNORMAL);
+}
+
+// static
+LRESULT CALLBACK Win32Window::WndProc(HWND const window,
+                                      UINT const message,
+                                      WPARAM const wparam,
+                                      LPARAM const lparam) noexcept {
+  if (message == WM_NCCREATE) {
+    auto window_struct = reinterpret_cast<CREATESTRUCT*>(lparam);
+    SetWindowLongPtr(window, GWLP_USERDATA,
+                     reinterpret_cast<LONG_PTR>(window_struct->lpCreateParams));
+
+    auto that = static_cast<Win32Window*>(window_struct->lpCreateParams);
+    EnableFullDpiSupportIfAvailable(window);
+    that->window_handle_ = window;
+  } else if (Win32Window* that = GetThisFromHandle(window)) {
+    return that->MessageHandler(window, message, wparam, lparam);
+  }
+
+  return DefWindowProc(window, message, wparam, lparam);
+}
+
+LRESULT
+Win32Window::MessageHandler(HWND hwnd,
+                            UINT const message,
+                            WPARAM const wparam,
+                            LPARAM const lparam) noexcept {
+  switch (message) {
+    case WM_DESTROY:
+      window_handle_ = nullptr;
+      Destroy();
+      if (quit_on_close_) {
+        PostQuitMessage(0);
+      }
+      return 0;
+
+    case WM_DPICHANGED: {
+      auto newRectSize = reinterpret_cast<RECT*>(lparam);
+      LONG newWidth = newRectSize->right - newRectSize->left;
+      LONG newHeight = newRectSize->bottom - newRectSize->top;
+
+      SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth,
+                   newHeight, SWP_NOZORDER | SWP_NOACTIVATE);
+
+      return 0;
+    }
+    case WM_SIZE: {
+      RECT rect = GetClientArea();
+      if (child_content_ != nullptr) {
+        // Size and position the child window.
+        MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left,
+                   rect.bottom - rect.top, TRUE);
+      }
+      return 0;
+    }
+
+    case WM_ACTIVATE:
+      if (child_content_ != nullptr) {
+        SetFocus(child_content_);
+      }
+      return 0;
+
+    case WM_DWMCOLORIZATIONCOLORCHANGED:
+      UpdateTheme(hwnd);
+      return 0;
+  }
+
+  return DefWindowProc(window_handle_, message, wparam, lparam);
+}
+
+void Win32Window::Destroy() {
+  OnDestroy();
+
+  if (window_handle_) {
+    DestroyWindow(window_handle_);
+    window_handle_ = nullptr;
+  }
+  if (g_active_window_count == 0) {
+    WindowClassRegistrar::GetInstance()->UnregisterWindowClass();
+  }
+}
+
+Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
+  return reinterpret_cast<Win32Window*>(
+      GetWindowLongPtr(window, GWLP_USERDATA));
+}
+
+void Win32Window::SetChildContent(HWND content) {
+  child_content_ = content;
+  SetParent(content, window_handle_);
+  RECT frame = GetClientArea();
+
+  MoveWindow(content, frame.left, frame.top, frame.right - frame.left,
+             frame.bottom - frame.top, true);
+
+  SetFocus(child_content_);
+}
+
+RECT Win32Window::GetClientArea() {
+  RECT frame;
+  GetClientRect(window_handle_, &frame);
+  return frame;
+}
+
+HWND Win32Window::GetHandle() {
+  return window_handle_;
+}
+
+void Win32Window::SetQuitOnClose(bool quit_on_close) {
+  quit_on_close_ = quit_on_close;
+}
+
+bool Win32Window::OnCreate() {
+  // No-op; provided for subclasses.
+  return true;
+}
+
+void Win32Window::OnDestroy() {
+  // No-op; provided for subclasses.
+}
+
+void Win32Window::UpdateTheme(HWND const window) {
+  DWORD light_mode;
+  DWORD light_mode_size = sizeof(light_mode);
+  LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey,
+                               kGetPreferredBrightnessRegValue,
+                               RRF_RT_REG_DWORD, nullptr, &light_mode,
+                               &light_mode_size);
+
+  if (result == ERROR_SUCCESS) {
+    BOOL enable_dark_mode = light_mode == 0;
+    DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE,
+                          &enable_dark_mode, sizeof(enable_dark_mode));
+  }
+}
diff --git a/TDDE43/labb2/windows/runner/win32_window.h b/TDDE43/labb2/windows/runner/win32_window.h
new file mode 100644
index 0000000..e901dde
--- /dev/null
+++ b/TDDE43/labb2/windows/runner/win32_window.h
@@ -0,0 +1,102 @@
+#ifndef RUNNER_WIN32_WINDOW_H_
+#define RUNNER_WIN32_WINDOW_H_
+
+#include <windows.h>
+
+#include <functional>
+#include <memory>
+#include <string>
+
+// A class abstraction for a high DPI-aware Win32 Window. Intended to be
+// inherited from by classes that wish to specialize with custom
+// rendering and input handling
+class Win32Window {
+ public:
+  struct Point {
+    unsigned int x;
+    unsigned int y;
+    Point(unsigned int x, unsigned int y) : x(x), y(y) {}
+  };
+
+  struct Size {
+    unsigned int width;
+    unsigned int height;
+    Size(unsigned int width, unsigned int height)
+        : width(width), height(height) {}
+  };
+
+  Win32Window();
+  virtual ~Win32Window();
+
+  // Creates a win32 window with |title| that is positioned and sized using
+  // |origin| and |size|. New windows are created on the default monitor. Window
+  // sizes are specified to the OS in physical pixels, hence to ensure a
+  // consistent size this function will scale the inputted width and height as
+  // as appropriate for the default monitor. The window is invisible until
+  // |Show| is called. Returns true if the window was created successfully.
+  bool Create(const std::wstring& title, const Point& origin, const Size& size);
+
+  // Show the current window. Returns true if the window was successfully shown.
+  bool Show();
+
+  // Release OS resources associated with window.
+  void Destroy();
+
+  // Inserts |content| into the window tree.
+  void SetChildContent(HWND content);
+
+  // Returns the backing Window handle to enable clients to set icon and other
+  // window properties. Returns nullptr if the window has been destroyed.
+  HWND GetHandle();
+
+  // If true, closing this window will quit the application.
+  void SetQuitOnClose(bool quit_on_close);
+
+  // Return a RECT representing the bounds of the current client area.
+  RECT GetClientArea();
+
+ protected:
+  // Processes and route salient window messages for mouse handling,
+  // size change and DPI. Delegates handling of these to member overloads that
+  // inheriting classes can handle.
+  virtual LRESULT MessageHandler(HWND window,
+                                 UINT const message,
+                                 WPARAM const wparam,
+                                 LPARAM const lparam) noexcept;
+
+  // Called when CreateAndShow is called, allowing subclass window-related
+  // setup. Subclasses should return false if setup fails.
+  virtual bool OnCreate();
+
+  // Called when Destroy is called.
+  virtual void OnDestroy();
+
+ private:
+  friend class WindowClassRegistrar;
+
+  // OS callback called by message pump. Handles the WM_NCCREATE message which
+  // is passed when the non-client area is being created and enables automatic
+  // non-client DPI scaling so that the non-client area automatically
+  // responds to changes in DPI. All other messages are handled by
+  // MessageHandler.
+  static LRESULT CALLBACK WndProc(HWND const window,
+                                  UINT const message,
+                                  WPARAM const wparam,
+                                  LPARAM const lparam) noexcept;
+
+  // Retrieves a class instance pointer for |window|
+  static Win32Window* GetThisFromHandle(HWND const window) noexcept;
+
+  // Update the window frame's theme to match the system theme.
+  static void UpdateTheme(HWND const window);
+
+  bool quit_on_close_ = false;
+
+  // window handle for top level window.
+  HWND window_handle_ = nullptr;
+
+  // window handle for hosted content.
+  HWND child_content_ = nullptr;
+};
+
+#endif  // RUNNER_WIN32_WINDOW_H_
-- 
GitLab