From ab4146b9ccfcd2cd0370caf75db426e7241d7180 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Wed, 28 Jul 2021 16:47:38 +0200
Subject: [PATCH] Add minimal empty application

---
 .gitignore                                    |  46 ++
 .gitlab-ci.yml                                | 124 +++++
 .metadata                                     |  10 +
 README.md                                     |   3 +-
 android/.gitignore                            |  11 +
 android/app/build.gradle                      |  70 +++
 android/app/src/debug/AndroidManifest.xml     |   7 +
 android/app/src/main/AndroidManifest.xml      |  41 ++
 .../benoitharrault/reversi/MainActivity.java  |   6 +
 .../res/drawable-v21/launch_background.xml    |  12 +
 .../main/res/drawable/launch_background.xml   |  12 +
 .../src/main/res/mipmap-hdpi/ic_launcher.png  | Bin 0 -> 1995 bytes
 .../src/main/res/mipmap-mdpi/ic_launcher.png  | Bin 0 -> 1303 bytes
 .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3012 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    | Bin 0 -> 4747 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 0 -> 6604 bytes
 .../app/src/main/res/values-night/styles.xml  |  18 +
 android/app/src/main/res/values/styles.xml    |  18 +
 android/app/src/profile/AndroidManifest.xml   |   7 +
 android/build.gradle                          |  29 ++
 android/gradle.properties                     |   5 +
 .../gradle/wrapper/gradle-wrapper.properties  |   6 +
 android/settings.gradle                       |  11 +
 assets/empty.png                              | Bin 0 -> 170 bytes
 assets/icons/button_back.png                  | Bin 0 -> 3744 bytes
 assets/icons/button_start.png                 | Bin 0 -> 3969 bytes
 assets/icons/difficulty_easy.png              | Bin 0 -> 2833 bytes
 assets/icons/difficulty_hard.png              | Bin 0 -> 2649 bytes
 assets/icons/difficulty_medium.png            | Bin 0 -> 2857 bytes
 assets/icons/game_win.png                     | Bin 0 -> 7906 bytes
 assets/skins/default_tile_black.png           | Bin 0 -> 3383 bytes
 assets/skins/default_tile_white.png           | Bin 0 -> 3271 bytes
 .../metadata/android/en-US/changelogs/1.txt   |   1 +
 .../metadata/android/en-US/changelogs/2.txt   |   1 +
 .../metadata/android/en-US/changelogs/3.txt   |   1 +
 .../metadata/android/en-US/changelogs/4.txt   |   1 +
 .../metadata/android/en-US/changelogs/5.txt   |   1 +
 .../metadata/android/en-US/changelogs/6.txt   |   1 +
 .../android/en-US/full_description.txt        |   1 +
 .../metadata/android/en-US/images/icon.png    | Bin 0 -> 21946 bytes
 .../android/en-US/short_description.txt       |   1 +
 fastlane/metadata/android/en-US/title.txt     |   1 +
 .../metadata/android/fr-FR/changelogs/1.txt   |   1 +
 .../metadata/android/fr-FR/changelogs/2.txt   |   1 +
 .../metadata/android/fr-FR/changelogs/3.txt   |   1 +
 .../metadata/android/fr-FR/changelogs/4.txt   |   1 +
 .../metadata/android/fr-FR/changelogs/5.txt   |   1 +
 .../metadata/android/fr-FR/changelogs/6.txt   |   1 +
 .../android/fr-FR/full_description.txt        |   1 +
 .../android/fr-FR/short_description.txt       |   1 +
 fastlane/metadata/android/fr-FR/title.txt     |   1 +
 icons/build_application_icons.sh              |  70 +++
 icons/build_repository_icons.sh               |  48 ++
 icons/button_back.svg                         |   2 +
 icons/button_start.svg                        |   2 +
 icons/difficulty_easy.svg                     |   2 +
 icons/difficulty_hard.svg                     |   2 +
 icons/difficulty_medium.svg                   |   2 +
 icons/empty.svg                               |   2 +
 icons/game_win.svg                            |   2 +
 icons/icon.svg                                |  84 ++++
 icons/skins/default/tile_black.svg            |   2 +
 icons/skins/default/tile_white.svg            |   2 +
 ios/.gitignore                                |  33 ++
 ios/Flutter/AppFrameworkInfo.plist            |  26 +
 ios/Flutter/Debug.xcconfig                    |   1 +
 ios/Flutter/Release.xcconfig                  |   1 +
 ios/Runner.xcodeproj/project.pbxproj          | 472 ++++++++++++++++++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/WorkspaceSettings.xcsettings |   8 +
 .../xcshareddata/xcschemes/Runner.xcscheme    |  91 ++++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/WorkspaceSettings.xcsettings |   8 +
 ios/Runner/AppDelegate.h                      |   6 +
 ios/Runner/AppDelegate.m                      |  13 +
 .../AppIcon.appiconset/Contents.json          | 122 +++++
 .../Icon-App-1024x1024@1x.png                 | Bin 0 -> 10932 bytes
 .../AppIcon.appiconset/Icon-App-20x20@1x.png  | Bin 0 -> 564 bytes
 .../AppIcon.appiconset/Icon-App-20x20@2x.png  | Bin 0 -> 1283 bytes
 .../AppIcon.appiconset/Icon-App-20x20@3x.png  | Bin 0 -> 1588 bytes
 .../AppIcon.appiconset/Icon-App-29x29@1x.png  | Bin 0 -> 1025 bytes
 .../AppIcon.appiconset/Icon-App-29x29@2x.png  | Bin 0 -> 1716 bytes
 .../AppIcon.appiconset/Icon-App-29x29@3x.png  | Bin 0 -> 1920 bytes
 .../AppIcon.appiconset/Icon-App-40x40@1x.png  | Bin 0 -> 1283 bytes
 .../AppIcon.appiconset/Icon-App-40x40@2x.png  | Bin 0 -> 1895 bytes
 .../AppIcon.appiconset/Icon-App-40x40@3x.png  | Bin 0 -> 2665 bytes
 .../AppIcon.appiconset/Icon-App-60x60@2x.png  | Bin 0 -> 2665 bytes
 .../AppIcon.appiconset/Icon-App-60x60@3x.png  | Bin 0 -> 3831 bytes
 .../AppIcon.appiconset/Icon-App-76x76@1x.png  | Bin 0 -> 1888 bytes
 .../AppIcon.appiconset/Icon-App-76x76@2x.png  | Bin 0 -> 3294 bytes
 .../Icon-App-83.5x83.5@2x.png                 | Bin 0 -> 3612 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 +
 ios/Runner/Base.lproj/LaunchScreen.storyboard |  37 ++
 ios/Runner/Base.lproj/Main.storyboard         |  26 +
 ios/Runner/Info.plist                         |  45 ++
 ios/Runner/main.m                             |   9 +
 lib/main.dart                                 |  34 ++
 lib/provider/data.dart                        |  75 +++
 lib/screens/home.dart                         |  32 ++
 pubspec.lock                                  | 161 ++++++
 pubspec.yaml                                  |  22 +
 test/widget_test.dart                         |  14 +
 108 files changed, 1966 insertions(+), 2 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 .gitlab-ci.yml
 create mode 100644 .metadata
 create mode 100644 android/.gitignore
 create mode 100644 android/app/build.gradle
 create mode 100644 android/app/src/debug/AndroidManifest.xml
 create mode 100644 android/app/src/main/AndroidManifest.xml
 create mode 100644 android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java
 create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml
 create mode 100644 android/app/src/main/res/drawable/launch_background.xml
 create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png
 create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png
 create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
 create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
 create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
 create mode 100644 android/app/src/main/res/values-night/styles.xml
 create mode 100644 android/app/src/main/res/values/styles.xml
 create mode 100644 android/app/src/profile/AndroidManifest.xml
 create mode 100644 android/build.gradle
 create mode 100644 android/gradle.properties
 create mode 100644 android/gradle/wrapper/gradle-wrapper.properties
 create mode 100644 android/settings.gradle
 create mode 100644 assets/empty.png
 create mode 100644 assets/icons/button_back.png
 create mode 100644 assets/icons/button_start.png
 create mode 100644 assets/icons/difficulty_easy.png
 create mode 100644 assets/icons/difficulty_hard.png
 create mode 100644 assets/icons/difficulty_medium.png
 create mode 100644 assets/icons/game_win.png
 create mode 100644 assets/skins/default_tile_black.png
 create mode 100644 assets/skins/default_tile_white.png
 create mode 100644 fastlane/metadata/android/en-US/changelogs/1.txt
 create mode 100644 fastlane/metadata/android/en-US/changelogs/2.txt
 create mode 100644 fastlane/metadata/android/en-US/changelogs/3.txt
 create mode 100644 fastlane/metadata/android/en-US/changelogs/4.txt
 create mode 100644 fastlane/metadata/android/en-US/changelogs/5.txt
 create mode 100644 fastlane/metadata/android/en-US/changelogs/6.txt
 create mode 100644 fastlane/metadata/android/en-US/full_description.txt
 create mode 100644 fastlane/metadata/android/en-US/images/icon.png
 create mode 100644 fastlane/metadata/android/en-US/short_description.txt
 create mode 100644 fastlane/metadata/android/en-US/title.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/1.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/2.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/3.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/4.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/5.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/6.txt
 create mode 100644 fastlane/metadata/android/fr-FR/full_description.txt
 create mode 100644 fastlane/metadata/android/fr-FR/short_description.txt
 create mode 100644 fastlane/metadata/android/fr-FR/title.txt
 create mode 100755 icons/build_application_icons.sh
 create mode 100755 icons/build_repository_icons.sh
 create mode 100644 icons/button_back.svg
 create mode 100644 icons/button_start.svg
 create mode 100644 icons/difficulty_easy.svg
 create mode 100644 icons/difficulty_hard.svg
 create mode 100644 icons/difficulty_medium.svg
 create mode 100644 icons/empty.svg
 create mode 100644 icons/game_win.svg
 create mode 100644 icons/icon.svg
 create mode 100644 icons/skins/default/tile_black.svg
 create mode 100644 icons/skins/default/tile_white.svg
 create mode 100644 ios/.gitignore
 create mode 100644 ios/Flutter/AppFrameworkInfo.plist
 create mode 100644 ios/Flutter/Debug.xcconfig
 create mode 100644 ios/Flutter/Release.xcconfig
 create mode 100644 ios/Runner.xcodeproj/project.pbxproj
 create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
 create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
 create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
 create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata
 create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
 create mode 100644 ios/Runner/AppDelegate.h
 create mode 100644 ios/Runner/AppDelegate.m
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
 create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
 create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
 create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
 create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
 create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard
 create mode 100644 ios/Runner/Base.lproj/Main.storyboard
 create mode 100644 ios/Runner/Info.plist
 create mode 100644 ios/Runner/main.m
 create mode 100644 lib/main.dart
 create mode 100644 lib/provider/data.dart
 create mode 100644 lib/screens/home.dart
 create mode 100644 pubspec.lock
 create mode 100644 pubspec.yaml
 create mode 100644 test/widget_test.dart

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0fa6b67
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# 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
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# 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/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..9d0e11e
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,124 @@
+image: cirrusci/flutter:latest
+
+stages:
+  - update
+  - build-debug
+  - build-release
+  - release
+  - deploy
+
+update:
+  stage: update
+  except:
+    - tags
+  script:
+    - flutter packages get
+    - flutter packages upgrade
+  interruptible: true
+
+android:build-debug:
+  stage: build-debug
+  except:
+    - tags
+  script:
+    # Flutter local configuration
+    - echo flutter.sdk=$FLUTTER_PATH > android/local.properties
+    - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties
+    - echo flutter.buildMode=debug >> android/local.properties
+    # Android signing
+    - echo "$ANDROID_DEBUG_KEYSTORE_FILE" | base64 -d > android/app/my.keystore
+    - echo storeFile=my.keystore > android/key.properties
+    - echo storePassword=$ANDROID_DEBUG_KEYSTORE_PASSWORD >> android/key.properties
+    - echo keyAlias=$ANDROID_DEBUG_KEY_ALIAS >> android/key.properties
+    - echo keyPassword=$ANDROID_DEBUG_KEY_PASSWORD >> android/key.properties
+    # build flutter app
+    - flutter packages get
+    - flutter clean
+    - flutter build apk --debug
+    # prepare artifact
+    - find . -name "*.apk" # where is my apk?
+  artifacts:
+    paths:
+      - build/app/outputs/apk/debug
+    expire_in: 1 week
+  interruptible: true
+
+android:build-release:
+  stage: build-release
+  only:
+    - master
+  except:
+    - tags
+  dependencies:
+    - android:build-debug
+  script:
+    # Flutter local configuration
+    - echo flutter.sdk=$FLUTTER_PATH > android/local.properties
+    - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties
+    - echo flutter.buildMode=release >> android/local.properties
+    # Android signing
+    - echo "$ANDROID_KEYSTORE_FILE" | base64 -d > android/app/my.keystore
+    - echo storeFile=my.keystore > android/key.properties
+    - echo storePassword=$ANDROID_KEYSTORE_PASSWORD >> android/key.properties
+    - echo keyAlias=$ANDROID_KEY_ALIAS >> android/key.properties
+    - echo keyPassword=$ANDROID_KEY_PASSWORD >> android/key.properties
+    # build flutter app
+    - VERSION_FILE="$(find . -name 'gradle.properties' | head -n1)"
+    - VERSION_NAME="$(grep '^app.versionName=' "${VERSION_FILE}" | cut -d'=' -f2)"
+    - VERSION_CODE="$(grep '^app.versionCode=' "${VERSION_FILE}" | cut -d'=' -f2)"
+    - TAG_NAME="Release_${VERSION_NAME}_${VERSION_CODE}"
+    - echo "${TAG_NAME}"
+    - >
+      if [ $(git tag -l "${TAG_NAME}") ]; then
+        echo "Tag ${TAG_NAME} already exists. Skipping build release."
+      else
+        flutter packages get
+        flutter clean
+        flutter build apk --release
+      fi
+    # prepare artifact
+    - find . -name "*.apk" # where is my apk?
+  artifacts:
+    paths:
+      - build/app/outputs/apk/release
+    expire_in: 1 week
+  interruptible: true
+
+application:release:
+  stage: release
+  image:
+    name: alpine/git
+    entrypoint: [""]
+  only:
+    - master
+  except:
+    - tags
+  dependencies:
+    - android:build-release
+  script:
+    - apk --no-cache add curl
+    - git config user.email "${GITLAB_USER_EMAIL}"
+    - git config user.name "${GITLAB_USER_NAME}"
+    - git remote set-url origin https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}
+    - VERSION_FILE="$(find . -name 'gradle.properties' | head -n1)"
+    - VERSION_NAME="$(grep '^app.versionName=' "${VERSION_FILE}" | cut -d'=' -f2)"
+    - VERSION_CODE="$(grep '^app.versionCode=' "${VERSION_FILE}" | cut -d'=' -f2)"
+    - TAG_NAME="Release_${VERSION_NAME}_${VERSION_CODE}"
+    - echo "${TAG_NAME}"
+    - >
+      if [ $(git tag -l "${TAG_NAME}") ]; then
+        echo "Tag ${TAG_NAME} already exists. Skipping release and tag creation."
+      else
+        git tag -a "${TAG_NAME}" -m "Release ${VERSION_NAME} (${VERSION_CODE})"
+        git push origin "${TAG_NAME}"
+        curl --silent -d "{\"token\": \"${JABBER_NOTIFICATION_TOKEN}\", \"message\": \"New tag for ${CI_PROJECT_PATH}: ${TAG_NAME}\"}" -H "Content-Type: application/json" -X POST ${JABBER_NOTIFICATION_URL}
+      fi
+
+android:deploy:
+  stage: deploy
+  only:
+    - tags
+  dependencies:
+    - application:release
+  script:
+    - curl "${REPOSITORY_UPDATE_WEBHOOK}?token=${REPOSITORY_TOKEN}"
diff --git a/.metadata b/.metadata
new file mode 100644
index 0000000..b2896b2
--- /dev/null
+++ b/.metadata
@@ -0,0 +1,10 @@
+# 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: 5bedb7b1d5698ce2c1c67aaf9afae7b3948b172a
+  channel: beta
+
+project_type: app
diff --git a/README.md b/README.md
index 7f35469..a20feb5 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# org.benoitharrault.reversi
-
+# Reversi game
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 0000000..0a741cb
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,11 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 0000000..2849919
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,70 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+    localPropertiesFile.withReader('UTF-8') { reader ->
+        localProperties.load(reader)
+    }
+}
+
+def gradleProperties = new Properties()
+def gradlePropertiesFile = rootProject.file('gradle.properties')
+if (gradlePropertiesFile.exists()) {
+    gradlePropertiesFile.withReader('UTF-8') { reader ->
+        gradleProperties.load(reader)
+    }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def appVersionCode = gradleProperties.getProperty('app.versionCode')
+if (appVersionCode == null) {
+    appVersionCode = '1'
+}
+
+def appVersionName = gradleProperties.getProperty('app.versionName')
+if (appVersionName == null) {
+    appVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+def keystoreProperties = new Properties()
+def keystorePropertiesFile = rootProject.file('key.properties')
+if (keystorePropertiesFile.exists()) {
+    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
+}
+
+android {
+    compileSdkVersion 30
+
+    defaultConfig {
+        applicationId "org.benoitharrault.reversi"
+        minSdkVersion 16
+        targetSdkVersion 30
+        versionCode appVersionCode.toInteger()
+        versionName appVersionName
+        archivesBaseName = "$applicationId" + "_" + "$versionCode"
+    }
+
+    signingConfigs {
+        release {
+            keyAlias keystoreProperties['keyAlias']
+            keyPassword keystoreProperties['keyPassword']
+            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
+            storePassword keystoreProperties['storePassword']
+        }
+    }
+    buildTypes {
+        release {
+            signingConfig signingConfigs.release
+        }
+    }
+}
+
+flutter {
+    source '../..'
+}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..76daa7e
--- /dev/null
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="org.benoitharrault.reversi">
+    <!-- Flutter 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/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..baefc4f
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,41 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="org.benoitharrault.reversi">
+   <application
+        android:label="reversi"
+        android:icon="@mipmap/ic_launcher">
+        <activity
+            android:name=".MainActivity"
+            android:launchMode="singleTop"
+            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"
+              />
+            <!-- Displays an Android View that continues showing the launch screen
+                 Drawable until Flutter paints its first frame, then this splash
+                 screen fades out. A splash screen is useful to avoid any visual
+                 gap between the end of Android's launch screen and the painting of
+                 Flutter's first frame. -->
+            <meta-data
+              android:name="io.flutter.embedding.android.SplashScreenDrawable"
+              android:resource="@drawable/launch_background"
+              />
+            <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>
+</manifest>
diff --git a/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java b/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java
new file mode 100644
index 0000000..54c0bb5
--- /dev/null
+++ b/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java
@@ -0,0 +1,6 @@
+package org.benoitharrault.reversi;
+
+import io.flutter.embedding.android.FlutterActivity;
+
+public class MainActivity extends FlutterActivity {
+}
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/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/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/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/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..76a4e23aa499c3bd8275cd1ef1bd70dc6104c117
GIT binary patch
literal 1995
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

literal 0
HcmV?d00001

diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..e747a1150a9c8b54a0628c25d2a153a43b9b6a33
GIT binary patch
literal 1303
zcmV+y1?c*TP)<h;3K|Lk000e1NJLTq001xm001xu0{{R3VB86{00009a7bBm000=K
z000=K0h@W>SpWb48FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10nt!Q
zR7C&)000000001h0031009920KtKRMKtMAyGb<}ARVyn=BqTr}AUPZyIXN6NGa5!N
zE<h_QJ0~YMBqT{BBt#-2Kp-GIEgm^5962j1M=L8sC@4B3BSS19Kr0|UDIYl|CO{-4
zJ|iPQC?Gy3Cpsh~LL?+WD<eE8B0DD`);~7aJ~H!SR^~x8^G-qZPD18EHQYWl+&?t+
zT2S&rHuFL@^g}lEL^$0*GxS3?^h7uGL^$+CIP^w2^hY}MM?3ULJoQjS^-)FjQ%Chw
zNcC4s^;k^yV_5cMS@vdI_Gw=BX<zngVD@Wa_H1GIacB2&X!mkx_jzykd2si7arb+2
z_k42qd~^4GboYLB_=9@*gnRgeeE5ZZ_=|)1jD+}%h549}`IwRUnUeXMllhvI`J0sa
zoR#{boBE@i`lO!vrJwqypZcbt`lzD%sH6I+qx!0(`?Ie5w6FWMu=}>L`?j+D#K8Q-
z!TiO+{Kmrk$He@~#{AC9{Ljq%(a!za*!|nt{oLC9;NAV;-u~s|{^jKU=H&k7<^Jd8
z{_gDl?(P2b^ZxYo|Mm3$_Vxew_y73!|M~d;`T76)`v3d;|NQ*_{rvy^{r~>{|Ns9Z
z|KIrl00202QchC<0RjR80|W#G1_lQR2?+`d3=Iwr4-gR&5)u;@7Z@2E933DbBO@dx
zCs9&U;^X7w<>lr5{r&ypdt#3O00M(aL_t(Y$Gw*8TM|JO#$CV`1G6L~yI<{QS4$f<
zl0+-h0#d-dk(nu(<^@YpF+`ClLqUhL``5<qa!a2Xr!T!<_RQ@5o;mx>JLgPU+5Zzq
z*WRx+I-aU>?OzC|J$&@IxrQjS`IzxgDN*0hcAy&Sxne$d5QA>>`Lr~KCKjN{WGq(*
zj<0TH0UFQO7&Ho?x3B?qrz^DzP;rtCxOV194miaITt8d24-f`I(bZt5I(Rj=8V&Ue
zG@xY#U~?PrgcTv{1O{2*7BcX71s0zpn<oat2#o+1B}oz?ED(VKSX5rNC6bQTEi5S#
zp^pfJ;Ds8Dg8v<eDj>l;5m@_`OV<fsCJR6&N(3U?HZ|ymK%lt7cOozc9yJJp*Ov!G
zm?Z+8IMyaVJ-h48_Kl26VEmH24-@cn)YTo_O*s*ArLibVB8E?tjk69X<-J;W$^%zS
zj*~-Hnl+HaKQ-oUR%5$wY--R!_Y!LLPX~JJIpA$z+TThAtRq`;8b6ej+;JtP544mf
zW&em`CY>eR>7AK3u8#@$Oa@+K)jwip!)}l7bSb`y;SM73wYXWn9+*)ly$~c@1Ef5V
zwMLgZ`6NZQ#u_dFS@XGbxo?uqw@_SR&<~^PWIKE#0{!`az)6QAnRuq0@+Igc0zz0J
zvi=!D=sm=}Hq^cZ%L1hcgq3rT$K@h0jv@6MVEHMv%=9fpBeOX_cg#kj^SuJyOKgRV
zwNw@W#$tRmUyOMZ8*uSNuH5U44_JVQmMUItL7eU`3vkQ8Yw}I*=DkM;>i&(A&dcdd
z=Pq5TBkS^oTBEkKPwNcTmRgD|=1P7~XXo`56zTOk?%%E&`z{;I`U4ku(*Jv9MB4xW
N002ovPDHLkV1h|vW90w<

literal 0
HcmV?d00001

diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd535dffa21b27b5a4969ea90992caf21287768c
GIT binary patch
literal 3012
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
GLSTYuFqY2%

literal 0
HcmV?d00001

diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..eca758efa5511372b0752f9a04a7a1ec678f3747
GIT binary patch
literal 4747
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
Z{{i;)gOxo2b9Vp$002ovPDHLkV1f=3^_u_y

literal 0
HcmV?d00001

diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a6c831889200b6f0716afecbd912431d569efd6
GIT binary patch
literal 6604
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
X+v27ol!}QrF@V-ReN?R~I`n@4-MKHw

literal 0
HcmV?d00001

diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..449a9f9
--- /dev/null
+++ b/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
+             Flutter 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/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..d74aa35
--- /dev/null
+++ b/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
+             Flutter 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/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..76daa7e
--- /dev/null
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="org.benoitharrault.reversi">
+    <!-- Flutter 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/android/build.gradle b/android/build.gradle
new file mode 100644
index 0000000..c9e3db0
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,29 @@
+buildscript {
+    repositories {
+        google()
+        jcenter()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:4.1.0'
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+    }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 0000000..bc2d95e
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,5 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
+app.versionName=0.0.1
+app.versionCode=1
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..bc6a58a
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
new file mode 100644
index 0000000..44e62bc
--- /dev/null
+++ b/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/assets/empty.png b/assets/empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..586de0573e7f77d97c16942f603b8ee6d9c7d7bc
GIT binary patch
literal 170
zcmeAS@N?(olHy`uVBq!ia0vp^2SAvS8AxUb{c{0QoCO|{#S9EG5g^QXcE<BFKtah8
z*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mfQpy{d_r7-^ztg(TR@7jB*-tA
z!Qt7BG$2RX)5S4FLh|iFLq;I)kizffalHHqKqf<hj?e)H#&-6L??60HS3j3^P6<r_
DJR2=x

literal 0
HcmV?d00001

diff --git a/assets/icons/button_back.png b/assets/icons/button_back.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a802ff2d2bc0c90488a1c319288be9f28cdea5e
GIT binary patch
literal 3744
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

literal 0
HcmV?d00001

diff --git a/assets/icons/button_start.png b/assets/icons/button_start.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a3b74a3b98f45de590a7f290b810daba7120912
GIT binary patch
literal 3969
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
R3AzAy8S9&2U+Ov${{z{_1KI!p

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_easy.png b/assets/icons/difficulty_easy.png
new file mode 100644
index 0000000000000000000000000000000000000000..66f1476dadfda62b03378a040f10737d9edbab1c
GIT binary patch
literal 2833
zcmb7`X*|^Z8pePB*^FU~eHg=xb*#e-#xR(%%Q|G6?8!QXqEMD;@kEOvN>rypB}BF)
zp*$*O=^!bIdXTI|vOMVYygcvDdGWoj`*VM;7x%mC&gQx~U@-&?006tg(bn^~xBmkg
z{#(OgSB!s~aJ(Zg0RV-U{{ShKpU3}R$|u_SCGL!iNK6Vn5Dt=(lBm(K{DiR3_;706
zfym+oa{>Ucms}SwyWe2|0SE>`a0o)cAS4Wig29B~Ff<${jDTYha1kV26bZ*75n?C=
z4uudGLP!W9C54buXrwe6DI<)M6-MDPC^-yD9wS5$5mFElB8mzrilUW7(IhOIj72Mp
z39E<+tKx*!aKh?1jD|RdB976Nz-UQ`XiJFbNQ&r6is(s+Ql&)or9};-MQPGlx(wD(
z25TfMW-KelkQFn*i!t#yQ#qWO9F8TAGnW^)kQcWkh_eae90dt01qo{f2^*q>Em6`=
zQPN&f(m_emQAx^~B;`Vub|p)@k)_?0rMb#79x5`PDl$7&WV}>my;Ws>)MS0tWc}3f
zJazmob-cd@K0re*kRlgEkqf5Cg=or$YRd1{k`L38-=j?k*Cs@06C!mKqI48ubQSoz
z#JzgNeR{-LDlv|#7_YCmUtjTnzG8xbQlf#<L7LJbno<&tltL#RHY6P}B&QmY(~QXJ
zM&t}*Wr4BsQHDyUiOL^Lm6J@>EK}8NQ?;`!wH%h(IhOi)bM;(v^*jsp3l<s$mXty^
z<uZp-#L+C~XkM|>ylSO+&06bU)>_wXv~JjF-L%mzvDGfM)h@HszGbI#+fL_>y-vBk
z&RqxH3J2Xv2i+=1-FuFD)jRZRcIe%A(yMi%);Uq@ov97Z)J7Nm2QK<eF8a-`29Mkf
zTHFjCyBoB+)7so=?OfUuF72rYy~Bh4rw6^$lm5)p@cB-|E-#~3UPj&CMm^rfy*|c$
zKE|(ojQ{P+==Ws|_%R0k7;ktcLp+nWJd=03nD70WBmT?}{>;$;)3HF)@j%m0L1v$W
z%>D{8n+P_W3}#J*u)c(_rbAd?L(OMG&1ZL;&+Rs!53^VZvsetX__oL5`yR`saLeUz
z%OByED-rCU5$x4S_F5!+J&Lmt#rZpmvl-3ViniL0vHBImw1F4^2))>0Yvq;vetu*&
zSlU}o=-U`o{6y0Pwxe6p*tsW<u03Zj9sV)TNeZi3*^(=J=!s{!nvSQAC(T6HqprUD
zTRPO=&wY_sjDik~gs*Pm9uJ2n9h!2XMn(X(MPJ2ectr2=Z_K~U@dU@L6a02pzpiP5
z?$2S)`oY8n06_*2ngjl~@wGY;pTXW74Wfh<U%O_U!E0=|^ZgWLw6GQOF|6Y_09uuU
zAMV%dEj{TBzPOUu{;;8|1g<vw{g@&v4L^-_+$?Q*4ihUo=UJ&)pHUGIo;*OYkm81X
z*3F)PLbSg|3rHH+z^<u|V32;trRnSZ%r#il)*J&c>xbevi&I`extwws)_##Sc(Bly
zidYjVd`DO~ED=073QitOcJMJVTU^H1ggZRfN%;IV7Ac)mP<n9Af(_lcl=nCeh968)
zxK8i7J(g0}?cP4{bG!dR?!(>%Xu>abnb7lWL#SrqV%j$@&jiG1=t!~(zT(M0`U5&)
z8&{}8bHqC?hbH&80r$p)pRSd&yEq=?FNaBee{8^qe;6(vrIqoa*%Z^lB77Gcb3hX)
zuZSeGa5L8Jxo5H7pRN#Z5@l%UIg*TwajARZY)Ry>*t*Y!tH)CW$hpOVKtwWJZmiZS
z_es{nvNQL6`Xb(Rj=YU+ynkxDc7BL7G0DEUpO2mzZU(O{@gQhVUFzLUFMip3u?B@H
z(Yze-ZC-a5du>f#MDV;=RH)u!a+^JLBzCxUIX$MWJBV@#J3G7~EZYfH){bI9*25@+
zc1G9Zox|nuqafrkv%0hTW^~d`{`t#C@-Ji@OUVBFP17zLXg>QIBaWXUgmzo7wcCuG
zB9m)F%jv(eUM^awesM#a;o{YH?AjV!?>s4U_0iTm^3|(%dM_7NAI<O|FD^tIiH#2&
z{erp3O_LTRJ}>EiaBlbvES0=3qR~~n#>sL){_V!SMIkK|)LKxVy03MOd^75bd-G#A
z#fMJzyF$^|OD{dhG(G5IGhACLUtLAI)udI40))7qK8F1IUW&BC5i!Q-YVPzxX~r9p
z!DzydTuR|oO=J^}v9{QkT+sOfH41X<-(feoiUX=k_fP`C)BcYi#?XDQMYzWA&8v!N
zht4KB+1}1>>5u?){}S)?$y7&5y9<yQkv|<D*Ycw4$0<Xaa^J|noAg_O*Ky<5g@H@7
zD=R>CEoEbJk#M=lYpJc;4lnqNy2>ay^^yV{_fKyIS`*o6%bp|KnI{i|)R}p+x_yh3
zmWrh9y~-xPX4C8SjZ0QjdO&gFd8LeNUrCo1CMMYHyHhIJ>YbBNYv2z74304FkU74+
zH?p;2+>rDJ9YxY&9qL!#LYBc(N1DopSqX&O5;Y$C50qfVrT<vlJXhp)=6mZ%3AR1u
z*__e1c3!}ptwyuD<LW(~F|hbs?58?dP~+uZu;klgJBC_~fx5kNwp!^b8AEe~a8y<N
z+^PHqx!Vv|suHxkJd+(}1!9Nef+Kv4cxqyP<;-EkBP-BIOm1wQ3+gpgwj&zYr&k7*
zb=PQa7x1b-S>zwDu!Y(*b5<k_>4Pu(CvOVg%B<WNc(JK}r=YCk>M^kHIFedF-xK#9
z3pWa`Vi*ilP-`~nS4_{mtBdVsM&^gyAdDkvoZ?C`%=QJ^Gq)UEVbe&VbGh}rwBP$b
zsW+xt%KL3@HAhO-+R*3~L+B?e4LiB20V2k6&Y0O`)DexCUUP7wOlB5$$IBGi$0tac
zOt@lm(@suz3&Z0b-0D6ayOg|a6GwbYzs@sJUxx8t6cY#s?Ki%^V}h&~nge*QN?*Fy
zGs~e`z4>xUk9K#kTQ00J@X(l9!eO|;^y6KA+u=*@KVPMXxvm@Pf@h~-{ZQdr8i&`y
z9}DH-f50nq_hc0PK4+$|o~4h@g2bzqOd?~0lYSL7`9F|oMS^ar+P?c{{JcH%O=lX1
zZy<Q^h85cvb8eb=)xN0071~eou6h3<yR~fd)owu=_(r-4>V7Vt8SHnPQDOSNx@(!^
zTiMa%En0(VU-`8@TvenY-@0o>PA_#C#C;0noE9HPF2en`)EqVJR2uM3?25tC=O@4_
z%rEJoMn&0JOAIxC$@^}0UnWQcSDI5xMyi)n5@WRUd+&maS)dm_J=@2wr}nJ=t%uFb
zt0R#N>=5yQb1Y+iA-@Vp>gRu67qDzWF{HaxH`=_1cN*?{dQ?<Cm2(0;zU6lIuQrlO
zwEk;EsR+bahHlA1?ULZpW?XZ6tOGtOh&NVm_Bzo8!7V+2za#=8%I9y(vYXq)F3%G_
zw`#zmyr6tExCNqS189sfQSj~ztx;(p^WKf4shk^t454TDE@!Hm^|t#vO2PhIf<};F
z6>ek3eq6@{P_SX6o~VB&==%=&BfwurN04-;5hklysZe|9+ydtFB)iE6)VzurRn4>J
zM`(&)(`r_l+1u(ZfoynMCu#j}&(x>Sn#t1-^8c>}{O`8hb_dRLG6Y#JH!3Fs8f5q<
U+QhC*{_~;kuyeD$XB~3vKj9&LUH||9

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_hard.png b/assets/icons/difficulty_hard.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c1aef8bb260d6e5241a0856c11cfae129c9d24e
GIT binary patch
literal 2649
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

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_medium.png b/assets/icons/difficulty_medium.png
new file mode 100644
index 0000000000000000000000000000000000000000..146d9b9ca714b9c82e9a5188e88e5cc8736b893e
GIT binary patch
literal 2857
zcma);X*kpi8^-_t+4p@x%9J&-FC}6WB1`rq+Z03A9NXBNP-LefvgMR4lO@EI7_x;_
zr^rcJ50O$)M=71x`Tl-5*Y&%f`?;R$`F`IQZLE*tF%lR60PyB!#&+8-`d29E_T)lJ
zw6_f%YUUaa06T{M6}YP=m$`iuk1%nGus`D)!8;ko1$aE3ihoF8xcA9WuF9D(ziX@d
z5&!_{wy|_D*?tB=00II~2mpfua2SAqfk-%rM1Uv+h(>}K6o^HGI5ddIfCMZ^#DXLo
zgp7w!@DM5iLL)-xBnX2HVNxJs6o@z#B0+=hphG3;(47qEE+$lp31x{vcZ);!NI<2x
z*#VW2gvm<6<aWa3cfk~-V0)!tiY%DYZrHxvFy%ck6=|573|w6nt}X}Hkb`T=!?hLQ
zI(y;!72yYz;JQligZmJA$_RaB#32=gp&Ej%jxf?d9MMD=Yavavk*3<nqdG{l{Ydlu
z$YTePmbyr*gGehqq_sZkxIW6}5X#m7WoLl0H$*wGQI19^CnJ>eVU)`e)Cps>n+e+8
z6zy>o?P-SgGDCCB(WflX-WC`iOAOZv<7<WSv&Ni0j`82d1`}Y53ADom*<ph1u^|rF
zGY;5LM{JlgHryE-;ew5H#YVYec_*+uH(azkF4hAV=ZTB=#3gv)5;?fDCvoRa;gY=Z
z=ehU`zW7u>eA;RJ#nbq7e|$y&J~M!j6-dYqBIE=Ua)SwZA%y%hgiG6m5-$HnxDrMv
z2qPAT6R$=Piz0}{k;H3J#1bB{lt(O!CYHw#D`JS(V@cQJNR{!V-{VO)5=b`_NmYrY
zYCfrkPpUmfs!JjZlF7G|$@MAZhV$gc3*@F$@|`qta~iqjBDpo4d^eramO*LHqzJPp
z_p&JWvnd@pln2}7QabY}UHO#mOVpmr)Q6X;y;rDx1=Rim>OdiN@GA9D5p}4DI$TT}
zzD66lMtfXB8!e?hDWg3tqdhC9{ZT=CUO{_toi<iUAOD^H@^|{5H|ejc=##hTudC^A
zs_9cT^yym0Of6%!jxi@-%nKNQ-DWJ*GZq^dZ?|b=EHyEfo0#wJFjtzH?^~E3T9~V?
zOgTt52mr`sb7Lci=vN<JuXxcM#gLz-lTb;ls@uNRr>kf2bnP^oV|^5QYmY@<aheC)
z{!xqNy}}!Niv4|KhHWf6ZkkF|ROjy3axsD%GoyH;Ue7ZA^!Qr?s_DlQ#v43|fj5Wy
zmaF<b`B3BvC_1>S7}@S@ffa$ag5&}P2#F8CSOAD(1OH(abxL}b3b)Ljy&+%~{$@<e
zL`Te}2lrjbMot851YPm+SsP!=hEKfznc_0x))g59@Ea!eDpq@@1YiBnR4w}e_ODb$
z5&kQ4Z{xJ#ig=eXYtUrJ9OMIJYzV+iN>@agOWk6}9fS6~@{q4r(P-jQ@`eB>wS<^B
z2yJwu&tW!lfxrI!kXm9}Qz;N84*}NN6c8zxhd{+y-vm9NBwgE!>+dLkli#9LQ25d?
zz*{7|I9|PpQB{DK{21KyHY;etgJXL=bxzWK6k#bS>EOhS17l8rz4h@Q*B7cx#b-(b
zqq+j}6(?b#n*F=$jrJWDpZOA-3hg$$3vzh8TcTqI4zMNf^oWBx>xoKG35x9I;=Qvp
z&@M#x><hJ-Q!5Z1bF1Ut6M!s#zR2#%{0U~REd2<}Z8rLJqb55rv!GV;c`U#7g>Ikr
zmh35)!7oZ)$1FVy$~x6zoO;3&5}ropXmV`N7aDs!{&+z!^2!OkOax<{%f8$tid22M
zoim|T6>&06(t4X$9H2MuxQf!!odEY$EI`ey3!d7lF^P%2={8h$0ZsW#j4OcyTNZ~1
z-zN2AZmVau#ji~t2)1jIx9(JG@>x?AQUGAdW9cN@mKeUXp(D@;Pz$gqy=RrMYI+ed
z7$6zwUvVl2a;#;1<9))J!ZzP9&kV=ECsQ|#=QBn>%QtQmBWfr_$WYmxn3p>(H_DR^
z_Pl*&pwqgzoKV8#jeXaFK7amFAJM+UcfH<V=+@}HWUOGgGx<VD_UAaMF6OEIdsp;f
z(Ls9P*T?qSo??XFI4FDnA-&BO`}76+59qVl93W_;qxdfg$Is4J#qKw?V?U{Q3;IKt
z=bEyn58gGeoI#5Qbmo7lU$OU1x~Sf-sM*DAelCyD_NbfuN;!MW^K%{&7$~lqa=Aj4
z)B9Qb@Z4tGZRTVRZ^}fZ^zs8A6L{BV{oFf`por|}*Au!IZOt`GQ{+Fk@8G=Y_~BFM
zskQ45Gp#=t&H*H+!n(YXL#F6e_>#b4@!>n?2lIPmn61zFPh34ziyDfU?Mx0vn<wmg
zF>n@G&L3ED9zCSeJKX!x@!evM&GKnrDfUFd&%-jmauYu9DEhXgBWxu~#;Pnk9Vuo)
z)^zV$#gSQt>Lz9bhAr(n-1l;A;1HBwk<}y2X$b9AHRja*tP7Nx_xiT<QLW;+2@mvz
z08?*=-~7bIkKt4w>HeJY=<zEBSyNVg{m+8L_~rX#QP<-IKe>bbhO^lrcfJoi3<1S@
z`kD*E!6@+h<FZejc8_nR8kxdztD`A11oqu%J0GYs6o+KA=2o_pq7fzPJ`?-CCPqR<
z3Mw5*4dL1%BJg)x=xDi>TZ#BaNM>7b4x^Y&<}_D!oi9m5Jr(u^J-JojYLL1R(fX0}
z!yO^k7c?8xxmy9r4jPue-EOtZ{=|B*cTRSMc%$>{^mXp1tYk30l4UOiJ8dU{Da$kK
zyN@9q6$W)8CU5}r^1i~&tPxG(F9Nq9gHOQ&ne_I#Gm-$it}$dm=8?J3UKq%iJ$1OG
z0n~wr+|P?A+Z1u%C>8>y%0R~m^Q?FERRcSR(c!HhHHmW0z)^s0KZ5**06J(<|7>z}
zyKS9;bwI1_YEb>sk>2|{7>f&%oO&gGnaUTwDga0+9NIGCiL)zaAS|5dK<789j3-ki
zHtr|0a5LtYuzXGLrwcMt?2b#!i9z?EBtMULP*bP=80J>f)xol=%AvT?XQ{W!eMScH
zq{Y}A#hHxqV3O)qX}Y5GP7UK(aalp)llLJ;U7sLfV9I*mKTkXM3ahH@1Rh_UT|bO2
z{{qx5GaDt@C@Ic^1)ZkiI}h`z5~a5Ns~@c~jWU`_x}ZA12<`Lo3*pluw@k63xSp4E
z!9n?{C~jLS@#)g^T=wC5fwq_Hf^>fj`O=*Tfuj7>tj-HN12)K4aX;QVroY>BqRl#T
zY|^Xu!1SQhW8~nRr>V>0jf=I&>E(Q3fFYF0qO;|W{~X`zpZuzLlIuH9QDIB+oArSe
zdz6X3Ij&}n%B&#H)V)pnr<2Ql?e^7lH6O>(CRP+|oYY!5a%6q%Z8yYGx#k+u9nzR0
z{Yx>BbpM5Ob^)Sy4af$*<wJ8r9zeZrc81kzaacr_n^CMw<q~A3Tx~2TT)N3bVn!(x
z7>BfXH)AjgJ_1Xn$@OAod7s$dl#wj@r`hQGnDhyrb8D`{rM+|w{-h+|r-FGD^_!V@
zW>X|;ar2LBBWe+O(A?fOakGJ$)J*M6kz~E&pqanOpCH1qilvjTfoT&h%81hMoo_Xf
zik(_7^f?&6W2;Or;L}u38}*);O6ygNh0(0F%RT-lf_q%YG3PsvTmF}L{QptPhO-oE
hlM7fj*XP2%OZ5opDh=v82ez9lU~Xb<Tz{C8^gjWrgns}4

literal 0
HcmV?d00001

diff --git a/assets/icons/game_win.png b/assets/icons/game_win.png
new file mode 100644
index 0000000000000000000000000000000000000000..d73741df40e8cb97e2bf0eec929bba2e7859459a
GIT binary patch
literal 7906
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
M07*qoM6N<$g4G4ZWB>pF

literal 0
HcmV?d00001

diff --git a/assets/skins/default_tile_black.png b/assets/skins/default_tile_black.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9147334912e10a656a748dacd9e5ee8a51210bb
GIT binary patch
literal 3383
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
N002ovPDHLkV1m3_cCr8f

literal 0
HcmV?d00001

diff --git a/assets/skins/default_tile_white.png b/assets/skins/default_tile_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ac8407cc621b5931503d80be48443d44fead163
GIT binary patch
literal 3271
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
FV1n{7Lj?c;

literal 0
HcmV?d00001

diff --git a/fastlane/metadata/android/en-US/changelogs/1.txt b/fastlane/metadata/android/en-US/changelogs/1.txt
new file mode 100644
index 0000000..777d1a0
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/1.txt
@@ -0,0 +1 @@
+Add initial empty app
diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt
new file mode 100644
index 0000000..fe56ebf
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/2.txt
@@ -0,0 +1 @@
+Improve CI/CD, add jabber notification on create tag
diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt
new file mode 100644
index 0000000..c4767c3
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/3.txt
@@ -0,0 +1 @@
+Add minimal playable game.
diff --git a/fastlane/metadata/android/en-US/changelogs/4.txt b/fastlane/metadata/android/en-US/changelogs/4.txt
new file mode 100644
index 0000000..60ec69f
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/4.txt
@@ -0,0 +1 @@
+Finalize minimal gameplay.
diff --git a/fastlane/metadata/android/en-US/changelogs/5.txt b/fastlane/metadata/android/en-US/changelogs/5.txt
new file mode 100644
index 0000000..8b03873
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/5.txt
@@ -0,0 +1 @@
+Remove flag on cell when explored.
diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt
new file mode 100644
index 0000000..9ff6c06
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/6.txt
@@ -0,0 +1 @@
+Ensure first cell is not mined (postone put mines on board)
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt
new file mode 100644
index 0000000..49f5278
--- /dev/null
+++ b/fastlane/metadata/android/en-US/full_description.txt
@@ -0,0 +1 @@
+Simple Reversi Game
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..86b383e0f61129e1b0f6a8584a36a30109a8f261
GIT binary patch
literal 21946
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%0AE`jv1
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

literal 0
HcmV?d00001

diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt
new file mode 100644
index 0000000..49f5278
--- /dev/null
+++ b/fastlane/metadata/android/en-US/short_description.txt
@@ -0,0 +1 @@
+Simple Reversi Game
diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt
new file mode 100644
index 0000000..49f5278
--- /dev/null
+++ b/fastlane/metadata/android/en-US/title.txt
@@ -0,0 +1 @@
+Simple Reversi Game
diff --git a/fastlane/metadata/android/fr-FR/changelogs/1.txt b/fastlane/metadata/android/fr-FR/changelogs/1.txt
new file mode 100644
index 0000000..9246663
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/1.txt
@@ -0,0 +1 @@
+Création de l'application minimale, vide.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/2.txt b/fastlane/metadata/android/fr-FR/changelogs/2.txt
new file mode 100644
index 0000000..cdf380a
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/2.txt
@@ -0,0 +1 @@
+Amélioration de la chaîne CI/CD, envoi d'un message à la création de version
diff --git a/fastlane/metadata/android/fr-FR/changelogs/3.txt b/fastlane/metadata/android/fr-FR/changelogs/3.txt
new file mode 100644
index 0000000..75d5298
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/3.txt
@@ -0,0 +1 @@
+Ajout du jeu minimal, jouable.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/4.txt b/fastlane/metadata/android/fr-FR/changelogs/4.txt
new file mode 100644
index 0000000..6f741b5
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/4.txt
@@ -0,0 +1 @@
+Finalisation du jeu minimal.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/5.txt b/fastlane/metadata/android/fr-FR/changelogs/5.txt
new file mode 100644
index 0000000..0b46e4f
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/5.txt
@@ -0,0 +1 @@
+Enlève le marquage sur les cellules parcourues.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/6.txt b/fastlane/metadata/android/fr-FR/changelogs/6.txt
new file mode 100644
index 0000000..0c8a46b
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/6.txt
@@ -0,0 +1 @@
+Impossibilité de tomber sur une mine au premier coup (reporte la génération de la grille)
diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt
new file mode 100644
index 0000000..170a1a6
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/full_description.txt
@@ -0,0 +1 @@
+Jeu du démineur simple
diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt
new file mode 100644
index 0000000..170a1a6
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/short_description.txt
@@ -0,0 +1 @@
+Jeu du démineur simple
diff --git a/fastlane/metadata/android/fr-FR/title.txt b/fastlane/metadata/android/fr-FR/title.txt
new file mode 100644
index 0000000..170a1a6
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/title.txt
@@ -0,0 +1 @@
+Jeu du démineur simple
diff --git a/icons/build_application_icons.sh b/icons/build_application_icons.sh
new file mode 100755
index 0000000..9a5488a
--- /dev/null
+++ b/icons/build_application_icons.sh
@@ -0,0 +1,70 @@
+#! /bin/bash
+
+# Check dependencies
+command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
+command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
+command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
+
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+BASE_DIR="$(dirname "${CURRENT_DIR}")"
+
+OPTIPNG_OPTIONS="-preserve -quiet -o7"
+
+# optimize svg
+function optimize_svg() {
+  SOURCE="$1"
+
+  cp ${SOURCE} ${SOURCE}.tmp
+  scour \
+      --remove-descriptive-elements \
+      --enable-id-stripping \
+      --enable-viewboxing \
+      --enable-comment-stripping \
+      --nindent=4 \
+      -i ${SOURCE}.tmp \
+      -o ${SOURCE}
+  rm ${SOURCE}.tmp
+}
+
+# build icons
+function build_asset_image() {
+  ICON_SIZE=192
+  SOURCE="$1"
+  TARGET="$2"
+
+  optimize_svg "${SOURCE}"
+
+  inkscape \
+      --export-width=${ICON_SIZE} \
+      --export-height=${ICON_SIZE} \
+      --export-filename=${TARGET} \
+      ${SOURCE}
+
+  optipng ${OPTIPNG_OPTIONS} ${TARGET}
+}
+
+function build_icons_for_skin() {
+  SKIN_CODE="$1"
+
+  build_icon_for_skin ${SKIN_CODE} tile_black
+  build_icon_for_skin ${SKIN_CODE} tile_white
+}
+
+function build_icon_for_skin() {
+  SKIN_CODE="$1"
+  IMAGE_CODE="$2"
+
+  build_asset_image ${CURRENT_DIR}/skins/${SKIN_CODE}/${IMAGE_CODE}.svg ${BASE_DIR}/assets/skins/${SKIN_CODE}_${IMAGE_CODE}.png
+}
+
+# Game icons
+build_asset_image ${CURRENT_DIR}/button_back.svg ${BASE_DIR}/assets/icons/button_back.png
+build_asset_image ${CURRENT_DIR}/button_start.svg ${BASE_DIR}/assets/icons/button_start.png
+build_asset_image ${CURRENT_DIR}/difficulty_easy.svg ${BASE_DIR}/assets/icons/difficulty_easy.png
+build_asset_image ${CURRENT_DIR}/difficulty_medium.svg ${BASE_DIR}/assets/icons/difficulty_medium.png
+build_asset_image ${CURRENT_DIR}/difficulty_hard.svg ${BASE_DIR}/assets/icons/difficulty_hard.png
+build_asset_image ${CURRENT_DIR}/game_win.svg ${BASE_DIR}/assets/icons/game_win.png
+build_asset_image ${CURRENT_DIR}/empty.svg ${BASE_DIR}/assets/empty.png
+
+# Skins
+build_icons_for_skin "default"
diff --git a/icons/build_repository_icons.sh b/icons/build_repository_icons.sh
new file mode 100755
index 0000000..569a16a
--- /dev/null
+++ b/icons/build_repository_icons.sh
@@ -0,0 +1,48 @@
+#! /bin/bash
+
+# Check dependencies
+command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
+command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
+command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
+
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+BASE_DIR="$(dirname "${CURRENT_DIR}")"
+
+SOURCE="${CURRENT_DIR}/icon.svg"
+OPTIPNG_OPTIONS="-preserve -quiet -o7"
+
+# optimize svg
+cp ${SOURCE} ${SOURCE}.tmp
+scour \
+    --remove-descriptive-elements \
+    --enable-id-stripping \
+    --enable-viewboxing \
+    --enable-comment-stripping \
+    --nindent=4 \
+    -i ${SOURCE}.tmp \
+    -o ${SOURCE}
+rm ${SOURCE}.tmp
+
+# build icons
+function build_icon() {
+  ICON_SIZE="$1"
+  TARGET="$2"
+
+  TARGET_PNG="${TARGET}.png"
+
+  inkscape \
+      --export-width=${ICON_SIZE} \
+      --export-height=${ICON_SIZE} \
+      --export-filename=${TARGET_PNG} \
+      ${SOURCE}
+
+  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
+}
+
+
+build_icon  72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher
+build_icon  48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher
+build_icon  96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher
+build_icon 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher
+build_icon 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher
+build_icon 512 ${BASE_DIR}/fastlane/metadata/android/en-US/images/icon
diff --git a/icons/button_back.svg b/icons/button_back.svg
new file mode 100644
index 0000000..2622a57
--- /dev/null
+++ b/icons/button_back.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#e41578" stroke="#fff" stroke-width=".238"/><path d="m59.387 71.362c1.1248 1.1302 4.0012 1.1302 4.0012 0v-45.921c0-1.1316-2.8832-1.1316-4.0121 0l-37.693 20.918c-1.1289 1.1248-1.1479 2.9551-0.02171 4.084z" fill="#fefeff" stroke="#930e4e" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m57.857 68.048c0.96243 0.96706 3.4236 0.96706 3.4236 0v-39.292c0-0.96825-2.467-0.96825-3.4329 0l-32.252 17.898c-0.96594 0.96243-0.9822 2.5285-0.01858 3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg>
diff --git a/icons/button_start.svg b/icons/button_start.svg
new file mode 100644
index 0000000..e9d49d2
--- /dev/null
+++ b/icons/button_start.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#49a1ee" stroke="#fff" stroke-width=".238"/><path d="m34.852 25.44c-1.1248-1.1302-4.0012-1.1302-4.0012 0v45.921c0 1.1316 2.8832 1.1316 4.0121 0l37.693-20.918c1.1289-1.1248 1.1479-2.9551 0.02171-4.084z" fill="#fefeff" stroke="#105ca1" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m36.382 28.754c-0.96243-0.96706-3.4236-0.96706-3.4236 0v39.292c0 0.96825 2.467 0.96825 3.4329 0l32.252-17.898c0.96594-0.96243 0.9822-2.5285 0.01858-3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg>
diff --git a/icons/difficulty_easy.svg b/icons/difficulty_easy.svg
new file mode 100644
index 0000000..da0e21f
--- /dev/null
+++ b/icons/difficulty_easy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#41ff6a" stroke="#000" stroke-width="2"/><path d="m23.408 53.415 20.8 13.7c0.2 0.1 0.3 0.2 0.5 0.3 1.3 0.5 2.8-0.1 3.3-1.3 0.5-1.3-0.1-2.8-1.3-3.3l-23.2-9.6c-0.2 0-0.3 0.2-0.1 0.2zm23.7 11.6c0.1 0.8-0.5 1.4-1.3 1.5s-1.4-0.5-1.5-1.3 0.5-1.4 1.3-1.5c0.8 0 1.5 0.5 1.5 1.3z"/><path d="m41.708 36.515c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m52.508 37.815c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m81.508 46.115-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.6-1.3-0.2z"/><path d="m32.908 40.015c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m63.408 31.615-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.2-1.1 0.1-1.3 0.7z"/><path d="m67.908 46.815c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.2 0.8 0.2 1.2z"/><path d="m24.408 46.315c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.3 1 0.3 1.4-0.1z"/><path d="m13.808 54.815 6 2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.2-4.3 3.9-6.4 0.4-0.4 0.3-1.1-0.2-1.4l-5.9-4.2c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-3.2 6.1-4.1 9-0.3 0.6 0 1.2 0.5 1.3z"/><path d="m75.808 60.915c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.9 0.7-0.7 1.2z"/><path d="m15.808 67.115c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.4-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/difficulty_hard.svg b/icons/difficulty_hard.svg
new file mode 100644
index 0000000..254346a
--- /dev/null
+++ b/icons/difficulty_hard.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#d31158" stroke="#000" stroke-width="2"/><path d="m69.154 59.254-24.4 5.1c-0.2 0-0.4 0.1-0.5 0.1-1.3 0.6-1.9 2-1.4 3.3 0.6 1.3 2 1.9 3.3 1.4l23-9.7c0.2 0 0.1-0.2 0-0.2zm-25 8.7c-0.6-0.5-0.6-1.4-0.1-2s1.4-0.6 2-0.1 0.6 1.4 0.1 2c-0.5 0.5-1.4 0.6-2 0.1z"/><path d="m41.054 38.354c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m51.854 39.754c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.2 0.5 0.1 0.9 0.6 1z"/><path d="m82.754 46.554-12.2 8.9c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.2 2.6 1.8 4.3 0.2 0.5 0.7 0.8 1.2 0.6l14.4-4.7c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.6-6.4-4.1-8.9-0.3-0.5-1-0.6-1.4-0.2z"/><path d="m32.154 41.854c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.3 0.4 0.8 0.5 1.2 0.3z"/><path d="m62.754 33.454-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m67.154 48.654c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.1 0.9 0.2 1.2z"/><path d="m23.654 48.154c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.7-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.4 0.4 1 0.3 1.3-0.1z"/><path d="m15.954 57.654 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.3-0.4-1-0.2-1.3 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.2 0.5 0.1 1.1 0.6 1.2z"/><path d="m75.054 62.754c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.5 0.2-0.8 0.7-0.7 1.2z"/><path d="m15.054 68.954c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/difficulty_medium.svg b/icons/difficulty_medium.svg
new file mode 100644
index 0000000..a6a8c55
--- /dev/null
+++ b/icons/difficulty_medium.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#eeb517" stroke="#000" stroke-width="2"/><path d="m53.928 43.009-11 21.7c-0.1 0.2-0.1 0.3-0.2 0.5-0.4 1.4 0.4 2.7 1.7 3.2 1.4 0.4 2.7-0.4 3.2-1.7l6.6-23.7c0-0.1-0.2-0.2-0.3 0zm-8.5 24.3c-0.8 0.1-1.5-0.4-1.6-1.1-0.1-0.8 0.4-1.5 1.1-1.6 0.8-0.1 1.5 0.4 1.6 1.1 0.1 0.8-0.4 1.5-1.1 1.6z"/><path d="m41.128 37.409c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m51.928 41.209c2.1 0.5 3.5 1 5.5 2 0.5 0.3 1.2 0 1.4-0.6l4.2-12.8c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.9-1.5-10.1-1.7-0.6 0-1 0.4-1 1v12.4c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m80.928 47.009-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.5-1.3-0.2z"/><path d="m32.328 40.909c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m62.828 32.509-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m67.328 47.709c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.8 8.1c-0.3 0.3-0.3 0.9 0.1 1.2z"/><path d="m23.828 47.209c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.4 1 0.3 1.4-0.1z"/><path d="m16.128 56.709 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.1 0.5 0.2 1.1 0.7 1.2z"/><path d="m75.228 61.809c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.8 0.7-0.7 1.2z"/><path d="m15.228 68.009c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/empty.svg b/icons/empty.svg
new file mode 100644
index 0000000..6b7cca7
--- /dev/null
+++ b/icons/empty.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/></svg>
diff --git a/icons/game_win.svg b/icons/game_win.svg
new file mode 100644
index 0000000..fe20923
--- /dev/null
+++ b/icons/game_win.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.17604 0 0 .17604 7.9341 1.7716)"><path d="m101.92 496.35c-1.8555 0-3.7109-0.69532-5.1484-2.0898-2.9297-2.8438-3-7.5234-0.15234-10.453l9.1875-9.4648c2.8438-2.9297 7.5234-3 10.453-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4648c-1.4492 1.4961-3.375 2.2461-5.3047 2.2461z" fill="#ff4e61"/><path d="m201.65 133.26c-1.8516 0-3.7109-0.69531-5.1445-2.0898-2.9297-2.8438-3-7.5234-0.15625-10.449l9.1914-9.4688c2.8438-2.9297 7.5195-3 10.449-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#ff4e61"/><path d="m413.8 100.39c-1.8555 0-3.7109-0.69141-5.1484-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4688c2.8438-2.9258 7.5234-2.9961 10.453-0.15234 2.9297 2.8398 3 7.5234 0.15625 10.449l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#5c73bc"/><path d="m413.8 463.77c-1.8555 0-3.7109-0.69532-5.1484-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4688c2.8438-2.9258 7.5234-3 10.453-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m63.07 112.91c-1.8516 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4687c2.8438-2.9258 7.5234-2.9961 10.453-0.15234 2.9258 2.8438 2.9961 7.5234 0.15234 10.449l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m12.309 278.82c-1.8516 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1875-9.4688c2.8438-2.9297 7.5234-3 10.453-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4453 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#2dc471"/><path d="m216.29 278.49-23.996 12.996c-6.2226 3.3711-13.496-2.0742-12.309-9.2148l4.582-27.523c0.47266-2.8359-0.4375-5.7266-2.4375-7.7344l-19.414-19.496c-5.0352-5.0547-2.2578-13.863 4.7031-14.906l26.824-4.0156c2.7656-0.41407 5.1524-2.1992 6.3867-4.7812l12-25.043c3.1133-6.4922 12.102-6.4922 15.215 0l11.996 25.043c1.2383 2.582 3.625 4.3672 6.3867 4.7812l26.828 4.0156c6.957 1.043 9.7344 9.8516 4.6992 14.906l-19.41 19.496c-2 2.0078-2.9141 4.8984-2.4414 7.7344l4.582 27.523c1.1914 7.1406-6.082 12.586-12.305 9.2148l-23.996-12.996c-2.4727-1.3398-5.4258-1.3398-7.8945 0z" fill="#ffd02f"/><path d="m220.24 512c-4.082 0-7.3906-3.3086-7.3906-7.3906v-115.59c0-4.082 3.3086-7.3945 7.3906-7.3945s7.3906 3.3125 7.3906 7.3945v115.59c0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#5c73bc"/><path d="m220.3 357.42h-0.11328c-4.082 0-7.3945-3.3125-7.3945-7.3945s3.3086-7.3906 7.3945-7.3906h0.11328c4.082 0 7.3906 3.3086 7.3906 7.3906s-3.3086 7.3945-7.3906 7.3945z" fill="#5c73bc"/><path d="m220.3 332h-0.14838c-4.082-0.0156-7.375-3.3398-7.3594-7.4219 0.0195-4.0742 3.3242-7.3594 7.3906-7.3594h0.14848c4.082 0.0156 7.375 3.3398 7.3594 7.4219-0.0156 4.0703-3.3242 7.3594-7.3906 7.3594z" fill="#fa0"/><path d="m87.234 230.89c-1.9297 0-3.8555-0.75-5.3047-2.2422l-79.34-81.738c-2.8438-2.9297-2.7773-7.6094 0.15234-10.449 2.9297-2.8438 7.6094-2.7734 10.453 0.15235l79.344 81.738c2.8438 2.9258 2.7734 7.6094-0.15625 10.449-1.4375 1.3945-3.293 2.0898-5.1484 2.0898z" fill="#ff4e61"/><path d="m113.95 258.5c-1.8633 0-3.7266-0.69922-5.1641-2.1055-2.9219-2.8516-2.9766-7.5312-0.125-10.453l0.082-0.082c2.8516-2.918 7.5312-2.9766 10.453-0.12109 2.9219 2.8516 2.9766 7.5312 0.12109 10.453l-0.0781 0.082c-1.4492 1.4805-3.3672 2.2266-5.2891 2.2266z" fill="#fa0"/><path d="m131.4 276.48c-1.8555 0-3.7109-0.69531-5.1484-2.0898-2.9258-2.8438-2.9961-7.5234-0.15235-10.449l0.0781-0.0859c2.8476-2.9297 7.5273-2.9961 10.453-0.15235 2.9297 2.8438 3 7.5234 0.15625 10.453l-0.082 0.082c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#5c73bc"/><path d="m353.24 227.99c-1.8555 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l79.34-81.734c2.8438-2.9297 7.5234-3 10.453-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-79.344 81.734c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m326.52 255.6c-1.9141 0-3.8242-0.73828-5.2695-2.2109l-0.082-0.082c-2.8633-2.9141-2.8203-7.5938 0.0899-10.453 2.9141-2.8633 7.5938-2.8203 10.453 0.0898l0.082 0.082c2.8594 2.9141 2.8203 7.5938-0.0937 10.453-1.4375 1.4141-3.3086 2.1211-5.1797 2.1211z" fill="#ff4e61"/><path d="m309.07 273.58c-1.9297 0-3.8555-0.75-5.3047-2.2422l-0.082-0.082c-2.8398-2.9297-2.7734-7.6094 0.15625-10.453s7.6094-2.7734 10.453 0.15234l0.082 0.082c2.8398 2.9297 2.7734 7.6094-0.15625 10.453-1.4375 1.3945-3.293 2.0898-5.1484 2.0898z" fill="#fa0"/><path d="m300.65 116.69c-1.2422 0-2.5-0.3125-3.6523-0.97266-3.5469-2.0234-4.7812-6.5391-2.7578-10.082l56.863-99.652c2.0234-3.543 6.5352-4.7773 10.082-2.7539 3.5469 2.0234 4.7812 6.5391 2.7578 10.082l-56.863 99.652c-1.3633 2.3867-3.8594 3.7266-6.4297 3.7266z" fill="#62d38f"/><path d="m281.52 150.33c-1.293 0-2.5977-0.33593-3.7891-1.0469l-0.0976-0.0586c-3.5-2.0938-4.6445-6.6328-2.5469-10.137 2.0938-3.5078 6.6328-4.6445 10.137-2.5508l0.0977 0.0586c3.5039 2.0938 4.6445 6.6328 2.5508 10.137-1.3867 2.3164-3.8359 3.5976-6.3516 3.5976z" fill="#fa0"/><path d="m269.02 172.25c-1.3008 0-2.6172-0.34375-3.8086-1.0625l-0.0977-0.0586c-3.4961-2.1094-4.6211-6.6523-2.5156-10.148 2.1094-3.4961 6.6523-4.6172 10.148-2.5117l0.0976 0.0586c3.4961 2.1094 4.6211 6.6523 2.5117 10.148-1.3867 2.3008-3.832 3.5742-6.3359 3.5742z" fill="#2dc471"/><path d="m139.96 116.69c-2.5703 0-5.0664-1.3398-6.4297-3.7305l-56.863-99.648c-2.0234-3.5469-0.78906-8.0586 2.7539-10.082 3.5469-2.0234 8.0625-0.79297 10.086 2.7539l56.863 99.648c2.0234 3.5469 0.78906 8.0625-2.7539 10.086-1.1562 0.66016-2.4141 0.97266-3.6562 0.97266z" fill="#5c73bc"/><path d="m159.09 150.33c-2.5078 0-4.957-1.2773-6.3438-3.582-2.1016-3.5-0.96875-8.043 2.5273-10.145l0.10157-0.0586c3.5-2.1016 8.0391-0.97266 10.141 2.5273 2.1055 3.5 0.97266 8.0391-2.5273 10.145l-0.0977 0.0586c-1.1914 0.71484-2.5039 1.0547-3.8008 1.0547z" fill="#ff4e61"/><path d="m171.6 172.25c-2.5 0-4.9375-1.2656-6.3281-3.5625-2.1172-3.4922-1-8.0352 2.4883-10.152l0.0977-0.0586c3.4961-2.1133 8.0391-1 10.156 2.4922 2.1133 3.4922 1 8.0352-2.4922 10.152l-0.0977 0.0586c-1.1992 0.72656-2.5195 1.0703-3.8242 1.0703z" fill="#fa0"/><path d="m402.14 357.28-15.523 11.602c-4.0234 3.0117-9.6523-0.043-9.5234-5.1641l0.5039-19.75c0.0508-2.0352-0.87109-3.9648-2.4688-5.1641l-15.508-11.621c-4.0234-3.0156-2.9453-9.4726 1.8242-10.93l18.391-5.6094c1.8906-0.57812 3.3906-2.082 4-4.0156l5.9375-18.785c1.5391-4.875 7.8359-5.8125 10.652-1.5898l10.863 16.285c1.1211 1.6758 2.9688 2.6797 4.9414 2.6797l19.18 0.0117c4.9766 4e-3 7.7891 5.8828 4.7578 9.9492l-11.676 15.672c-1.2031 1.6172-1.5586 3.7383-0.94922 5.6719l5.918 18.797c1.5312 4.875-3.0273 9.4453-7.7148 7.7344l-18.078-6.5977c-1.8594-0.67969-3.9258-0.37109-5.5273 0.82422z" fill="#ffd02f"/><path d="m261.51 512c-4.082 0-7.3906-3.3086-7.3906-7.3906 0-57.23 22.832-95.922 41.984-118.3 20.828-24.332 41.613-35.023 42.488-35.469 3.6406-1.8477 8.0898-0.39063 9.9336 3.2539 1.8438 3.6367 0.39453 8.0781-3.2422 9.9297-0.3125 0.16016-19.5 10.164-38.367 32.395-25.227 29.719-38.016 66.121-38.016 108.2 0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#ff4e61"/><path d="m102.86 397.35 11.766 15.605c3.0547 4.0469 9.2852 2.7305 10.547-2.2266l4.8633-19.113c0.5-1.9648 1.9102-3.5547 3.7695-4.2461l18.039-6.707c4.6797-1.7383 5.3906-8.25 1.207-11.016l-16.141-10.672c-1.6602-1.1016-2.6914-2.9726-2.7578-5.0039l-0.61719-19.75c-0.15625-5.1211-5.9492-7.832-9.7969-4.5859l-14.84 12.516c-1.5312 1.2891-3.5781 1.7227-5.4726 1.1562l-18.422-5.5c-4.7773-1.4258-9.0703 3.4102-7.2617 8.1836l6.9688 18.41c0.71875 1.8945 0.48438 4.0352-0.625 5.7188l-10.77 16.348c-2.793 4.2422 0.34375 9.9375 5.3125 9.6445l19.145-1.1406c1.9727-0.11719 3.875 0.77343 5.0859 2.3789z" fill="#ffd02f"/><path d="m179.02 512c-4.082 0-7.3906-3.3086-7.3906-7.3906 0-30.059-6.6797-57.559-19.852-81.734-1.9531-3.5859-0.62891-8.0742 2.957-10.027 3.5859-1.9531 8.0742-0.62891 10.027 2.9531 14.363 26.375 21.648 56.254 21.648 88.809 0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#fa0"/><path d="m268.93 55.898c0-11.285-8.8828-20.434-19.836-20.434-10.957 0-19.836 9.1484-19.836 20.434 0 11.285 8.8789 20.438 19.836 20.438 10.953 0 19.836-9.1523 19.836-20.438z" fill="#ffd02f"/><path d="m373.08 446.81c0-11.285-8.8789-20.434-19.832-20.434-10.957 0-19.836 9.1484-19.836 20.434s8.8789 20.434 19.836 20.434c10.953 0 19.832-9.1484 19.832-20.434z" fill="#5c73bc"/><path d="m44.129 450.86c0-9.0508-7.1211-16.387-15.91-16.387-8.7852 0-15.906 7.3359-15.906 16.387 0 9.0547 7.1211 16.391 15.906 16.391 8.7891 0 15.91-7.3359 15.91-16.391z" fill="#62d38f"/><path d="m88.172 288.35c0-9.0508-7.1211-16.387-15.91-16.387-8.7852 0-15.906 7.3359-15.906 16.387s7.1211 16.391 15.906 16.391c8.7891 0 15.91-7.3398 15.91-16.391z" fill="#5c73bc"/><g fill="#ff4e61"><path d="m210.84 16.391c0-9.0547-7.1211-16.391-15.906-16.391-8.7891 0-15.91 7.3359-15.91 16.391 0 9.0508 7.1211 16.387 15.91 16.387 8.7852 0 15.906-7.3359 15.906-16.387z"/><path d="m365.23 152.88c0-9.0508-7.125-16.391-15.91-16.391-8.7852 0-15.91 7.3398-15.91 16.391s7.125 16.387 15.91 16.387c8.7852 0 15.91-7.3359 15.91-16.387z"/><path d="m139.96 32.746c-1.8555 0-3.7109-0.69141-5.1484-2.0898-2.9297-2.8438-3-7.5195-0.15625-10.449l9.1914-9.4688c2.8438-2.9297 7.5234-3 10.449-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-9.1875 9.4688c-1.4492 1.4922-3.3789 2.2422-5.3047 2.2422z"/></g></g></svg>
diff --git a/icons/icon.svg b/icons/icon.svg
new file mode 100644
index 0000000..13f6a12
--- /dev/null
+++ b/icons/icon.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 28.747 28.747" xmlns="http://www.w3.org/2000/svg">
+    <defs>
+        <filter id="filter6206-7" x="-.072" y="-.072" width="1.144" height="1.144" color-interpolation-filters="sRGB">
+            <feGaussianBlur stdDeviation="0.658125"/>
+        </filter>
+    </defs>
+    <g transform="translate(0 -1093.8)">
+        <path transform="matrix(1.0781 0 0 1.0641 -.093733 2.7509)" d="m4.4177 1028.2v1.6051h-1.6052v18.192h1.6052v2.1402h18.192v-2.1402h2.1402v-18.192h-2.1402v-1.6051z" fill="#3e2723" filter="url(#filter6206-7)" opacity=".2"/>
+        <rect x="2.9987" y="1096.8" width="22.749" height="22.749" rx="1.1973" ry="1.1974" fill="#f44336"/>
+        <g transform="translate(-22.32 1056.5)">
+            <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+            <g transform="matrix(.33601 0 0 .33601 1.5296 73.043)">
+                <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+            </g>
+            <g transform="matrix(.37187 0 0 .37187 38.802 63.239)">
+                <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+                <g transform="matrix(2.6891 0 0 2.6891 -82.906 -48.45)">
+                    <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+                </g>
+            </g>
+        </g>
+        <path d="m4.1958 1096.8c-0.66332 0-1.1979 0.5346-1.1979 1.1979v0.3334c0-0.6634 0.53459-1.1979 1.1979-1.1979h20.354c0.66332 0 1.1979 0.5345 1.1979 1.1979v-0.3334c0-0.6633-0.5346-1.1979-1.1979-1.1979z" fill="#fff" opacity=".2"/>
+        <rect x="128" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="128" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="128" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="128" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="128" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="128" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="213.33" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="298.67" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="170.67" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="256" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="341.33" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/>
+        <rect x="160" y="578.52" width="192" height="192" fill="none" stroke-width="1.0667"/>
+        <g transform="matrix(.37344 0 0 .37344 4.7333 1097.4)">
+            <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+        </g>
+        <g transform="matrix(.36471 0 0 .36471 5.1356 1097.4)">
+            <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/>
+        </g>
+        <g transform="matrix(.41585 0 0 .41585 84.325 1055.9)">
+            <g transform="matrix(.062269 0 0 .062269 -28.238 185.29)">
+                <g transform="matrix(38.618 0 0 38.618 14724 -13542)">
+                    <g transform="matrix(.71436 0 0 .71436 -400.52 188.34)">
+                        <path d="m1293.2-120.67c-181.75 0.2763-511.18 0.13525-699.05 0.13998-2.3216 10.413-3.593 21.251-3.593 32.384v114c207.65 0.73695 494.72 0.38136 706.23 0.3733v-114.37c0-11.18-1.2522-22.07-3.593-32.523zm-458.69 295.56c-78.385-4e-3 -158.85 0.17892-243.95 0.55995v138.63c286.34-0.39317 421.73-0.13827 706.23-0.32664v-137.75c-163.2-0.53005-311.22-1.1113-462.28-1.1199z" opacity="0" stroke-width="1.4932"/>
+                    </g>
+                </g>
+            </g>
+        </g>
+        <path d="m24.549 1119.5c0.66325 0 1.1979-0.5346 1.1979-1.1979v-0.3333c0 0.6632-0.53461 1.1978-1.1979 1.1978h-20.354c-0.66325 0-1.1979-0.5346-1.1979-1.1978v0.3333c0 0.6633 0.53461 1.1979 1.1979 1.1979z" fill="#3e2723" opacity=".2"/>
+    </g>
+    <g transform="matrix(1.0743 0 0 1.0743 .49523 .53818)" stroke="#fffdfd" stroke-linecap="round" stroke-linejoin="round">
+        <circle cx="9.4895" cy="9.4497" r="2.694" fill="none"/>
+        <circle cx="16.348" cy="16.307" r="2.694" fill="none"/>
+        <circle cx="16.348" cy="9.4497" r="2.694" fill="#fff"/>
+        <circle cx="9.4895" cy="16.307" r="2.694" fill="#fff"/>
+    </g>
+</svg>
diff --git a/icons/skins/default/tile_black.svg b/icons/skins/default/tile_black.svg
new file mode 100644
index 0000000..76875fd
--- /dev/null
+++ b/icons/skins/default/tile_black.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/><circle cx="50" cy="50" r="42.259" stroke="#919191" stroke-linecap="round" stroke-linejoin="round" stroke-width="6.37"/></svg>
diff --git a/icons/skins/default/tile_white.svg b/icons/skins/default/tile_white.svg
new file mode 100644
index 0000000..a41d136
--- /dev/null
+++ b/icons/skins/default/tile_white.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/><circle cx="50" cy="50" r="42.259" fill="#fff" stroke="#919191" stroke-linecap="round" stroke-linejoin="round" stroke-width="6.37"/></svg>
diff --git a/ios/.gitignore b/ios/.gitignore
new file mode 100644
index 0000000..151026b
--- /dev/null
+++ b/ios/.gitignore
@@ -0,0 +1,33 @@
+*.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/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..9367d48
--- /dev/null
+++ b/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>8.0</string>
+</dict>
+</plist>
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/ios/Flutter/Debug.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/ios/Flutter/Release.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b75d60c
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,472 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+		978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
+		97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
+		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 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>"; };
+		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
+		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
+		7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; 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; };
+		97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		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 */
+		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 */,
+				CF3B75C9A7D2FA2A4C99F110 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		97C146EF1CF9000F007C117D /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				97C146EE1CF9000F007C117D /* Runner.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		97C146F01CF9000F007C117D /* Runner */ = {
+			isa = PBXGroup;
+			children = (
+				7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
+				7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
+				97C146FA1CF9000F007C117D /* Main.storyboard */,
+				97C146FD1CF9000F007C117D /* Assets.xcassets */,
+				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+				97C147021CF9000F007C117D /* Info.plist */,
+				97C146F11CF9000F007C117D /* Supporting Files */,
+				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+			);
+			path = Runner;
+			sourceTree = "<group>";
+		};
+		97C146F11CF9000F007C117D /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				97C146F21CF9000F007C117D /* main.m */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		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 = {
+				LastUpgradeCheck = 1020;
+				ORGANIZATIONNAME = "";
+				TargetAttributes = {
+					97C146ED1CF9000F007C117D = {
+						CreatedOnToolsVersion = 7.3.1;
+					};
+				};
+			};
+			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 */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		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;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			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;
+			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 */
+		97C146EA1CF9000F007C117D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
+				97C146F31CF9000F007C117D /* main.m in Sources */,
+				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase 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;
+				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;
+				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 = 9.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;
+				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 = org.benoitharrault.reversi;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Profile;
+		};
+		97C147031CF9000F007C117D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				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;
+				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 = 9.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;
+				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;
+				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 = 9.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				SUPPORTED_PLATFORMS = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		97C147061CF9000F007C117D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				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 = org.benoitharrault.reversi;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Debug;
+		};
+		97C147071CF9000F007C117D /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				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 = org.benoitharrault.reversi;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		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/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/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/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/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/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/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/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..a28140c
--- /dev/null
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1020"
+   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">
+      <Testables>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+            BuildableName = "Runner.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </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>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </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/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1d526a1
--- /dev/null
+++ b/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/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/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/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/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/ios/Runner/AppDelegate.h b/ios/Runner/AppDelegate.h
new file mode 100644
index 0000000..36e21bb
--- /dev/null
+++ b/ios/Runner/AppDelegate.h
@@ -0,0 +1,6 @@
+#import <Flutter/Flutter.h>
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : FlutterAppDelegate
+
+@end
diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m
new file mode 100644
index 0000000..70e8393
--- /dev/null
+++ b/ios/Runner/AppDelegate.m
@@ -0,0 +1,13 @@
+#import "AppDelegate.h"
+#import "GeneratedPluginRegistrant.h"
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application
+    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+  [GeneratedPluginRegistrant registerWithRegistry:self];
+  // Override point for customization after application launch.
+  return [super application:application didFinishLaunchingWithOptions:launchOptions];
+}
+
+@end
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/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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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f
GIT binary patch
literal 564
zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9
zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr
z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u
z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr
zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg
z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9<WQhydS~rpwVfTyjm}~vs+Nj
zL2;<v%s@b+9jXc@S}#x@@VwF4twVwRxFCih^tWg?H)v?24ZSeYC3aaOsM8yWc7GEz
z7zKYq3)^d7srCATzmw!h1d8POV>Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM
zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV<y2`lV{mrphLz
zZs5NcIN~Wp-YgL)o*yksN!%A$BK4ovtf60)eD^OF((VmRH^fQ+0000<MNUMnLSTXr
Cg!*^@

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b
GIT binary patch
literal 1283
zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U
zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1*
zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a
zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i
z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo
zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S
zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+
z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2
z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw
z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8
zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J
zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv
zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh
zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU
zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ!
z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O
zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||&
ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB
zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM
zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs
z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{
zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p
zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ
zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$
tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c
GIT binary patch
literal 1588
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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cde12118dda48d71e01fcb589a74d069c5d7cb5
GIT binary patch
literal 1025
zcmV+c1pfPpP)<h;3K|Lk000e1NJLTq0012T0012b1^@s6R+DEB000BXNkl<Zc$~GD
zO=w(I6vuz}zV|Yjbed17ZK+8~s#O|MP&clmqDBgWZmLq<SX}r4y4TvKx^iJf5Gq-y
zOGQEjOCyP3MX4X5l~PNgieUPsktUPGBs1^bzl-}OnIxT=SE~o^V(z=|{La^$dmfUE
zBm*GnK}km>U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$<lg6i9
zl}<@|7r;n*02l>gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI
zC*%Wgg22K|8E#!~c<Gji=2TnCP5=vx8A($>TNYR~@Y9Kep<iQi*1HiJn2AMS!E&HK
zVnfa>MPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#%
zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X
zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?(
ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF<H6foEqi-Iie=wvW~+c5O@{fz
z15Zzj&L+qQPza&y;JLn#y}co!t)163;kCwx>4|Rt=<qKwceYzzPl3~A@%(s+$wlbO
zc~D^BY8jsH33#eIY*@)P+hFCz&o3t2+iBU*?19gIU*g-zge@(Wn_CP4Vk(AbwubEK
z374wAp49EV)x|L}FJ3uW;>2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw
zqn8u9a)z>l(1<yk<F_A9G0?W)jg&H7#tqwGWPN2m*&Q-?N5mfsA}|J<Z(-)UuQ+*R
zjGb?c@Yn1jfi)zqX5f~c$$GU_a(w7qiMP%R9Utb>kEaPYZ6hwubN6i<8QHgsu0oE)
ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy
z0um=e3$K3i6K{U_4K!EX<i!R0Z{NtsYrELo(c*J#)_6Q;B#i<)$v7hkaB2AVeLT(w
zU;Ip%kGwHqz-)1z`*v*RqZjUHU2}-Rka8<C(s3i{5#T7-ISo1qYYdC!WW~O<hQAkM
zTAD(la4CD$)8M0iM>?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB#
vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658
GIT binary patch
literal 1716
zcmds$`#;kQ7{|XelZftyR5~xW7?MLxS4^|Hw3&P7^y)@A9Fj{Xm1~_CIV^XZ%SLBn
zA;!r`GqGHg=7>xrB{?psZQs88ZaedDoagm^KF{a*>G|dJWRSe^I$DNW008I^+;Kjt
z>9p3GNR^I;v>5_`+91i(*G;u5|L+Bu6M=(afLjtkya#yZ175|z$pU~>2#^Z_pCZ7o
z1c6UNcv2B3?;<Go5WWQn|6+uH2_m2r5lB}%5TZuPR`V-CQi_n2Vq{<`GLVi8qN@j#
zqI`={L3C8G3I^(@3RHBhE;&c<RtGw!0)4Fxo!p8}d#c|cHc-(hHf$6dbHN{)B&J-6
z8CPP?l~^=?vruV^WG`2|w?$&vBC(2KTgB8_sZ6T`6J3jmsl%uYPl@SJV)#nyIF2<>
zX%qdxCXQp<sXX*V>dKRz=#b*q0P%b&o)5ZrNZt7$fiETSK_VaY=mb4GK`#~0K#~9^
zcY!`#Af+4h?UMR-gMKOmpuYeN5P*RKF!(tb`)oe0j2B<k6JOOEKm0v@7`o2xzafNf
z3ZX<HM12iqsu+Xris0NgGTIwip-5ILf*5aQWp8EWDyC!=Q!?hXjP-1SH7#S$$T+=I
zoW3be|GWDB>H1l?=>y#S5pMqkx6i{*=V9JF%>N8`ewGhRE(|WohnD59R^$_36{4>S
zDFlPC5|k?;SPsDo87!B{6*7eqmMdU|QZ84>6)Kd9wNfh90=y=TFQay-0__>=<4pk&
zYDjgIhL-jQ9o>z32K)BgAH+HxamL{ZL~ozu)Qqe@a`FpH=oQRA8=L-m-1dam(Ix2V
z?du;LdMO+ooBelr^_y4<euq@26~q7NegFU@k$`jdb$`xyeJ4P8+-Tj3Ra{hbRCmT!
zBMV($^{^e=(UH`dj`r@`Y(H|el`alrd8skZwkzYhRr(Gz(QZp(Qd(hE^@5E~qU`i;
z(SkYe?}g2Y&YJj296Moad2)yG0fTMR6U}BWMARc(<#Fztb!h_|mPqTik`s(WVh&f0
z?pxZ)BEP>{|44tmgH^2hSzPFd;U^!1p>6d|o)<M!d`#7E^t}^Xk~3cs-?nsZx|T{j
zmy5ZGo@mfoIbG>(-01z{i&Kj@)z-yfWQ)V#3Uo!_U}q3u`(fOs`_f^ueFii1xBNUB
z6Me<Ad__=MhyIK(Twff~+;!n_S-82~DqfzFOPkl&Gp}(|cUQyE@haMbYi+pu2R#52
zQ(?79{^}u<pnJs07X?Jd1xEs{hF)^P@+6Hdd>cwJN$CqV&vhc+)b(p4NzGGEgwWNs
z@*lUV6LaduZH)4_g!cE<2G6#+hJrWd5(|p1Z;YJ7ifVHv+n49btR}dq?HHDjl{m$T
z!jLZcGkb&XS2OG~u%&R$(X+Z`CWec%QKt>NGYvd5g20)PU(dOn^7%@6kQb}C(%=vr
z{?RP(z~C9DPnL{q^@pVw@|Vx~@3v!9dCaBtbh2EdtoNHm4kGxp>i#ct)7p|$QJs+U
z-a3qtcPvhihub?wnJqEt>zC@)2suY?%-96cYCm$Q8R%-8$PZYsx3~QOLMDf(piXMm
zB=<63yQk1AdOz#-qsEDX>>c)EES%$owHKue;?B3)8aRd}m~_)>SL3h2(9X;|+2#7X
z+#2)NpD%qJvCQ0a-uzZLmz*ms+l*N}w)3LRQ*6>|Ub-fyptY(keUxw+)jfwF5K{L9
z|Cl_w=`!l_o><384d&?)$6Nh(GAm=4p_;{qVn#hI8lqewW7~wUlyBM-4Z|)cZr?Rh
z=xZ&Ol>4(CU85ea(CZ^aO@2N18K>ftl8>2MqetAR53_JA>Fal`^)1Y--Am~UDa4th
zKfCYpcXky$XSFDWBMIl(q=Mxj$iMBX=|<EP6d-<IdS!f=-N7pvgRfUm7gq{u46xo{
z(betbRXvB#X1rgdf*#8+ETp0)ap9@+(t?IGTzEX?@U7?cr16G3E(5=(NmSno5Zt_R
J4_(fr{s-Hn_EP`=

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcdc2306c28505ebc0b6c3a359c4d252bf626b9f
GIT binary patch
literal 1920
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
GLSTY{`iRf~

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b
GIT binary patch
literal 1283
zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U
zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1*
zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a
zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i
z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo
zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S
zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+
z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2
z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw
z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8
zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J
zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv
zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh
zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU
zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ!
z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O
zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||&
ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB
zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM
zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs
z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{
zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p
zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ
zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$
tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2
GIT binary patch
literal 1895
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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22
GIT binary patch
literal 2665
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
XsPq=LnkwKG00000NkvXXu0mjfhAk5^

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22
GIT binary patch
literal 2665
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
XsPq=LnkwKG00000NkvXXu0mjfhAk5^

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680
GIT binary patch
literal 3831
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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d
GIT binary patch
literal 1888
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
aR{jt9+;fr}hV%pg0000<MNUMnLSTYU=Zg*i

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a84f41e14e27f4b11f16f9ee39279ac98f8d5ac
GIT binary patch
literal 3294
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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0e1f58536026aebc4f1f70e481f6993c9ff088d
GIT binary patch
literal 3612
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

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..0bedcf2
--- /dev/null
+++ b/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/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
GIT binary patch
literal 68
zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J
Q1PU{Fy85}Sb4q9e0B4a5jsO4v

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/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!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J
Q1PU{Fy85}Sb4q9e0B4a5jsO4v

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/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!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J
Q1PU{Fy85}Sb4q9e0B4a5jsO4v

literal 0
HcmV?d00001

diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/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/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..f2e259c
--- /dev/null
+++ b/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/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/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/ios/Runner/Info.plist b/ios/Runner/Info.plist
new file mode 100644
index 0000000..1e1e2d4
--- /dev/null
+++ b/ios/Runner/Info.plist
@@ -0,0 +1,45 @@
+<?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>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>reversi</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>UIViewControllerBasedStatusBarAppearance</key>
+	<false/>
+</dict>
+</plist>
diff --git a/ios/Runner/main.m b/ios/Runner/main.m
new file mode 100644
index 0000000..dff6597
--- /dev/null
+++ b/ios/Runner/main.m
@@ -0,0 +1,9 @@
+#import <Flutter/Flutter.h>
+#import <UIKit/UIKit.h>
+#import "AppDelegate.h"
+
+int main(int argc, char* argv[]) {
+  @autoreleasepool {
+    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+  }
+}
diff --git a/lib/main.dart b/lib/main.dart
new file mode 100644
index 0000000..dd1afff
--- /dev/null
+++ b/lib/main.dart
@@ -0,0 +1,34 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:provider/provider.dart';
+
+import 'provider/data.dart';
+import 'screens/home.dart';
+
+void main() {
+  WidgetsFlutterBinding.ensureInitialized();
+  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
+      .then((value) => runApp(MyApp()));
+}
+
+class MyApp extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return ChangeNotifierProvider(
+      create: (BuildContext context) => Data(),
+      child: Consumer<Data>(builder: (context, data, child) {
+        return MaterialApp(
+          debugShowCheckedModeBanner: false,
+          theme: ThemeData(
+            primaryColor: Colors.blue,
+            visualDensity: VisualDensity.adaptivePlatformDensity,
+          ),
+          home: Home(),
+          routes: {
+            Home.id: (context) => Home(),
+          },
+        );
+      }),
+    );
+  }
+}
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
new file mode 100644
index 0000000..ee24df3
--- /dev/null
+++ b/lib/provider/data.dart
@@ -0,0 +1,75 @@
+import 'package:flutter/foundation.dart';
+
+class Data extends ChangeNotifier {
+
+  // Configuration available values
+  List _availableDifficultyLevels = ['easy', 'medium', 'hard'];
+
+  List get availableDifficultyLevels => _availableDifficultyLevels;
+
+  // Application default configuration
+  String _level = 'medium';
+  String _size = '8x8';
+  String _skin = 'default';
+
+  // Game data
+  bool _gameRunning = false;
+  int _sizeVertical = null;
+  int _sizeHorizontal = null;
+  List _cells = [];
+
+  String get level => _level;
+  void updateLevel(String level) {
+    _level = level;
+    notifyListeners();
+  }
+
+  String get size => _size;
+  int get sizeVertical => _sizeVertical;
+  int get sizeHorizontal => _sizeHorizontal;
+  void updateSize(String size) {
+    _size = size;
+    _sizeHorizontal = int.parse(_size.split('x')[0]);
+    _sizeVertical = int.parse(_size.split('x')[1]);
+    notifyListeners();
+  }
+
+  String get skin => _skin;
+  void updateSkin(String skin) {
+    _skin = skin;
+    notifyListeners();
+  }
+
+  getParameterValue(String parameterCode) {
+    switch(parameterCode) {
+      case 'difficulty': { return _level; }
+      break;
+    }
+  }
+
+  List getParameterAvailableValues(String parameterCode) {
+    switch(parameterCode) {
+      case 'difficulty': { return _availableDifficultyLevels; }
+      break;
+    }
+  }
+
+  setParameterValue(String parameterCode, String parameterValue) {
+    switch(parameterCode) {
+      case 'difficulty': { updateLevel(parameterValue); }
+      break;
+    }
+  }
+
+  List get cells => _cells;
+  void updateCells(List cells) {
+    _cells = cells;
+    notifyListeners();
+  }
+
+  bool get gameRunning => _gameRunning;
+  void updateGameRunning(bool gameRunning) {
+    _gameRunning = gameRunning;
+    notifyListeners();
+  }
+}
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
new file mode 100644
index 0000000..ba85d37
--- /dev/null
+++ b/lib/screens/home.dart
@@ -0,0 +1,32 @@
+import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+
+import '../provider/data.dart';
+
+class Home extends StatelessWidget {
+  static const String id = 'home';
+
+  @override
+  Widget build(BuildContext context) {
+    Data myProvider = Provider.of<Data>(context);
+
+    return Scaffold(
+      appBar: AppBar(
+        title: new Text('Reversi'),
+
+        actions: [
+        ],
+        
+        leading: IconButton(
+          icon: Image.asset('assets/icons/application.png'),
+          onPressed: () { },
+        ),
+      ),
+      body: SafeArea(
+        child: Center(
+          child: Text('🎮')
+        ),
+      )
+    );
+  }
+}
diff --git a/pubspec.lock b/pubspec.lock
new file mode 100644
index 0000000..b6eca0d
--- /dev/null
+++ b/pubspec.lock
@@ -0,0 +1,161 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+  async:
+    dependency: transitive
+    description:
+      name: async
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.7.0"
+  boolean_selector:
+    dependency: transitive
+    description:
+      name: boolean_selector
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.0"
+  characters:
+    dependency: transitive
+    description:
+      name: characters
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.1.0"
+  charcode:
+    dependency: transitive
+    description:
+      name: charcode
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.3.1"
+  clock:
+    dependency: transitive
+    description:
+      name: clock
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.1.0"
+  collection:
+    dependency: transitive
+    description:
+      name: collection
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.15.0"
+  fake_async:
+    dependency: transitive
+    description:
+      name: fake_async
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.2.0"
+  flutter:
+    dependency: "direct main"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_test:
+    dependency: "direct dev"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  matcher:
+    dependency: transitive
+    description:
+      name: matcher
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.12.10"
+  meta:
+    dependency: transitive
+    description:
+      name: meta
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.7.0"
+  nested:
+    dependency: transitive
+    description:
+      name: nested
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
+  path:
+    dependency: transitive
+    description:
+      name: path
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.8.0"
+  provider:
+    dependency: "direct main"
+    description:
+      name: provider
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "5.0.0"
+  sky_engine:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.99"
+  source_span:
+    dependency: transitive
+    description:
+      name: source_span
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.8.1"
+  stack_trace:
+    dependency: transitive
+    description:
+      name: stack_trace
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.10.0"
+  stream_channel:
+    dependency: transitive
+    description:
+      name: stream_channel
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.0"
+  string_scanner:
+    dependency: transitive
+    description:
+      name: string_scanner
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.1.0"
+  term_glyph:
+    dependency: transitive
+    description:
+      name: term_glyph
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.2.0"
+  test_api:
+    dependency: transitive
+    description:
+      name: test_api
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.4.1"
+  typed_data:
+    dependency: transitive
+    description:
+      name: typed_data
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.3.0"
+  vector_math:
+    dependency: transitive
+    description:
+      name: vector_math
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.0"
+sdks:
+  dart: ">=2.12.0 <3.0.0"
+  flutter: ">=1.16.0"
diff --git a/pubspec.yaml b/pubspec.yaml
new file mode 100644
index 0000000..1bc5838
--- /dev/null
+++ b/pubspec.yaml
@@ -0,0 +1,22 @@
+name: reversi
+description: A reversi game application.
+publish_to: 'none'
+version: 1.0.0+1
+
+environment:
+  sdk: ">=2.7.0 <3.0.0"
+
+dependencies:
+  flutter:
+    sdk: flutter
+  provider: ^5.0.0
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+
+flutter:
+  uses-material-design: true
+  assets:
+    - assets/icons/
+    - assets/skins/
diff --git a/test/widget_test.dart b/test/widget_test.dart
new file mode 100644
index 0000000..ac6d33b
--- /dev/null
+++ b/test/widget_test.dart
@@ -0,0 +1,14 @@
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility that Flutter provides. 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:reversi/main.dart';
+
+void main() {
+}
-- 
GitLab