From 711599aecc483e6ac9478d05d4e4d3f2ca1e8ebf Mon Sep 17 00:00:00 2001 From: Rex Isaac Raphael Date: Thu, 19 Mar 2020 14:38:15 +0100 Subject: [PATCH] Fixed issue with unity onMessage listener on unity 2019.3.5 --- example/.gitignore | 2 +- example/.metadata | 2 +- example/README.md | 22 - example/android/.gitignore | 7 + example/android/.project | 17 - .../org.eclipse.buildship.core.prefs | 2 - example/android/app/.classpath | 6 - example/android/app/.project | 23 - .../org.eclipse.buildship.core.prefs | 2 - example/android/app/build.gradle | 20 +- .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 25 +- .../MainActivity.java | 13 - .../snowball/flutterappunity/MainActivity.kt | 12 + .../app/src/profile/AndroidManifest.xml | 7 + example/android/build.gradle | 4 +- example/android/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/settings.gradle | 5 +- example/android/unity-classes/build.gradle | 2 - .../android/unity-classes/unity-classes.jar | Bin 93306 -> 0 bytes example/ios/.gitignore | 32 + example/ios/Flutter/AppFrameworkInfo.plist | 2 +- example/ios/Podfile | 87 ++- example/ios/Runner.xcodeproj/project.pbxproj | 204 +++--- .../xcshareddata/xcschemes/Runner.xcscheme | 4 +- .../xcshareddata/WorkspaceSettings.xcsettings | 8 - example/ios/Runner/AppDelegate.swift | 2 +- .../Icon-App-1024x1024@1x.png | Bin 11112 -> 10932 bytes example/ios/Runner/Info.plist | 6 +- example/lib/generated/i18n.dart | 126 ++++ example/lib/main.dart | 102 +-- example/lib/screens/menu_screen.dart | 44 ++ example/lib/screens/with_ark_screen.dart | 91 +++ example/pubspec.yaml | 28 +- example/res/values/strings_en.arb | 1 + example/test/widget_test.dart | 25 +- example/unity/DemoApp/Packages/manifest.json | 17 +- .../ProjectSettings/AudioManager.asset | 36 +- .../ProjectSettings/ClusterInputManager.asset | 12 +- .../ProjectSettings/DynamicsManager.asset | 64 +- .../ProjectSettings/EditorBuildSettings.asset | 6 +- .../ProjectSettings/EditorSettings.asset | 56 +- .../ProjectSettings/GraphicsSettings.asset | 6 +- .../ProjectSettings/InputManager.asset | 590 +++++++++--------- .../ProjectSettings/NavMeshAreas.asset | 182 +++--- .../ProjectSettings/NetworkManager.asset | 8 - .../ProjectSettings/Physics2DSettings.asset | 94 +-- .../ProjectSettings/PresetManager.asset | 34 +- .../ProjectSettings/ProjectSettings.asset | 253 +------- .../ProjectSettings/ProjectVersion.txt | 4 +- .../ProjectSettings/QualitySettings.asset | 422 +++++++------ .../DemoApp/ProjectSettings/TagManager.asset | 86 +-- .../DemoApp/ProjectSettings/TimeManager.asset | 2 +- .../UnityConnectSettings.asset | 4 +- .../DemoApp/ProjectSettings/VFXManager.asset | 1 + 56 files changed, 1433 insertions(+), 1388 deletions(-) delete mode 100644 example/README.md create mode 100644 example/android/.gitignore delete mode 100644 example/android/.project delete mode 100644 example/android/.settings/org.eclipse.buildship.core.prefs delete mode 100644 example/android/app/.classpath delete mode 100644 example/android/app/.project delete mode 100644 example/android/app/.settings/org.eclipse.buildship.core.prefs create mode 100644 example/android/app/src/debug/AndroidManifest.xml delete mode 100644 example/android/app/src/main/java/com/rexraphael/flutterunitywidgetexample/MainActivity.java create mode 100644 example/android/app/src/main/kotlin/com/snowball/flutterappunity/MainActivity.kt create mode 100644 example/android/app/src/profile/AndroidManifest.xml delete mode 100644 example/android/unity-classes/build.gradle delete mode 100644 example/android/unity-classes/unity-classes.jar create mode 100644 example/ios/.gitignore delete mode 100644 example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 example/lib/generated/i18n.dart create mode 100644 example/lib/screens/menu_screen.dart create mode 100644 example/lib/screens/with_ark_screen.dart delete mode 100644 example/unity/DemoApp/ProjectSettings/NetworkManager.asset diff --git a/example/.gitignore b/example/.gitignore index 0109cb7..28d2588 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -84,4 +84,4 @@ coverage/ !**/ios/**/default.mode2v3 !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages \ No newline at end of file diff --git a/example/.metadata b/example/.metadata index 460bc20..01d2dcb 100644 --- a/example/.metadata +++ b/example/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: 5391447fae6209bb21a89e6a5a6583cac1af9b4b + revision: 0b8abb4724aa590dd0f429683339b1e045a1594d channel: stable project_type: app diff --git a/example/README.md b/example/README.md deleted file mode 100644 index 277354d..0000000 --- a/example/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# flutter_unity_widget_example - -Demonstrates how to use the flutter_unity_widget plugin. - -## Run the sample on Android - - 1. Open the `unity` project and build it: Menu -> Flutter -> Export Android - 2. Copy `android/UnityExport/libs/unity-classes.jar` to `android/unity-classes/unity-classes.jar` and overwrite the existing file. You only need to do this each time you use a different Unity version. - 3. `flutter run` - -## Run the sample on iOS - 1. Open the `unity` project and build it: Menu -> Flutter -> Export iOS - - Be sure you use at least Unity version 2019.3 or up. - - 2. open ios/Runner.xcworkspace (workspace!, not the project) in Xcode and add the exported project in the workspace root (with a right click in the Navigator, not on an item -> Add Files to "Runner" -> add the UnityExport/Unity-Iphone.xcodeproj file - - - 3. Select the Unity-iPhone/Data folder and change the Target Membership for Data folder to UnityFramework - - - 4. `flutter run` diff --git a/example/android/.gitignore b/example/android/.gitignore new file mode 100644 index 0000000..bc2100d --- /dev/null +++ b/example/android/.gitignore @@ -0,0 +1,7 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java diff --git a/example/android/.project b/example/android/.project deleted file mode 100644 index 3964dd3..0000000 --- a/example/android/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - android - Project android created by Buildship. - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.buildship.core.gradleprojectnature - - diff --git a/example/android/.settings/org.eclipse.buildship.core.prefs b/example/android/.settings/org.eclipse.buildship.core.prefs deleted file mode 100644 index e889521..0000000 --- a/example/android/.settings/org.eclipse.buildship.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -connection.project.dir= -eclipse.preferences.version=1 diff --git a/example/android/app/.classpath b/example/android/app/.classpath deleted file mode 100644 index eb19361..0000000 --- a/example/android/app/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/android/app/.project b/example/android/app/.project deleted file mode 100644 index ac485d7..0000000 --- a/example/android/app/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - app - Project app created by Buildship. - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - - diff --git a/example/android/app/.settings/org.eclipse.buildship.core.prefs b/example/android/app/.settings/org.eclipse.buildship.core.prefs deleted file mode 100644 index b1886ad..0000000 --- a/example/android/app/.settings/org.eclipse.buildship.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -connection.project.dir=.. -eclipse.preferences.version=1 diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index dfe52bf..96f3095 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -22,23 +22,28 @@ if (flutterVersionName == null) { } apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 28 + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.rexraphael.flutterunitywidgetexample" - minSdkVersion 19 + applicationId "com.snowball.flutterappunity" + minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -55,8 +60,11 @@ flutter { } dependencies { - implementation project(':unity-classes') // the unity classes module you added from step 1 + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation project(':UnityExport') + //Remember to add unity jar from unity export as a module dependency and add the module below + implementation project(':unity-classes') } diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..67d4f70 --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 53f9d2e..df81eb9 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,12 +1,5 @@ - - - - + package="com.snowball.flutterappunity"> - - + + diff --git a/example/android/app/src/main/java/com/rexraphael/flutterunitywidgetexample/MainActivity.java b/example/android/app/src/main/java/com/rexraphael/flutterunitywidgetexample/MainActivity.java deleted file mode 100644 index 505b00a..0000000 --- a/example/android/app/src/main/java/com/rexraphael/flutterunitywidgetexample/MainActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.rexraphael.flutterunitywidgetexample; - -import android.os.Bundle; -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; - -public class MainActivity extends FlutterActivity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); - } -} diff --git a/example/android/app/src/main/kotlin/com/snowball/flutterappunity/MainActivity.kt b/example/android/app/src/main/kotlin/com/snowball/flutterappunity/MainActivity.kt new file mode 100644 index 0000000..259c709 --- /dev/null +++ b/example/android/app/src/main/kotlin/com/snowball/flutterappunity/MainActivity.kt @@ -0,0 +1,12 @@ +package com.snowball.flutterappunity + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..67d4f70 --- /dev/null +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle index bb8a303..3100ad2 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,11 +1,13 @@ buildscript { + ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 7be3d8b..38c8d45 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,2 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 2819f02..296b146 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 1d21a7f..5a2f14f 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,4 @@ -include ':app', ':unity-classes' +include ':app' def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() @@ -13,6 +13,3 @@ plugins.each { name, path -> include ":$name" project(":$name").projectDir = pluginDirectory } - -include ":UnityExport" -project(":UnityExport").projectDir = file("./UnityExport") \ No newline at end of file diff --git a/example/android/unity-classes/build.gradle b/example/android/unity-classes/build.gradle deleted file mode 100644 index d610285..0000000 --- a/example/android/unity-classes/build.gradle +++ /dev/null @@ -1,2 +0,0 @@ -configurations.maybeCreate("default") -artifacts.add("default", file('unity-classes.jar')) \ No newline at end of file diff --git a/example/android/unity-classes/unity-classes.jar b/example/android/unity-classes/unity-classes.jar deleted file mode 100644 index 1c8a53fe938edaf00bc5af01fb5868e2e09051af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93306 zcmbTdWl)^mwl#_bO#{K*-Q6v?yE~1$y9R6A-QC^Y-Ccsadmu=FT;8+yS9O1Ud)K|E ztGes?*=s#xjxpz0V=2l&enA6+g@pxEW|vX``+t21KA-KK%o)vW?M)cPhkzi&b%Y|80$Xhx zY+HkEHf<)vhH>|+skZ5<3JUI&85J`g!XyMe5OWUZcXlyjM+x`xXD;pR7uIw5SpUp) z%}(*MdUE#a|M`#ryHG-F1-$?6B$Rmf7>GUa<0IcAhhvm^RvhqzBb0j99H2yDkbG7h zI6>*562sQUc4OKccHk7@6@eMF19bzQSY4Q1CU5i8fk+~hgMJ_wY*kP&0PbmwYIu;v zgl$}LZlEqYKRRDxMA*h`ZS)pwkQ5L*p&5)NlC>uQf@B%)P6c8PiU82c@N}?RSZvJK z%6Af<9EP~ zp#n3Wxst?w2Y!84jMyyB#SY}?BQNi(ql}-E67;qcLtSW-m@%VQV8vB+@{!Sd z*!jN?7c848i`n&Znf}zk&DMVirbD0HQ|72SSIzEWpNLF*l5xcLkiueekrv9MS)Jl6fjB%9SV)nTE~fdzDz5I1NR+NEtaFC-Y><3 z*h_psD}IL}rjOtTUQh-3`>i}S4P#yPsz%xNE^D?Y3y84tlB zUSkM!C)=eb889)SO8u&dikzOD1FtDl@JeHX0kz32#mggx>+Gz3F}K2l{nOjNMP*9i zZ7VtV*%@Ot8`Cm25NBz?{#Q50u!c~=OIKDds(c^Jsq-{K4fkm7 z0t6Pc?raFgP`QVv1VL5(=~vita-*L$cKzN3QOvtby-$%^@k1>j0b&4(Eyh?3lhRi> ztxk$^McJu22`^;B3KgTiCz9M3!+R4JYIDFkxpCF5?wt>6b3M8DH)i8;?R)<~xhGuj z)>cMq2mN**oyI(qulP@;t>ie?Fcnsd*djT~q}v-rodpFXJLGNg8M_nmqAjM2G8K~X zWIoc~JWzzrHhy_Etxr%OQo<5kNbg*CI=@*_li*M$U6}qle8l zM` z(!<%n(k6hB)6bPe*lJewM`(wvU|6uj2P#G`$>_N$3>d9Nd-p3hTU9?@So=D>jzltM zGY8bO3anrgzC-%l_xBDw`*srdflW_+^f>oS-gIWMQu=>9ZQOu?ZjAx2w)r~K9I$m#)>M0Qefg6zGWL!#eFQ%b9)Q*W>W zNa1S?LBNO6!pwpnj8|w@b6F zSQkMKwdx?%|L5`zd@yv3wrvJ9%k^7ESM?U1*MEA$9=pf*IcE>1i-b7gY*y-Y>_LIf zl2*H=Oe^HF>Lg7a$i<|eFqb%f)e`e+HvesgY1A%*esLz|^~EPo{z|phtH91`;?Rj( z9`^u>o?1%7OeX?+r=cmN0LyGLeCm4PT0`MP|6|D62kD(4M|GutDklVnoN!!rO`bT@ zpe6b;WW4;&xd*s@U^Kim?64NTq<|ljmU5OIKS#J`9&E=e&QqH%1}x&|omN+&%~%!X zIq=Fj>9mBS54fqi;_Zn0hTn*QkrgaS-JH-!w-<%ZzKUKGd<{3vg15oeFgd`~eAyz) z7IN6K!oa{IY;1ZW0OMrwH;3xc^py>+TD#ujB7<^7PU4gx+H&VjbyI$W%-8}I5r5dX z%9pofuI22^+l-kPh-uNHT~00Wk&7Hg20 zxQO;oWU>7ALo7!hWzGdLm$KcJ?<=K3A2sHwVf~GR+RTy)I;>RSzyt$UulB^ZK&XW6 z+V8LI?I>ePe(exaHyGp4ew7fO{A--^?ojq97ZBC*3%q#bp0awQBIn<+ZLJirrJ7r# z+?wm75SvR|9U((G@>1g4AV0{<63(=JV5GuLWZ%)l;i3J?J-O1#Jpm|!-VgB-C;Vep zP_gCnEQn?9`BN(E2c|9!)qx*!eys%jqOQ&^JWTh51B6+x$Cgjmj(CGIDlo0*jOZuP=VH{)%H=6hpF` z9{Pi*y+}+Au{2as+8%~7xG{-xf1z{!Vmv#5jMROeCD%rCbg+30{xv}vDpu9O22$e0 zPI{S$-dXi(uC(*aZF!d*b!9P3Q51$< zNCts~x#&#YE=FVUL>7V3geW`$hk80=^xO%LFiUI$Losmz6_%BHssrX@Q=jmpsM@%s zJNE0zXXqyrs%KI0kVt!G(!qf&0B$1--X{8PcvLaegXlTu2(&`7e4lr&Q`wEgQU9j!=J==x{P~tA<8Ktl^&NH|4(np zwf+c?M0S`>mgjSr#R!|tXaxp-;?AMPp>5+?))HVkoumg_#T4SO3CJ{g1Z)8#Cfx;^ zQNQ;sEU|oLon)yt;S%8jM!$~GP>W%xYe|)#%X^GY_aV|^e9Z)XklAR^qAxn7;k2*^ z;gupRv#_&w*)S)5B z=*`1Erx|u=&*M%KH=3M-w~GirFo6PO+2QSd7lTkvpTWC-RJ8o!lFTMD-%Myx*gKV_ zrM^^-Wu>B+v|S&-GddkxA@3boQjyGNHs2t^3fr-b`M|JBxWZ=cyiTLxp0*dKppdx_ z*LEv@7FKg4hw1Q`+fBasm}y$<*=SYf{7EOemTqHek(rOjHkzUG^?n8>=n|~dza#Cp zSHi0|Q8$2Sm%HgVec?#PTssJTCO%{Zs}Z&RCK0pX6{}RSzwxSGw}4B_qH>Otq4cf(&%@55AO$#UX}&5{-ET- zh%p%_Ddk~#T>i(u3#%5ML- z>$|^iXnMk9-p^6BTnauugsIQs3!`ubq_+_7LiwOc;vH~q-J9S0qouH-#&>tAu#O5W zCQ_q_VfloESYnv(PfFZE7q~S9#R*RD*y!%f$Q#fUxb@SEMJL1E$0I5Hh}Eoa&sl;u z2l!svQTQWBV+x|*f)2NWz%`IaF0EqHc}EU4rkK5BnciJAMyc?FQSx#Dc?xsOdCu4g zLJd$3IV1?|86vN^|8UorSOX55Pwu+@uiQoSU%BhwJ(sea!p8S+zNkcqBXO}5N4)e& z7?i^IAu`DoFm1bG5GcyU5sN(f%B3sX4H`{vv~6GzaE|Bsf)(d$6T}gT+Ux0enVj}! z5`Ru^4p@KqHX*PfbTQv<_rXARQow7urP;8TUB7J+|sbSe$BLOip~ge z*Q}o#U;!@M;Uf(tI|%2$&H$+r4!KZzqIiR`J0Fvotld@I?c7Jhvyq8XQu8k@Pa>Cg zNPC@`6L=n>v(B3CzX4aT^$$%bS@^vtvR+={jN8v?&f)My&n2k@4;#Ye1lIrNdUxRE zGnc1eYP_M9efK{WBM|Q))2vZunW0FA3-|(@{@RpM&#D-J3FBwLvxWLZ6bXyFn8>TE z^I%HF{tL%14wf;g#^`tP>3Ad8tE-&mxeR{;qi}Y>CX^!lD*t9&(RHfC%rV@((}LhkL?%vlIw!Rk9P`YzQb|o zBb~{iz05;4<80+OJp~W69`i>aX||0I$!uDcav2_#XkQug@fI1qTCjfc$R)hW7~qV|!ahS364=PgWB~2OFU0r(#xnQevyCanO2{bU>H4#~>L~uTkkt=N zFzFzNO{@v(EOFe#+3cw`bBmvsQqa%u9nlaxlcuIJO{K1ksM=7fzadZpo`6Bu^qqUh}Bt8lmb@3@a)Yli9{kGKC zlE8D#K?Hp4&87HZte}jCFHd@u<8yYhCfKi0;hO~hqjH(NV!y=v6wm@6cFwQ*Xt{@7 zPJbl;m&Q1>S82#MPzZz|#arezUZ-)nuQhXY8m9EFwQkxeryzDP336Fk_jm^lw`K-J9AvtxVFjN#+xlfVx(6}@KSJ5uHh*l4HW}0hF(m^@ zH5{I%BUIoKkLeq2enIY~zszxXMpQd;kn!8H&F3;B``+v)IVdTX`Xmq2Fc^*@jK z9?A95`qe$!6m7I`9F!4r8pZ)|tL3R@*QvJ1u+qhUG~1D{NeAcZ&2%WP(T1$HAB8=N z`dvs8aN3%Yj6gAKSlPo>r4l)DP3L*$7%F*jXBBB3R z5NG)p#Ix0HKj%s`KZY+HL$34_4ORVKqva{{>j6cO#Q@BuVuc)g$B_`S&wtgUy!yaXQvKf*U&$&qQftz5obGW zqZqERd${`}H&RZ?#JX|p7E?l3#%kUr+ukA0dx6RyoY+Yz^n)*l_sRmDS=408AwDF$ zxf7Vj*N5;whZcMy_KXsv*BNoAPM#TRgrp>&r1#>+<{r*7gP|RvK&;8-i*SJEDhmC|f2N zc@eD~RG>!u6_mj|V@jQDx?>zU+3F4n34ia(2KTp|MVDdr*W0K0_yDM&dq`Pj#;vbu zkc0RM;`1VcMBl%74^%&6?&w>f!2gZNc;Jd|A-_WPnMZ^8C*nst4 zY*3tNt$-?o2HFW&pud19-V~+9pz5$q7K`BgE(%YWvGg1udN2xfr>dNkXWcS-)}nwH zMfLw7IN@PN{iP_4V#;hr)-2a~#{2mG&upv#Sc;-lewy(3_n&-Rh9PV;hSe)?#X&i~`o2>J(RUr^g>uVSoOvXTDq$Wo?zTu`2a}Nt3 z_7i>A{3dh>miU$M6{_H_eBWS4BR;iYRV~w07JVy;po1=U2Ys<97WalxF6ZwelrN9# zAx{9UPA~Q$@ku1Ud{~^;N)1$t-U7XY{L-QuZf{*rgEo|y$)}M0NO^Js&f$QY2rLHI zuNv(9maDq$H%-EVJapdjq`RTQ+`NuOTh<@0v?Vezz;{r%}&sS(hiM-PuZpy4;({CSJLa>8 z;!ou#U!2TyDhxXTsH?ixpz^}X@3$px z(TA2CUPDq|f5Bu*A6ZMZ2p=Ji`)rtm?DdBOkx}_XkBnec+56rTc(R5cMMbH z4Sl)#cagpG&{=#%__hDHyi3+{~JSMn3DzWAv`E#9UbD zWyL;jC2JE(mkjDRVYoqiY_Rq6E(G=1-tq69Uz}N~A*eMYDd8T@sZR%RB~?m%5Gj zev7wdXb*8JI1gF2swt3x6v6qZg!U&3SgDs%0M+k)5XW7!f&~-H?g#dt@DzxFSag~y+a!0 zKl+Pon2(i$GctXw9z$-aAba)J?rwt5_z!gkK(f^wA?_tOnC0xc6qpkxmW!Au3mX5y zy7>!H9eAv2atIc#x-_aySbSVn3s<+t%Y)_ z2w?4y$|Rji%Oq8q?WFpR583EO>_F8WjkW%n@Sp0j9ow~e_^h78|6TR4|EqdJlsDuD zzJKHYDp{=B4jbmt{}o9W#kzok0t;1yjk$bJ=-|&njiR#l0tQL0X~Et7F3hviNcp{} z^qL7pr}^wu`p=&?xwDL5lw5Ij)IgbmmSB81Q#fz9p*j-M2sLa+vP8|m0;15QK$H~- z4b{3xfJl?Jw_%woyB%(gF^<*h(O^!w_xaYC?_oz9rozV<`t%Ps&1Dz!ycnCsTs++K zxqZ~Vifl7_07nJ@_ZI|}R!_y_OIjsHYo}G`B4)?m(9v1B0t2QY?HFP#WsMd)?i@>Z z`;Z-H0QAvFOUOn;+X-B3{yVt1G0i@HHzg@7VVCACYwTY&1;oytB8LoVH|8v+AO;Md< z`8k6oe!jN<1>ybMKDCXRmL6367BWl5DTQlXZCll14W*|imZ}UtET-`ju78;wPFc#n zxL%lW(nMnj<~Dx_`>X--gm;QCD|hFL^9L^gGV2T07cT2TA(=Uh;J_eQemt?$uSWgU zF>u#M%cS|PxyjDF{)DJYF6o$GGLQ?>n}@BmGb(6k0)Gv$vQ(L?i-$EH3D>^ZI%i(A zF4#mQA1@p3JnMcq37;(cVCmufDImP`3b2kjcJgA!mKONY-TO{$1`OviA&vVs^@S-9 zlsYcM!j%r!Shu_qEnGd!K%*www1SeV3Yj296R56jQQhLUL*-WATwSKu6xrN-()DD< z62SR$>S@~ly8C3)dA9rM^Cx>;=CAi}HZVGjR5zqX{2IzNxNIt#~5k@?dBKyXZ?WcQY7<|IgmkWaM2;bucFtWb=*joko z8+kxM^16r{;JJ!RP^nSPfWa+QfuC!?)nzf#@|qp5VS!*L~};EEao%8f3(tVSS6(gBT>l+BWn^ z+_MMVAm{ZNnn@bRRn@`HXaSiAQ9!~VTI`g8*y=if7<4JRdY?VEpTrMi>=9-Y&3vpL zyO3nQ*yLLt@R^o@d)+BB2I0KVo>T|$0Re$*Zg$O|M6vIT&{x$h&xx$mWt zZ3f|^_yGu0ZYka(f(gx^zYI=qx^WVu+(zp13^@QM$uEzU(K^X4_mmk2sjH0F`gV-K$I57QI`x% zuK1#gAMzv_D2j?E?raI@AOq5g@HmeG!^un>Ecsewgee4Q;W&JhQ7CqmrP9J;r3T2< zlS3rPfh=}O!8W?&aNKSBC?&hi2~5c)jIxEx=$CYy*+6Ik8aUQ^MHDB;X0oY)P%IVLTV9oUuB7E2*4Je2!>9}=D@}`?x z8s1-9@rI3;N-irLo}pPciSP6;fr(ge>_aX~&-&#pARm8ZG1WO(sr>6{<@nlIsO2OC;$I z?cGyM+$&7!XPU-c5U$%Cra?Qn`ZK@A9fu?+;+cNQq+OG6Xlb#4dFRoaYt#QRwN=6Z zL?v$yihBwnJtmp6JEJF1nXb(%JPYu3O;u zD2;uX%X}6pz7Kn{@6t$S0&khTnoYBD-7tN=+fP*WKsFNUalOh*{hZTy_UMhK#&(Og z3RTF7(4EP(t?VEg8Z|c${`Dpe1gb17@ue4i0X=o6UvbHFgf1}|Z8~rvUEuyT`t zJ>ox|3-2frovU5R1g8&KtZYviSo@V+J)2BMq$QFm=TZps3%k6PRQx&>wyVGV!i5n` zdyODfjS&^;wbewwdu_sE_gB<|v(A4xnmam(ci7JBRz0aC&sA*dV-0&I$CSHAgr1hm z@TWX8biim#fLpY?mK?y%iAC&rNgX3)i*?vtYsYVB)q6*VDG*y{g+K>=@Sq?Wu&?cg zBj!w9{Ys!_jxrrVTr9f3#~-1NccgtvyJ5mQYPe{%AK)PMTu?b@lH>z<8xT!#s2V%i z*oX(3j3Pi^i8z<&x@#gLp^RDnppX!T9uDwo;~bd-jXT*e!y8zYB>Gb;bZf}SBvKwU z;^`#VIq!&4CF}0pd5+iD2uteaW6p`?swFv`%YSc1Suab-aCL2FS3{_2fL;~XFio~r zQ_~X3u52l&s>%21?#y3lt|^#`X5wJb+*Z_6(FVoE&nfGuD`_>(Z1vXHv@{eHRHf9k zYZ^CStfx`I5y>v9w-~1D(YEmsXm2&>5ft;wTH8oa#mG1i5CFv22c;8z%_~<+*9QBy z4l#Z^^j&}TuxqmJG_^EIUqL%(6`5JUcjN%6U&mCFzgM zZuuFY#SJ~P)s|*ZO zbTri0>(yy>Rut7*>Z>ALG+wE#>F>t#QSN9eZ9B7AUE(MM_Nystw8tj|tZQrd26Z~I?mY1Hmb5h3=w(+x09^!2i~9x) zny@K&VGj^`;e^wh#-h>GT@Cg%NjXvEW$&R7qYbg#EINXQ5P}QhLF8WCh)yF6QaYz= z0NNhKl>2xRoPqn;xDG^tZW$w7a`HhWP*Nu%b&*mITVR}&=jGf0QOF80G+PHb2%F&y zoGZ#u>W-_NP4IGE_+=TMF~2v2KMOG?7NgXmPQaxNt-YFz`LR4@ckrD7h|xGEc@bjH}Mw5mOHv>zLOUy*gwFW<{E#N-=AXF&X-h{vF1 zA9|w5rtKVOUEh>exv>stS{;^1~y zBHPsxe&`Amb;3S@CM=X908B+_moUBDwM=Yf*lRx-o46} zqQsFfgWwhdZkZ2xYG((qkTo{+EFi}C{BPUsK<)f=y3h#GJlyEsx--*CIx{hRJSNc- zc3X;ehs(>?HuY2kx#PyS{R2gR#A9CXy-B6#LsrEd@ZZg6<&;2EUvX(9zKf`VaVoym zucONH{c1y$FAV4D@MlZ}PLd)x?Lx&h>_J>r?8y(lM=qs2G`}ic{Mvggp!f(TO)y1) zH;!fD1J#Uu4ODnHvMe5@6`WrwE{t;F3Ud6+YOa3R7f=^__I?c})j!qYR-fokn)+Ci1q0TT?dc1!tTOBRS4kgi7b?&tQ>0+# zt}!?C38%;f92HsMRl7%*;626nmLOLbH^xcO4lS;C%3l7Uo}`1bPBN8R>!Q2ks*1j8 zdI4gYj$>6id%UM;%?N9!gt(1nEu2j?$o{lvy}AjJ=-7k4)-HF;*6fXGap>s@Ias>> zWqYjuyr9-Z_426VwTJ!j(C51~=Y-c{B0TO0E3p?M!k1IzmX}?%P|fy~=^$?V@QDsveiVOcb7&b|ZV zyh$3<2X|WB?2oP=%1Hz>ofh3_$bGyEC^-k^O0@RuDQ(&2IvkS|l-tEgb^3g{-uvxp z<*m-irf4jJ=61DsI^+AHOtY2Ox|!Fqlset@1Ut3Aws9CWKKy$0nkn(;<`TLX(yT6c zzf0BlnnR9c#XWWAG-Ufh)_~JyIVe2Ew!U|)=wjyzii7$V(_jCoEP zvq)N%ZoXCAI6JB^56xevYQ^iqp8ZM7M<^T5yYPcdy*8W^ENc z0Dg6T9x!SI^BDB}4dx-Jqq`SZiypi18Q|7;nD#gAHCLX48ou@MCdF*L4u!SA;Q^aJ$u}m(X6f;D@ zk$w;(gg0$6nd*{qe+6-2I&-YzJUEe!(N1kU-S~Xu$TUh2UgZ^`U+0f#lz)`G1cquK z4i7%|94rCi;#}1N>?U+8YB&Dxa#fk&2epyUW)gjKBF9xQWEpji>wFiIDf#O{H&S3U zJb_(&8&UiL<1$67K3m$R7Fxp8UD{$%b;9+X-0=#907~>mTSM*L4EifGQNcHR!OpOg z?_V#Je|ulka3}#URxSk)bTVb-T+F=k%|k{e&lcxKX;-ScM_l0X9;qqe8r1w^A^yyFS;${uqZ_g#hBh2wPfWGCV{=-vhi>X=nQ@`!9D{JmV zs?CB}EBPj%Z-HPmVLHMgskIvJh!Ql)F9_Zjq@O>!MypROTp!a)L%SZ*O-9ULigFYM zahn1JFnQ-}pG2_rSQB5aZ7%}0*2kZoG*CkLy$-~y|BRMR3SaNv1i)|`mHo;sgsBZ( z&NK7TUMdsG?bAxL5)hMCZriWnv{X7`aA(Xq{~@aqg>KCY7s);RUQu%9CLPhD;>Oo! zwe{s@!28vz8+(UYOYmd(9kGbD#nFV%68}LqF@m|s3&&S9f>kUFOu2}9!T4(U*}?YJ zA^9Cdy9DZ_KI6jqi@M(V-5cfscO5!$DPJZpDJfO?foi#Mka{x@sav?${qlTnnXzKx z_|8|E{YG~CSCeLIc|f8_N!j*{kF!aI>ZGVhN69x+apSO-BD4$@coo)sqw+N6G&7ll z;JN`znFE`;xe9awDm?a4vn|5Y5DUhvG;3URTCW-%8ab33UVt&Bl#Ezr^PCN?T3QEZ z^uow?Vw_rTf)VQmmDa{QIww&Xu0xXgyzoPuqHIttF{_Ok!Nx&Ty5-oP=Bhj9_GhBoXmEQ z+Vo4FtZItZjsXc`{`&QD^@sXpbJ>m%8@p&h=P&GRMLfT}cK3`OKg@z;yqr^K1Y#S& zH&)SauI7IpSXyg!o=$DZZmd(z*-+KdQ#gR*0-#}s*6jB&AlS9ZblUuZMVFVQU!MY z1Kzbmv^3JSL$b6Hh;dzF1Ei7dpUqq_q?qcfMb3ute3rGsF&Q-BlXu}+yYoxP6uFlz zjprMG{~ym?aW}AD6b%e)ne~6+MVkD}i{yQ@Ulo9chDL=(bc5z_gLV^#Rzk?F8fp-I z&l>7-@%>v=wRDJLJmNhdG^{*E|%_jwvqvi z0z`#J0Z7JQ+Fy%3zl)7fzd~_`Czp%8mPY{~U=co~w93cHZN47?WC28dLjz-d6Ma*C zU?p1Lh5u(ERO?f$0iTN~`QI$W{9jvds~{&c_!-|zj5Whm$z0KH=2Q?DRiDe;A6CiV z6>8eGl@ne=L4_+{$X&?v&-X$``T+A!;?hA!;$h;o-|k93>h|yI0p}V>`93N#JJ=B# zO<@B|h>>x82U(Smn-{D8L#_$dt;t*LRAO*mbc;5)e73Uz}xqsUO z92KHc^F{y4fqid%)}eRg`O80Wkh7CR{P^5K?f;FLZt<^Oj8^@r{22-0x22F}Y55LO zhKvr$5by;WN+}FC(uj=+KG4xV!4YqqE*X&0^@95f*>h`@j80d5uT=3yHOUKy#T>+i z^yHSy?b|A_{F#A!fi}dNB$f?!ApJs2N_vnIwZYQBVrDWmk(TJFF~W}>Ysv>FGV%ig z&NoNOi{dEV4@xNOVagIp?(}Yo8j3jUPF7e5%W?L>OI)pva0|XI)Db{qA)aN7g2`3l z7=A#(;I!HQZIo}uiEbBu)VGKm!!g%!R$%G+2Koi+zy@pZ0?_YP{a)ct3 z-6S{KV!=);8_iYf!xd9L6aEH&RAFvIxlMbgT_y%RJMYqAq2t%1_lPIX9D7blwBx%M zbR9+El{^UU<=AX?xe);!GW_*nQ3580^FznoUHS1^jd%f7_|0(&mn4!L*&8Q*Rq$$> zuba9WEz_ViTM_$)|HX$oy0|4(c~BzsNrlEMwKxpnob^INFn>44z{AJx;hLCp8LtC8 z!3VKfVzPlaa#yglkDC%KlO~hKaV^pV;1WWp&?H&?IEUw6kZcp5pXOjhp0-nk)^}8v z0P!FYmUb%pR-N0S_3TDThjgPRE=`%dQk5mS+OJT9*Fk8xM8ib~>a(wdG&WD{^({m$ zI0ZHB{#G%>=fu2>@j}E711*smc@^50jUtoHA_%{tzCF7iOuJUOHB{FGU)bMgs91M3 z$82l)6(5zq#+A1lNw>L-0?n7J$3X$9<(mmT=cW{JLzVBV8H8yD%vl|h6DlC8b)K08 z?{&a=c#d;8Uw4s7sRbtS>=?`+4u^fxE`_`8wdx(m%gPUdxhFXK`R`EK7cv2lG-wq2 z0an45QFimC$a&9wiVcAlb|4$;FZQ%te3=EVIl&^;hHv%f57u_FyEu|wFVp*FK7f?I+Af>L|x0MIj~U- z2co+m_wuJA43X^<>K1I}7i(8OL;X{D%Prbd%%5qTga4Y%`wypBmj5n1l`Hvw3Qt6) zm9B8E*#|>N%&}8UW0=u~T?oZE(F%YCx3?-unaRHOv!m1YvhsP(*`I@%sch#P?x*YQ8^K-z@V3}e>N*9%1}bb#c8AG6TgaLKUg&FV4;zvYZdA*| zX6iJo;iPatNwXFc&~RH6gLQq%$~nC-%rvI6ZK56|CXXhAhvX1_KwRU%Hy{_|TIG=B z7*q(6NogGfA65pkaIT{yxZ_wpk}3e)awol#*|F%LXq}hAsM>o4r`59 ztk09pCs|suFJp4cZB^|ip5zC=!8*P?*S`v~_}WUGbYe#tU)y!BueMXYA+nhIH`H~V zK)52YW-Z8NSO{}4ieFSyL8D}!R?u@KZX0ls0Njs`f)I=ee`$s_nTjJ^Srm9Gw*w6r ztjqr0BOGQqgr+e~^I_yScn6=n2@TjFIm&MC*suwUiPFujAa>tPjB-?1x2|7nB_uDOgN+m8O zhhsJcJzG-CH>!Ltw?3jaqHib>T%yw4=y7ef`)UmpKcj6_mK63_X~2c>p1}m*nQ_~d zz9i$+zPTMfnenlD_5OW(gW9Dg;A*?byV}hOf`oahEX&&~2zG_cgs#D9Gc%kF2|>U# zUE;sYKLZkWLfd)YI&O);Y!EPSjz3rAe3POhbxxiY&1qCpARm{{?3IYM z=kZaLNX@fm5n!G?;a+o?&y1WzTZ()o4>X+-!_;O+&f7Gl;!fKieVw7APFK zxnR{Ev>jYopXa)+jo>1FpP_D#E~wB)dT$o4JBfpEz#T#Ja1De3a8g^LSbK27_Vy#1 zIm{U5ARJ5zH)>g25@qd8a4V$HKZhPVL|(rWUCt<8Y47a$3ei8qcfLV3KbcchOcj!( z%IY6pE1HTw@w|IYpH`XbwVeW6PxI}(9R4DwI7HUT!dRdqX#5B?ZVNg$_y;m5C|9bh zpZeeZUm-*H{~0p>BBx|ky?=s&{EM}=t5EBK5P^pE`)-jn=tHp(R_8K_6-aWD54Iin z86l<{Hm%Dalm@c8vTV!(e+r}AS1@Qs6f>sUyPaqGz0Eny{Xbq`@%u1xB&febBz}|H z4-ZTTgn{Qkx1shZ+I57drjyi6a?l${2sVY|R2_1Z6N8|oL93E(D;FN_g2uN-v9oTA zEdYh0w2<>9D~|9Z@U~R~G2PiNiEH<;?*U5PiU^LmK&@KG*0biT63b>igSH;6_`4v3 zl%wj#2HJrHTDqOCPo!>Dun~pe}Jn$P4Uei{Dnf$39nR1N>w*j|P z$j-84Cib#ZH52`-kL$!Y&Wn3?lU09mu39ES>Z>`UMXab;$=qxbHjTs7*5&${#I*Ht zJ3j>6y^>f_7AweZ)bO^iA{a!@7Di3S^p-@j(w%J|9A=m}tq!weUX0d;nEvK+4%B(| zCt^*>%qRr0S!lUbCw4tgj8A=|PYz7uY{4UN+>+6^yLA66LS=cm2zvs^a7_NE% z3}dkrC6Ss1GyufJneBW=9waQSq+K_0QYuAb6*t*?h>S%cb(xL8*+>ZtrArn^ILqwI zJ=njmQ<)i4j(z+R-www_gn=veBFclE?ipG9+xb?U~?g|V&eh-ojGM2 z%6!o_I5d2&bbppn$^a3yeCHozjlQgw) zFm?JrOqTr5Z9{Rik6;9dd@yKXVePPtI1<2+lq6%nr8a!gZib985tJ9|!a8j5O0o&8 zWoFaadpF}a;VJDI+WwjBdXH;~V8vo%g9s5906VsKi~q^__hrq;`%SDMxbDbo^K%nM zNt7CPOcXnI&1di06L(h}Rco>t|Jl5*vh>6|DvY$chV3W(n1s;ByaoN>yiknvgF?>2 zjQi#w)b~SpGZNlvuJpUOGI6^S6ucLdu99M`5EP9*>TOIQbQis$s1PaW3xL*QKn>g; zuC2rfoEjZ^friefge3Ioi!5v!8WZU*D*9w#OH>s+E;c%C;0V-Vzp4*Il}DP|-hl`@ z_=qZ+gWfRDh?>nVC_-+k@>#y`DNX$j(yrne*_p;~;13Fk*R03?L)upbRkm!)Htz23 z?(XjHPSdzMjk_(}-5YlrcVD=>L*wqyIP_!hbMAXT_v|yYhd}}4M&vN;IP*!NpwzCNsAd5+ z;UBse^L%62A3Y85^XSEBl%Z1-u|XO%(Fv0_t0r6CkNoKWy|Fpo_~G-1NjJA>W!KRi z@*c=_6j5k&`4Xtb4919CswZSU#Gz%kj98PzS>!A4%SkK`(s_ed2b!jps&lBTbwW zOdTu~MdBe(WW@pj>JV#*#Ss{+)VTNCQppgow+R7A^)s2}m#Jo6^MHKeHk)0l^XkHF zY~5(5a>+LDMs2!lE^2m09%1nl7CAdn6%7mg3sb@s#d?!DHUDU`%%Hvb)YHeZnX@*vrm3UoEbei<$51wh9N`DsEy;{oH;D0X>puTR*M~ zSfag8$@l%;-c5@9I~u#hFlRD)?;I?Bn}s`ZeT8YxJweqIb(v%C`}A`cwUgBRM4}Vi zwWG5Bgha<%PYXTKu5r#GnS~#SrR0_z47$H*PSU4?Najtu9hf41WWn06N>WbCuRB`8 zEg_WlmejWjI~0Mo=bUI!5Yl>OR}Sc5#NO+JC@Aczz)5+{g&QdRf$$O5jbi5$Q?g4Q zYJNJg8`yncw~Q6)Kk-1JYM#AChGv*u*G}z`df{MifB*A?^A>x|^cUiNpQVe~ZtC^-Y(za7{c(Hbh1w%fJ{vQK{XtyX6# za7-pL>kZIJbmIRZsFui1ZXV%dj^bIE#RgVydT>iHv9iiEh6a5c2&&hsNQ}*CcG}}r z-;8j^qH#$E4!uTM5=GCQKKWXTA4fUC(K*?)Sh8APPc|c^3>IqybCK){KF)Fa=dW^@Afxo7`Lh%z{iB2bzb%LVb`Qp= ziYVcVpnsU_Xm8YnLNqlk1ZmKoTQ(Jz&` z0Rj}X@fn&Z9;^xQi&S~+8@`L>mGOw7QYxjE&{gd11drL@nZ9vss{QIv&wn*ipSgrw z9~08Z7rqg)uXbLhgwRncYjByS0*PO};jQ4}KM{Io$ zR>lb;O~bUv6rpwk($qA_P3M7<%>OVzZ{V2d1e%|MJ%S?=bmH&hQt|{^fA|x~UH_w< z^uJvn#{X_ImG}^YK7oH>FRk$|!Gd@t!#yOYwTZEj5m&D@@tG(l`HeLuVXqht7K1H= zIjd)$r|0zYJBVRKzVJ6SdbhLGptc zp>u772}ODxn85ABEOkVg!ngj~AN-x&?xmk#VE^;^&v1d}zk>_^di!c^Zy&Ya7(znM zNm(2EmYIpE!g{Jjc9}&C=rqLvim;2xg7LS^3wB$SEq2UZEr%crcI{B!?QN4WcHb4T z*Q?giJuSmYQv^cFxgQ;`PQD{OxMg|s9GM<%Y=kto8E;zn@4xc(-0>Yf@*TZ>4jgRp zKa2&VeQ~7GGwBCu<*=9*?E4yOejsz1sjRS$vu>OA)di3lU_Y4^bz`96x8fwS{Zr4N*3zf2`@j zY)Lwz^-Y31P12qx61$l!u0BTF=8YBn_Wkc~=Cx{8vM<;+*wKB*Ztut)f z9)vNF3Az?rkVKfnC)<#zPY}e~QdevqSGPJ)304{I72>*o7Z*J zbvusq4aSeSKhG#=n~L-eA{TiF;wc5%KU9tM4bG3ezei@@?5Pg=PheieH7q{b4*v!f zDG-~$4; zBWQCSnF;SW6uVB!iW1(xYf8H*$P&S|H^(UnHBq@?yWs10wIAUMtqm3OPpHb^d# zaZM6gS5_qTs*JZ8_uVQ~#bfu@HfU@F-ud<&>jO5kqNP$qOw$fm%1zmqu;s^`Xv*g} zJ>E1CT5Q^VAvNhU$7099SokaJ6f{srJ!rExOEsGfEGH(HJivfwPq0{R)nqhcqvg|zV^mE*(Nsz_;?9> zQNtRUer^}Zw-VHF)PJQZ8S|xmX2l}Iv&&V zf@_mR#IPUkH7kl*{c7Gjy|juRv*8L^N|7t_vCrD}!LeWBP6xbeR;&!i|5diPgbV!u z5hJf>MecdCa+sCx>dK8dXyAwgHg27>y|xe@9Y0(H5n1fW2#FyPYZEpG0|}p} zT{4wRr$UG#K*z~!_fhGNGN%cp;_YI&=e2?8Ful$N+zQ!6J(Wv<&SZ#*9)U#-NI$P9gp5aI=Y>Ra~_$&oYasurL35lkDtl2ER48kEXLVQJCdd06C(`O5-(nw ztlBSjoarMb8=0T?7Jz$|3b^s2mqw5~u69*cY&I)orjjxrPYVpj#^N<{BnU1jr(d9z zoZ`g+!$~944HM0EL1kJuil-q~L;K--xLfo?9cLvWM}wFo!Q7gh7dhpGoUl~q>|`QF z72nE-AwP{wKPRSB!I>39D?B0Rv4q+Bg&@hzEtDt`b@SHVnXo+H_TyHCg7oSVM;Nal z;z!UcqO_4tmR+<|SmEfgVzy3U#1?rbKBcNZg{TW-(S@!?%xGdzU-kf=LV@*YknLV@+?h9g>TWrQyB(-$5r)t5Ne>1oM1j=wx1D3m(pq%FV-u zN`5JnJcI4k*6gej?8^)_;lsr$KJJ~zXq(DvchP;FTHfM{Fp_>UN{T=NuA#-v!Zz<^ zg945--a?rB4V@?J7zv!DlsdrZ-2 zZ*U;$z2RtYj;-oVv>Hj3Ewau|WMx(}Rz?Xyk8fb6HI*;Ap=-9 zUwsK%U(%oq(Vf`c@-t+Wp#wKRuYyt23HTwUfR2syuX@MWCJCf4Hd(! z;X}+KM8sdJZtit&(A=}&h)er&&1!SN-tZ1m-@aItap9Q7(P5+8=G4k24A47g=)7Xz z0Pwj3bgR)OIn^4rQT3aHXD*uCLrOHgL)UWwf$-D%S#29>*m_XinRZA485AlY7;D+V0l-={t&DVOu>kCH5Nv=8-djp@IQCc!Y zo8~5S0*ldMOMCM|#^TG3iL`TexzlqVwvdmm5Hi5JNZ>+?xxki{l{fSmY4Lre;$Taq z4hEwni!%$H9i7$f2V=P8qhyEo%R-vU=qXqeV`MpIS-mI2H~#RFC1&F$+{VvyHiYZv z#6fESlf2vyoZof5z)miLsAa03;e;^RC-t z6s+1>H@DI=-iegmchD1CiDWT{DZBQa={mOK-d>I+3xc@XE4GQ8SRs|a&DKo zy%2rzVLcCKCBMGdMsIER!SI%+pNXpPhU@c@6uPIV{qjET#ppjWFW7Uk1`xb#&tgSap^<0*P)n!5AwcLDyxo5!#5FLpZQ%bqoHb9?L5zRS1Ul%K60V zxCn6CZixXhbOR4!FQ5X1U}K~qI8IfI);O$jRP{KlAyjQRtYK8`aGTJ}4PvY%E5r&@ z$(j@kGviPBz92F%m%vL~tvIh#a1aq@A>lqymQt*{vd&B)7B1r%!RdpUY3qW%LzTuL zT!(Wq=A-0&VLEtim+L_NVjKKB=sWzW%Vsl-;u)#EKu7}}PbVOrCScTCq9$H%JFI;L z^xZ3pnRPi2bhtkfY8w)f@%*uju@#vv_kqr7N>Pm25%e&Gw(fA*oVeuTw08HMU@??H zmuA}q?xKUL=SBLXJedK*#SC)Gk-W!8@*CrCmRC5yOPU!&Q-8zrw)$xp zpTcnOxATA`Ua!UVFWS4?z+kr1*JIFJXG?XFY#m@B2r)4GOp~U(T`q z348yC-sA81T1^LAS35IlBYRU@Gv|MyZ#(5a*}wJqrJ*5pz3S>F4P^QOj}Z|E3=!u# zpY(W1-KF!tYQG5`_jiU-LvBa08v6$A-D=7@GWff7ln?lb9r!f!uRN$ zF*^v>V=Pvhcecx8ICEEy4abLEs@AT*--Ft48W`vFIj&*Bo0a~$RNCMHM!NKy zAy+bAtM7K@bEDqm*E~&)3deNT!OvIPZ~I0*rGyLkX)pM`@t2?yqi&gxF zGirX%HXUtiU8j>c?TQ2XZ1Tfe0a*wdNNd?49sX{GS7jHiqB%;KUMgi|e)vT`*##8tcnU{iVy8;h1@TpsUxP~4Nx{E5ybrvi z+Sf_%s#QTg`(QufJ}h@mTyy6Yi=*K>%D*Gwu*;kf{k4oj>sC1Oyj9ZQdd#xaCV`58?ZMyS(^5f;2qhrWEJpA6$?y!s7p18se}QMzKu?Z#jEp!bP(p8dD?wrW>!%Qe}s zRKRVek}bAqD!wegTUONEu0Vv#8&Y?PDC?icuu`fr9Zh(Aavm@FCgy@~c^0G@Osg7Q z<{1XQgELCBos9T7)96gI#un@@lXe|1e7aiU7hXSUKjR73Ie?Ast%Kts2bZv{X%j?u zYBgG|8cT4wCb|dmr$4K^cI&7;7wWeGGVodOzN=lE!7Uw7L`aV=@PSo!(2yJ!I{l-X zt!J=lMpZT@>j>^>Zs-J}JJpe^kY&{&$*7%*f8n*@#uk*~sxz6Z<#Cr>Uof zriK0i2nh)hNfeef336^g5Q)+7hNwo*!i0kmsWa5$F@?m&HQ${84>UM`H(!7JfFhcq z2+>$NO&YIR{5JP%CamUCAcNdm%yKEyA+O=l{b4mNiS6!4sOKGVo8IpxUbz#A3*<^n z#BnyT2Smu(uj=KKe0?!`HhNXLHkpk3`Tj&1@WsFg+t@=OfEWN~*;gs@_MkT6w`CsUWWy<5heK-80VPFg@(JIT>NUM&C)a`z zO(cW3GK`E(Sd&hsr9A)#E0Nl0C)qP;b7*jM6wPAkCLh#yIumtnjemF*-bYnl>Ut%EIbOx7oG?2dX}Cu=rqtnit!t+J(duc8*F({F)owi)<~0QxAkG zja)@u6PSyp#PVuQ>q;&1Msv6l84X&k_d+D_AF$)V}OB792cr38I7?iq; z^5v-sbSt<`v5LAHLe;0KMvCdU7o;onB&v1h(YAfGDHSovI7yB3YvxU=VY#tn6R-;V zgjB9pseFWtD}X(hxtZ_Y?eWuiCDqO^7_vh}ckw7X3g1W{7n67x&&|f(P6}nY#w)Zf z7N~FI6=|x<6|>bUl*4YKzyDB&E@Lk4wJhv+Fe{ zxLX{Ttao7y1VSPB49@A51pd@WMCn!8&PwXF=Bn$F5sRs+4+R7#@H|)!*tGUWTQ`@OpCu$FW{J~%s-3sTN2NGMsM?J9L(6K zTed5BJY~wG_Zu8b*xJ+wQGTd|!!N}43ORd|iLY~K?AXWD32iky1o)e4!4A#gmOO1) zDVlC=aQat$b3uYf_!};(LK-VhEjHCkwRv=C{`>*y^l1Kq0qL|T!EY!#sB!Iq&A-KQ zwMY@*P^K9nNw>b@_oy)fEz-Y_iY>6#Y?N<(<>w=RWJu&5<_Hf%rw~CJ^-R2zXg_|O zVdq1Bc+(Ic);uVi?#M+e)oS;<7&7vhewBirS7xRK zg%BC28z&SoNx|F+Z##ERH_#-D`# zN*_>18^rgvRXR08dRQU_N9sa{6}azKz+8&4fQllE2iEAUaP%zLn1#afie4zW~l6qI8`{-e(K>~ z6{&b_9`G%ps4qh@gFdU4tqa=k@7z@dzuq_LPxJ!+kLcw;0B@6j0hUk=J1sm3bidRu z9jo-IB>{7y9Zi;Es@k;GObS*Ik(s!{c$UQ&7xg%a#pCwr@&W2LzRwsBPzy}&K~i92 zJcRGNQ2xood@ywqm=ipnm*-vXm*X3J?jJ9&%fG(p_q*e6&0lu|kk~gC4Q(9R_c@p` zATT5_aw9b`x+8@L+anP$vS=%42`ipN2h;2<-*gMZcNAb8nAyWrRwWI4Y$}vAYj@_j5WcYpN&8vxPgq8^^ogFAfR%Tkiue=O^?h6+hf5W4hiHN zkxfs%P6*)vdt@;&gvrCx9x4FA;sK+3TIdDaU{mf7gIv1K0Ab9J&VmGIg``!zmd5o6 zS%>USOeNYg0sAGL;=oe*1(w|<@-86j5j{G6oL`&6?iap$NXKQQ_1XmbTR?|jpJ~=a zIW*U`!qgIN6+Iv<4C6Z$WJ7b_QD9a}P<;wQ5bB;4#Mgmub<1|+4evoIXmbM~5Bdpg zd`joi#@Ee3OX8A=x#EZ0nl#*Lt*gk&*trMb-D*48&;6M$TC1H`k@wqQA?72h(5iGX zUTR_ws}n7>a9XnO;W!;Me0~|+YV&UB$5yWu8~5sLo{dM;=156X1MS5@_nJq0-#(7>c} zaYfb)%lB2*!-yNMP3aCEOweoj4&Q?w_0^XDc>G2A!v*~onTlc)Jy~DLV;~F~6m=Ydf>FXKD5 zV+|%(;J9hw{9{6kx8i{jw%aSYuki<^I&HRC;p-wBR_njB`Xo;}+V1Y}=Kb=o)v^%j zMqg`w+_m+e&%wHYryLs|&4+Rq0Uvc%u71ySl>YcL;zbwkqzT(vro=>xlaf70p8fl1 zvn1)#_m{iA%7n`L+zgrsnJ5Hr(}PE0snHzrRnhY=fF_UifgCZEUCvxpwOVGQ>)0c; zrR4NH{(FdK+H4T?Y~MboffB9I9tKPos-i4+N;KL7g&HbjylLgl#zO~|W5p&9#((V?c+mUu_j9-*PF!SJ27kCE4sr~9(IB_?&{F9IV1yk zqaekyHIQ}m&G21Jl2Sf2hRLT~<$`2(bQc{!{|4Biz6cN#X zEgaypQlF{7PUmBD@8(JJ=3)AYr1UvopIA$5r1I%t)qt^~VU8XPHx!qI2eR(I$77O^ z^`{5n?2C`krHhI5v6i5tv*Zg8l8dP@5MbM@+3=dHTTx64Oy-r|Euf#GT)27^_p=lB`||0L-(azg zDssm`<=Y``KFZ8CYVa?-&}%ktjh%hqzkJHP>`)k=q3!!V!NhHbpx8719rp;{rAJ-g zN(Ua!-}Ta+{1_L=Ov13ahcV2*Bj{SmXq>r=#r)pn2#E1lmmEvm7$(i2lyozW4<)lq zA%;qjqh^!qfS-&$eDXpX)eC2mF%;xyjISJUIz)td2$zmwE{A)*NAuMhOSF$iv&0(X zV~M+oAAwK}kQc`in-1Rqe?`|ken67Hr(DSR@Sq{;X1@>js192YKz$#+hWrZ}E^zO| zrF~LY{QpQ@{UbEgbXInD@c4fYc=fMpf3czKn4;?vvJ9k=LE*Z(?4;0^C=h1q*#EIIUIjka=GTqHkUz5JnodX6oM$jvN;2+rSx>9FqCe;CjDQH*(SIJPTm-n|rCSKC8n0KLSDU5j{#@DD0ovfEDag zo%JPlEKF2sAx4pjGEr1180aVQZ1wtRjP|OPET>AT(jJ>)g~$RrrX%Z0g>GI*Nii1n zc{88B!GUsD53R~&W09FxVoQb&kdN8Yn<+i?d{eAd^kzkY3O!MM5N!De2 zeDHQe&A}$W#Xm(at$r{RVK2={26F=JELRz_5qE%>alcLaRiTXZq*)_h+Hyzj3n+yB z&yZ`-B#$8v5XeX8YfB^jXkuDtvELE?TF4%Sv8I2qJvIM`m;S4T%=&M-N5k7?UK07w z*K_S=ci4l+9VvtTxG5p9a3rxA)1`O3(I6SKr1z>K;HN(S zJ_iPF7{?YMN9nd#5W3zvb{!mwvtgWW?qRqiwb95Nbp}rX=h8YPyha9K1)2czoPPC_ z)@W-F6+s}GVA5tgK2|204(w9P$2#Vl=#e50}FfW*)Zb3 zO(YZF?PnMxajK|0@V*J%{$*kDvNNfoNSh?3<{U zyuULBk6s{HL3qYlEoUe@NHykF_%S3h`6J3iqS0I>vghh9ZRrd?R+RkTt&Zk@E|qQrmN5lybQis+O`;}u@9kE&P{MRc;Q4Hz6rqv=rP z*&6qbK5`|v+?G>9=5)>u#NS~`E%%vxfz|5J*_vq>^Zdq#*XRfKjBq~s+f0qfkdgA3 z?-el&3p1$*p|Qzt&e@JZV$D#GO&ZVI#%k&s@fAy#`<{!H0pH4~)r3#D>Y+OAX-`Qz zisuG%SW@??BvcgcSF>Y0%uM8tt1+Z;>s(C@k~?(LJsx+MchSK}qPWFvm9hW2)1K((ih_w z-3b7M0OnD|9od82qQwo3sDlt!P{eN<077gB&9br-M0ylm4yi9jR!|y)MEXp-` zL?+C;!8m{|kIdKD#F`}fj@>I$fT29qOD08qunu7F=DVUjxm-7%x@3-N-yTMO;=Jmi zK!VDhtYAg7)n>%c8MEK&rF-7*7ft*s&H_@@&VFSXxu^P;{l8WvCaY_r^sjYJAd6q) zHz$>(Phc+9NYQ_K+7h^15u{P)CdV3vm%L?DMX?W7K`#{nnUlSe(L#Gux*2@BPgTZh zn3ksKR|XiTSLAGD9W7SOYt4PWmC3|mMHP%NJ33a5n6S+P-%%4$Bg`(uR{|T`_Rj0Y zLbf!#Cov)`H+0R?17~wt6y?auw=O7nzEuv)G#!yEi+SV|`{;7%nbjgWE79>wJKNsd zi0}U_)xpY~PdrZ;Tv`Ln)aZDk$fs#!YMIg)9+xmPxNNxmL7A$e#`Me;|LPqJLL=nF zw>~lRd>~>R?puH<>u0jo?K{Pqp=m6Z8ft%%oQOw+w^bu9QbAmtTr{Fgky+Iuy@l76 zUd)zWfl;~`3a0aO%rLc03)KaQMbupd3cFiE&Z4wi;LFQglgP3@T-P4A(&{g(1*JNX zUzWzlFzskzdBmw6kwncu@)$SzR@>ua=6of4>bnOxWtwN-;ln;8Eak%DRIHe@;=LMU zrj}c^iCnveq)is22StbIzN^nZ3U$K>3@br$&gQ$+rP6w}xWV50FW`~P{lw0!|jG^|DTKFz#Y`HsPNk3ub*?Vs=|DqfxwA!C(1x=z?$6r>SdUK-!LKqBJX{KKQ7C zU$ZN9k(r4$2-aEXox5juQR(d)!7N^lH-v#Z7|x>N-#?%TLiD#{VyR&*sQ$TAegFS= z>i>j{tJx`ihK&0$;(e!s7z)_wzzDkxRRQ-AK}Oe4HWd%%-5XEq_-&rNuvL5k|MXMZ z5Ie^2{!{q#U<4D%z_GhL;Ze%_yadC=+wbG$mY|nDk_Fwkl?WIK;KRMNZY?!Z1O@@1 za4|XP2T=wGx!avcVhQz^XgUj`%f*161T6ZCD8ps32H9$diLA@;`|+BTCWg2=X7pwy z@Dtl5BIOP^tuanucdho@`MV5sS1fbzzzkcfB>(-?@vh9@r1u0rIj50FO~>Jt*orIO z3_19zHgfB#+s9i%9Rw2U4t?bvs3lmG)SwAi5`CEDW%i5=dNM!nIo_o zrpjsKeCj~^EWssZ0Dl=GQFsA3#FVxXDvp@&hjlQh*4ecl*WEn&G+QSNTjWarp#gHpp@Dg8K_r>KI49_E^3h%zi%{ zk15C!9KyL+o?f7jd0}b=uuq?Hz!C)RuaZA+ne1{%v?T&QQzj}zvnN=S)`_(RP~h&a zh{T|o7JiR2O6(*j*|hvB5TXdy^Y>*fSWKyXik~>o|NkH7{ac<6O_)^d|0@@IMiinF zQ(Of-o+;jn$ZOwZVCm zYjx!J$HxzZTS^U>0Eh%g;(lH&$_b$dDi)8i55A5=J>!ZVzw8taMnEB=ql}Rrl=&l; zRK$wFom3DRw|d>++EVDX@Z`M8LCAAz0^#C}7~9L9suL-Ac{Q|EEsd;MA7#O9#vSG* z=BmSJ-Gvg(U6fg?6gm7g0l0W@ib7lY;CM+Z_x1Kg|4o5?8y7XY?rwJ_cMs{J<8tLf z!D&oQ)uRSi8ghUx5l2Edwh6Zq$3|g++0^unz5{OM;L&^bnfwV-cWD$A=M3yDwLXMa z8deo_QZ-FGN#g~<*{tnRFm@x|0YeS7E z3HQ=j>6%-TF zZpq$aPy@T!nt(qg?uUiV+@<-GbAG?sLkm51y5x9 zlnU0|n}%PDvDM2wG$0X$KA3;% zj2vJliUM`1{#-X1JN!!a(8f>~jM0=>myC_;wkiTE(_?932Gl>v5z6OVf6g@#%=)%B z>SYj-bSqvrT|QE7axEB^^vbBQcddSZS5*aGZoDJW`~wh);=Ioj71FUgM1(%6mgs|g z=ZlY2KQpGB2lxlwj*2EmV4gJh2yBf7l`Aax&@&rIPnsk42k{QeQ$onF=Mh<_BUvZ; zj>2_S2v>tvOTQ4xm%hUadp1Wb(TvKqQt{w+OvEMYI^DbygmN!|{(AZsM{NPk^_-d4 zlz_Dgi6BTZ2o`)5K+0M;D#9YCM6&ioDb3+pKaEX}uhfFD4`dr(O;{lbXga^0k zI;NH@MNJ*%;1Flx#%^If(v0{e}Rs*41u}*S+{@Rc*KR{~oTxq<-vg*`D=XFO zy#Ps78+4w`S}wF+n1T+YpYujiu%NfcxQipv_Sc%JI!8yqdX@2=1h?AGleP`AeGOHW=GTkNN;!y{;FA2H zYNJSPFj1qV0;pGZ(A!EGxQczP23FJs4KrjT2W#51)87%bHAAKnh!wz{0NP=w=6|m9N2MS1tFY`iq2WuvP1k=0$tLgfl4!lwATghoO^>11%_d;Q|0V7P+3xT zvEA$ASY0QylHP-ne{jh{BbR=!n6Vv=B2LRI4Z zT=I2R(&tCUiDWy1UuUJXt4PSqb)(P7=rNaBt<~iw)G3k}ze$Q1Wk$|q?_etjp-=l! z)QImp(x)mj{6?|1pSv>4HQA9CkF|D!{UHy7Al0fx6MfJ&jSpVbVPG94sj*o`lp>9{ zUI5%TQ6^OVZl+w!KVT_qBeEqrly`5AzD0*qp8lJ%cwOMN(Z1Moz;ctK;a43r-J#pB zl%vZN9ZYsz>Pe?#`Uzh$UY9PJ`iNJ^vd@-gcfnib*nZ2mtlEUAX^p>WE9DH3)yNtPFx~<$AvF@RF0)=Yybp1HWb`0}Tj!=O|hydk84bY*J zm|72BD+#alsSF6Qj4Y=k3!e0^q8UH-J${(4<`}qrUzrtLq<#kYF5vne@@y1}qZTC* z?kY=295h9a;fn#=xl%;HpN%D=98V<9yf*dIm!?C@?HT3q4*QGrJsgHcMWG)4Jiq13 zPLNn-CwfQoQ1C*D5p!kWqqMyxJ0>IXjFq6Pvmu1lW{(LYgqnPBSGXA-E~3^G+oe^G zu`iDEdm$1{S854!b`~ubLNcXJy@gBcVVkbjoEhU({HXIBgTw zf@(5Kq@UC93vD`XH%~N)5FwrBqSC>Q`Yqnb)-Ggg;FNqy^Q&v;N%&DZ8CN;F{DuI9 zLcD{i)N0I+uM0^pdLzM>hT*%~&BYHYHCca&i3($TkeWE(cGQ^PHoSvYAU`woMhY<1 zw(mU-QBn6YbzmFg#24g;_+1iZ0+}avuFj!wG=aK5@|c7}_&+2NzQjx}tpvhFJ0Ydw znIKKE4Skv78X```F~N?qsv;F&0y@BaEB68~* z{UOt81?qPFsQ6NI(?PW}0^Z1)9|O(U^U8iNFZu`kyrB3@5d{0NVq0Qd8Yjb$EcEg< zzsVVNO^qJmx^b{RUUL6e8SD7_jG(<^^6k%FXP5ISM}8Zp5ks~K`ul9C(qSEAx&CgI z-IjTKRZP4cny8MXRy%gigzh01<%7aHPjt@AQ@-IJfQ8nlsC~Zae&-&SE%NWr>p6Ex zGn;yQ1LWsdzZb}jewJ^<>gqlR9E@?$=YntIf7L%@y0jsr6L(0kTlrMvq823DDIQs?Co^t`U;XEa!NoBlZjM^S{|DuPN+9bBe4}!!I3fm|+?!pbWN5KZ0rgT&;#} zdn3SRC7MXXXA9i6C2k(jzU|hE#>lmc5#+C<2Oj_ieu+}KJJQzgJ>8$;SMRi*3d&`L znW`Gdb3sM?OU7tTkx~7169Xbeu5#?$>^TWpR@4wZk`6ZUdab`>s0=JyVn5=>_h-tF zy%RyJ`b?+!1@Nz~g!uYJadT9w*-{5CmgwNPh>0RCzrOOofXN)onZ2b}MX$5rl-BIp z|EPh^%FG_jZA9qcn-rN`^E6O>B^|RJ+DIOsj?~d6LcI zwMe?LmWA35@{yCGZlA0WbPY{EY16`?4)fScyDsUSkwY0}U9pt5DxlFXobi6W*5$sE z@bZC(x5IXsDWj~G)54jfzIu8aYWn@iGksbN)oZ%<0y?AN5hCgp<5X?yHyojb6)LJ9 zkwh&cj1yZtS94yds~-|h-!w30ZPVb7&ffEcv zJg$N}?nMTzfZ#u^MuWz62?AeE1TCp`e7N@4hwX+qf)qdC04!V3OgMXji9x6dq|bLa zrF0ap;I={T^44)Ht7pw(477udLH>X!4^b#T3H_yN2#nf>KEZ$aGWlse`p>r!#Y6#i9P88*#HVIsEB_& z^!HaLQ)deeM!CT}=XN)Tl9_C5pnX+2^-5aT1mnS4 z+2WyK8c`gS!tEqwo_MAY!sT0EO+Wj^mC|YIW z63{?G|2X6Ee|V1mG1|Xu^}kd-`CNZXk;=J3*a9U-;j{N%v|nf2foh(+Xs>}8{iE}r zeI8z3?lR_U@@mEt=e^OAv4}y-#Tsx!G5V?iaREcj^z@CxoaD7F z9O%QUgvQv!UpZ4R42)ytC26H(r)cOTX@wMbKv6)x2gV5!QrFTb@{=>t>umBIvPrv`szw38tOV|`YO`l5`z+hGJ`@f)PL|9?e6XVP|%vgLJvx< z0Q{r)5{@4&$Oui1cESFX|0FejAT0td1^7ox{hOx0gqVV|vw^dV)8AycC>5>W!d7oZ zl{%V>O68wF6S6m=orP~T`U?y!1wj}oqUa8{a8p{1B3#IYy+9E7%wqc7!{;|%|E3En zO*P;ewkwcvZf2z3W-^;i0@tPSclv@dL=4brvojd!FLuL&Hp8zm+Or36Jfkp7R~rz9 zK~0h%59p&XYR@xd^h0MXOqXwG0B&*UQd0Uu!z{FCViy>4x6{JXTMCGPLb`*jv1$U7 z{q6S}-6dgOSO%e{u#rs}PSkFzc`TAotwqf{qPg;Xyl6pclJuDByrD~>~D zUR5jE4i)P-o0y$HuX^&scgjAYkx9WhWpac-oa-QEdJ!v$=fCkdB5`na^_u6P^k;`(Z3_U#GA-YoOoH zBn_uweTMnAJtar`E1sJT zao)%P)=mB~@ujP6WcvM`P61&`!Ws~e?^xJ|XYwigLL?``RXsQ_Qtb{L8)X)j*-YYT zM^p!ls(=|QKw)1kb1ophZLIOTf>POeI4z@$JhhN~OyS(KVr-FmLJJ&#a@NzL(k;Gq zWa?xcK1Rav57ev)AHd#{d zND9iAA1M|npm~K8LiNn0ft41NvV=`%n>eCgLq6vBKlInb-om$W+oirf`@VzON5_TG zBCdV{*l3tTuYl;)VB~~EeemfKsQD@z=;Q1yZ?4n7Oq2aB8I1J{31vW0kbc_Xv15E{ zo&;>*&u%kgjhKp*8ch0w?>n^%U-I;r>ZOvO51#LrhTY+eW#7o#Ag}3JEUeTIOUxM6Y(c@V^XK<@QP} z*!K>XZUf-kn>Q(P$L^MC)$Dj){uEN#ZcZm3fZi_okKX?IzrR}k%iI5MmD?x-CnJ36 zh^#f#(<2WOK0}_`6Nr+=yY;hb4x#f~fXChO-<5H6gfY{vDv zMzC0B#p2LK6LJilKv+D4Ha?aEfABydfiS!>GJUNs2e%T?7sm$)nT$xaS>WE6>7}U}re=o~kQXBX<8> zKD(UcTNI%LrMgiH8B`P#zzm|^)^VuO1>L)aT57nk%9LJ(dbZX$@x#SR{Q1Dpw-8T5 zus%)_6U~B*qER`BLl#G++lt&CCgW7H0RG;Yc_AP5eVNLp zGhUT$BUo2N%FTQ+_X8q0gi{tRIGE@nOcnL3_PQmDvGCS2Wg3X=kk)VBo(;B@#2$fDOiF@r{e1caMi)+-vl_qZCgFF+1!j+{2UEhjEC{x9 zr?_DO=2%YiYEvwg;of}wID`MicJY)tOW5Tab3xk?wLj#sJkP2v80A#Z|n$DS#q!f3n zG6pziLe=uu7OSUNnSmYAvB7T$hkl~YS2laJkTF9Pt@Lg2tHSM|nAaYN9M`M4KVR9r zt8{1wTIy!F>ZW$fv%orpHS!3I-TV<5e0+tK$hqHO4+x@WFKNBs{wU*CU4PoO2R7@p zA^#~gWcly?S5nm$C|asuZQxc;(@!ZjA7e+>hE$Zyf2f1d^a8!oizze1EvBri-aFw&bv z;rPMOip1oUHcd}zmiq@9#@V|3s3BU0kHPwvLQ~kXzs3=@ss4e_t@k>?2aKa%S3b^I zgY^nnl4{brmM;4tQb|1l1~=8AfuROmu&9bKSum)#I)W?xW1Iapa6yUDtE)Ctw&7S} zI)qo)2#2Yj}k^{(WyU6+xX{xbkj}9jUrR< zz|=kGZP5PthnzP=V~th={N}rV{BBaBuZ6CuWT8X2ub`ZviDg`;9x%K7QYP%g0a5wA60!ZXb9Kes``WzJ>7rn>Z``&$om8T z;omc*|G%NM{0quh;3C)GbW)ZX3(KcPm1xeyb0p?cG6fdF zeBsjSRW_J`fxx-hFgK}OLi`qBH#wCXbaU$Rklmm7%(24B+TPm1+9{ERBz7^!PSOLEuR#iJ3~nPz>nG59Y-et` z4mnaJhqD2=Cs=aN22bZozavfgfFm#bF>ceXsQO#(Hdk4lde4QLQ`VKPLKHXv)VkbW zn;M!{F)zP8_V|1LtZ}*MK7(=b%N>KyS`obGym^F~0r=;x(K z*tnm6@_B~m3Z#9OSEv;D^=G^QJec4_0C@8+{^RZcZw6kh{?74(RkfT}MbO@ixz#E| z`z<`7WtB7~x@%<@r2PZa6XWl840jcpp&gDzn-=ejMyte?;sJiWs4+au2`j-&KIbxe z&!CU=aAr2U(`uAyGtGzI;)iu+^qx--1XCZ!^9%DUcAKKPxzt=LjvobwzDI{g6S%C+ zIp{&k3-l$!bV?BhPN8CnX##gY*{bynL13Grd*|tI2%seeVDYKitM!;cIA^fODrke4 zp=m2z1qVhzz>QOKn05D`F(43G?U2z?x8!Z%f=iRxZl?vthqY-iUVliI;Sre(ifRv| zN|K#VJkjp~>&pw{s!B7bs0yo=wax(wims8_rXWduqp%DuI=I0hQ*r{=;>g;IZk$+- zZXAD2vbsEA!SkDI7z`$M8+K$`Q)&oa*VnDW^=gbjhZipO*0tb@;w{a>asN>Ol>${k z%F2h}7@W4&&;*9)O3#s0_SIt%zp%=AU)!K>qlxwh27Ec5yEcpClT;zfV3|n5uP~gf zb<3MHyGjYVz>K;qsM-y~#;j{Ys)|JM*4FoO1>yS-KYnO6Nlj0nNxN9#ORb-?k^6=v z?0&wMo;AP`s}4`2_DNHT1D8EEpEh3}Z$}!}ajYfKF5yH6{}2R9PF;+aonxHo zw4$T6$VYVZz}O@(wwvHY16-y1;%Z*=4bCd#S!B8f*6*>XRecU@%3p3T8>aA7?%jt? z3x4vtN6gBUH$-iAB(l`kyeWqC9;G_5>_fmNeOcdd{3?ix(!Z|XK2snUm7pEV%DttO zDAFqCgzC%?N_(4aUWpjjFqoOM?DWg+^GE;>g`cHBrDL|b&f=8YL_IsDLi_SmiBlJF zY$uVl)lW=nA?l)cKwGWYK%{d~jcU$__88pc3*t>)Bf9oA)_Fu2`%?R+yzGRx%q89A zEUm@tE0#D(s!B430P(t(^OM+7N7$+HYf^#aY(7hL5wko)(j=cC(|V71mmsf^d(hY` z;yZA|FOFW}L#*{~|CIYRT-;BDXtYplukg84HaUb>3$$OBO;N{Y(~HbrSQBDX9L9W$ zx0&`_&T@&BU;EalRv&AkMm8CR&6=WiU!iPdOdc3^XwFWt3+d&4?(%4-WIYF$U8EY> zWIUr2`_M|IQN{9XDC_bjKNNFwJZA^;AIY)=f&kw_pp@R?vj&EM8Lu6z-iPb{Kjk5? zXvi*aU=GmskA$6n>&1T&U0sxx|L9jFB+6K?E#^wEAT2`d6d;Oqrz6uNOT?ixDv8G3 zur1Ba+i)o_CnR~pWCwtW?gSui1kOaMRcPE^eR$w$a2OH>%H99WVMd}FaZU>|E9F7l zET)<{L>A^eI%B2*^C?FN?5fb9CjJKPrRK*nLkO(jsuY^ue}Qv?FV3ds@eSoAZRPw}go&n0@ml0C z(UoE%R}QPaQ;F$RRwQdIV=W-%xO5pkm4nEwgM+niCEBxm*J6XaKyIIK!ooR~k)cPS zZIMFw7tZ2$qCTmfN@f0AXvYd?!kJmA(wvqp0~oO&o*UNif_*%ynR_Xj3!f@ouF zER3J;%t)lkrt$Zo!cuo#H5&!;f{kNy#FLI@i^1tdf01S-L&)}n?m><#Yf!h+gVKqf$ze*B| z#D6AfPcd<$i8zN_rmK9V?7RkbXH+EN!^(bD9AsWC3Ye}N$>L-_{55HF@bda_%I-hp zJ{M5|5QUeNNIBddO`fuFjW@@oOIT@y?&e(4GkXog%%!{gsjnn;!ydR4VY9xRuX>rA zqz-P~lrMY3fMNW_6{l_g6Y_i6!L6srt&E!6RO9W^)7dHXv6`4dhEXT zs_(hZjNn@a7vkB}va`4!95p_tO*DVWxmp40!ifa0b6K>GqsRjCFy-K4&m)_r)f=f3H? zKX$_|s_Mc4sI;+AzPb+8kHHb!c4x+7?iDkPO7KzwNJQ!9sfp+@-4%Z7oWy=2eXm`! zmhVElb8H65qEB$p2nV584Dq3Kgq*jRi%mpp>%1~PuXK)~uG|gtCm12L7PUskhMldB-$QggFOx)@dc=1?jf~3Q5Giy2%5(~+9UU)#w-9} zsb}FIOFjSgJpV;ObWxI(Uj+)YCZwc*fs)07jf%tW#TKaQgsmwN5hV)G6Cw~ItVMPN z6&};oB~QPkzxnINmI&ZIete;rXCy@WtZQLvcG!{1t~v4AcaHB*R>qcOO|$xFzMBx$ z$V0;cZp;|hG6FKFV6PB(s*mgxre$9fnDpwWxp*i zAHARLyr_~3MuovFOs9U5JsS_4GDoeK@u}%xR$3u}4C`uwdP9+yP)>QmfpdydBC9_9 z(V{XGF}73PRhA*MN9NQFO666NQCmVFPeD?n*+`v5gbVYo;z6y7%vVtPvkPPfY@tDR z{aJi$_%5z*H0PbZBNsEJP;drPU5W$jx>1ZsOoTsVF#<3t`qX-9%*OD(J!KlhL`}WN zT4@veh3$>&XP$@EPgwIx^@>8(ZW{f+B*j>h5TJDMg$5vU=lF97l5f`1*=w=ps zj2(Ob!we@mNN@T*eAN4oOtF9SuCw~rV<1xl+8fUV{k_XNep#mI+;p{IVkUl;MfPEM z_Umjsh|Szrf#})9B=|#Pw|KhsGXU?(Am|D02BxK;A{wpbjH5FM7?McD&c{G^YO0Ng zfbf!q2UF98b>rsB`-ic2?u}m?51nqdhheCQJaGD~qB`AzEea42?4a^nRG9X#+6o_0 zD4dSlop)hv@!S$lir{Tmc8bc;%hV*4&69-c(bMu{#dC3j+hHbD&9j6WVHPM^^m4&r z7O3ZQ6!L{+VQ5v%=U}Zz!6HXwp^$zuaE;`%C2^VsSb8nsZPK!wlD%9Rav$hsW5hIs3yCA zf$JivOZ4JfrMZ@C7@Lwk#D z(FL@DUm&-rZ>9KC+Glrzf}nyRLi5mEg@&uOR-#{`v?%+hCWqaRUAYFhm0WEbfn+Nz zL$JfNOKweo*de>ebpHakMSg7QRz&~Ut|*FBtv(aYUII08M#EEP2yTnfBE029rM9yG za*5&IfOBgf0>HdZ>}Cd;g7MbcN(Sjdd2AHhe@yDW1)+y}QQgwRQQaECQN8&BFk@A^ z@`+k=m&-4F%onS4SK0~^vvHTq-|uz9$eK0}rcvK{z^Uw=!>JrpXXV1xn=_Bf;DGd- zF|Qn7gwBYdx10~)H*ff)H+#h6{U!hQ8a;{*i8B4VMNH?hUJP>^7e^&d;##tD@!7SL{))Tg^B>VO@%W%)T}-*D+MOz8DsmT}T}GtzsOVXaY-T@Xpei zZ@rE{B|y^pa*kMvX)hO1XH=Ll;6>xZBIAaGl*G6i z`XtEfOGD!>2a?0K z&x`g^`Z&we#3P6*Kl?funAbDcs#uy+Z<`a*Wr(ef)M!nK+}8*R+1aF9R3~+cnDJmN zui{JJg5nPfI1E;fNU*K9hAgndES-keXazNW4zejVc5Pq~2y)RuUVJg%J8d3F`0BaF z=b_{xj}p<_X%g<^N5f^kq_$?!`qO!x%u#J3mY4}oD{R=<(uf3AnhYjUXGV?2_1<-S z{6@P1c`=E{DV%}iQR)+IyzbA!lrNXxNX^M7a=J?q&6e_itQ2gZ zgFJeCCgD&{?daM~7YW+rLq|`8sYbMc6JeGi;ZhybZ*&%Z3;pdhQ_{nX$oyn$aQ2b@~1wVeZqsLAeWV*!K7*E!^G=3)OHvb)JExVbRk>mmH0c+s#K6 z?VqBO@~CB2Lid*d7hD|Glob+R_Va(CWW4l%*~x-V#q_5pGe0C z_g@NZvfIRtvu08w$(36Nd)O#fn4w^$p0aBi&`JxZnPH_|@PsBJNe=b!i>(DbF1bW6 zkwehV>4Hd$XIyXKv>SGj)ZY2=!x)++n0F?1zKhEGIUc_a@VCnyy3H4?&F#4Qy6gvs z%}uhIFsB-SrWYx09OHrIO2ik_p6b8HZkk;4k(0{4Z#e$3_nk8L)$g=kyPBgf608^x z-VqN0M|dPr5tybBmBh8=7B>z4H0bo68IeYL|4h4>$^jN((_BFzs_`YfrVP!16;g%7 z>WpWHN3<4@LN$W-A49++DgiH8h^@!M5+0Xiy7Ou9V(^q z>)y_N0kXo&+1)Q@>*yv2OA0a@x&x;d#v;jSxmWE&mLND&H=}VO$*)Fd0dc;QF&h2b zji4rUQ>J7o!xQ@B=UWyFSv`UYuGl+NI7;?fmu49<2KF zLp`zlAW8;!$yguT@B{&JhJ4`416eyJhH6$mP4Y#y3QoB$yN;0cEeGU;*)%EC?%qaE zW1%&n+81v2UAFd4xrx90d`YT#x2<4h+|o1W-{y-<8Q(Wi)=@m|M8AFAN6ckAOB2v( zS>%m|eU{ZeFk5haUN%kMh*3wDIr2To_LfHPJk(w#yx4PSN(p?@J8(=5J$y{sc0<^t zc`M)IAC04<5mnkxPZ0hdRv1xeYy7LF!x;-*S3N;y3?YBb#eSPeWnn9aRd3TCwhV`7 zp*cVAI#k?C0lsbYSMNS6ZVA1%qLbPey_Q+!IZQRG=iZCa&YI%7qA!Pn*EFWi%;m*p zreDWZ4Q^F_u-wLF0q(<35e1=H8VD?mIoyqBFX%a_=uE(McoyX$qBZoVnZ!MmvuK;P zIS(Z=Uvn|aVs`hqqGyex&8V|RcXK7PZX~ljZm=h|J<=w~7CHF>78&$fOz~#yAHdRj zO-y!|j15zON)P?hU@Lum>DvOAU`fH8(1W$)YrCmNpE2wubM$ccLR+aQVp`Uwh)iX2 z29Q^9FTRC^AzWHt;#HgO@Swha9&*YPh%HW2+|x!ui(CC_9mXe}!oNlx&tBs}h7|vT z#q8iRz5Bvk%jiDOXhWUlywMz4N#bgm!D7?$%RyyYF-#hP6}6g&D^=Ui5ux!K`C5E# zJ~wOk3hYrvWD6Z{Oqud2(y8ogy|`R3j2x}S-W`-op?H1*z8ko9J9&bn;1pM&8W-{^ z7iq}@$Du1-0#15WEBr!_*e6b@qRGPz@6>$XW{oxOvHoXq`=YRjBHazzvf(@XL)X{QD~>8N$h9pK^|kJF_7o0t?2+9AE#HeZCE{!<(sL3Sr#-b7Lx@x( zyOTRRyc_LB1!ooSw<2wQCShD(HIWybRZ-g)UizkyNoTtSUJWf*#KmP-!j}XGBpjid z_eO4`X>8ER7OaU!_T)Ab^Tt6k7EL4k=IHk;jTrE?Z)G)5up%Z%|E(&9Ez-9?AD5y=XlxlZ4B1;dL+Q85(7HS|gtcd{# zta>4HKzuDLZOWBs)l3v40PzaAk8G`GCbjjjb82F(`Z9*p9~KXLiMhsZtGhclAT1bf zk=EG2YH3=52B~7%zP2>C!eD5ys;P{E*%)_%57dr@;5*!bNlq_ChOS}(KJ19XnMgqR z90Sh!=rIQdT;$1_E!s#y%SFc|18{9K+3S`G^$WFTA8no z5ONI9V;6-P5EdMkh02;`k&sT4n1gv$PxFUFzCMdVdH5EHNpJ?oJ$}*o^yUGiC4?El zM+1D|A#tMNBpAT0p=!WbWRcit8w|9LpzOh&YfZM15PI%k+9Y4_AirerLu}i}ligAW z?maz#E#DGAfW2~!3_iL0_DOYN6@nQq;Ou#Dotim(DI(1!%0P31Z$$}=Hx`}L<)$p^ z2^>ns%-^DnNIs?+hMM%d2}>bBPV>|IK7py6;eeJ3I>xIm@-cLWXbP67II-5~@`tEneTW_zk13W+#nn!?Kb;}T^#L2=rG@Wh3I7>m<- z>T11N8lyDVJ+9Tau)o`aJ9A4vJ_GF>`;WH%H_u1wznBYZr@xsC@0DMcjCJ;Mi7Zj{ z3Q+=Gql$f&9y^$wi;txC(P6%;I6jw!V?{Hx7Yd1nz`%>ES_9=B4^xM1AsjHbrnF1<}s+lJ3Io1ug?TN+en}fbJ(gSiW;Z0 zpA=q?@e)Cd)q7%elWBaL7k<;>>e4|~h-5A)A$Gh09xHmkwW$!uWPl={_DbD=;UYcT z6gYv_>!R{@TVW2C=koe-ECcDPcv=5in#bs+2$p42H;6Es!e9#5Va@^W6T2jr%PgZW z5tuQ;C}~nw)U)I4;$UveNA1TnwU*Ytg{{1sn6hC6nJ}o*WdKpdzUt^fRiiU>XL1TLgk(6Y%#v&FWbg9J~#3*Nyb$%CN|41pq+{gJ`lP+`c z93fV5UWd=kA^Y{rg_cP0v%Kb{L(mT`7H_>r6jvLiw7L~HCcLDYeXcLkfFO}?7IV@| z&LF2W+2N!HQwQ_{y*-#-pXakqIw-YNxJ2^Ht5!}ibT0iSK&R{;i!LA{ztm3ZI3{cs z1Pz8e4`Q(YBmz14Md2g++?sY#z$Yu5$!mCQP0G_jk?TS1DlN|X5x#chE(kePaE=0| zoC$m+zGec2j5ld?o}?tn-rI4S-DHltVKID(>mWXZ%Bk4m&QcJ}>M|#ePF@|Icmv!3 zb5K%O{1C4d{)|z}9WCKP9qtyOh?E>Dc~gmOwB8mr`!mf3eAl@l({XYh_Qx@5fI&2D z`KA+j^>XySQh8pLvZT~?5T})6ol7T_CxuXtQ!##>>hXqpRk=6kB{uW6iPuskGCu>z zD&98Ei-YrY_>x$gT+zA6slOb2J6tz`COAeJ)B2q3PG2!J0)Fz`ZRnthYhs4<1Sh%GtdoPs zq~!d|9W0s$vg4lnIp`V57=E40V>1Iml`PCDX#5@T;HLA}v9we#q)QZEji zmG z&kNl@02Hm2AugumuZoKLg!g}xnAR>q3NnEOP_chpX7+D_oXx+2+&2|P^*IT&x51_Y zc!OY&lamWg#fAofh?cg`Rhm-MmXsQrjd_T|-1@Atp7Ce{{5AZ&ZrR>5^;!xszc;xL zaa$--59E)GuqRylK1{BqkGx)8Pj~^v66ix=1z%A63km5U9aIIydf>swU~H*|sWlW8 z6ckkKrF+hiJQ+T37X&F2QDCVe_d`Q7Lhn)ug_ax*V56sHSa8r92#FHpp$wArdtJkl zv5p%`^>V_iGZY)>2GVWg%;HoTX$oWbS!#$V2_rzmOLJ6jBfQNj^hN^O;=cUI#~>SB~$sw=WK!o*Zl&n#Q0*U*O5c$;!;ho2s23GwW1qskSZ+_tv0_3>R`Z zVA@FY`7|-3<}@+ii-_r@1WtT43FkO6)J;-)jH5l4s-O<}RZdfn&N#_2Zb9*o@45pv zbxoDGD`RR822OL3B{-9IIKX9xb@4VvO)`3oqsm1Bn|%Nuasb)2SFze8`u)ugk)W^k(t8OZM2(hm z!N)fU!J&K*&WK;z70^Q$5_99`OZd)*;B(urC7_>L8MzJ>S>E6-25 zs;u=MsacRc=(qV(00Z5$Er@;#xtgIy>84A_ zJ(+*Y?)KHD2snU(MYZpJnZxE_ZrC2Sy;}RufR*hYwaeFT-4WTW+rHLxg$8M1EP-66 z%llk2jrt7sJD2F6!r&(W_RYxtv6K35SmOU1nd_5Q8YD0RXL536cXP`U_1Qr#Z<{;x~%KLUIb==#>&l|)%r@}zF zF9~1+&yC~iBw-*Zjsl2gafE=;i0q3GaH+sv@*jz<_@v9cq?%4mex);n(ivV5UZIwe zomWKr;&rOnI&;)t`-z7yK476W{O7*LlC6Ar+?BDH#A>gpwcFK?i?#i%&C6IQPwin- z@`L;G_ttkNf;JO5ow5wZ0?kfh>>C?W9)4%lcOkLn&OUwT#CXB6T>}bXK!-=w-i#{k z6uMgzu96p%zJ7+_q0lfx1l5!|My?lJ5xGsd*IO$zw zw{vyfnmGLN3({ZMT2rHTx~9g`U;^-Q^<$5NejbHF0Fs87Y)*7tHy2osb)y|LcVz_O zr(eqWa;A`=?|kvh-yYeQ-C2i*Qp@a7n4F}BU3LRLt4ui~4OoK!Q0`HA;Pt zlTrSL()8{`8cULBj8wv6bAj)|6;wIkx8zcr(<*N-ek1rCH!u8N$FI~Ar0^@hs#tT( zw;y*&@nuPQmm}2yWke;vFEthK3&P&_FKT$@J*tAK%T)OgQ`o!iZS=!l)iqhMnWWYN zFP0~3VO}#{VsG%l1i>GZ?Oese7S6hdQ@XbP5c9wX%=yTGmhbt;4E%p!`M-M4!LfSM zAcANEQ|qegKN!`Se?cPeeO>OOTh^M1xI;n! z$4zN{$a-=BaO!OmWPgyWInBAypX*8bdJaN^rj4YH$#w%`g#>b10yD3GvgA*=G|>kf zIliTeB=^k|ulH!XXF=5o+O9>wH}G-RIrYQ>5>=o8p7 zuPMtN$0CN^`{q{#79W%cCu}0K%K-%uq$nL()4UR*rwPxp0%k{(T|gko zdu8Woggyziz+akfPU{8SB$P#l^U=)A$r(HLurSr39pjQUQG?b={g6|2ZE=RWu9BT& zNvesirQhKSvS^4+*VTK>e1K?E!7nAqGABv_s_9!(cyKW1R8$iKQ;bejnYgN zt3R8_g{705V9|^fy$N9~xp|s+yfGBbBh@ua@OL{* zh{-^rY#k?4xt;WwN7f1WyL=%TLJo00S!zsQN%Wz@%kLt!V2eWnQs|g<3~)@pkFo&0 z_n2#rVh(FA3T!~v_YFJ$ZYBlko4oa!ZP?~HC7w-r|6pro>Ost^`>>5 z`clicH|vG9a;;x-ecl5HnpT zq~+gv>v)3IN-ll2MzsvW514mYrDt=+TP-ffv+J;?GO?NGOu8v>{jo0FRdAo?n`^qD zBZY3kg3epleC~^MWcqX-NE4-<2&hCIQ3)S{AuRN;qy%<@EXp*$W1T3KJSo8D`Z3<= zAv{QD#8CMcxyF|nTQrI_$!W&!etg~&`5-F?aTG7cBA|_v`4MF{6kI||7&b>bpIV?9 zFC6kHPVBQlHB0Htfg(4~= z3JwCWR+wvuD+$Ye*HSvy|3;*-(qTlAI4N6g1Q#?%aG@pkV_&$sh|IU3QM4&Kj>75f_ZQEr>n5f?e~(l)o^wk_H$QDb7OY++Jw zia$V!-1`c3jxsm%ltbEd6Vz65p;V5@h`2^TQmV$7r=LJbC`rO(QAcCxu^Zdj0ZP6B z&tOj|6tOZ+#+YJF8lMEQiCzNE5Ix02KC_8wtf)JGG#MIA9n?J0>JVWuXT?=SY4zw zEqkY!KFabug1#sYQaY+|jd-6;GIOW5{}t(rfxv0?LCGX^?i-O zK|*Pi#EB#m0St^H0nh{QfnlNKky(b~fU+N{mQ7TIKaR9;GRv)|i>v_v{J<~|5W_Z6 zO-JDry@Ma6M;DCFlhHxPRYAv$0gk#P5#Kf%{~-fjmq&5S10nMLPa$Ie+pqpWy&n*o5h{!9fvknhAVQ2(vsZ2c{c#v2P$Mx;L`Dn)TCZ|MLtJc-P0a)? zRv!xO;Q}i=?9f#@6S-GjOai`mMk!X>wI_-AQJH?w3pH&YAns ze8CDcK!3m%n`H&uPP0k+u5g=oi58-Dv~^pBX59rondn{54{!&h$9~@NGt<}SlKe`< z{;qq%!=G#48=J9^BKTzEwQz(b8zc4vzkbL00~do=_jvK#t9sPS=W=bHwoSI{;*Rq* z+{&FFO*R^IMJJZ6^@E_|i_1r23!?_70Fp3{T1ufWH=xG(CvQ*&jVysBokE@fKf@)W zRI((BxVVXO;h+$xs5l~$XyjiAj~lR`=cGPb%)UXvs6j~v1wnuPGug(O|1N0_#Lw$L z#gF6viyw%Z1+pR-GCE4XuimRYMceP-^lXZ_UK0}|U!=CpqHRNii}?=f6W(b{tBJPWbM!U4!%JY(A0 z&taP_;AsdT8^S4QO+SWLg>)ez&4QQ*!+e3DPShbyD&`PMDLa=(szxVMu&S2eBj$l{ z9q|o9M`7yKwuyYiszt==iWKk>+$k0jO!DT?8se%YVKhnWVgLPfG>iHXWemhk_&>#s z^KaaGfXx>qpx*&;`}kkD8M5dq5QmB7&ww@ysnaCU=2k-g%khqSVwmK5`eA!yO*hhg z?A+?O^)@dFKHMuN)sp2C8tI5B4vN9Sg<+AngV%5<1YV-6_ zzkrh#Ud+1(os|oz0@Et^?qX%iKbDCF0JAuD;_M) zGvTfxT}fW^a+ZN8qyxMBVcqA_I;QY)=?WNU8AFAx5HwI=!G@`?&K0YNF9ZeLHSob% z4!N^AuOivJmMw47#t=Od#X#nd@ktPID6-BT>2RA06 zDW{Oq=qn3{xuI%`BMK^S)Dmj2OpB*ps4x1#3egLlb+0Kl)tGhG=|Id+FaE55md@$y zei4eqd9TT4u&u(PGvy}oYYpL|10z5t&=SVrAx3BH!6sYb+0IVLHf=uub9l$no)vna ztC^_c-G<_F5jxcZ61gGzr#Utd^Fh&kBX&@s6Sosf!k`8Fr(Vs6l{Q$J8C)>(=zUKc z-;p!Gnq72&l7mSUM*fE55GqnA zrO3H=z=a_DZ6(eo_7Tmt1iq9p3fmXAwzgcOi1qiL}NtB0pZ|bC|MHoiV5z~dHt|F-`q!1qg}!v7D?C? zznSl*`scAngIPZ3p8K%MuQ|9kv9c7So{nEn#Ay45-ms6C4b^Qh+K?x?J`Qj-j)(1k zN`IXuXd8-qv9;dZvNej~j(Fz91nrbOk1F-k6FB!24tZM)u##{0hq}zXs%J+-;{CYn z1njBERS?>P1W2vnfjqS##?SjVkuumVH=%<4R9`*6=UXdV(^dsbAP5{n)7U5a*iC89>6S%Y)6<@)(57l_bbnoY$(o})=V~=5boET6C zbg^&IASR{MG&diMF^7@NPnw~^nEj}e1X4pt<3OkqE2ptwY%#ObEI;EUF8(Q&8$lUr zv;z->^FK1+|0f6H?^4ijZOGrFWmz)4MK&8=_h>o|iGFzQ&S&@Q@22rA+4tZ%YU^XzBNFD7 zOSgr`t`lB8FfhNPYtvb2S6G2-oN$x$Vb;%JWZ8+;Z68m`68?hl*pHYOz#mOx#}oyz zw(q+4`02ZGf()Nj8rk^AlG9VUi)qQgx=;|#R&iygiRAHnknmFaSeA0wg7K!iuscYR zJxNKeTdwQK@1~Q`*{HnYC$L)7OaUmWsiAnIEUKYNH88a{qhb5+ly83?f#$9s9#nxy z+5g9``*-Q+FPe8c2csm0guf7Orxs{W02dK2p@4)xhX@FCz)D*!dsyLCUDFQAMySz}x5-rf`SDHo%t#bn|$~ zmIbQ4zZD~kYd%D6w>QCU(g&*~B>GZB_(8CLQvTKRXA(h{<+55)g>>#W$kb8Bb+i}| zluyi9X0w=ZbBDR?iIPb7^uah1*#R!t?(A@)-fYeZA|!CI1XxTJCXGVAbixBadE!VG zH+;)Q{ocE53)&0cYzvicq76*i8NYp^uUUaR{Sq(NBpU{W&< z_HaUiapw`tafEopQf(~aWH3$mvDH#F23bHxxWLVv)*w#IF15~N@A#vo>n$|8*CDh? zTk3n%i1<;-%zm(&MFbpntx1dor;rC2bD@$HDkXY$&)h0!1rkoblSY1pTp?V6V$M1~ z@q=2%4*Kt0NueFREe{Ag^MCB1e+vvN{_Bw<4U4W_I6yBVAi<%}=|4JP&LhDSYi?+` z*In5V!B%QBM+*sj|BLMY78hZXi(}>(IZKaWuW$3%ao@V&%}V^(2NVMbv>NRW=x z9RV(#vt-y2E%uON$A1@zOC0(a9xE1{)U9#%wE4zzkCoR>+x6X=MMxGay5cWNNdk=P z{fT$;zMvvD%-B}PQYTptdV4V8x5efTf$wj(9ie(4Aps9QdLq12@k$bamG9?p))KZe zT{Np0N^FyKT=->?SY_pA7QZZob`x_uqi1!xOl78s=*2$6KeJ^z8RRkj>;f;s!_{cTVB&-mei1O@pC+bIH#6e~B)H;HYK1mYj+3I3alw|p>tP$CUZq&X-#?5`}x{6$zPRbjEd?*MHy7&v?|Mtq|2V})E?2_ib#-fpHOxQZT@SkZU^N?TSC zFJUCQMN6hpw9~{@-l^Kk+`fxSoJ)k4lURo?nmL#O&#|_8h_!2Rucif;{@jD&eRzVcX7~-ZemOanN?JPl?eADEznAoEKDuf9- zX)%X>sp<(Djn4?DI{q2XFzx1aU|7hon1Oz};R-{92Dzi*HB!PN@`!j(iZJGpWGLR- z0YgeYv^_wZdIf6**0jp^!%xUZvXCGek!>W?T8aU19cbIDKT-fMBBMnXK=e5NWAy&2 z&V2j5!$kp!7ZWCzNI+2J<3M1j#goJn5`Q3tTE8VWHrDf2f`uorc{?kqRPcuO9vod6 ziOBc772~*;9%xeZEjo21Ykh6K<8Uo~S+A?>{X~82iBFtu|ZyUK3hKt zS!afid13uZwhrsxtG&yE9ntn#=|DE6WUaet<3H&h%Q@rCSKzB+P22rZN1)ZdZI{8X zIJ>zgDRI(&??uz&`?I+H3?aEy7dR9*H^I7FK!1u88EG9XG{u?VqRf8qu~X4=<)s{_ z{CBEZ)OXbh=5?8vO1qMXfaY3VGpX}P%Ip4kc*8YBk z2!lcP&Pzq6FXbxnRy>r&I~qDw42liXdB15bvO4sb2KNtO7h-F~O2m<93Ay>g;D?U; zip7Z*KkXulMqu-9O`*K=$D&^jpr=W^*AF8U4JtG}l8RT!gNvY(wdCSZ zgOUyq0jnr&QY|HW7yP!%W9l>0VM@)$gc|YLrq+lIdPjww&(ShS;K( z({vkF%i$zClHX!BnUY{%6j{_F=^N_lXI|!u3d$KI zC7w12Bb>=D*j_}3RY>Mg6m0kJ0wHPpbPdEr^WwRVD^TF%Tx*s&aqw7I*4siyDz>A~ zmyah1r=aF24%9O;PO&sGJBy?sir_{X()hTzug$D#wPRZ13L{t;BF#Eys2(-?3*Enn z^!Tz`8U9SOP}$Y$ho6XJd>1{nW5j$6*s2E(hgNChVzYAgEWe|C@0oztd|beBAHHybb3A z?7=EWSpKR|nYR?p$QLQ4y?r=h;b+~~H;bXEAjc!*-iiWy7RTS%hz^E1-I-vtGFJFp zJOheEvU*>xqz=3*rS5w*VeYvYzJj9`k-a7sMR^AcU7|Ep$bn719rluzjFkW!nZ#_+ zs*|4o0ebzeeK>#Bz_tJD*z|8&D_%uk5nUODe_^Sfq2>#*3gm$(odf(h)+xAje6+RS zN+}e0F!Uy4H&>%sr|#n>*&9YcM6}`cz;O+b_|G)KGYpcy$m3z7X7jw5z7*UF1n~-1 zhn_?_MJnLYa=!9I5MOr{&T>-j_qU~6Qqxb{_Rbnki-er=)f$S6r2Kk!g@OE)o%v5u zv}9QE)(Uyr+bp1Y3yA2AzM;8pCWHpiO`8*)>%3gdUjjG8k%hWqCHG7UcND96DXZ}E zZuZG~_2?gmX2q;q-_cz)h$^MXfrN2%_Z8SdCqV@J_BU4Jclv_*+~E`@?~-En1qL7b zpUPP1Jxa9Mo~lJ{i($jLK4?-XBS3+px-bv<};ME#`9ZKUl&>=Ma4Lxsr_jMK=^m!+Gbc{;R=IS;_P9(*cB`=+Ih-QL9gNwr*(m&^-aW?X{}bwo-OCvYZDC`1X(m?pl8fsq3*>^Tup7{|XG)_B)m z*xWdKn>dyYl|qCNO80e?RSuT_Q+6#|#YAu?TQW^yFZ3b9$GEWs?F-rX?c>?<8DRw( z+uNG8c})C_Ddx$oJE29n_s|EcNT?^}4E`MGjej?Ck1|i6D9-jNvm|)lnoN_xBXl@$ zWHfeTMV$5>zpaLr@YL=77L8u*ox3Ve@`$Zcq~)~tJDCi zFwP=#squ;!UU|6l3KkXnl+kYhg9O8r@f3iyIn2%ZATNntBmAa#_AxJm$uZwGBF4iG ztHxo)DQ80Q_gR4}dQ^K{9$Q_3-$Z)4LfAKvF;Cf#J)|N_t~&~2 zo0-I6a}wKVDZlR{Q%_xo5-M~b#r_9S#^*IPqS<#@upzX1 znj_A}HF_U)wWx=miPQ}5iZr#(65WhC0NAiDmjtG>d3hLe!SaQ2m6u>Wo|O1TO8482 zCS}#4DbwUb?PJi@_6tEpg_uWfiPaoa+R?7|tg>IwcNqmqouLNW`^JH;a8o1#)UuCq zJMVFQl6SVz1;%=Q;-$>vW9iI6wE4+pixtrS&?+rflRR!fL$?0chWroDmSU*5V1zMJ z*b->2Zw&4(_rX@~u_n&71Bbx%%L+Y?LgK>k_p)+roi)4#@uV2J&kppJDDI3dya+%d zwf*SpOhd&HKhKZPw>L;5Xn#a|L|r^yJR)l^6>-=W-k2=a#I6KZ8x9maD4h;VBV2eO zva>J(8k}>E{R-zcEMt`)r3hQH&ock@rse*DA%ID*Q&KD2h|qb;WA2;?b?K*Wwx;s- zxR)a8pQ^AuZn)p9$m_=??pQA;UTZA^kR}YKXZbS7E!^~NzSIZn0XX;02iY^*0>&d) z!cGk9$YCjj-YG^aO&C>vxRoWSr%WPTQD}k$y%{Ic`z+gGMR9+GD5B+H@IBjvNrWq5 zm(!)^agm@xZC91dWm7Ey3t4s^A6!2;dtm{GZr^U*q-G^qe+KrixzJ6AV@5fd_3{X$ zJIG|oeq=wu*35TPnUR|oCBx5{r;N;L`QTi!W_UlteUlKiCv32bzQoF@WprLNYv_0E zUH*)ax#X)h{8sPn<}7HL;hl`Bdg(7-w(<#@?*#e>js2PgdJQ2%eJ=Og1S7NS_+vdB z*Db(jWI_EWm`1ZiEOX<;92h+%$s-Ih{jYzbIY}{?$so`#g8tiR&iWs^E$MG6A4s>A z85JQYp$=1EYSGcx z7ngF8BToBo7;gWvxD7HHFm0NR+s;I{IEj2J{ z5#_G>nBqg>?+c`MUjjr|v=P|5^+WiRRZpH&kn<-8#5!4uUM%&gbtZ#n44DC9=y=KV zoAPLzvYPi2ax@Ks>bw$>jbF*cFY^v$y_Lgr$Y(W5xos!YuIpKg)jnA0RO6zp1o* zl{p2Vax4D=BSV@pyiOw~ywtD z$k;(prtFbd5@BWyJUuUZU2IjH38O^Iz>0pe`%gF7)+=^)TH;6MSMKy9m3?gt_;j3f z-5Pl+r2A}we2NDdzXx$K5hmQ8cZ$V3u!i`URCd-;M>mg@FofEf{?`$!ZsJMyU$lca zTdyp&hFn$jofdSbG`Lu$D!lT#iar~R`3Tmu5r=Nx5%DLGbrt+*#f8;aqC@ipvEK(( z>sTYo1SO$6SzK@yT-hs-C%1J8ZL?K0+B=Oa4@#6QUewdNF8ouiZO!5sd1~dLZnxEI zrqw`5wX20()Pv0!nr)*s2tBL1gjcctSi;~BJV4wIoI>be!=}; z@6iA7Z7TXq;D3F?#2vA^x{o%-p5IPc5tAt%8kSUyxF>#NfOAcI)t){erjYa+6FDG= znDU|(jUq()aEkwNlgHKau&(ZlE z`nOt7d!23trSG{Dwt5ZS4`odC=2pbEKC|tU&&29$V898yjtw95u{P(ccVjKXv+A&V z(ld>91cFgt-TSEVv4bc3J=0Q*hq09@$Ro}Ts}baw?_fuhmD6;;V8$A*L|8;P>HA|w zWN)?M90n+k)ukW5>M_k1O@u2QrO+uXiOH@Au=swqQsqO5o-VkrsLABLxM{Mb-G8Ix zD;pXt7fF60Q}CaK%#b^U`nD83M<5!}vu9==Wt*t2)hX$@gL?So4hO)hLd-)sVbrP< z&gUjrbOc3f@1AuXH1vn-_nLB)aY&Ma1X}6~M6<~sn9YAqSJw0obFo1C4*%D8=Kt_^ zDgP8xjehDT$<(Q!6w-tkg;=Th8L%5fL8He>lsuN%eJiz-CZ_UZKv&)yK;DjIRj`fY zS~0VD>1O+#6(qGc{n2`CB_90?oNuq$|!3&sXs3Q7l-#|>{M$sCjrcb zm$R|jl&@Jm$y{pDgBX{tE#m-bO6m8&aiu8|p#WOJGm5>V={rMlj%t-gp`bGxg57AV zo^^NuwVBaoEGY4Vp5l?_RYr&U^FyN$k=@--_2ATMEdC11z)yr zA8DYI=O+ziKPGB8w1car$Q|-(rr=d178;ZL?Kf2sj)af0c0# zI8Dzv08RK;>E^!+-~T4>;#JlZ(3LUtEp>RA3G8FBhvwm0ZL*8mzJa1gF~uWOpu|B* zy?F5QpHMEa{nV3t!VnA{BD?-8=N0uTC%u@tlsfhMJBM%KWLNL2JNP!g9=bbvE-)8@ zh^`CIoV0v31|}*jsyvtyjzFZ7^|!o}XF}_+(j>Gb0y81gYx)|lhM=Ko`dUJBOJN&V zw7d^EHoK14MzxOEdtg>tO|Z{v*;%5mBdN%>dT^%d$7f+JmZ&S$nH5PNEOqp2-yYce<}1-Mvz0q> zjPWRAdktOr>?T1dDjclvqj4IbwszNr;oPR+9JFWTihabyT@%9D0&H8pzR#PRX`hn* zQ7M0tfgIga>Prd@M5`g!xY$i_3!|gMml`83Dr<`eW4C80R@Lb3@Y=Va@MJgF)WH z(!=rn!}_aj6+X@FR4OO~6pNFiQ7v-CvrQ@br+=#J2q;c+8-PB*{J)0j|3gXSe@5CV z|E*vL9+VbGmekOHFvXZ4HxX&f>WU}r7NIDi^fru}sGdr2T9*kFac8n& zyt?|h*@tVfC1|h(LSVWu+#HLEUBkF^>cqSygjpX+bxH*G1VO$2gVZiOc`gxQ`xIDD# z4F+Y1hKe@UjiM>nbaao8TaqM-RttCZGVh|5v_}55xXGVbtsQBCNv5s zjeZW7Wu2B|@f_1vg~;$$Oecu(-Kh7;4F@Sm@$c=ifSu2V0=Vu_|LflSKdigSzv>76 z|8n9Qs%`fqL>Q;mnEWvqF_8tk;-p?WsU+!c^zoQ4EpiTIf19hG46e@sel3pK`W8O| z1^PhrOi+xt`VE2t@R4*v+DS0%#8w70!n9`5&rNf;krXds>uPHAexICi2*)3J3x9(p z&C$|j7%8i&E+*qf_LGRXADe)QT=gr@^s{$QKFgf1jS25dz4qv(CU__2&hT^*Ia=+( z)yI1+bv$>8V5>j7NnErd$p?LSn(^J;0H>XSbx4pGJ0~odE+RP-<4`gHb~tXo78;)} zDM?q`cuAlBx=Mu_c;%HjW)<~_#7uno=OB<_8^HBfq*fldmj81M`#-Fs>A%)7K6wVH z@QO0>!+w5bq|$!zr9ub7xAMf89*zhD`B3e+Na=3dUOIyljf*l`WNReXQnJ$oTVz$X9q{yxqWU_Rz)yVXVD?XOZN_%4{ zUFZ^Tr)gzdS1$a*p8JpIxqmq?Rc|F=V0d}$zx3N0Asl#N zRKZ@RW`?SjHe*v%mBPBsm|8JhDBNO$|6DkLiEko5h+&>0-cC4PE=xojACi*Os4|07 zE=~5Kz{z(|(I}}E>ON@|RB|h)=_PHULuwMR#B-A@+3?s@u03O7zSBJZO&yn4rxd;( z*H)!Fl9Bg-LEmD4pnDsmVC$%m^!^WAU`koEQUlt^`oHyevwzzuWlI%J8DsQ^X23Zl zmY%Tu)YKwe8(_W_Bsu<@am1q5l63`iL=X&g6R7=&AibZ{NI8-3aUyV7OS8P=(na2k z=Z~X2e$R(ZpmgLZUyyuHl2)=-x);s06d7$3CoGdPTKhI1;*Xvc7t z<+=p}^93^&uB@=gR~SNP!bfM#QPr=rO~We|r8w3S5lw?*tRA>Lc5q&3^pRi-(KpKP zuKcTYkH4kQTDMNx7AP6VKpB{DJ4}9Z5(PH3INJzE3dwG^%d#=(Ibi7aHTm!%FS(jS~>IJOX)M>F8Vng^r zm)j@%Y^_k{95rAtpK;V~~cEh4wEsuzf5?JKcH3^8-?i7^k6Ok{mj_{@6_X zYOTT5^wj&=)ir4|b+bA@#L{*0BS2c`rL#(B5X)&EE7;bU zZv>2Pf@f6J!BYgzcY@C(q|LdAtVRMJu|*dInPDj!E@_c*+B2|)5=S(xy+0I)sH&aW zTYm%V@7YmfOrVoR{jWE)|6%6$|65&W{-1`rcnw`ud~=)t0W_@?#seiC6d5ro4hUP3 zV4Jc!ng=1o_I4#m#f@`^)Y(Sa7U^6su$nrZ#9oTim74tsX9+0gJ@HZ7cks<8O@b}1 zZp5mSEDMW5|3c5L!AJfrzV7F}!mSHXoIyfZYgk;^WeUB_tAemcNCjdCt zG|QCtY?vs5B(A}g5CCV8B|d+Lf|&=o-vr@%7Hhtbnx;?JOu56|Gsy>dv(u{{Ywlt1l;qMc(oL)|IRmc3y)WI$E1hKqurIBV& zwTE$!YGDRPV6-Q0t%GJyRxkM)6U)r+XXh5P-{cjcTX1i1QIv@l(Awd0^cXBZ&G|V< zXQe;H4|33C=p-22Nb_ZISX{cnM6oA3NSqjy^1XA;DasTy%ktwHPi=g5gOS*}%xPKj zZQLP=4v!|F!BBtc!I{U2@p4s%XQav~D25+q70|B*#FV%rEXDdR(wy=ba8+v{*IzW` ze(yJymqg#^Wt{z5MvbApXN=4du9!Uq^@Dni>PNp}5*D?8Aw>M^vJEyvT-CM}DMwoI5q) z_XgbE67M^oP5W}(b*OnBXvr^$6BS6m&mYDqr3rR(FQhu}C^~aOy(phBU$UV?LmrQ{ z^?#P$t0u2{$!NB+S)?6`>Xp+=n4&K%pi-JvUU%N2x(q|=?3&kkJQSj=q&F(e3+XuL z@CLVk7SP9^s9f|#F|u_@f!j$e$N;`o^#Vs(1<|LIlIeC8{mf~RiFuiCIdi6rXYM8J zMX?I9vfW!I@dwp&qxFjIq0@dn)&}3`9oYGD2OTJWjD6J*Y*?x=g*sjFI3GRp@5NnRv;UUqP}9w^bF++>3*r~dn>5wc(RBax z3FzCW8Z`8=y%{)My4}qyC|}p5CAhg1t=J=c4li90>ue?BwAPJE`Ji=&4cI@?`xuh-Zk$ce*@ij1NEr5;H;3Hi+n3v> z7kC+cQtZ;FZX66mabAChN|;f1fBsYRz%ea>0@OAt^F_e`Wek#Y3o|F#b24*B+N?5#AvVA~*#_TyrwIu|b z9Tsf-V$1*Y-p@2hfqa1fpdXa z^GvvZIwkCY4N^u-B53YPZ9@!l58?v#JC1M}S@+Sb2BpCMbWAX3_cO{d>zQ^GkWA1F z;ta+^@ETEkBQG(<^Nz?x04l_~P3<8KA`I3hh<`P?>Z#z(SkX0^*@sOP9WF3&%}swO0Ed`!Uk!bTd&H}qVUBx(@(ZD)Z1EHT-ztt zbmA9@j6-!J+17Y1#S@^81y_m0UDh zY(2_8KH{?LbZ&ZGS`@kc_Mbz`m#w%Jy?acJzb10vOmq#j7RYVOSXmgJP1$YKt(af> z-^qlFQ9+pew8yfV;VVZ&Q3ZQRv!~~B9M_Tm1<@74sc1yvCwsgXQ71%l5x&rDqI!SC zUMlqR83WeKM}QuzHfcBDT%DKv@oAb8kSrm+JvN=Md`WtSk6eK$40%;T)p5X z|BHA`JzRDB41CsVRva|o*yZXx#qq@Bs`lm&>zY|g14N9+Lb!M)A_S2NyMi+QDyeB} zu;>VHM7$I@Kf-H#;>t!p=mRod6O@mjmkVtz*=0o{sSMGqW9hIZg8jFd6|pq{6)%?5 z*%L1k*KBVv`Om3m!EAlC3^r3W%FcuVDpQuErtje_iLU~tD~^53Phl6AR-Zys{6qUr zZs3xFrr)w#F=*C)k=a7A@_t&|R{*O1z&RG)Wy(LF1o~K0-9Jm`%Y8)fgJP-~?Y(}C zwOu;`f0$%<+}&}!Y^BshP`c?yRTczcqOX9U{5i~OB}-R=sjd%LBCO&pZroE`Y)84o z7JY#NKY+x)ris3ZC>c}J7iBp>e=(%UZTjp34gc0ykM%i?uqMXB*g(z^` z>~TlI4r`0U?4!diXzN+>7P&F!-t^ab37N=+U-Kjq3Pw~*JL!DHUW)hG_-M9iC|#m8 ze-`Bys04i3l`C0LEgoCL>Urf!+B=54jfOz;IU&%ua18H-C^^s&FzOQ3a-2;WK+1!q zo{@^Pek42uxxt(#B;g^0n;#7g;9-zQYu1}LV&9lRx!nsHs{06l(KT7mIKcjkxSr-C z_5^{@p7(!+_W#3Ntp5jb{VN)l=|LN*jm~Y}%<|FYY$;4~I@RJ}e)A%zUq? zO8~W>u7!uE$KQvdCsVKU1A16e+r$O|8f5=9xB_h_V88_F!4>*7JoJ5T;A4Ngg|Mf8 z;E4N4587~ln-SV@cUzY5jSQN}!R<-~n#uJ_0eb7twlBfkAEXcM z$Xyp2K0=vXQEN{cqDYr~(a!Or^>d}oq8oa(&9WPZ^h@>Ubh;lh2bwiKk_XF`>m@h- zbdS~R6)yS*y>yqV-ajVZ>9!hfK+~bsh}68L4k9L?)dPeMjMF96h}6C14uIdJ4kFb9 zQYRcWc;eh+CmhwE?dg8#A9z;2DWq?e-E^ye0IwxCo>gxfbb*NzTQxV2Rd4TfKQs@3 z*Qg1>Z#T%*ep&~T>H$9{1WRv_Yu-T91uJhN)jk?0h?Sp9=mO;q5^LUI(}`7|CDlGk zCkj=b7w81*Z!Fb5Y9|D%Z_w!kt8R|eK6)k;tKM2CJ}YkotKMelK4T|7t8ac(yZP9%uPJHskXMNJLroJk1YER0bRyU7py!df;rhUK!g*Qv%zjK1*MkggQ z!y9vofC31@I$>^64#^pWXvAnlw4xeej9Eh9jbQ;QVX-JNs2QXTl3Kw^A&qDQ`SK=r zY^(dQ*+6PsQ{Z0YsjEsqL5yDW%rN~icN$;5XC;>+lXU7eBX5jvW zJ3kbflij(;sa}k!SLFhc`*To{xW}=uoI(l$%`5>e!Nl25DvE|h?{EBG)?)Q|Wp;xH~y9MNqUI1wxnP7y{CA`u=DND)c^UDz)e zTa+cTT2ZaUMo?pN09Dve7+sWhGQBt_SU?#}CaD_vBFQ3|ooJ=xNMKf@EH4sK5n9{+%}UYJ4aET~?}|aG`SwW2whN zBKNq#lzy}mCg2wgKg=?T7s|sNb>2`c4>A7*1+NGb*6VSq!h9l+p#OyQ!$L*AS&+aX z1tpmonG}ofwk|nTD zA$qr`;PORhqs>Zl+4zF@{Db$!IxG{lFX~D?OcSLq@(Mhxko1jUCsVQb zUo5W_t`6e8;&;pLJ)eW)8TMP+^n?(Kbr9|-gmt4_NIancB2kGXpTGe0FoNLQ2Y8O= zh6_&z=OuWKmelM5Lwzw<^6`eF4&oi?JD3nw&V=n9M9&UF07ULtM5$iTDlU?Hd#R3O z{?cny52?M9b7DNf!Hd}^ZHl~MEX$^0Z9C@-J`RDAkK*e@()(2IL~Q0qup584odvBo zgv043ThzXq>)Z1+yibDHsu97NzLM+A)iw4HNRO70A7dADPnj$6c%Q7V$s<1ief8H3 z&7|>x@x7{hTSAEbvHBI)j;0rU=Y)8ljC{4%mpdI>mRweEk=(P1jZdZzjPajg{-S$= z!(D|y7yg+mWG1Bvna-}3~ z8@q+~p%EX!3wCp@v z838m4=W5y(o`p292PXOK!CQ87MokWLB29L4ftjT=$gi@haGj#6F&*W!@T>Sa%~6UA zX~XA&In5B~GTLyr>Wp9~=_V+8z@E+$hDcmm`bI5)D~CCy%7zrpa2KmbVR@P<5~4zt zm{xcrUQtZ1rs`7Tqt%2?-X*VHJCQ4XQWvT*I>6!qU4C_t$cl&Xf};+1y#N?bwd)iC@ixUn1O3FGcTduhsO^vEVFcK zZ07wIS+e$45H$BaJf#?;dKpIiUa7U2bDMbmFxn@mr$1ty1dW98J1G(reGN1;ct8X7 zDVGRhkpVbP<|_kv@=z4w|x$Z-#dRK0Pl; z)*8qAFnP>rLdA_eNLNL zQz$sF?xE@UBB0#2927~)9Zw`804eYshRg+jwf&Luvthm*fj9%c?qhVZsLObmxG0Y+ zq$)~5>)eh2I%d-eKfZ0k!qfWX8m9CS_bPu1Ynjd&OW?KA{}gJ$w)Y+nJE(!hCn{V< zk8VFP*a$?a#lyu`Fq7j3DQ##fGWEf+NM&{VQXAMEKvEvr(~&<>u|#K#E{?rDLsCis zKWRNB_kB$qu>(i6u6XwN@>j3uW)LF-WwUwn1r-eP$Xc&!#RfBU48N{i_td_ab0a2t z6{i9FU{3J@_?*wXe^aAT#!{ZqIlM2_>$`zlyn$;^I%W1l?W|CVAQ->wUS&R+qXg4z z(5)x6Z}cgsf8!PmqIx^n=^tf9HN`u!e4!T!I~c@~;&J^RCxXuLer@U#O3L=v6}P?N zwgMp|Vgf!B7uS&{xI}&hQE3sV%}$RV0R9*Hrj}@oN&1To6Q6kLr}k}@K697)I8NE| zrSG%951njtMQ*=${G?fZ`r(eZ!b+JgFWhXK zMR9l!Sq5;f+>G*2=;eG;g$XY<`ugbSgWeKmSKDL0q-5S5c4ps^eo?#Y-3*i=@6F(S zZ$U_7JT_#m6Ab(M%mYevCMNX3!Tl>pkGG9olxd@U>n{vvwkSo5Lq6TPYR?pL*cdFs z>-J~E8-VfvM?}h8I~Yz+)-`y~B7I#LReU@uEBc>`>MJUY+bbF??2Uy#Hr&b=+jlkL+?vJ&pLNG+nr#LzQP>U>!rEqQqWk!vsCSVv6a;L;Hv#Pq>Rm*;NiswG|PcYOQx!mu?+U-o@!Doqckeq~e!;KvJa+vE%o z<-}X{f>P;vuGCC^=`6=>e-hq+d=)&0eZ7yOHxmn21i4hY05c^dfEdsd=0^i1_qfM1 zzH--{(ug0!sz)IzUA}`cXDr%H`#?I`rcTKZd8`EC(KF^wZZb{n<+6j&FG!+q8rA>k zLs=B)q>-(Fpn(x%d##4>Uv0-g#VX?2bqTO7Vkb5<(`-`2U zeXYaRoa(Zk{({!>g4(ijZ(UbOS4C$R?9-vF4SFk{qV6ncZ@ZaQrCU%cNCSOAp|MJ( z%SvCp==-*|{@fMH^mK(J|7O4xV#K?!q8E%Gtq)(8TBm&|d*mtW_X=B2{3}h1UE;eT zvaYMua>g?e{|^+OlZ$Dn%8^GsO=7F{L}deRPMq*`!mUW!ien0WC0BDh-i897BV5S! ztn1zx_>NiM)fmuj9XcbsNknlz^-MLQEK#0XkgkxQyyFEh*W zKz?m>co;0Ty@njGH-$T66vLaZa<2!FeNc-_fE_I-^cp_*Qys)ddZU73J+n#uqSss3h6 zNtO;b6cfhWUI!G!Y}oV1|H}W_#z!;WE|SUF_%7DBf*v2?9Ksolw@$~pPPDV0vu_|h z-XrHJCWB>gB}yZsmpbfEn-U-UqCzq0BnhSXhUGYi0=6P}FPg;q{0kB6MOu&=@`#OA z(K!OfD1>!EfGzyk1+K79#LxJ(I+MNTniz}%VuldgM0Am#v_C?Lwyd7RZredt+2AmX z&%9{VpBJXW_izS6#lk-r89~L)&5yf~HFk&^gw`Uda*c@7B-E*@@wvydC&jrf3<)Bt8mV%LCq%tw*tWp*B>CVM5 zVNhA*TI4}_bMMkp2z=b~>;M%n0voFiXW1)!)??{+Y^~GrOGYDGY%c;Vg!*xVL|WRe z*+0<5J>NYZK^;vzZ>3=iXtf2}x|84UR3h374Nk)?+j{F4v^3;{E$QCXfS*4xyp|M# zEjNG{#bC=p3@=XLw}pLK7RY-wd1Kn@@r8XbW zWY@TMImu+ixHhN4G%IB8mE3f*qYKvMK11KQ_T9L)59w)(@7Jb=>HZB%!``hvpZ-2x z5b7Fz4x7aUK`TST<^}i#|yc$`V&mVGyzc>cS!g`nmHoGd|y@Pj{FF%8YGlZu!Z8QvQ&;>GX(#9J)$ z#rsQv_F4{vFB6|cf?4?*6X(_P6pRtk$$1b5O^-~Al-{X@;BD>Hj1Sxb zvjxeugF(MB2Hw{ArP;R>mEckQMa1!e*=R0ML)jH%JtEb)oNpAx=L9tEXLB?V1}gD~ zdwtJwmu$a`H8`S?;heN?=aiabGZQ@c{bmzAG4#ri8nMXdK zY*l>6?^V8D=FrfF5a1xn>I`XMnZ-%XCxxlFNnujAz<@eTtxeg{UMY9sQagMSeX`Dp zN)<{NT0=%cse(r;{&0Ou_A%}@$r#=(TW}1*PEn-mYGB;wxZ=!nDa-k9lHxYmUJ_l&%XL3XMOcTXLe<)$@A~6kLDL^Q+9cQrUrd(8`R)9Vqab2`V_p zqmb&%vl<}E>o!+{93awd;G|zMC8xa0|8ORQVY}wk$2jktwTIq^&Dz9bx`7iY+=aNS z9Q_Jf4jHNQPV##_sWB=ow4BXMCvBnB4*XdNqD9Hk%QSgtm208aPRgCw)l9#X7mEWB zVa@u5*`q)@Nuu*-A~I4loplVPg*uM?*arO3r&zJacF=+&_UVIx7}reG<>MJ^ zqjl3JiMhzErkN0H!PcQ{b&qB~^ox|5t_hcz$18cj&UK1tXjofT~!W%AXasa3dXF&UP{15{)6Z6F-{^bDK`ftF)xSAvbNAXmqZ z8BrH1BLoe}r}*%SZ+jixrsnYs^lnxub0ueN)<*2D!`aqkjs}UBoRtw~q)0Ube63ZK zA&SZ*+n;f%tPWXWJT8Ox-6Z)Pw29hDhVX-C8Z3)l|VH4xhXdxad6t4;y7D^V+Dl;iZPLv3EyLK4Xv>R{SM3~@3VOKfKz zYxX;Gczo0{&SG6nJR2TS^#i~{yhXWKG!!Q}hRrdI(G`2A#ruPVbnxNf=s=Yui?+z` zF(iN#d^8&N_{gO$ng~unky0s7k6!62>(7G)(x0OZa52rP@96W8=bHVBtCx)l{j@_z z6=}GnPx>MQg-oxs`$)-*W{y#3mg77Y;gd@g4odxqed+ln7bHVkK8aI!adFIx`({Rl zotVmGYD*J0%iwup?Lurelbp`1cEPL-H%N5hQb_g~KcB>>a7!m)b;a)e8&O?x)S6Re zci*+dZIg!IE3Fon+&siL%#UmfmAY_Zc|?jYMjxG;>2M}76?=C-RX_f#f`A4dHL)OU zOmR!m0JuyZkqbESSO9Q-Wzx5iaYg5Eq(G^hZ*uELTq(NQk?%gLe~oXg=r^b0;lT50BR@D7$nA}ej+N3WieN|JuX=?Jdd&c zLXpDCMz+pAf0T>!2*`=fOWIK5i`W%>5Av>Gzc)LhvP*oXK{H537R7fr+JzakkM8z_ z5+>()4lGF~x;d>gizs?}3@8K`-r}q-LlUMX&Q5aChf9v{Hs4ZULl+`1{kX)*Ha+kk zjdJaCi3o^7Goppk(0sOYd34=Z%iHu#Gvm9ljGG5F`n@++2+MQ8tu;W@TnI5PZ}sgB z9kx>=IKvrgMLN0roIp9j6bt^;VlMsf8ex3Mk%g}#i0PHwV;t>X6sjJ)dKR% zbhR>CmbL5@UPSf^?LKpOUovB>@=9--9H%jW@Vz#fAH&>SrV!`(@j1=&D^CiC%m-X; zVgb6UFS~*P*Gz=!ewMa7gTjYx0Y=4Gs>QEV=ZUEW5n)3*hWjgJ?q9oZZ9I0!R4wED z&Zj_i=ZCEH_auZuayF&#toT%>m_b>bubc+ZZI8(4*c3BaJg!hvTKrLTit1V^ zxx4>(Xv{5AQ~PH%>G(N|egCn$3Jl*amFMhi4iVmAC28a=4|EFZxpf zOL44-Bzko*gF*wX{8oZ@^q(wbo)z@VKp{DuL1(W#q;YaasFT5RT%yQ8#bE3YP+-5r z36-X_`?);K1}Xo30=xU0_yex2>SR3gCBc(sUU5Mn0Lw9{{+>fA-rQpWjl5(3nML>9 z(aF(t-{uZhp4_bt*o*>u5l(gpt~(Oy0}6#(P7zs~;Mm0Sh{|jD5GMFcI&Qn)K|kf* zp%70V~4EC!A z05eCSM61<#KpSS1xc9)y=XRd$j)vMr>_gr|sl7ghj43eTEA$S=MaeA%aaiyAA~R)2 z$|?o_S{*0o`V%cYDM{+D@18)frw zXFO@1MUoYopxsF4l7v|}W>2ke^5KWc5M6gf=%GRilCdm&*grVP_%73K*Y}CaJPFBd zANI{*8w4eN{1;Yl_qxsAzqWjM)DTURrOA`hb?TSKj>nsjYMH>WBkgBv@X8!bxbND- z?rAabuQS{!BJ1i>&QLzURg)11DnqKiS)(RvG(E<+5gx-Vv^5@Q)f-=;owbG?syHMh6$)fXZvv`fYxhI6Qn>h&814?JqD%(7c0gbkdTLAKK)(26Uox z9J3DSVcv#`3y2QPW$~t^#GXe)Fs}*-q4YRFAd26BQ)Ej5A>~nyK;^Lswz`V2y~)(k zt@6}!zQO4SjzSkddx6pS9*vkZfsNwltNJ9;cuZwjER1# zQ9fBUIumk|RWzbf0H-!9)NH(zT>@qWa875KREW?7i2Q{tGkuL|@A?qaNpjDdFipSH zO6bFxQv1$Z82E-2oT@%~tWAHyv3&la_3I1UL{}F7xSLnL!9{Q*2G4ZaROy$6g;WD0 zj`33NBkS1R*V9DTLzvhOdujC^e?7`(j|>_cZY;@m$cNO zyHf<=Al=>FB_Z7%f;7@0B_g5-DB#=t*L$z{bAIo8Z|ff8I2`9YbIrBpTx+jA*PQN2 zEjI1YDxNU&l2+*%n}g#xOi?jG5oQMh$gRZlXJd4c=-A)T!aJ-7?Rfj_G36Xy_$r0Y z!s((vdAR?kHVcp1LFk@ukL59$W{w?}?(r=2$t>GTygh-Pvcx*vz zg}1l@RVCKmzlDnKhbZ@wDaMP1b?*4H+3}>jlS#VIBZJfTg&Go z8(RVcr$?K)n$OYCCEsimrRbJdTj#9Vn}Muq1Qpw@r#AX}^^#* z=W*?6!32&di&D-LZkg{oUu}>w5WOssE@P1=39eoy=95Cxd->mKH<0;s-=R!pmI3`k z#q*4BBbD2DGK;K3bbkJIO{6q(!%rv|M>n|1e%x<)E$NULu=5>fDQPEOl;IT1R8l(= z#!C6?32dn6=7J4f%X1-`phnoj7h*(iNw}!US*~|y6Cx+%WXGP4x~}MOGA>c|`ibzd zyk|~)cXx{F%t`$Π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 diff --git a/example/ios/.gitignore b/example/ios/.gitignore new file mode 100644 index 0000000..e96ef60 --- /dev/null +++ b/example/ios/.gitignore @@ -0,0 +1,32 @@ +*.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/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/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 9367d48..6b4c0f7 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable App CFBundleIdentifier diff --git a/example/ios/Podfile b/example/ios/Podfile index 64eddc6..b30a428 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -15,53 +15,72 @@ def parse_KV_file(file, separator='=') if !File.exists? file_abs_path return []; end - pods_ary = [] + generated_key_values = {} skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) { |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - pods_ary.push({:name => podname, :path => podpath}); - else - puts "Invalid plugin specification: #{line}" - end - } - return pods_ary + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values end target 'Runner' do use_frameworks! + use_modular_headers! + + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' + + # Plugin Pods # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock # referring to absolute paths on developers' machines. system('rm -rf .symlinks') system('mkdir -p .symlinks/plugins') - - # Flutter Pods - generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') - if generated_xcode_build_settings.empty? - puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." - end - generated_xcode_build_settings.map { |p| - if p[:name] == 'FLUTTER_FRAMEWORK_DIR' - symlink = File.join('.symlinks', 'flutter') - File.symlink(File.dirname(p[:path]), symlink) - pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) - end - } - - # Plugin Pods plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.map { |p| - symlink = File.join('.symlinks', 'plugins', p[:name]) - File.symlink(p[:path], symlink) - pod p[:name], :path => File.join(symlink, 'ios') - } + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end end +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. +install! 'cocoapods', :disable_input_output_paths => true + post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 581cbd0..3171e65 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,19 +8,18 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3595962B23575428001EA3CF /* UnityFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3595962823575079001EA3CF /* UnityFramework.framework */; }; - 3595962C23575428001EA3CF /* UnityFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3595962823575079001EA3CF /* UnityFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 5F1F17FE81D542008A531ACA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 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 */; }; + CD594D482422DDBE00A1BEDC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6370401A0DA73821417CCDB9 /* Pods_Runner.framework */; }; + CD594D492422DDBE00A1BEDC /* Pods_Runner.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6370401A0DA73821417CCDB9 /* Pods_Runner.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + CD594D6D2423727000A1BEDC /* UnityFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CD594D66242371B500A1BEDC /* UnityFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -32,7 +31,8 @@ files = ( 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, - 3595962C23575428001EA3CF /* UnityFramework.framework in Embed Frameworks */, + CD594D492422DDBE00A1BEDC /* Pods_Runner.framework in Embed Frameworks */, + CD594D6D2423727000A1BEDC /* UnityFramework.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -40,16 +40,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 02AD614365561E5E74EBABC8 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3595962823575079001EA3CF /* UnityFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UnityFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2683EEE9CB1489C7414E73B2 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; - 5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6370401A0DA73821417CCDB9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6947351E2D44768048C30DF9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7CF2CC13018A69343413C424 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; @@ -58,8 +59,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AE2B2FAD9E6F467609AF130E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - BBFDA20C1C79A585B3EBC21F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + CD594D4C2422E03100A1BEDC /* flutter_unity_widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = flutter_unity_widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CD594D66242371B500A1BEDC /* UnityFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UnityFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CD594D692423726700A1BEDC /* flutter_unity_widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = flutter_unity_widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -69,33 +71,34 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, - 5F1F17FE81D542008A531ACA /* Pods_Runner.framework in Frameworks */, - 3595962B23575428001EA3CF /* UnityFramework.framework in Frameworks */, + CD594D482422DDBE00A1BEDC /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1944B714B8EB58E1422F85BA /* Frameworks */ = { + 4AE11B09AD2F4B82D6D6AC1B /* Pods */ = { isa = PBXGroup; children = ( - 3595962823575079001EA3CF /* UnityFramework.framework */, - 5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 6840D3C67BC26A58C6D2559E /* Pods */ = { - isa = PBXGroup; - children = ( - 7CF2CC13018A69343413C424 /* Pods-Runner.debug.xcconfig */, - AE2B2FAD9E6F467609AF130E /* Pods-Runner.release.xcconfig */, - BBFDA20C1C79A585B3EBC21F /* Pods-Runner.profile.xcconfig */, + 2683EEE9CB1489C7414E73B2 /* Pods-Runner.debug.xcconfig */, + 02AD614365561E5E74EBABC8 /* Pods-Runner.release.xcconfig */, + 6947351E2D44768048C30DF9 /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; + 60E50B891F0EF0BEDE1DDFCF /* Frameworks */ = { + isa = PBXGroup; + children = ( + CD594D692423726700A1BEDC /* flutter_unity_widget.framework */, + CD594D66242371B500A1BEDC /* UnityFramework.framework */, + CD594D4C2422E03100A1BEDC /* flutter_unity_widget.framework */, + 6370401A0DA73821417CCDB9 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -115,8 +118,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - 6840D3C67BC26A58C6D2559E /* Pods */, - 1944B714B8EB58E1422F85BA /* Frameworks */, + 4AE11B09AD2F4B82D6D6AC1B /* Pods */, + 60E50B891F0EF0BEDE1DDFCF /* Frameworks */, ); sourceTree = ""; }; @@ -158,14 +161,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - EFAA50626EB4954E5A876416 /* [CP] Check Pods Manifest.lock */, + 37A13ECAFA70364D41752092 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 5F1E28D2CBD3B3A8CBD116AE /* [CP] Embed Pods Frameworks */, + 48BE72B3D6235B90DA8DDC8E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -182,22 +185,21 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = J4X2BS3C4F; - LastSwiftMigration = 0910; + DevelopmentTeam = B9L2XWSJAH; + LastSwiftMigration = 1100; }; }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - English, en, Base, ); @@ -218,7 +220,6 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); @@ -227,55 +228,7 @@ /* 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\" thin"; - }; - 5F1E28D2CBD3B3A8CBD116AE /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", - "${BUILT_PRODUCTS_DIR}/flutter_unity_widget/flutter_unity_widget.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_unity_widget.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 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"; - }; - EFAA50626EB4954E5A876416 /* [CP] Check Pods Manifest.lock */ = { + 37A13ECAFA70364D41752092 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -297,6 +250,49 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 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\" thin"; + }; + 48BE72B3D6235B90DA8DDC8E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 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\n"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -345,12 +341,14 @@ 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; @@ -371,9 +369,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -384,8 +383,9 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = J4X2BS3C4F; + DEVELOPMENT_TEAM = B9L2XWSJAH; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -397,9 +397,10 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.rexraphael.flutterUnityWidgetExample; + PRODUCT_BUNDLE_IDENTIFIER = com.snowball.flutterunityapp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -418,12 +419,14 @@ 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; @@ -450,7 +453,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -472,12 +475,14 @@ 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; @@ -498,9 +503,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -514,7 +520,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = J4X2BS3C4F; + DEVELOPMENT_TEAM = B9L2XWSJAH; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -526,12 +532,11 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.rexraphael.flutterUnityWidgetExample; + PRODUCT_BUNDLE_IDENTIFIER = com.snowball.flutterunityapp; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -543,7 +548,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = J4X2BS3C4F; + DEVELOPMENT_TEAM = B9L2XWSJAH; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -555,11 +560,10 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.rexraphael.flutterUnityWidgetExample; + PRODUCT_BUNDLE_IDENTIFIER = com.snowball.flutterunityapp; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -575,7 +579,7 @@ 249021D3217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; @@ -585,7 +589,7 @@ 249021D4217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ }; diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 786d6aa..a28140c 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -46,7 +45,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 949b678..0000000 --- a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - BuildSystemType - Original - - diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift index f8881f2..d945443 100644 --- a/example/ios/Runner/AppDelegate.swift +++ b/example/ios/Runner/AppDelegate.swift @@ -5,7 +5,7 @@ import Flutter @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { InitArgs(CommandLine.argc, CommandLine.unsafeArgv) GeneratedPluginRegistrant.register(with: self) diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 3d43d11e66f4de3da27ed045ca4fe38ad8b48094..dc9ada4725e9b0ddb1deab583e5b5102493aa332 100644 GIT binary patch literal 10932 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 P-1+_A+?hGkL;m(J7kc&K diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index f639be0..9bebd63 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - flutter_unity_widget_example + flutterappunity CFBundlePackageType APPL CFBundleShortVersionString @@ -22,8 +22,6 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS - NSCameraUsageDescription - $(PRODUCT_NAME) uses Cameras UILaunchStoryboardName LaunchScreen UIMainStoryboardFile diff --git a/example/lib/generated/i18n.dart b/example/lib/generated/i18n.dart new file mode 100644 index 0000000..30fdb7a --- /dev/null +++ b/example/lib/generated/i18n.dart @@ -0,0 +1,126 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +// ignore_for_file: non_constant_identifier_names +// ignore_for_file: camel_case_types +// ignore_for_file: prefer_single_quotes + +// This file is automatically generated. DO NOT EDIT, all your changes would be lost. +class S implements WidgetsLocalizations { + const S(); + + static S current; + + static const GeneratedLocalizationsDelegate delegate = + GeneratedLocalizationsDelegate(); + + static S of(BuildContext context) => Localizations.of(context, S); + + @override + TextDirection get textDirection => TextDirection.ltr; + +} + +class $en extends S { + const $en(); +} + +class GeneratedLocalizationsDelegate extends LocalizationsDelegate { + const GeneratedLocalizationsDelegate(); + + List get supportedLocales { + return const [ + Locale("en", ""), + ]; + } + + LocaleListResolutionCallback listResolution({Locale fallback, bool withCountry = true}) { + return (List locales, Iterable supported) { + if (locales == null || locales.isEmpty) { + return fallback ?? supported.first; + } else { + return _resolve(locales.first, fallback, supported, withCountry); + } + }; + } + + LocaleResolutionCallback resolution({Locale fallback, bool withCountry = true}) { + return (Locale locale, Iterable supported) { + return _resolve(locale, fallback, supported, withCountry); + }; + } + + @override + Future load(Locale locale) { + final String lang = getLang(locale); + if (lang != null) { + switch (lang) { + case "en": + S.current = const $en(); + return SynchronousFuture(S.current); + default: + // NO-OP. + } + } + S.current = const S(); + return SynchronousFuture(S.current); + } + + @override + bool isSupported(Locale locale) => _isSupported(locale, true); + + @override + bool shouldReload(GeneratedLocalizationsDelegate old) => false; + + /// + /// Internal method to resolve a locale from a list of locales. + /// + Locale _resolve(Locale locale, Locale fallback, Iterable supported, bool withCountry) { + if (locale == null || !_isSupported(locale, withCountry)) { + return fallback ?? supported.first; + } + + final Locale languageLocale = Locale(locale.languageCode, ""); + if (supported.contains(locale)) { + return locale; + } else if (supported.contains(languageLocale)) { + return languageLocale; + } else { + final Locale fallbackLocale = fallback ?? supported.first; + return fallbackLocale; + } + } + + /// + /// Returns true if the specified locale is supported, false otherwise. + /// + bool _isSupported(Locale locale, bool withCountry) { + if (locale != null) { + for (Locale supportedLocale in supportedLocales) { + // Language must always match both locales. + if (supportedLocale.languageCode != locale.languageCode) { + continue; + } + + // If country code matches, return this locale. + if (supportedLocale.countryCode == locale.countryCode) { + return true; + } + + // If no country requirement is requested, check if this locale has no country. + if (true != withCountry && (supportedLocale.countryCode == null || supportedLocale.countryCode.isEmpty)) { + return true; + } + } + } + return false; + } +} + +String getLang(Locale l) => l == null + ? null + : l.countryCode != null && l.countryCode.isEmpty + ? l.languageCode + : l.toString(); diff --git a/example/lib/main.dart b/example/lib/main.dart index d2e5a58..3f890a0 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,93 +1,17 @@ import 'package:flutter/material.dart'; -import 'package:flutter_unity_widget/flutter_unity_widget.dart'; -void main() => runApp(MyApp()); +import 'screens/menu_screen.dart'; +import 'screens/with_ark_screen.dart'; -class MyApp extends StatefulWidget { - @override - _MyAppState createState() => _MyAppState(); -} +var MyApp = MaterialApp( + title: 'Named Routes Demo', + // Start the app with the "/" named route. In this case, the app starts + // on the FirstScreen widget. + initialRoute: '/', + routes: { + '/': (context) => MenuScreen(), + '/ar': (context) => WithARkitScreen(), + }, +); -class _MyAppState extends State { - static final GlobalKey _scaffoldKey = - GlobalKey(); - UnityWidgetController _unityWidgetController; - double _sliderValue = 0.0; - - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - key: _scaffoldKey, - appBar: AppBar( - title: const Text('Unity Flutter Demo'), - ), - body: Card( - margin: const EdgeInsets.all(8), - clipBehavior: Clip.antiAlias, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20.0), - ), - child: Stack( - children: [ - UnityWidget( - onUnityViewCreated: onUnityCreated, - isARScene: false, - onUnityMessage: onUnityMessage, - ), - Positioned( - bottom: 20, - left: 20, - right: 20, - child: Card( - elevation: 10, - child: Column( - children: [ - Padding( - padding: const EdgeInsets.only(top: 20), - child: Text("Rotation speed:"), - ), - Slider( - onChanged: (value) { - setState(() { - _sliderValue = value; - }); - setRotationSpeed(value.toString()); - }, - value: _sliderValue, - min: 0, - max: 20, - ), - ], - ), - ), - ), - ], - ), - ), - ), - ); - } - - void setRotationSpeed(String speed) { - _unityWidgetController.postMessage( - 'Cube', - 'SetRotationSpeed', - speed, - ); - } - - void onUnityMessage(controller, message) { - print('Received message from unity: ${message.toString()}'); - } - - // Callback that connects the created controller to the unity controller - void onUnityCreated(controller) { - this._unityWidgetController = controller; - } -} +void main() => runApp(MyApp); \ No newline at end of file diff --git a/example/lib/screens/menu_screen.dart b/example/lib/screens/menu_screen.dart new file mode 100644 index 0000000..91e66f5 --- /dev/null +++ b/example/lib/screens/menu_screen.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; + +class MenuScreen extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Menu'), + ), + body: Container( + child: Column( + children: [ + Expanded( + flex: 1, + child: Card( + color: Colors.grey, + child: Container( + width: double.infinity, + child: RaisedButton( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('AR Demo', style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 18 + ),), + Text('Please make sure you exported the ARKIT unity demo example', textAlign: TextAlign.center,), + ], + ), + onPressed: () { + // Navigate to the second screen using a named route. + Navigator.pushNamed(context, '/ar'); + }, + ), + ) + ), + ), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/example/lib/screens/with_ark_screen.dart b/example/lib/screens/with_ark_screen.dart new file mode 100644 index 0000000..b3d6c35 --- /dev/null +++ b/example/lib/screens/with_ark_screen.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_unity_widget/flutter_unity_widget.dart'; + +class WithARkitScreen extends StatefulWidget { + @override + _WithARkitScreenState createState() => _WithARkitScreenState(); +} + +class _WithARkitScreenState extends State { + static final GlobalKey _scaffoldKey = + GlobalKey(); + UnityWidgetController _unityWidgetController; + double _sliderValue = 0.0; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + key: _scaffoldKey, + appBar: AppBar( + title: const Text('Unity Flutter Demo'), + ), + body: Card( + margin: const EdgeInsets.all(8), + clipBehavior: Clip.antiAlias, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20.0), + ), + child: Stack( + children: [ + UnityWidget( + onUnityViewCreated: onUnityCreated, + isARScene: false, + onUnityMessage: onUnityMessage, + ), + Positioned( + bottom: 20, + left: 20, + right: 20, + child: Card( + elevation: 10, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only(top: 20), + child: Text("Rotation speed:"), + ), + Slider( + onChanged: (value) { + setState(() { + _sliderValue = value; + }); + setRotationSpeed(value.toString()); + }, + value: _sliderValue, + min: 0, + max: 20, + ), + ], + ), + ), + ), + ], + ), + ), + ), + ); + } + + void setRotationSpeed(String speed) { + _unityWidgetController.postMessage( + 'Cube', + 'SetRotationSpeed', + speed, + ); + } + + void onUnityMessage(controller, message) { + print('Received message from unity: ${message.toString()}'); + } + + // Callback that connects the created controller to the unity controller + void onUnityCreated(controller) { + this._unityWidgetController = controller; + } +} diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 53933ba..8d95d6f 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,9 +1,20 @@ name: flutter_unity_widget_example -description: Demonstrates how to use the flutter_unity_widget plugin. -publish_to: 'none' +description: A new Flutter application. + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 environment: - sdk: ">=2.0.0-dev.68.0 <3.0.0" + sdk: ">=2.1.0 <3.0.0" dependencies: flutter: @@ -12,16 +23,15 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.2 + flutter_unity_widget: ^0.1.6+8 dev_dependencies: flutter_test: sdk: flutter - flutter_unity_widget: - path: ../ # For information on the generic Dart part of this file, see the -# following page: https://www.dartlang.org/tools/pub/pubspec +# following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: @@ -37,10 +47,10 @@ flutter: # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.io/assets-and-images/#resolution-aware. + # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see - # https://flutter.io/assets-and-images/#from-packages + # https://flutter.dev/assets-and-images/#from-packages # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a @@ -60,4 +70,4 @@ flutter: # weight: 700 # # For details regarding fonts from package dependencies, - # see https://flutter.io/custom-fonts/#from-packages + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/example/res/values/strings_en.arb b/example/res/values/strings_en.arb index e69de29..9e26dfe 100644 --- a/example/res/values/strings_en.arb +++ b/example/res/values/strings_en.arb @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart index 1bde4d3..ecdf4ef 100644 --- a/example/test/widget_test.dart +++ b/example/test/widget_test.dart @@ -8,20 +8,23 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:flutter_unity_widget_example/main.dart'; +import 'package:flutterappunity/main.dart'; void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); + await tester.pumpWidget(MyApp); - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => widget is Text && - widget.data.startsWith('Running on:'), - ), - findsOneWidget, - ); + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); }); } diff --git a/example/unity/DemoApp/Packages/manifest.json b/example/unity/DemoApp/Packages/manifest.json index 05dcf99..0057797 100644 --- a/example/unity/DemoApp/Packages/manifest.json +++ b/example/unity/DemoApp/Packages/manifest.json @@ -1,19 +1,14 @@ { "dependencies": { - "com.unity.2d.sprite": "1.0.0", - "com.unity.2d.tilemap": "1.0.0", - "com.unity.ads": "2.0.8", - "com.unity.analytics": "3.3.2", "com.unity.collab-proxy": "1.2.16", - "com.unity.ide.rider": "1.1.0", - "com.unity.ide.vscode": "1.1.2", - "com.unity.multiplayer-hlapi": "1.0.4", - "com.unity.purchasing": "2.0.6", - "com.unity.test-framework": "1.1.2", + "com.unity.ext.nunit": "1.0.0", + "com.unity.ide.rider": "1.1.4", + "com.unity.ide.vscode": "1.1.4", + "com.unity.test-framework": "1.1.11", "com.unity.textmeshpro": "2.0.1", - "com.unity.timeline": "1.2.2", + "com.unity.timeline": "1.2.6", "com.unity.ugui": "1.0.0", - "com.unity.xr.legacyinputhelpers": "1.3.7", + "com.unity.xr.management": "3.0.6", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", "com.unity.modules.animation": "1.0.0", diff --git a/example/unity/DemoApp/ProjectSettings/AudioManager.asset b/example/unity/DemoApp/ProjectSettings/AudioManager.asset index 304925e..07ebfb0 100644 --- a/example/unity/DemoApp/ProjectSettings/AudioManager.asset +++ b/example/unity/DemoApp/ProjectSettings/AudioManager.asset @@ -1,17 +1,19 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 1024 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 1024 diff --git a/example/unity/DemoApp/ProjectSettings/ClusterInputManager.asset b/example/unity/DemoApp/ProjectSettings/ClusterInputManager.asset index a84cf4e..e7886b2 100644 --- a/example/unity/DemoApp/ProjectSettings/ClusterInputManager.asset +++ b/example/unity/DemoApp/ProjectSettings/ClusterInputManager.asset @@ -1,6 +1,6 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/example/unity/DemoApp/ProjectSettings/DynamicsManager.asset b/example/unity/DemoApp/ProjectSettings/DynamicsManager.asset index 99831df..cdc1f3e 100644 --- a/example/unity/DemoApp/ProjectSettings/DynamicsManager.asset +++ b/example/unity/DemoApp/ProjectSettings/DynamicsManager.asset @@ -1,30 +1,34 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 8 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_ClothInterCollisionDistance: 0 - m_ClothInterCollisionStiffness: 0 - m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 0 - m_ReuseCollisionCallbacks: 1 - m_ClothInterCollisionSettingsToggle: 0 - m_ContactPairsMode: 0 - m_BroadphaseType: 0 - m_WorldBounds: - m_Center: {x: 0, y: 0, z: 0} - m_Extent: {x: 250, y: 250, z: 250} - m_WorldSubdivisions: 8 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_DefaultMaxAngluarSpeed: 7 diff --git a/example/unity/DemoApp/ProjectSettings/EditorBuildSettings.asset b/example/unity/DemoApp/ProjectSettings/EditorBuildSettings.asset index 2e2cfdc..9bd6d10 100644 --- a/example/unity/DemoApp/ProjectSettings/EditorBuildSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/EditorBuildSettings.asset @@ -5,7 +5,7 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 1de23c438491149ecacfae4362bfe5d4 + - enabled: 0 + path: + guid: 00000000000000000000000000000000 m_configObjects: {} diff --git a/example/unity/DemoApp/ProjectSettings/EditorSettings.asset b/example/unity/DemoApp/ProjectSettings/EditorSettings.asset index 78c18ac..1a44c3d 100644 --- a/example/unity/DemoApp/ProjectSettings/EditorSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/EditorSettings.asset @@ -1,21 +1,35 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 7 - m_ExternalVersionControlSupport: Visible Meta Files - m_SerializationMode: 2 - m_LineEndingsForNewScripts: 2 - m_DefaultBehaviorMode: 0 - m_SpritePackerMode: 0 - m_SpritePackerPaddingPower: 1 - m_EtcTextureCompressorBehavior: 1 - m_EtcTextureFastCompressor: 1 - m_EtcTextureNormalCompressor: 2 - m_EtcTextureBestCompressor: 4 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd - m_ProjectGenerationRootNamespace: - m_UserGeneratedProjectSuffix: - m_CollabEditorSettings: - inProgressEnabled: 1 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_CollabEditorSettings: + inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 1 + m_AssetPipelineMode: 1 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 diff --git a/example/unity/DemoApp/ProjectSettings/GraphicsSettings.asset b/example/unity/DemoApp/ProjectSettings/GraphicsSettings.asset index a4540d8..4706883 100644 --- a/example/unity/DemoApp/ProjectSettings/GraphicsSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/GraphicsSettings.asset @@ -35,11 +35,9 @@ GraphicsSettings: - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 16003, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} @@ -65,4 +63,4 @@ GraphicsSettings: m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 m_LogWhenShaderIsCompiled: 0 - m_AllowEnlightenSupportForUpgradedProject: 1 + m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/example/unity/DemoApp/ProjectSettings/InputManager.asset b/example/unity/DemoApp/ProjectSettings/InputManager.asset index 2596646..17c8f53 100644 --- a/example/unity/DemoApp/ProjectSettings/InputManager.asset +++ b/example/unity/DemoApp/ProjectSettings/InputManager.asset @@ -1,295 +1,295 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/example/unity/DemoApp/ProjectSettings/NavMeshAreas.asset b/example/unity/DemoApp/ProjectSettings/NavMeshAreas.asset index c8fa1b5..3b0b7c3 100644 --- a/example/unity/DemoApp/ProjectSettings/NavMeshAreas.asset +++ b/example/unity/DemoApp/ProjectSettings/NavMeshAreas.asset @@ -1,91 +1,91 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_SettingNames: - - Humanoid +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/example/unity/DemoApp/ProjectSettings/NetworkManager.asset b/example/unity/DemoApp/ProjectSettings/NetworkManager.asset deleted file mode 100644 index e9cd578..0000000 --- a/example/unity/DemoApp/ProjectSettings/NetworkManager.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!149 &1 -NetworkManager: - m_ObjectHideFlags: 0 - m_DebugLevel: 0 - m_Sendrate: 15 - m_AssetToPrefab: {} diff --git a/example/unity/DemoApp/ProjectSettings/Physics2DSettings.asset b/example/unity/DemoApp/ProjectSettings/Physics2DSettings.asset index ba87431..47880b1 100644 --- a/example/unity/DemoApp/ProjectSettings/Physics2DSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/Physics2DSettings.asset @@ -1,38 +1,56 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_AutoSimulation: 1 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_ChangeStopsCallbacks: 0 - m_CallbacksOnDisable: 1 - m_ReuseCollisionCallbacks: 1 - m_AutoSyncTransforms: 0 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/example/unity/DemoApp/ProjectSettings/PresetManager.asset b/example/unity/DemoApp/ProjectSettings/PresetManager.asset index b43eac1..67a94da 100644 --- a/example/unity/DemoApp/ProjectSettings/PresetManager.asset +++ b/example/unity/DemoApp/ProjectSettings/PresetManager.asset @@ -1,27 +1,7 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1386491679 &1 -PresetManager: - m_ObjectHideFlags: 0 - m_DefaultList: - - type: - m_NativeTypeID: 108 - m_ManagedTypePPtr: {fileID: 0} - m_ManagedTypeFallback: - defaultPresets: - - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, - type: 2} - - type: - m_NativeTypeID: 1020 - m_ManagedTypePPtr: {fileID: 0} - m_ManagedTypeFallback: - defaultPresets: - - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, - type: 2} - - type: - m_NativeTypeID: 1006 - m_ManagedTypePPtr: {fileID: 0} - m_ManagedTypeFallback: - defaultPresets: - - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, - type: 2} +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/example/unity/DemoApp/ProjectSettings/ProjectSettings.asset b/example/unity/DemoApp/ProjectSettings/ProjectSettings.asset index 3fac36a..4f9f9c7 100644 --- a/example/unity/DemoApp/ProjectSettings/ProjectSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/ProjectSettings.asset @@ -4,7 +4,7 @@ PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 20 - productGUID: e5da194b0a57a48cd8f1c3e35537f274 + productGUID: fd170185d5732429eb9bdb0b178a9eb1 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 @@ -12,12 +12,12 @@ PlayerSettings: targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 - companyName: Rex Raphael - productName: Unity Flutter Demo + companyName: DefaultCompany + productName: Runner defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 0 + m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 @@ -63,7 +63,7 @@ PlayerSettings: preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 - androidRenderOutsideSafeArea: 0 + androidRenderOutsideSafeArea: 1 androidUseSwappy: 0 androidBlitType: 0 defaultIsNativeResolution: 1 @@ -103,6 +103,7 @@ PlayerSettings: xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 16384 @@ -162,7 +163,7 @@ PlayerSettings: androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: - Android: com.YourCompanyName.YourProductName + iPhone: com.snowball.flutterunityapp buildNumber: {} AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 19 @@ -180,7 +181,7 @@ PlayerSettings: StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 10.0 + iOSTargetOSVersionString: 11.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 10.0 @@ -248,19 +249,19 @@ PlayerSettings: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 - iOSRequireARKit: 0 + iOSRequireARKit: 1 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea - templatePackageId: com.unity.template.3d@1.3.0 + templatePackageId: com.unity.template.3d@4.2.4 templateDefaultScene: Assets/Scenes/SampleScene.unity - AndroidTargetArchitectures: 7 + AndroidTargetArchitectures: 1 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} - AndroidKeystoreName: '{inproject}: ' + AndroidKeystoreName: AndroidKeyaliasName: AndroidBuildApkPerCpuArchitecture: 0 - AndroidTVCompatibility: 1 + AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 @@ -274,196 +275,7 @@ PlayerSettings: AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: - - m_BuildTarget: Android - m_Icons: - - m_Textures: [] - m_Width: 432 - m_Height: 432 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 324 - m_Height: 324 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 216 - m_Height: 216 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 162 - m_Height: 162 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 108 - m_Height: 108 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 81 - m_Height: 81 - m_Kind: 2 - m_SubKind: - - m_Textures: [] - m_Width: 192 - m_Height: 192 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 144 - m_Height: 144 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 96 - m_Height: 96 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 72 - m_Height: 72 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 48 - m_Height: 48 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 36 - m_Height: 36 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 192 - m_Height: 192 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 144 - m_Height: 144 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 96 - m_Height: 96 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 72 - m_Height: 72 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 48 - m_Height: 48 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 36 - m_Height: 36 - m_Kind: 0 - m_SubKind: - - m_BuildTarget: iPhone - m_Icons: - - m_Textures: [] - m_Width: 180 - m_Height: 180 - m_Kind: 0 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 120 - m_Height: 120 - m_Kind: 0 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 167 - m_Height: 167 - m_Kind: 0 - m_SubKind: iPad - - m_Textures: [] - m_Width: 152 - m_Height: 152 - m_Kind: 0 - m_SubKind: iPad - - m_Textures: [] - m_Width: 76 - m_Height: 76 - m_Kind: 0 - m_SubKind: iPad - - m_Textures: [] - m_Width: 120 - m_Height: 120 - m_Kind: 3 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 80 - m_Height: 80 - m_Kind: 3 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 80 - m_Height: 80 - m_Kind: 3 - m_SubKind: iPad - - m_Textures: [] - m_Width: 40 - m_Height: 40 - m_Kind: 3 - m_SubKind: iPad - - m_Textures: [] - m_Width: 87 - m_Height: 87 - m_Kind: 1 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 58 - m_Height: 58 - m_Kind: 1 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 29 - m_Height: 29 - m_Kind: 1 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 58 - m_Height: 58 - m_Kind: 1 - m_SubKind: iPad - - m_Textures: [] - m_Width: 29 - m_Height: 29 - m_Kind: 1 - m_SubKind: iPad - - m_Textures: [] - m_Width: 60 - m_Height: 60 - m_Kind: 2 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 40 - m_Height: 40 - m_Kind: 2 - m_SubKind: iPhone - - m_Textures: [] - m_Width: 40 - m_Height: 40 - m_Kind: 2 - m_SubKind: iPad - - m_Textures: [] - m_Width: 20 - m_Height: 20 - m_Kind: 2 - m_SubKind: iPad - - m_Textures: [] - m_Width: 1024 - m_Height: 1024 - m_Kind: 4 - m_SubKind: App Store + m_BuildTargetPlatformIcons: [] m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 @@ -484,23 +296,23 @@ PlayerSettings: - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: MetroSupport - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: LinuxStandaloneSupport - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: PS4Player - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: WindowsStandaloneSupport - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: XboxOnePlayer - m_GraphicsJobs: 0 + m_GraphicsJobs: 1 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer @@ -514,11 +326,11 @@ PlayerSettings: m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer - m_APIs: 0b00000008000000 + m_APIs: 150000000b000000 m_Automatic: 0 - m_BuildTarget: iOSSupport - m_APIs: 10000000 - m_Automatic: 0 + m_APIs: 08000000 + m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 0 @@ -534,7 +346,6 @@ PlayerSettings: openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 - vuforiaEnabled: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 @@ -548,7 +359,7 @@ PlayerSettings: enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 - cameraUsageDescription: + cameraUsageDescription: Required for augmented reality support. locationUsageDescription: microphoneUsageDescription: switchNetLibKey: @@ -650,6 +461,7 @@ PlayerSettings: switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 + switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: @@ -665,7 +477,7 @@ PlayerSettings: switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 - switchSupportedNpadStyles: 3 + switchSupportedNpadStyles: 22 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 @@ -755,7 +567,7 @@ PlayerSettings: splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: - webGLMemorySize: 256 + webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLDataCaching: 1 @@ -771,8 +583,7 @@ PlayerSettings: webGLWasmStreaming: 0 scriptingDefineSymbols: {} platformArchitecture: {} - scriptingBackend: - Android: 1 + scriptingBackend: {} il2cppCompilerConfiguration: {} managedStrippingLevel: {} incrementalIl2cppBuild: {} @@ -854,10 +665,10 @@ PlayerSettings: m_VersionCode: 1 m_VersionName: apiCompatibilityLevel: 6 - cloudProjectId: 8d747fa2-16cc-437c-9ae7-de9820958d80 + cloudProjectId: framebufferDepthMemorylessMode: 0 - projectName: Unity Flutter Demo - organizationId: boldsofts + projectName: + organizationId: cloudEnabled: 0 enableNativePlatformBackendsForNewInputSystem: 0 disableOldInputManagerSupport: 0 diff --git a/example/unity/DemoApp/ProjectSettings/ProjectVersion.txt b/example/unity/DemoApp/ProjectSettings/ProjectVersion.txt index 7d8b6e2..e51db95 100644 --- a/example/unity/DemoApp/ProjectSettings/ProjectVersion.txt +++ b/example/unity/DemoApp/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.3.0b7 -m_EditorVersionWithRevision: 2019.3.0b7 (9946d7a66754) +m_EditorVersion: 2019.3.5f1 +m_EditorVersionWithRevision: 2019.3.5f1 (d691e07d38ef) diff --git a/example/unity/DemoApp/ProjectSettings/QualitySettings.asset b/example/unity/DemoApp/ProjectSettings/QualitySettings.asset index b7593b7..7b7658d 100644 --- a/example/unity/DemoApp/ProjectSettings/QualitySettings.asset +++ b/example/unity/DemoApp/ProjectSettings/QualitySettings.asset @@ -1,190 +1,232 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 4 - m_QualitySettings: - - serializedVersion: 2 - name: Very Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Medium - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: High - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 2 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Very High - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 4 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Ultra - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 4 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - Nintendo 3DS: 5 - Nintendo Switch: 5 - PS4: 5 - PSP2: 2 - Standalone: 5 - Tizen: 2 - WebGL: 3 - WiiU: 5 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/example/unity/DemoApp/ProjectSettings/TagManager.asset b/example/unity/DemoApp/ProjectSettings/TagManager.asset index 5ce97fb..1c92a78 100644 --- a/example/unity/DemoApp/ProjectSettings/TagManager.asset +++ b/example/unity/DemoApp/ProjectSettings/TagManager.asset @@ -1,43 +1,43 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - PostProcessing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/example/unity/DemoApp/ProjectSettings/TimeManager.asset b/example/unity/DemoApp/ProjectSettings/TimeManager.asset index 06bcc6d..558a017 100644 --- a/example/unity/DemoApp/ProjectSettings/TimeManager.asset +++ b/example/unity/DemoApp/ProjectSettings/TimeManager.asset @@ -4,6 +4,6 @@ TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.1 + Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 diff --git a/example/unity/DemoApp/ProjectSettings/UnityConnectSettings.asset b/example/unity/DemoApp/ProjectSettings/UnityConnectSettings.asset index 584eee7..fa0b146 100644 --- a/example/unity/DemoApp/ProjectSettings/UnityConnectSettings.asset +++ b/example/unity/DemoApp/ProjectSettings/UnityConnectSettings.asset @@ -4,7 +4,7 @@ UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 - m_Enabled: 1 + m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events @@ -12,7 +12,7 @@ UnityConnectSettings: m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com - m_Enabled: 1 + m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: diff --git a/example/unity/DemoApp/ProjectSettings/VFXManager.asset b/example/unity/DemoApp/ProjectSettings/VFXManager.asset index 6e0eaca..3a95c98 100644 --- a/example/unity/DemoApp/ProjectSettings/VFXManager.asset +++ b/example/unity/DemoApp/ProjectSettings/VFXManager.asset @@ -6,6 +6,7 @@ VFXManager: m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05