From 083499dc4d09a141244bf0a7d3c1e9823400ac34 Mon Sep 17 00:00:00 2001 From: Hyo Date: Sun, 10 Jan 2021 08:02:58 +0900 Subject: [PATCH] [0.63] Migrate localization library to fbt (#159) Migrate localization library. We'd like to use `fbt` in react-native as well as react followed by the article https://medium.com/dooboolab/localizing-react-app-with-fbt-instead-of-i18n-90822e0cb373. --- .circleci/config.yml | 21 +- .gitignore | 5 +- @types/fbt/globals.d.ts | 92 + @types/fbt/index.d.ts | 76 + README.md | 121 +- STRINGS.ts | 21 - android/app/src/main/AndroidManifest.xml | 2 +- .../main/java/com/dooboo/MainActivity.java | 17 + .../src/main/res/raw-en-rUS/localizable.json | 1 + .../src/main/res/raw-ko-rKR/localizable.json | 1 + android/app/src/main/res/raw/localizable.json | 0 ...gation_stack_src_views_assets_backicon.png | Bin 0 -> 134 bytes android/drawable-mdpi/assets_icons_mask.png | Bin 0 -> 12573 bytes ...gation_stack_src_views_assets_backicon.png | Bin 0 -> 100 bytes ...on_stack_src_views_assets_backiconmask.png | Bin 0 -> 913 bytes android/drawable-xhdpi/assets_icons_mask.png | Bin 0 -> 39554 bytes ...gation_stack_src_views_assets_backicon.png | Bin 0 -> 134 bytes android/drawable-xxhdpi/assets_icons_mask.png | Bin 0 -> 81728 bytes ...gation_stack_src_views_assets_backicon.png | Bin 0 -> 167 bytes ...gation_stack_src_views_assets_backicon.png | Bin 0 -> 207 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/raw/i18n_fbt_translatedfbts.json | 1 + .../node_modules_csscolorkeywords_colors.json | 148 ++ app.config.js | 11 + app.json | 9 - assets/langs/en.json | 10 - assets/langs/ko.json | 10 - assets/translations/en.json | 15 + assets/translations/ko.json | 45 + babel.config.js | 10 + i18n/FbtI18nNativeAssets.js | 48 + i18n/NativeFbtModule.js | 32 + i18n/fbt/translatedFbts.json | 1 + i18n/getTranslatedInput.js | 42 + .../generate-android-localizables-executor.js | 71 + i18n/scripts/generate-android-localizables.js | 87 + ios/Podfile | 18 +- ios/Podfile.lock | 480 ++--- ios/dooboo.xcodeproj/project.pbxproj | 66 - package.json | 65 +- src/App.tsx | 3 + .../navigation/RootStackNavigator.tsx | 2 +- .../__tests__/RootStackNavigator.test.tsx | 2 +- .../RootStackNavigator.test.tsx.snap | 50 +- src/components/screen/Intro.tsx | 14 +- .../screen/__tests__/Intro.test.tsx | 5 +- src/components/screen/__tests__/Temp.test.tsx | 2 +- .../__snapshots__/Intro.test.tsx.snap | 16 +- src/components/shared/Button.tsx | 8 +- .../shared/__tests__/Button.test.tsx | 2 +- src/providers/index.tsx | 2 +- src/styled.d.ts | 2 +- src/utils/fbt.ts | 33 + test/jestSetup.ts | 3 + test/testUtils.tsx | 2 +- tsconfig.json | 10 +- yarn.lock | 1885 ++++++++++++----- 57 files changed, 2501 insertions(+), 1068 deletions(-) create mode 100644 @types/fbt/globals.d.ts create mode 100644 @types/fbt/index.d.ts delete mode 100644 STRINGS.ts create mode 100644 android/app/src/main/res/raw-en-rUS/localizable.json create mode 100644 android/app/src/main/res/raw-ko-rKR/localizable.json create mode 100644 android/app/src/main/res/raw/localizable.json create mode 100644 android/drawable-hdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png create mode 100644 android/drawable-mdpi/assets_icons_mask.png create mode 100644 android/drawable-mdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png create mode 100644 android/drawable-mdpi/node_modules_reactnavigation_stack_src_views_assets_backiconmask.png create mode 100644 android/drawable-xhdpi/assets_icons_mask.png create mode 100644 android/drawable-xhdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png create mode 100644 android/drawable-xxhdpi/assets_icons_mask.png create mode 100644 android/drawable-xxhdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png create mode 100644 android/drawable-xxxhdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png create mode 100644 android/raw/i18n_fbt_translatedfbts.json create mode 100644 android/raw/node_modules_csscolorkeywords_colors.json create mode 100644 app.config.js delete mode 100644 app.json delete mode 100644 assets/langs/en.json delete mode 100644 assets/langs/ko.json create mode 100644 assets/translations/en.json create mode 100644 assets/translations/ko.json create mode 100644 i18n/FbtI18nNativeAssets.js create mode 100644 i18n/NativeFbtModule.js create mode 100644 i18n/fbt/translatedFbts.json create mode 100644 i18n/getTranslatedInput.js create mode 100644 i18n/scripts/generate-android-localizables-executor.js create mode 100644 i18n/scripts/generate-android-localizables.js create mode 100644 src/utils/fbt.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index c388a1ce..faa040a9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,19 +29,17 @@ jobs: paths: - node_modules - - run: - name: jest tests - command: | - mkdir -p test-results/jest - yarn run test - environment: - JEST_JUNIT_OUTPUT: test-results/jest/junit.xml - - persist_to_workspace: root: ~/dooboo paths: - node_modules + - run: + name: Generate fbt + working_directory: . + command: | + yarn fbt:all + - run: name: ESLint Test working_directory: . @@ -110,6 +108,13 @@ jobs: # paths: # - android/vendor/bundle + - run: + name: Generate fbt + working_directory: . + command: | + yarn fbt:all && yarn fbt:android + + - run: name: Check MD5 on files command: | diff --git a/.gitignore b/.gitignore index 41f14643..d95acaf5 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,7 @@ package-lock.json ios/Pods/ -.vscode \ No newline at end of file +# fbt +i18n/fbt/.enum_manifest.json +i18n/fbt/.source_strings.json +i18n/fbt/.src_manifest.json diff --git a/@types/fbt/globals.d.ts b/@types/fbt/globals.d.ts new file mode 100644 index 00000000..34f65f09 --- /dev/null +++ b/@types/fbt/globals.d.ts @@ -0,0 +1,92 @@ +/// + +declare namespace FBT { + type $Values = T[keyof T]; + + // https://github.com/facebookincubator/fbt/blob/e9c591f451dbfc91852e316869ae39ad41848c55/runtime/nonfb/GenderConst.js#L9-L23 + interface GenderConst { + NOT_A_PERSON: 0; + FEMALE_SINGULAR: 1; + MALE_SINGULAR: 2; + FEMALE_SINGULAR_GUESS: 3; + MALE_SINGULAR_GUESS: 4; + MIXED_SINGULAR: 5; + MIXED_PLURAL: 5; + NEUTER_SINGULAR: 6; + UNKNOWN_SINGULAR: 7; + FEMALE_PLURAL: 8; + MALE_PLURAL: 9; + NEUTER_PLURAL: 10; + UNKNOWN_PLURAL: 11; + } + + interface IntlVariationsGender { + GENDER_MALE: 1; + GENDER_FEMALE: 2; + GENDER_UNKNOWN: 3; + } + + // https://github.com/facebookincubator/fbt/blob/e9c591f451dbfc91852e316869ae39ad41848c55/runtime/nonfb/IntlVariations.js#L9-L21 + interface IntlVariations extends IntlVariationsGender { + BITMASK_NUMBER: 28; + BITMASK_GENDER: 3; + NUMBER_ZERO: 16; + NUMBER_ONE: 4; + NUMBER_TWO: 8; + NUMBER_FEW: 20; + NUMBER_MANY: 12; + NUMBER_OTHER: 24; + } + + // https://github.com/facebookincubator/fbt/blob/c2d363a40b622d5aaf80ff1d249b38604fd869f6/transform/babel-plugin-fbt/FbtConstants.js#L22-L27 + type PronounType = 'object' | 'possessive' | 'reflexive' | 'subject'; + + type IntlVariationsGenderValues = $Values; + + interface IntlViewerContext { + GENDER: IntlVariationsGenderValues; + locale: string; + } + + type IntlVariationsValues = $Values; + type GenderConstValues = $Values; + + type Translations = { [locale: string]: { [key: string]: string } }; + + interface Options { + author?: string; + common?: boolean; + doNotExtract?: boolean; + preserveWhitespace?: boolean; + project?: string; + subject?: IntlVariationsGenderValues; + } + + interface PluralOptions { + many?: string; + showCount?: 'yes' | 'no' | 'ifMany'; + name?: string; + value?: any; + } + + interface ParamOptions { + gender?: IntlVariationsGenderValues; + number?: number | true; + } + + interface PronounOptions { + human?: boolean; + capitalize?: boolean; + } + + type FbtResult = string; +} + +declare namespace JSX { + interface IntrinsicElements { + fbt: { + desc: string; + children: React.ReactNode | React.ReactNode[]; + } & FBT.Options; + } +} diff --git a/@types/fbt/index.d.ts b/@types/fbt/index.d.ts new file mode 100644 index 00000000..44664a56 --- /dev/null +++ b/@types/fbt/index.d.ts @@ -0,0 +1,76 @@ +/// + +declare module 'fbt' { + export const GenderConst: FBT.GenderConst; + export const IntlVariations: FBT.IntlVariations; + export const IntlViewerContext: FBT.IntlViewerContext; + + // These exports (Fbt*) isn't real! It is only syntax abstraction + // https://github.com/facebookincubator/fbt/blob/8607c1f2798ef18c6142a2cf1c5a9351c6d7df69/transform/babel-plugin-fbt/FbtUtil.js#L28-L40 + export const FbtEnum: React.FC<{ + 'enum-range': Array | { [enumKey: string]: string }; + value: string; + }>; + export const FbtParam: React.FC< + FBT.ParamOptions & { name: string; children: React.ReactNode } + >; + export const FbtPlural: React.FC< + FBT.PluralOptions & { count: number; children: string } + >; + export const FbtPronoun: React.FC< + FBT.PronounOptions & { + type: FBT.PronounType; + gender: FBT.GenderConstValues; + } + >; + export const FbtName: React.FC< + Omit & { + name: string; + gender: FBT.IntlVariationsGenderValues; + children: React.ReactNode; + } + >; + export const FbtSameParam: React.FC<{ + name: string; + }>; + + export interface Fbt { + (source: string, desc: string, options?: FBT.Options): FBT.FbtResult; + + param( + paramName: string, + value: any, + options?: FBT.ParamOptions, + ): FBT.FbtResult; + sameParam(paramName: string): FBT.FbtResult; + name(name: string, gender: FBT.IntlVariationsGenderValues): FBT.FbtResult; + plural( + singularPhrase: string, + count: number, + options?: FBT.PluralOptions, + ): FBT.FbtResult; + enum< + Range extends { [enumKey: string]: string }, + RangeKeys extends keyof Range + >( + enumKey: RangeKeys, + enumRange: Range, + ): FBT.FbtResult; + enum(index: string, enumRange: Array): FBT.FbtResult; + pronoun( + type: FBT.PronounType, + gender: FBT.GenderConstValues, + options: FBT.PronounOptions, + ): FBT.FbtResult; + } + + export const init: (options: { translations: FBT.Translations, hooks: { getViewerContext: () => any} }) => void; + + export const fbt: Fbt; +} + +declare namespace JSX { + interface IntrinsicElements { + fbt: any; + } +} diff --git a/README.md b/README.md index 74f32e7b..29e8a973 100644 --- a/README.md +++ b/README.md @@ -198,117 +198,10 @@ const component = (props): React.ReactElement => { ### Localization -We've defined Localization strings in `STRINGS.js` which is in root dir. -We used [react-native-localize](https://github.com/react-native-community/react-native-localize) pacakage for this one which use [i18n-js](https://github.com/fnando/i18n-js) together. - -- How it is installed - - ```tsx - import * as Localization from 'react-native-localize'; - - import en from './assets/langs/en.json'; - import i18n from 'i18n-js'; - import ja from './assets/langs/ja.json'; - import ko from './assets/langs/ko.json'; - - const locales = Localization.getLocales(); - - if (Array.isArray(locales)) { - i18n.locale = locales[0].languageTag; - } - - i18n.fallbacks = true; - i18n.translations = { en, ko, ja }; - - export const getString = (param: string, mapObj?: Record): string => { - if (mapObj) { - return i18n.t(param, mapObj); - } - return i18n.t(param); - }; - ``` - -- How it is used - - > Import locales in `assets/langs`. Currently, `ko.json` and `en.json` is installed. If you want to add more languages you can add it in `STRINGS.ts` and `i18n.translations = { en, ko };` add more languages inside `i18n.translations`. - - ```ts - import { getString } from '../../../STRINGS'; - - getString('LOGIN'); - ``` - -- How it is mocked - - > Fixed jest setup by adding following in `__mocks__/react-native-localize.ts`. - - ```ts - interface Locale { - countryCode: string; - languageTag: string; - languageCode: string; - isRTL: boolean; - } - const getLocales = (): Locale[] => [ - { - countryCode: 'US', - languageTag: 'en-US', - languageCode: 'en', - isRTL: false, - }, - { - countryCode: 'EC', - languageTag: 'es-EC', - languageCode: 'es', - isRTL: false, - }, - ]; - - const findBestAvailableLanguage = (): Partial => ({ - languageTag: 'es', - isRTL: false, - }); - - const getNumberFormatSettings = (): Record => ({ - decimalSeparator: '.', - groupingSeparator: ',', - }); - - const getCalendar = (): string => 'gregorian'; // or "japanese", "buddhist" - const getCountry = (): string => 'ES'; // the country code you want - const getCurrencies = (): [string] => ['USD']; // can be empty array - const getTemperatureUnit = (): string => 'celsius'; // or "fahrenheit" - const getTimeZone = (): string => 'Ecuador/Guayaquil'; // the timezone you want - const uses24HourClock = (): boolean => true; - const usesMetricSystem = (): boolean => true; - - const addEventListener = jest.fn(); - const removeEventListener = jest.fn(); - - export { - findBestAvailableLanguage, - getLocales, - getNumberFormatSettings, - getCalendar, - getCountry, - getCurrencies, - getTemperatureUnit, - getTimeZone, - uses24HourClock, - usesMetricSystem, - addEventListener, - removeEventListener, - }; - ``` - -### React version - -16.9 - -### React Native version - -0.61 - -### React navigation - -4 +Previously, we used `i18n-j` to localize our app and we decided to switch to [fbt](https://github.com/facebook/fbt). If you want to understand why, you may see our blog for [Localizing react app with FBT instead of i18n](https://medium.com/dooboolab/localizing-react-app-with-fbt-instead-of-i18n-90822e0cb373). + +We've defined localized strings in `assets/translations/en.json` for English and `assets/translations/ko.json` for Korean. Since the `en` is default locale setup in current project, you do not need to localize this file. However, you still should not delete this if you don't want to see missing localization warning messages when you are running jest. + +We are using [fbt](https://github.com/facebook/fbt) to localize our app which is maintained by Facebook team. Simply running `yarn fbt-all` will generate `i18n/fbt/translatedFbts.json` which has all the localized strings. + +If you find trouble using it, you may follow [Integrate FBT into your React Native Application](https://medium.com/translate-your-react-native-application-with/integrate-fbt-into-your-react-native-application-2bac420e8e0c). diff --git a/STRINGS.ts b/STRINGS.ts deleted file mode 100644 index 461ce842..00000000 --- a/STRINGS.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as Localization from 'react-native-localize'; - -import en from './assets/langs/en.json'; -import i18n from 'i18n-js'; -import ko from './assets/langs/ko.json'; - -const locales = Localization.getLocales(); - -if (Array.isArray(locales)) { - i18n.locale = locales[0].languageTag; -} - -i18n.fallbacks = true; -i18n.translations = { en, ko }; - -export const getString = (param: string, mapObj?: Record): string => { - if (mapObj) { - return i18n.t(param, mapObj); - } - return i18n.t(param); -}; diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 87d1e943..6baa3370 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ diff --git a/android/app/src/main/java/com/dooboo/MainActivity.java b/android/app/src/main/java/com/dooboo/MainActivity.java index 21ab5d9b..d121f950 100644 --- a/android/app/src/main/java/com/dooboo/MainActivity.java +++ b/android/app/src/main/java/com/dooboo/MainActivity.java @@ -1,12 +1,17 @@ package com.dooboo; +import android.content.res.Configuration; + import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactRootView; import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; public class MainActivity extends ReactActivity { + static String currentLocale; + /** * Returns the name of the main component registered from JavaScript. This is * used to schedule rendering of the component. @@ -25,4 +30,16 @@ protected ReactRootView createRootView() { } }; } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + String locale = newConfig.locale.toString(); + if (!locale.equals(MainActivity.currentLocale)) { + MainActivity.currentLocale = locale; + final ReactInstanceManager instanceManager = getReactInstanceManager(); + instanceManager.recreateReactContextInBackground(); + } + } } diff --git a/android/app/src/main/res/raw-en-rUS/localizable.json b/android/app/src/main/res/raw-en-rUS/localizable.json new file mode 100644 index 00000000..04dcab6f --- /dev/null +++ b/android/app/src/main/res/raw-en-rUS/localizable.json @@ -0,0 +1 @@ +{"18yDJU":"\"Go Back\"","4rqrl3":"\"Sign In\"","3fayOT":"\"Navigate\"","zcXn6":"\"Change Theme\""} \ No newline at end of file diff --git a/android/app/src/main/res/raw-ko-rKR/localizable.json b/android/app/src/main/res/raw-ko-rKR/localizable.json new file mode 100644 index 00000000..36fc07e4 --- /dev/null +++ b/android/app/src/main/res/raw-ko-rKR/localizable.json @@ -0,0 +1 @@ +{"18yDJU":"\"뒤로가기\"","4rqrl3":"\"로그인\"","3fayOT":"\"화면 전환\"","zcXn6":"\"테마 변경\""} \ No newline at end of file diff --git a/android/app/src/main/res/raw/localizable.json b/android/app/src/main/res/raw/localizable.json new file mode 100644 index 00000000..e69de29b diff --git a/android/drawable-hdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png b/android/drawable-hdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad03a63bf3caba175695f5acca85a690dda2d02c GIT binary patch literal 134 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 UbSb=j1=PUc>FVdQ&MBb@0A#a%=>Px# literal 0 HcmV?d00001 diff --git a/android/drawable-xhdpi/assets_icons_mask.png b/android/drawable-xhdpi/assets_icons_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..99d1224087c89b8b052959cb450d5cc7e40e5fa0 GIT binary patch literal 39554 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 literal 0 HcmV?d00001 diff --git a/android/drawable-xxhdpi/assets_icons_mask.png b/android/drawable-xxhdpi/assets_icons_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..eec61342fbd96f279b38a16a3a97c2498608e48c GIT binary patch literal 81728 zcmV)0K+eC3P)Pyg07*naRCodGy$Q5-Sy|tC-ud49%~hyvqYWhBA|Q!r)0i$uE6X%8lx0F=Wtl9g z5W{k%O^X)Mv{Uj$Q5wN=Leq+g0n)lsR1%F6*YY|oO{oE&e>=0XFvOy_i)Y`bdPNpGzHe{_2Bw{a`_kRExRYJ=JO}6 z2i+GeR*Q?5`}4=m=ld6P|8c|d@Zw1~JTw>&r`@2N4cFatFdWW?!y(5(N1pxlYPpwV z*X<1kgZ<%faF$!Q4+f*#hJ(@VgURr=LD${ht(G5K%-4Ugn5{na_5b*~kCAtMK@;dv zjvPFDY`YLBaMMry?}ty{dH0vDm&<3MfPa2H96Wij9z1cqUOjQXm~X6BD|Bnst^Heb zzL54)i!>vgvx-+HAkmOlE6lBdjYQ29{sZb?04 zB|rOMz1yw2KUl20Kj6j(_q*kL2dm-xj$M4>cP~Hr<}()p-5%{YJf^@8fdstuHQ#t> zZ+G`AaITlEyU~}UV9ywIi$618;9uF$E7Xu5wiTK*M^RP2^?G@rgv-^kTh13zOciy6 z5~{2HrV@{uf~uHn4FJb}v!=>3LW%p-u3Ij(3Dgr*EojnKXv9kw*0_U;(!Km)hS;zH1@zT#bd*}97t-Hmu zrt9&uP?0Y~nZ{D1=?M-_mxt@iR%}u6^t>wY3eECb52{+}iw!^Jy=Va=iEQRk zK{W>1Eb7)ceo)ha*RFCg6v;p@p+U4K<^PfnakNrGg6lm;xz~DbB0k5yVdUWH*Z+zzd-u(G^ z%I7T>^S^`_8=$4}tDmY@siH>5(7ya}Tt;b79u#tX6Kq>e|XQjgqbGYr?0b5RNL_zPfGXua&llSwz*I7FDxbvwJe zF+AhZq#KV>;_0*-QE0%6*lM!ee>+?J12@ue$0;^``mvBFd}M8otH@ z)8}2PXyjFab)2d^Di`lt(5kPy!ZWL&(L-t+k5zKY3=Nk{)mMh#7>K3eF)&RY*cbN1 zyuhWpcwiMceQ4?%kEVvu-3kPDQDBvSJehTq@uZtf#@$HeMWL;GPP?uD|5UAKiJh%F6xO?&ACX3Gq<`>jT&S#O#kh`d^>FUMw$Xfaz=TG>6wK zloiEDpHsnSul}bBN(c&lqC)9-qP!>?|ENZ^rDNbKW$fcFq5umNnBgPN<1xuM8jhnN zmeHHj0}jdJr@3O>S<+IO}B>*GI4 z%mHT)Eb>ey8|fqOgO~XxQxsV5JDyS=Y=B{#9AsP2Pbc`NUdlEcX0zFu$z<{?cSGH0Igsk5Ce(aYo9~wbEL7kn3QS&e#7mM-wFg9w42W@A z2E#fX{Gu9^b{OxNFc$?%c#JYJ!rbix|LobFz!oM-6(wgnsuUL(0S_Q+!;8k-tEl2R zSMez~o=v*xc%vK5RDO&E`J_n{cptpUEgs{k%5NQdYr|}Z0mi2oLH{?S>Bj57`tO{) znS{r-dqDyD^4N9{DDd{zeapqW^Z7Tf2FsU?hvTP}peooZjyh-`6>p=qHiaw&*2AiJ z6+TCaRS0(Vb-8RK%ngUYQ}HnZhRzA0RRWEI!LAxio$-w3vu^4&L8Wnb(;KJHi-JwZ zv+{lnK)FSU@sh$nb?OWQRP!j}Xj*+)N3;VM7{b$Y8+zBY)Tl3EP49ej=II4>neB`m0yG>h>V}*w1IA zz+(#h8OhUi?|8#^K6A0Z{5AyfMNIw795~XOjqqZ6p9~HGLqWIC8p)TcT-QL6%2=v8)Q7{w+s0i`fs=0Hpt`0_%C{(|WBD(49rO%)^NTTg!zW`W%b^Y&^3HjOOVn zonsxE2O*9Eg zjM8Vtv!W~@iZNMKC_I@GrZ2kFr?-Kv2Oi@^?E@1YtH3C)_~~Uw^r3~R!gpH>ZzpghREI$WO{TnokA)Wjq;Nb?nH|H$3O1CqeqLO$wAeJj!YDu6O;+WbZ$J zO>hTo>l1VQP$~fmU}DUN&xH9 zcvXnZqH6}pY=EF&=-zrNJu0cNzUij%fB4g1e+ioQk8r0?2oaD_1tx!5e*Tww1-y;} zNorboN%fFxqPonjS_aMVPhnMo^st7kQ9|;bufPuKsF1P`niHdS2q_1rW}MRqeZo^CKQi~{pu14>p# z!~&MD@LN)Vn+5n$sizw%u!hP+>N7kxKXpk5S8DBH^fWXBl-uyx5oqb7f;tfByz+p> zD0TxDB1D~KfPja=2+}}LBoIS_fwGaq?hhHL`~Jw=8n0WJ!@ z0NeT(sM_9r%@03?Ug+zPy5~k)^_(gyLT2AC=LmRhO*!$hWIewXxq|!%GC-k=mZ8Df*2gysq$_fw(m<6 zLi=pvoCrc%;f!_fR9yy$k|YBW`e~Rl$_??XBL)+=&P$`nZv)`pf9~J<&JS?wQM1Y8 zN5%Hxo3GmZlRsI17mfW+lynv`Q!o@7geohjJfb}OHkxomKt6*jn*#R#0z8|d5G<_e>yyq$@>eE%0fe}yPQas=* ztal*HX&;kSikSmOgtpd^FdpONeXm_m;ZZn-vm1vt;-OuYrGp*2s)_{}4mPQD_LJ?$ ziq~vI1+IBp`=r8g*XZcQXOz`*YE-g}R2<0>!q9%}oUi9GGMk4Ff$J!=$QS{1Ga@mB zw||`&M&rPliZ2Z+ssJ}(0k#y_zBHrQ;JTWx_Mq_(f8L2Bue#*&D<2h0HRZq~etY-7 z{?QjMhO3`MMxLaymSUBf##^@V*n3Isk0pKx3?xE86fFITAzu^&p+_o1zYvlir-&SV zCPPy;J#xgDYRlU=(rWoyDoKdhD=@|EI~z*63TuyWJM*@{wU#wurg|6y!ik>A(As{m z{c~{;$Bg!hFS|{M2jj$R6+=}w+8CqghfpLHIitTq$RHG+&M?~WxWO2aK4w7(NkU>5 zu4K_DI8f#^)JEu(fh%YeqXNjG{cjZ8GD`-k;`ui>z!Sn6`GC9lL`fm`xpmu?DPz+} z2!v*UNLPWyhDw7ACxOM`L-fP{kFWdYe|(*3kK|3BKVrA{U-#N4?ClSJ92S2as#b$G zdRUb!5}|m&er2FUGKaOxAxTT<8WAE70vu1Q%rRu5!l-z{ap|L*L2E>tv?v!s9Ph58 z14kuM6Fn-l3i^UoR&zXZyf$@4fe~g0bqu4`Sd~b4nF2z&4-5$H5Yg0;HUy2d$>v0X zRUj1?Zx&r7zn+f&DDdGUhnb6=JS1TyO(82JuXe=9IACTyAX>DNCzPhX^o{KTBp#>T)F~);>nwVBtpPJF z|KSN&+3a&OIQPrr;nvGv_;>%oANJ{wwBsXEfp5L_>gno(AAZGpF#KLbV#`@nM>sP{ z(L95pu$uy>SSDzL8is3#6e*=}j_v9}6}D1f(s@ON0;&SrFV+A^$iV3-YM+!m^-uy( zP*_SPPX@2_x_H^8qpwYIRJiiMOe5iKRbu;~ZW#oN@>)&ujTKqgh`c#>y zz$ln=6n0-FQh*U~Jzf+K={Fk=rzt^^Bw? zDmVkm>1E@o$)~bw2!x|Ds-P}(h*vee{V9AJ7sFx|L1oMUm5Rf;gFgGbAj?%ME=+9h7LDYWIyAB}9~mC4%cq*vPrR(|3V zlF3UIA$ucm`4Maa;-|o+h+-%X;F6Ku7CKh_vZswWn_I7rVE}6Vp)4i%`cL1CAt+#h zZ$%8%Mt-^H-t>j@3R7M3i04z`G&Y*N?FC+8Z(LT< zj0&tL4=y-WB!$RemNGUF1qIVf8amr|RawN@g&EFStAu*(joC)}&l*5!r0%L@-mB5- z8p&RPOKbz)(bZnr^_0}3qN~%X9|S__#va)u&iu2JqbYR?SR*%#N}NlVFM9O68%&ro z)QyV6hw!nIXwJ3MBS)`z-sM-`Q7I4KUn&2v-rjfZk6*Ib+r9Ktg7NMYjYP$psg4Lkgfs%A&>w!!&Z902j=*SJ z8o_I~Ww_i&C?g08Cj(No;j>F40!A^(U(zb%#7&mqS{^TeE8s|Z`_{^xzy;!c*90^0 z6x9Y1pXQnG(f>6+Syav_BS%M=y`QNS`oV^)S&bEsFAO|9!t6s1yF2wTzDku4nREx0 zYVb)#EaRhLtG;%l3h8JWim7K5CR0QVDxtA>FleR+B~OeSje*9A0(=LSO`7RN?fbIF z^P_;SQ8S!34Bpygkp^?Z8Vik+5ksE1g5l4J3daM}hCl&Egg%~`rVWILZoMw#HXtg%H0tuiEoZSW=v&Ir>423DV!Y{lOQv1^t~V2aT_ z5ahX(A4m}d6&+}qMqzNv5Lg{p@d)e62k#LK2e1?tL^?W~^~_mmB!-5gC~(4K>pG`= zmZ^sq9H0WO%1_9uLg&dQ2G4ZRXb*G33!Wt6@kYbPa*I&}=VM)oRd2p9garka0Rx~i z)Y~>nQDUyd7n+PW@YK8)-U>7V=CcnQoWP^jX72|cuf%Dqy-MK?Z>6uT&O(yeX1u>j zu9vqh8Q8KO@N?{;C`1A3t4PLB-6fdPnH{>OivnONY5r8siFC0&9?ct%OG6EzHDr>= z^w7m)@|AIx9>pF3NoOh;bk`3ykG$kXSA6%w?j-`Y^erNJLOnx-651Z}3yzOUS4nux{(Cavog0hBX8Kf#J4Xa5j z%5il5Qdv^*^#bXK5eg3RbQMZE1yW&R-1Z6~RItd8)Oo@+ z0+TQrKpGTvut|2F>7{^WVh$9bCY%|K1&(+tbmf67gg4mhmD>Ryh18L1@l&b$`Btew zYZ~s{M`=ostxX%^;1vi_zjV+$?KrhXdb}2G9WWI%a+-|$%?hThbP?}tfV0iLanM6o zG~*51z~1OrgHvfi($Ww1nPZgSa%;kF%MSI@&~_{jxCT%R0jLGfP)wXO1hi6Bb6PMc zY52Hj*j{~J$`ELj=f((_+i9^xXwpAGa|B8qlLqK@ca&OQ^5W-Ta_X8JZvL&b_hIn! zuuYX>OIj89(rn=E(t08c}f*2h+22ou`yAhQ7Vh zu-YgfTj-79z@V!5xZ}{kD5&rkhBWRClIYVu+F)I#m$53IWc&cy+C_1`+xLyt3lX4t zjB0uGs$5isQ8E*Qw}!~w;CWyFyk~D-bHh8|-siiJkByQSE{bcO*}e7jEwA67FaLH; zCDfvdV63nzlXX#67~wb=Sx&kNgO&Cif$N2R%sK2!VW)rwOUiK+-q6l*$)f6lAj4!K z0B4Dp8X{dY+2aEy%ex8VT6eio^ydeYh2Wp02koq6GXRvY;`sCWq!9pD_w<3 zh$Muu%8p(mN`~@|@vuWz202*L{vx{e!4OCpR->M+=?aAcEewUj%!oqns>ohNLg_D& zm?e(BDFX{1RWl>mwDxmGY5j_V15{Z$i6Eu_%Yah`tw>+ad2)!dmeJ7UL3$zs%3?^{Y?cCq21e65X;c%wG%c+Flhrv zKfz>MoK8#Mm#8CplaLe|f!D!wQ=F1GG(0$-^ROXLXs42ncsSn&BwSlh>!%G+#qD!T6X)IgZj`jzIm;Y(8(1vkhr+K1*Is5{(hKD1>RFZE>`i_9ar#2&uFRp8vwJcBhowfhC;Gw>mehvQcBdHrTS_BHfxmS4H*@vGhWTcPjMqZ~3v!30HuJEJ8w6{~gyK;h8p z+s|^1@05|ytR_Mjy_Y4Gz)*S|K+-xZ)Dj^4RH*dE@c=53b#Onma3GBz3 z#Za1pFntdpz`FuBibOrV*X4DzdA4`K%jcGh9qL;l=nATXWK~rZ(|KQnNntAmSAh^p zS8}oI8LWF@h>RCkI5lKG7@*SGS2vF%-1UHbs1%_tuLboKeCVWdNf*8?9OY9nRN5F0 zltpz?QQV}R5rM0mR1TvI`oawy5rDple%8xdXXC-wT=}DK{s_e{s4c2+Az}2cYhL?QK4krC zsLoU3K@!`+PR&0|b(eXDg}Fv~9em0(1m4%zl*aS=y3z;{R+`7$wAQiccp1f7(YL$< zTV?SP2H7iIrJ{Lbg-*|8x-V~2pfY%(_pn~_1s??rrLw5=sS0M?lJh;XMqYwpBfK_shK=6Y;!qj7`4Adu1p&98`Q1hLJ z<$6er8%n1Ft0=b3^5SfGsUi!%AI;6fAG#~@iKZdGeZ}P0a7gEa9U}^@h3_|$vZPWv zv0FZiM*t;$63ad?KVERufXJ^>c%vNC%vVto`KYhFFZKFXOxmE8%>b5zRw4+l(o`AY zzYMgbhQ8%|xlcA1m)Iq;&z$~t@Zv_>QpEH1;PWx6FMi&$|H2J#`wzc+TYvvTI9^Z+ z{H|a8p|61YH)8F-FrHUStdPq{7@TQ_o~iU`A{+>S!p`R`BQ*AZ^L{4;%J3={Jwk#| zHl>Q+g~Pr~EnbB5I@d!eyjE%di~B0Abt=4(iaJ+0R2~%_?U2h+G?xWtp*>|3rp&?W zEfra=2M8P0HAPYR5k88Sr5B1Vt@^D)K~un-rt*&ApJBJs2{~2P zA&Tf|vv|3s9~tkK%L0dT>16~aT$KhDMc`>Z!e+Sbb+5omtLL^Oc&K;^EI3F)(=4t) zIyluUh)OGddS|!otqjaWm&{2NmS|ej#d5D455Cj%!3G{ZWiS*Tc7+ER1sa7iBNw%b%r>;DNi$b=%g|oK?DXq^n{vs`k8}iP z2B>T==Rhsx4LqRevOq`0&(m8fw$jd?fgcMLaWI;^n2yhk_Ak)Wn+iM6{l-Xm&W^(M zUh{yrDi(VbRQl6`%yH|v#m$I{vPtuP_QFr4RG9~SQfP|?KQK_@=QGvo1qrr;2=>&^K}5)`OeMTcg+3p{L|p z1?GNeNZn+JN8?5mQR6x|P zWrXy;-YcX&=lLR;}Ng zxk1AoVX>?HZso;``7%)<_I^A=Q*i5nO*Pmevk(k21t;-RP)c|jOb{#{lUD(1FpU&q zbW*o@*;BS1xz2qhiF1vXZF1l$3anuvYr!T;BWo54sao|f2ubt}(Z7oYW6{O2UgB@SCRn`+Z5+}+CGcys$NsW+W@HP5e z2X~MQ`F+C*-q(J#vlE%3b6IS>wuZMghx!9o`XjTeZBp?e*<7Tt zT#T=!U-tC!Iwkxvpmwi8FM`1_3fU~OD~}X*8DW37DQ}dS^nKaYNH9N{<{U}5Ab2UmRsqM1c z6XRf-=kQeJ?f1|cUcuA^HZ~rZ;?WyXl{d7c>=b-`z+#if9P^+DN~{s2K)ka9c}7Tf zgEAhFP`bkF3a5)c(p-a3(`JeCo<0~auD$xIZ{GyiL$b-i2Yp+!Jo5HWtgc4bE(zh~ zund4P3X>LH!O4!`_%15@L*;eOS?VxLW#C>Zy8@xKpl}iF^Mp83)PyN5rc4yd{8hh7 z-ft!RO~{hy;8CBq%8G9lCEZhScXx{#c}lvOdS!^G5nszHaJkEA+G|@1j$yN2A)~|` zy)I!Av%XZ-WesjocvaN4N0>QA@#;FjEiIm@+w$$2Q{noTfB7Iz2yHxm29>09d7&&m z0a>vrS_!LQv_^0tth%p`x%#VUC{euUu@uvRuZ;exz@&#hF?w}h0(waZ{dSDWD|EQH3Aurm=PKd=%lu@P?gCTnfNEmCFToyS5R)EM? zqs!*+g-JU0=K-1#J{v}7E}!ojOIF?#SdC5$-rYxW4A!);%hNH3W?BDG=oP~FPY*>zHRgU@0ZVGCxd_mE#w@_Hwl-ubsYca3>u+^Oh6wX7g8C;=^8!1pc`1Iuj4~iDO9`&fL4JiU0_P7*QaIf*8cCWKIT>W34CUV+ z@B8%vZUU;9>OJ#hp@U*c*;sTI6l7%)njB>Vt|<7R|2PJKyj-hP=J#Gdz0*&5=y_de z5P_vut-p$6`-BNXl=UpC+oODdyA>2Ykvhsy1xFQArEqs_z>#w5@GLZ>ZP7~0nuN0I zfmEy{a10)#X;6h4oa7ZeO1~U$*cQhm^d%q6syfMAOHwV#pWcj+RIgTD2fHfmo!9hw`ec&4kW3nz@YEx_u%&|wU}g!8tIurM zo<}#qz1n2^s9V}dEz0(L1{vWY5z?1k_LX10b?rO;(}VgH(}SwO@4oJ;mqYj;h>{ig z@*9h)S5Q65D&o!=C`49iBU za-aL=%Sk+t%ukufkHSPY?%PN5fdxmQYq|s+s82vDk&2l4Q-mcC_~#`7O>u$YgGQq) z8ekep=@YJkrf^Y9-hzREs+0>?6k#kh8Y-XR>X>8toC>jsv*~vS85uWQwb%Tjb)aap zJHl=ey%;wWoUB1@LW`ODJJN(Uj{vt_Zx8O*^3sgHbVt zD6vLKyfZKsh1DS_Q`1a^IUP15vYUdh16=O%L*)&x`}QISj`C;vNqJz|Yv%f$8ifC3 ze%9B1)&F$Ywg3Ki9<=9)A2bEN3!c*M)_(R z3*1%|QBZ|JeTf1iW&N~<J~xo^Fs^U=nq?zQ@ZsA4xBlqtUINtFcA+hG#na+>=tef zF~4brk31{dyO2f&Ryj(cd(VrQkza2Ivm4ARXIi|f{Is#DPuhwzJH<50G3Me1Uh-FT zl@Y-zL$)uwJW$E($8eO#Zc=6hFpXyn4h3!BG~O1EOO+ai7zyc39Y!B+p>Yp4yjB+a zX(v5C%4|lgG=G2fg@5HQ-gN!1zx$6&dZ4!lMS*|s?XSC-A^Nw&sN*szeF~2<0t?y; zKo}zLIVDp!7B#hFE1J}~*WBYI3*C?(o5=nQB>JPRsCarDxaaQAK2Do`Z%JMnkGzzENxL4v!moFw|O)S zdTn7VP_7-e88Ha)%9Q6i-d6*r;Bu`X=BP_ygNnAG8478MU_!GD=%h^Ls|6!aRQgaR zeZmNI@uBC%gfe|N52MoFvNsB6U5kTA$h+9%)B{gwLrrm&0_%lKY2{JzS>DKR+f_Vl z_?s8F;$dFMXSHct)m81%XoLXVtGngxqP&TevYHGd%TYre ziqQA>jU;37l)zOpaFvTvR{1KwgkhbD%D87*9vd}eUoMC9{l#-Hd(K~c$CWx z?QLaV>3v`~Vw?wdyX7rE_8m+Ey&x8lsuWgfez18d!BozJ8!$-fgozMHYd3mr_FRB6wM771J86NMW`9gwf67ny%u*or82WBnAUO z3SJ)W_bc=$F-T^VS)tEbWATFX)`_hrKVAY$ozdvlcm=r(Sa}zfJufCFy~0Xx^BnvX z7il6+V(S(K&(W5Es{o*h!kI@J$shGYG16YcTZDS)!e{bZzJEuweS5DJbon8*3=@5k zU%VEu5?Yg|BBk>^q1c?;q`iM&)G!U=$sp!su=KKEM;&es&@HK(7jZyld0M4eVrv3$ zq)D|~uNa&Rk4ehR1Tc(pEafpqLb(tY?MYu2+6`C1Zz@{Wy$3aD+9 zR-Bhdt%VBGMH*6+U4m42ES*&zjYkyNeEwz7iZ+TDn+6SXq;1xFPI1YP66oQIM_ywb z2=xy_Xq5z>xiAK56n}+b2p_f;-6568k;Xmp$3t@NW}9=9qbOw*-jo|15z3*XsIFSqcCY}HSFT;raXF?UAUe>Peb%d zivrX3)pP#WXFl!5xBu4rKb(ROz>i#iK()9vo-72%}(q*6R!0SA^5P zQ%VOSah*>c;KlTuigK{V2o2k6Acbf}+kIx(2lW-OgnRb;r3LrZc^y@h4*J!X4)7eI z8T4^(ne(hZiV`u+Chfe>QDf(TPeMwj;PN(yMXp;Gwh>Ub-ME4|GtelL#cIoMND;n?&F>_(ckG$Riss zxA~!bA!zqz586Om44X!Bg%YlLVSfK98^hVWVM9ag%MwzDplU9d_pIe}F+04*sNM#u z0pPx}z%I?qOHxa>tQq<=xv9KJHzUL*Kh~H2@QT-`t)Kg~&wj=m-uj#Ge?a=f4@d}& z5Deb)OIN*thJLXEnRz^TAfKT}j<}k|L^65ByN!W2 z;S-n=QyZxF8$vYR%!cNuvYrcA! zklR<}R3uT619)N(Fbk2}Ot}b;7X}1ZaG?c+g#476X15CwE2mksAKKxZz!WvS4gba_00Wy z$ud5HLeJq(`andw zO5U-_ZiDWNPwg(=0BtXWXMJkjyB~fZ5CwkkzkSUsAjhS>SCx0RD4_|&(v#IdgM$p7 zyC)M&()z(LEf}RTGK>(E02I1T22q7!YiPW z395=GfRXzd)Pe!z3&Y5uFbY>;h+v|84t%YbFpGQp^BvmK!eOPC`-@s%9ADsp zBS?9Xdec7+0!bp7Kc!XzQHNQx!i*Gg^-kcl`_2U$ouuzCzLX(_*3m-p*YmujCr?E= z){%MB1sxFb=TSaA{U9OjXd%fC)LFNDiJXulSSSndNiNp>ei;bgAQ?je2yVjy zcsS9}+Vl>% zF{wx75=e#}3aW&WNO=%}aL4c0_DvY_vR(IGNSj4QA8LmPO`_JbmZ+{$#ig3af)N) zQy}!%+}9SVh!KbgLMeE{G|hN~7Jv$UgsBA7dWzw&Jn&r5p`g_pFr7}T_dpffOs6Rn zQr!g0uQXv-Ysw&5N42-85v-HeD_y)Bbgn2TkVFl-0axYVLNRyKGZG`ycjgNWd|TLh ze9ts3&Kov;Hx|sLZbR-8c6sc}7c|yRamBzuJs0ClCR;hmlNdOSj|yQE#mP#81P9ug zw($Ndm7JEc+jj87;Q9`-eLXIUyw96Mi*_n4bR;du(6ge0@PV?DYr-I@M|oynJBH4> zNz-rEq75Q1zOdm!n}UVH8fk!}b!k8}`o#x}@(0lLwFkrbXfXL-zW1O0tNZo)#FFWL z+itz}>go3TKKLG*^i&bI2`ZRMk&#{)BXLNK(k5JtqRBADH$01?WgrR0C2T@4^FnXn zDPBkbyOh<^<5@HW2*$)$%DSi>n7)TN!bUb(jh;jpByKObdnoW815tV5n~c=@iZ6np zKq(|#z(DHZ+JP$-RxI4fl{~Kc@ug}iumfD0EQ8MU=MV_JquyfeAQ$P`Y?J323C_he zPyI+A+YL+wvR80n<|PJ17)Aw_sil_UShNm2@)hl+X$cTnV|1)pURbS7i!vbiF-Rn6 zFuj>@mOQo}%n?y9$PaB`UKvVgKHEb1;Ds*`;C2+zm*m-cd1IPNT#AaaGPNb|df9N` zYdqN`t293+>=d(P+Gv{s2P0zCqjC53vKo~dO_mNCPq2)Km3F?^uev#VJ1R9^na|!B zN~?gDRjKs)k)0?lydl&NCi2X^(XZ$YeJszefrz3~pOHZ53m@mHvza=}(h3ft1<-8w z?{{A~{tG8hzL`GL{j=S#A@u3r{lF`r&Ql!>a*G1dy5X8?Y!F0~c{VD2B|}fL8g6kD zMm29qncP>%5F*9Mutf1kA|g@>l7KR>M7lK&=6t-2^pKEz5ft)RJ_8IQB}@+vdcc4z z07&OXoVa7%L6A&xrr~ElafOmn2xHM;dy_V3g)_npyo7+1vkq_D_cn*H1Z!78p4x7I zoZ^tV_L1wJcU3Z=k|rI>qmw7miVA{|f=6C3?@egO4?7#>3`M;zTHAhbMoFY!%awc5 z+md!Sa*vyknY>;XZVu)UZRbAR12tfXEATSKWi*9>ljT8!`hmh<n+S zMp{dab&Rk<0)2M|+oX|3NF%1vrPGuFNO@&*HL7m;06H?G(Tq$gm!8{R@T_i#jq*B0 z`Khu}&vq~t^VIc6mWI-=3efxEr?25YgZhpC=ao+&?0Y|r+Y0MoyrHrm&MNQd1K@_X zrOb{dr|peW@eECgZR~>kDoq%tFdzW&c@RhDD+F%UfA$$oA9ld|>WyJejb_TyQtm~< zObh#u0vJ}hH*3xv@(P&z9wI=L2EPa{2<-9dSho!qPtZ0kb3EjNFB9U;eJ!aY&SK_{ ztcQn%0oRnvw~a`*{@%kWv@Vx4e6u!%CGRRm=!9=Ry-hwErcz@x(#6o5*g|j=hHa?G z!Bo@BV3KUJbKmniLFu5eoNg+RCaT8U*D< z<;|;n$-8^zEXrH2_01w4=U3k zBQlAwY*e=5Nl8J`GVQ6`+rWL=5B{_3|FC7gPlx->12Yl+<9N9(J%)dXcvO}6k3zScH1s)mjLunG$i3_L++mJsa>l|&b z-Hl-$adhxaOoT>GPIU~GLRwCQ556L5U7@}BaBTz(Ee{F+L(2EClAm&h+BDpM^0P~_ zR_nnTH?IZ;TPrSC~mqI8eM3=Sm+!ud>B7V znSURn)+?}Hch`4v6WZDxDW#M4)Wv{gy(7zR5rzmupmD9p4_x7A)(psF`6|NsHyxZD zutbrKHrIsF$rC!#R!J^F!X;!QZ6Tlau6;4y;K#Z7*Vym#R@AzWV1D)I{^1L0?6o$v z6c*HJjFxvAkEn-)*a#ugNG?QONPE+#3Af0ms+tR)oZeIQhjoMpk-& zn`DlNDTTrl4uI@`Bcqpo|Ihxr>rA;Xn<(9xz|GJ`Ybt?c znnUr*gAG%Ot1ULtbi4~*NS>;^PO!T?G2tDFrq|R3<;WWWBGI{8y|d*FpMA|~-jc|< zPm+Xa)RpU%YNNJIy%YFdbkP_?jDxf4$6QR5;6j!@-O5Y$SYfX(-Dr?gF`MM&eB z?W8TjOuRmIWTe#yf{M%sdNGpTCwt)3Ln+{NU{Ih3{FjCf4q4`0*GD?kG+#U@2Ce$H zO&NlTN~6I+CQvB97q!a*n|(bmyYiD+2k7avpsV5X#!hfo4E;Jr-}TBTcrcRb=0OB` z2#bO3$Un{JLO&oKvb`QPk9KxKXi0!`gFebaGw@< z+~*Mb?%O{6-GrP^%6zSODje+4l#mL-LM$7lXH`I}&%-&5kcftHa0&uD7_sVh5k5bL zy^ByKbdvkB$@mP$%Q6*nUuE+fHr!7REvX};`J@W{VXUe`mA)#p9Zkp;Qz|;uPtw9i zx*FkCoXidO3P8FzQ!^W(I*o&kNIkg1RRv0+*9yyQIqXU^$CWst2s?GgiVK3vnkoUW ztVd2#>Ih@WvSuNQf+F4;4&Q`n-Fic(VQj6V;%STYq_R?o@@jt7&+_XiZrxMJYeOl5 zob-f_&~(70^>9e^07#dqicyU#XpG1qhwhvCoa~E%uMMnIe;|>H>bvwp%FZY<58ihN4iL#P=^R7{c+}e zRB~5gbo^gom^FHqXY^p&X}q;T`pkPz=2b0+fLsy|5NKeHpDM%mz;S zNm5-Y1ZtFzQ);BZw=@}uc--{B3QoLpZWb2FOFluUthUW!iH7KAI3SjJa1~KS;@{0|+~t}= zmSYP)qp-5Eh0vtC%u+8jhE@qcq%{DBdO9k0wUT848G6f0mCnJYbZb-tsxo}mGaII7 zQHC&Ri)BSjm@0f3AiT6Iu$T?d^J+k1{6N-r#xOh31VTm?_4X6+1Gmg}IBvkIJ|5)l z_RDTM*uPwW61}M&M?{wQcSY`S;J1}jV>(ghqyEA8*E+9Qi z`GDaU8{&z1UCOZ&TivnaTiwwkTfAD7uL)3hh>H-E66-0PvLS?~U%i0Yszxa%$kE8i zGaT|k`Gi*pZ;kyE!O`)d!F7u25Yw3XQbLh#Uz|>X37m9|K($jyb zq;P7uDo=wh4Y{vZmX?Ocy@J~ZK8O?ojh2zeC`ScIdog^LMbgvi>cdm3aHzuaZW(w| zIr!7d&7qaI@*FL+2?+CBh;(tSer(Ojs*qrqy1eIz@%FZJw8#mvqKA_p+)BB8=F@p! zjV%>vC?te1%gbuKRd5Ud-ZyL19T!RTqVfVy9K@KT1CJZiEe!jVfk>a&s&0_*9k~vj z$ZN!Cl;ya}=BBTtC8BG5bAT(68-`pwq?w9qlcm-tFLwrKZWuY0LH8(s=Kk{D9M6Mt&x_r3)5-Da_k7~_K<~+zZ+Vq1RytRBU&2!vvx8DeP=%qkCK$9N zUJHR&VYAA}a}=b!Kru@%WEky;U%}h$&H^(^yt9Mis=VymXS%az`Lra=lyTOV5T4P+ zqer*8i!R#gj-NQ%9X))gJ_!OtR7433cjLW%az$&eH&#f!H^OYn7zsZ?fE@8uVG~Vw zO!%eJI-lrQA`HXy@)|5kx>JQm1tT9G$3-@sC-zKndt|w z%tb@Zpq!TAa_kL@-ag(=IVSAu7wD5EV+TJ(09hpQX>bgPdeaM#P}EZ4{pj9P^pz>^%kK^!-s%o*9p-pA3YvBV1_NJ)@xaiS z*>n|tb8FTeX2sc-@08BC3T;<;sXHUu7=5ymzocJJojR4loXd9&xH3cp>X?G(&_@~> ztzj@fxbbKI=RbGymm`Ro6Bx?2#;8nNj1-QTOqW&$<)G@WRKAb;pk!?zXlzyR8i@D|=Q}#R?OO zXY_JUQGwV+Xo;Tbunm~%Vs^Rf94fhFjEb3;&Ori|J`AN^vw1F)YQ9xHK*WWimMUl> z$WIj5d!)qxk=84&G)=Y$W=l^+tpabV!7ZP>NIx?OSXP)-hvqg5C`eY(ky65S46FlV z$yqoDGwMSl5AutTxVQq#TO%J9;b$fqnwmFTzz^R+=4)UDS(c8j6TGj!uFD#E9MG_r$ZQ)qa0*Gek~Hzw8eA_Z zFHKiW_m20B%)lLG-q_qCBAU{cdaQ7F_iT6fsnf^+#(>2iyG%bhI=*V*f4B05il|I@ zC?A1|(V~Ws-Y88&)Aze2QkLMN+=lK$pBjVrjsaCy%Lj3UH+=HmhyLRgfca z3ViF;C#Qe#vAe%d&*Sr-K>&t{R0QonXwb=cPC_M_M?ZB3YulaKp`XNJlpPpDV|^Bu z-bo$>bfi(mJVRJ~3dKEpX1lxdu2Tt{?b}pm58;Ox8VIeq#$j$>7A8r^^c%eo*XA%r zE4h2hy6^5zpW5gS-+87xdT6sdoL$RmNR7Y)z<$siA#gNQ#!vYar>|NumqMnd6tI3hAvgvBJyH|A z#%t>}!cj5A)&A>XPP9as7&vNnfNF%$Ch`dC<+b;>&vvJYo_6)VDC8dFAC5a@w3zyx z`T(xWHv#7<0MQ^{3Op=)8vekbEDP;~XtTK}^tLQZNS*SzX&+p;{ zbH;oU3D_OvoGRP&qz&ZW{_6Wqp8WbZ-P?82_gaDf`1VuZ#Blo)vMx7D?67+u_7W1% z&rUSRqN&_N4RcSAWd7n!<&TH-hj!&$sP!Mf;^0=`t(iZN$RM0xxoEmL{be}b^Z;4W*jhQVO0H@bI9pN&Mg^on*Wuy` zcinpDH<9p9O}(evy;9(te*WYJ&)|Mf2Bhq_!jzhvcVG%aAtdR)N;Ddygt3WD0V-P>Dsry1C|^UhPTV z4ToM$C3e&sHpH6RPt`C8+kug7z8`nSk!qLKQTJKkoH;#UU;;0i#UBViX_-QS8939d zw$j1b?-hok>{B)NZ>RKy{4(E$pVw4@5dfqBg90-nEkq*}J_uul4HdX6=U`X~eJ;sw zx_3R=7L6c04XiL7My#^euo3{o42DNZKz--7MqaF?}>3+y* z9{clq@c*oXkVHRvU(oG#24A;6F5(6}STj>F|Mq^8& zu}vPQsc^X>HO-my3mxNybIPSgTI%>?SI>R$JtzP6SN;6SfAMR(T->AWUMVndy|{wG zrpFtiMRDmz)N{QM00N~?6>ki}C^7z(qrFKK1cXy&NWT*gy5-;m1T}2ZqE60YP04eH zqr}xBV_G{pCG<&}3mI;G+buDo^ZIZFTpq(nZ-dM}LVc6X~Z{`!pBVInQN`vzcrX}d4 z$RFO1bdDh)*+jIs8FI;FZMPs=Sr~77N_a^o3z!fFS@i~uWI02t}`gN(5l9*^ml+itz}7&>VXoGEbqfC@dLY^{tFM`X;M z&EAyxRbmIbkq5gT7RExaXLrJ%bYRFYSO(VY_oAd*j6QBU0(pp?k;_Ae*cruk z8fuEQ&AMxp+Z8<3W(f`hVJ6_S=LbX43#3XQL!F!S-g>MJCe?ogMr&@K(2S#-u-rVx z`z3)K@I9U$2nlydP?@91K(LJvC;c+*yN~_#^hzaxCrnSG_8fu@nMn(Rb?~ZkZ~(4# zWF(bKZNZ2}rzPCWD|eu4zv=l@?AZe2jR8D_V)5p$)W zN<*$77=D7GB1%Dsq$M5t1)+N(Xa#kMyqst(R!ll93Z1V~|Z8}U?( zZ|VuVxFw8i;>AhxW1+8iqreG=$&jontR*y}q_I`GIz}p}&$?CK46cwNa4UPt2%?NZ zCHgBapDaf09_51vIjk$sK+FGJ(=Ls=?IXJ|t!sn(_Kyvj9h}mLF)=~c<}BI$qJyxD zE*kZ8nE$`5)8c^=ycj~L*wm~A;#Y021nCz5Wmyzw4*+1)cj};hXUlH$1E$It^u+}Pl8mSQPA$nlJ zwRvg~1OZKN9prOcwH9evVLlWX{WsKg<oZffh8NeS^r;#_n`1#?6o6`r0y}6A>)YK~;uRw!C`IPb ziC}mWRkwr0o;mB_=4Ll#e8OoU2cYClJY`&Q(K9tuPq0y8F!oL*-HD70krBH^4wmY{ z?F(zH#OWYv0jH23I+&JrcvN2H0d-{*oi+(eIveh9;8-;7hl#|FAfH=AVTW7{!tT=A zDYBrU%c3B7Zre3d)}QH2aIA+Nkc9{ae33r3B_Xt!NUt&|!11B~d!)b#l*s%Uw_AVZ zs%H{1{J;Q9lUI_437jLq2_;nC!sZ;oyoM;X98ggy1rFgdBJ2H@4xwW0R0#X6hDCTc zSHNTy4B@Q(*)X2E9R$(ar;lRjs|BP!(=#nX-$LpHIvms5p{HR;LO<~JbCQl|+n04D zQsx{*QBNE@+Fg9niSGFEV?+Qam^VI}{*|HgCSkoF#L7zwq=k>ifrrtEbxVuvp=Rta zjG|%~=}{W=ZH9l@3>}MhqD*=Jg1hIY)wROZ8;qnWbk>{uRW4E#s8x@r!l*jQ!$st$ z0E4Rnqw-Z9YGIxC^;*W=bm>Q1%>yn0*5m5^zU>^PaT)oRZoZ7f_w|UA%V_ESqN{tE zZ}p*u5^xnkJT*TWx+e3jF+n=@TaSI+EWwS^8kRTDD~#Y*`E8fP&?pGEx-_0uJ>E_P zV>>w4*vng2Z0T5zV#tpvA17ExaQt|83!d^i&U~( zC6697x&@)sf9}V~nf5;6fBdsw^p^L0=%XJwcjr@|-6IdoNbm75V}f~SzS4Q_c`QBMd3^1i(goun=Xj8NJ`SmujPK(M1nvXbhy zk00;uxckoT?z@-{*kSb*A=AEdifxroJu`|RL>Qy8kzAD2PLk8~Gbd?KD$&+D4%!z}ukxt`hq4$8y`DA>wIgthEo7(^Am3djBq)S=z% z3NHgDiPsUVC2jXLxIHr54J?l(L`i`#lx341QIMug5dzZqXRBY+Y+m-HTii_WiF9-M zUa^|vw6~fPq7_}6NU09T2EoqOIt$YW`nW`*bFv_8|bqdwA|E>a8)FImXSyBGl| zgMjCK*lRs8{Yd2t1(@D#-*cEy*aaFYTGpt;N2ma7d7A$yuTwgDc#*a{l|Sl@!iEoJ zNtvfF~)42@D|EUGvVq?^zDzG0W zTh9kCiuHw1hS3sIW@=%aI+7|PUjro8r!avIF@Yg&@T7qrGy0kQaDgoLYJ|r#4_q2L z0h5%8jB)KSUd|E0ERct~hBR9!+)*swnX^Y&?12)qy2tt5^m{UjX((M&2-=PT;YwO92s_P@8T9Jw1w1qOUuEtjWz*RlOc#R7^?U0FFL*9T2Td5r)zt$PFPFf%!UH z%sIofRtGMEpe;)b%94jxvV4{_jg;%ijiM%#Gu>%;WJsHFU)^>6SNU9Er~zB3rnY!k zYtLpqCcB$I^2H_fuCeGb=ny2zju`88HPW>Pnl%7KX2*^kK^6{oCyvsMLU~<^>#|B0 z@01Y)hpZ%Xu#j44s{?V)PVDc)Ne~bRQP_j`6LekqAY)mQ;6@smEW5_gd4szzddXKm z^Wrz&_}jOW@M*Wts=&+r;WsitKJ$~24o=BT84!8I)^#$Auneu-4nmF`~o{ za1lybrkRUkFbb^2jTbh|!RSnYXWuvTh|D1#vj1z}hJNlb7`D0Tw2^bXgy-=NH9(<| zmhu{!t7^dzt4dpuCJhpk@{mEsq09(~0;#te;cbS5c=p3hCz(w;C?8yf%)cY;E7QnLoRi?dQWk-u`Lz;_o|~S#ZdQ(Jset-q z+t{u>X0I~xG5tG$=!sp-;wZQZ?aL5CN91R=;ll+y0?O_H;wHv52fuHYz{j=k%TZ@!-|tW^*D;#(S297orA^HB~6?#arpQS~Cj*pSQ9?k8u#9 zK0WUVmfmjB?>&5&@fo^L(>&4E!s7-%)1AQ2SPaHl1(t83X2!745q?kG7_-tLKg2CHzPM;DTD1B;)nSFu=hAly|H$F!8>*F=Q}-fe?tk zv$KV9VEVyMRUb17N>sqd^~baT<{7H7b97!ZBa2K!xM=-Qri?Z?G94e~c8WmamX%J# z0XP{`%?2Of+IH8u&atcxqDhf>A%)iqaENvG9@lHv3==lyJPi+$WGu~*rtanWBI|&l z9t?!EZRAZ?jdoZ@T+G@hlUGuPhJkBt8{ol= zZTHZhH~1;2d;l}AG$IH7mfnPuiG-}SkLYSLg}OY6;_a*x__U&KmD=Lr zGqg}T#m{u<>w$YOqk_*}fq(CNyoNoILM-dplc-tDV+9XuoG^7Wgtd+;Rx-zTp z7WSmE-D2cg?5x^qBjI`MGx;?vwh`Pk0LJ~`EoZ8mg-oJb%BWOw3!7Hm)4uh^FTCU@ zuDR~!Bz}sY&+LIm!<4?`)yQNKSo}?oLTTY)@{m{UXvs6R zWjJklGiBqR&7vJL$1#N>Ng5Y=&|u0oVo*j(3m?jd1j*mh1Sxsld*LvzTQCa^q_ z`+%iEfcsehG;pd)yybu;j~Tiw(?vY#4^unK3fqSZw z=aaV&eBk<7_u)@`9D*LLl~#bIGPek=CsY{pXi%OYp`rc5*BLm9W|jh1bHPXN3oU{q zQK;Zh^HRuipJyd?m*XRt*^+Xi+$ZG~=TYDH+=!Y}Hf zq#8wUWU%dgr3GLZCtNnOWr~V(X`F=^9Lrc%y&}91XnQ5bY|t_%9Aor6N?+5- z(+iUAj!1bg&{Db;=G;`%xt}(09-Pf4(iOT#flU|Z)axxzDosP1F#~Bw`xiWO=)(+o zgtWb&!38{b+W#1I)G8}i!$uSg&`YMecnd})%-i27{f!nc9YQP1mZ z>Ersmvoh*4=JI&%=X>NcauJ;dMxq|-7Y7%BWVBv6mA2LtzOGLF_lH04^S|{cf3jXm zPPy~9PwRmPe{%ct2b0m!tdfEVQQpEjgr^Q9^GZu`cQKm=GF< zIw?Ya#H^T< zEryT_vr)V@tKhE>NmUZNFVZbvVrX<#__JumBLZVzml}gx^VjD9a+WAc!3eDwz;b|% z{P85f&d97@CAdK!PV@}6_Z%IH9tUadp6$rSwP(o{m|ALu(L_>{pL1D(aLeoBw|K!* z(lgEgF={X+F6o9)voFa-D;BI~4d zDiIfoD<*ESBDP3O2*=DDg^_3Z^Js~P6}Whg%E6`T^KyqYKdhX${8hWE5^F(8qtN6L zwnUI23}(V*Ak&|_wqZZZhZD5645mqF z?u)1YV(b<;9Me?r@#s&5N9LpL7KrzfKL#DQq-!kS}6UGnd$GfF{o(Ru&h+8fq z7OB^e-=&7WpDBN~6JU<==M$*THSK|)~L2^{m- zK9Q)S=O_Y)jAGle&_zKsk7^wPB+4K&FvOQ*+Ruq?Y304|gWy%%21rLQA8 z#f~%soB=N0XhOT=DOJ8{^;dN!3b~K$x%k62m1A+K4i7$H$V4RHVsa2nFD(5sR)TV( z%!bbz_e31Q6I{vTl%?%gzvO{!k`mHEB?(7N;7rF-V+>`4nxdtyHFdcz+!24rAeP{) z>^n;ld;4Jfgt>3uB(g`iHb98|ixS7!lpqSvIcVu5o;Joip4JAh51<^ITt^KT$R|BU$|96W2p!t^f`&Of;D!rc zsGT6HTTE0^2ay=HMJb$uG^)|a+V(s^gCVyrjgnu~@Z3JIJa+m|Wj5k-P4iI0ofj(7 zBJzn=Llha**kRyuquOE?)j!gQ-}8Vm1F0^&Eqoy z7U{P#j?^b@`O7^GK+6!4-t+WPWEQVf zvF{g&c2RS1LKrA))xzLEw|z6V|xhv&JsoKAv<&J@I; z6wb<<>GI8bG%#bP8nf12C8piA^p|_oEnAdd%SeCaS;OgEwFaWbKtNGt!pJP;6Gqc+ zOA6B}TUJ}?LI${6N^V7lkOf^7b);Jq<17x+#LOH$QT~+?3o1U9N;>i|7#yD8v3?;* z*RX%m_9+#Zx!M0Mpn&b;P-);nF>9^LLIe?W@0A%8ROG$^y;V;sh!N_^*#D2Tck9`0 z$qw??cU)`j?cN}_qc({mHNug&z$8j6km6i$MZ{fhXmQnwxQ%3fLGoj`w3TZJ5)q2z zB%lxx8&DKu(?~(VwA<<4d!4^ip63}=^L@X)w}VOQ``&q|8Z~N+QDclc%$hZ0&aRau zA-FXgdGd1L^w}>8<0j}MWQrD%f&B0s)848ys#XZ8*fd>XaeZlJ-@ayB9J^*1hMpOt z@U^o`jD*A#9LoXID49ovnC`|XWm)qoK3zVC0qn7&BsfcfWgpZiLHCT(IZ!?{IrJE34DX;&*C~!dp&PtCVc^!T-V+YSS?aE#jovu{zLB{fV86u3 zuIY(Mueg#iH!c#X^)*>WA2OMcFz|fhA#lDpp=iP8(DaLW7^Nw!oL$4XygoZzOl8R)b?2SgA z)dQ7dtLuD*&duI{@l~Tj6Ha%Flk3m?2F~h?p>t?g+LSi&;G7|;IxkU6&uopr7zUk5 zWlOU?LpA#foBU%KFvMQ{i{JX&e>nrtLgFs^=6XlTl*IEp-n;<9+J-&isQ~g?p@JSeB@1+#4iqiUKCVBYKuq(->fo5=2-ZW*7hPJ zb{7xu6Xz1m#+De2V{5&+qma;nvPBKzm3Z*Q0*9&zSj+XO5)1{K4)RnPoT;B;QwHwA zgS#LZEZVi#9Frs0R+^I^PP(X^O~ggpD7>wNx#kaaq%nv7;*td|HyS=Yj90IDvxi~9 zX}egJ&U`9(**Q?E3l6*|LT0*UcU|Dy}9y`P9D}vIXgR&%bK3ycuUPENB zoLQdy67MUgi>XpQjDC`ap826XCbwJ5KF|B959%vC|E*R{>~YiN>EX)F!A{piMs``CM$atg124@x+uA#~Oc1Knb^UmL-XkuZ zp&P#)xTI&Cq^(N^uv%7Y$Xz3}@SN2UO%0FIVT-+tR)qkjF6PNXAY}%^v zlA=x!p|m_{vpHprdxj=q1Wwq?pZ~*u`M>`K!2TzGNBD*T;|BlA@euz2^TML7k`=sM zw;FG^)``?`Gf8tq?N;0ve)Z$n0@su91dDo1Qr_g4JdK$&IMb1%3fRODx6&hU%rTC3 z!Y$*(P;I%6uNBhrUec|kPYMpM5nAI(jJRog^YI&jSuT|>4=dCg&`?dnc_ehxRC;9s z?8s&DQa%Ka#;O3jyW~Wg3O*7MnPKkcWTD`TEsb{PHClMmZOM~0_Y#S0dgs<_l?r)W zxJ(l#*5f(%QN>95=99+hA_J9~74<$dJz5W7oYl7Zv5iswe&oR=kk*xkx+n!NeDa4V zq?RiQ_UG7I4U{d7XyjpEm1Iqo1$%FmzydxZu~3+NrapLWg=Cx5{NFFt_z3I7C5cGvBh zC>cdpI;VwnBFd)Q7MF?AG(W2Dlth(J^A5i%ffYEFh)77(Gml^orLoLauKFQ@X$=vC zo(W~O`{-=rtfFG24K1%LY+8!P?D8eE%xC~QMr*85B@p5nhPFBIl1Gcj78Fh z&)Iuvu`4Ps$ZtMYM>~)coYtzbrLu|!bw}gXBgoLgMWPMG4vN*XOjjz3V8Bsc&@(v5 zsaZ!BZJOYAiy!@r500yri*o0Smtr7@ms2vM01euETWeD+Q+zsGyY5anHe6V_)K+Pu zqZ6FbQk`Rv7I<(Ap%8&n`NS1S$B|S@*vLkj^z$Q+a80;zw&;SmcJLZl^;CvwpfuqB zW+!_-gMRVi|N5Q(;oqTxfB)$os;s1ng;BU{+Z1D{U|r5Ez?fONX6dN(851A?{=iX1 z?26fjYM};OvRXX}lu)GzIpV15DRV?TB-*vpxN9{y&rIWVfqQ|P*<_c-wUS2T#bY;< z%_Pu;3)bmY)3;6-if$?!1IDOk!N$r5L9YQVw4 z!*!5%927t+K>TPEvYgv$&^{!vRpcJAV zS%(_AV@!8^6wX~KM&=kdc&r2Kr)`kn>lzui$%4<&k*&NQxU8dyhJWPXa6n~Lh_-U$ zJeVam%6rOnnAAd@aw|z>#St1qbim zjBlr<`#80bi;QwKE1kUC1dUyA&Aq)!$KDz-v_Dw~k`fy@o!TX7}u=1#WSIbXS=Q5xiBP6lj8$ z3QuQu-b9P%eL?!fP9<%;k~T5YC(OPBT3*4V5u0R1PuS;uYax@wXKq~yH^>oV>}HRn)zkG7?=iq zEin07j_M3~PH+@bBhZEWpM2!eqT>}#oZTjc_C0;7QfuDG0^Q127_!7iGttzQFQV9y zG2vBCWS)c1q!zsf@LLDcs)6|PdS0Fp86*QEzt(|VOJe1iNZ3Z|qfST7hDTO+`Qd<` ztSp#}$&6)|U?DpYM`XMXJ_>9YVzT;6Y`<0`8Ud_1n>XR!hNgv1E6s&R^%Om;sCRdN z3Gm?z!4bx}^i{z;C;-~`hpa2me)bcHg=ph_!_s>J(^ zCcNUez2+>i=f(Wo8aMF?S7VbgnXzPGHQ<&+x+ud%>ik?LY5W)n`CZAxn3utDWw?UJ z1|j1G*Ki@eDb4C#Dpcu?D6|Pllk7R1&X!}E3gUUNm>#qdTq1|#EHWi0q{zEG4u>qt zj&h#RWI*+Tl$gRK4G|7*o>4i06Fst{p&{M!3)9c?;IG{i6J_v@b!`NlpmTRejsA)5 zoKAENE%JjIqK|H%pyL@GqCBpJ(R9SG zPGRm|S?J`KM)T{m_&x9*xAb6-@Qi}1H#$Xw^_;9Zuc*!6LJJFJk(+K(rvi%LFa${zm)($U&g*s&z7=uKs>twM z)^bNrSXO?ng-(VzL5oyBv_9ilK~k&ey*&&=UsXiO`~rP%JDF>F9BE$&qRAYg<1Edp z@TT1s(9vdHf8u>e)zJFLBVF7Wke4m6G^o2e2aU&P-&an8$xieS-NIzsTxh`hcWIf& zHC#EdK`Uz)I+6u|I$QHAbj8o)SeK|WPTKDo>8vOVrN3p{nw#EKav{qsj2TCUta#+( zI%(Gc#d*feCHO7BjRsJQM+Tv}7kN?E@RH$jcDZls+HKUp$5wj$p@Gm<6(|#E@#F;H zsYiFJ)AS^Lq)hlom!aLalyXz*kM%)MQQ3N33fHy3w&Yw>R~qmUw6Vg|zxv-k|ATjL z|3isSTRlw*C2~`ZOiU6kRRx%WCDkf-@r6*$UUII>4Wq`%#H5-_6SNG8-Ar%~tf7(? zBPv)EPgHO(S75kRCQP**3xXJBq9$CF;p3>h*tFPAUhy!PpXE$QX%$*jtgdEB#%(Ag zq;kR@OKqbaxPcwXjDqjn$;Pa)N#9ol@(Z_Dg{Skmeuj2y?(kq}!7bv3$(i^u4$?%7Z3+E++b zVvLq&-QsR^^cG^sGENT?bY^)A8xUpW?r4Y?X3QRu6Pi1f!nPU@PA z1{uiO$SZ&aXPVp(d~%qm;zF|Ubv;NaQ+)PftOp9<*MykF1c(f5<<;}}_I&Xl{da%! zZ+`xt|L})?VB|Cg{>g{?zX(R=6yyYjk<$8(oaqxI>X5Gb9sa~%L2(3yoG*NStI~l+ z#(T7Yp!t??%uaO*N=Xp!E*mE=42WR-R0nbEeXKB7DAn!YY!~_3$3QVPVmrEDDS{If zwhm+P7Z@+mge91%fuXnS5=Z=$J;AuMcg?}mO7F$OGs5*0}C%4^16 z(_u6vB?gVqQzy`hZ8gkL!O#O|k;xj2f=rfa^2pO7aw)c2T<3(#u(+&cCq;UrS$W8f zdcmqT@)?YihH*8TJbxM$zh;?fB_B~{_cC*5jhCN+hih|wL|(H#nr?Z&L8CSKI)b`n8a zZEq}2@&w|6yvA6^@}wjZb|-P^L@%#@^5X4Z1mM5tcQRlmM1B=>CkhmHWg642{CF=7 zGm%r!ZY3?m|2Zf~@~-<{Ppk6vxELZzH+nZj?{0zPsJ86MP*E(1mww94PI!!uIN~rjwIW=qeoMUN z+O4NZOww5UP!DAWn=TCRvOfL%4tS{$JtS)k9*!N;>O?y2q!<@%DXT;>vibFK21zx4Ov4@zQ;?m8q6(iCo*m z5{JijgM=pEC7_tEb^H?{fowy1M?4+fk81oCS1kvg0XvvNGHXr6pt{Ba-5WS^@O7M4DviEZ1-{Y6FAY zA()<`*cwa=sZx0@9`nLVm8Q|{NfM3LZiH|e=H8RpGE^oNV$XVuuNN9nI532Fs!;_z zg%icZ$%mzb&r6N{NROeFUfMdW_<^&ECL)n=8A?EH5Y!PBMGx=KrH=Cg`)ohz`>lRA z`BR4LBa!)dmj+$ytipiEHm>d;c$-9mUQ6wVT;0Q~-U=~3%k5=yUUcvg%Zv+=2ykR8 zoEvdVN|9}I3cN&N>t)BQN)U z|2Kyu4@hv)V1$JS}%YLW>X@te8oGkLeOy50vj39J~4y z<~!quqXa`kP+`b7Kdv7i{}VA9jxjKm`saO`+!D%oR{8c5hn)ZbKmbWZK~%{k0~};< zUQ*VZ%b?vyYQ#Ts2 zZ$`PBg*ctz-wR}1IAcB9)kYh{1e@aFFF_KwrhEfmHz-cSW*Y4-3`65xSLQ%SxQe7L#}zJ^Ahuw-(vf(h<0s?W#qI)cAwLaDazy zvr4GqDEthVh*=RNEM>!|wNiz1*)v2RCE)~4!E)wK11?Lq6R+R~U;%Z%qBtpIf9D|{ z&myEl!>z@|nEV`!-*@tB^0tUR2C?OR@Qh3~-ac6FmNAa$Ofw$CcEyoj-?I)hcJHlX zWv^1}WS!a6@Z8I~2`-hSmYjEmaS~Rmbzt|?c?WAr=b*EguH+blk1Te}>wJUH*8Muc z&#@QxYrYTliv6P8A;Tfe^pLEdLzs1?Rk-Fas3RT0p2JYBXRMENQ3fCRt`Rz>v(cb* zP++4zH6ZA*l1SGP-61z${t#x=jax+p4n#D+2h_3&IGI&%Fg&G zk8{_^(~pFIVAo6KJF2(zP&%{&e#+gQPwdh33ZfP%#*~13&|1$@y~Kjm^PHr{iXKc4 zVvJgy9p|`uHIC^W4x*nAPPW2)HbY)z?1lsm7lctFl=<}P<)8e57aQKx0)KgR@#n}1 z2}>ib4F9)>hxjKwE{Ih&4G4>EdD&8xm#T?VV%M} zycDfCL|s@?I^7U&(n_vUx8b^)$wwRa{M-uWXJ4{MP^T8y zaj?oc3-{qmMFz$RE6X?(k@9tjPRhJoU0*dv zzDD?wR}_7Qs-jxwZEnwJW!}B>GczAwda|L(Q|AXgfI<9{HsuSpdu-Td!8r9G6sBWrACSdM>OQ`4TvY(PsB_BY{u8=D zFERb$YV=!#v#qN=Ne%LXp3bZcvxkE2t=dNdjoaI4lJbsKfaFt^#8kago;u{jT0;eH zH0YYc1(!_>D~lgxL-``gvCdhYt#_#Wq&a=}8r@G(lQCaTef#H#{GT&m#=L)CW3?h< zGRh`H1!Gi~cpq`JPLv%W+$q6@^Ot$3$*VC<6@psh%t)uDw6oKrAe0A7Bd;FH>&WEZ z3RpxF$%qA9!fDK46*2G{Jcq&WJ-DQ?Epv2=5kNl5_nBn;1211He90b6h)=E!E1?C9Tx@Nq# z9=`W#%Sm1h%zL}p;~OIl4GqT^U~b_ekrJT^&1YW5`p0_<1=;b~ZER_m_@PWy6bKntvGkQVNA zSv(ARw*fOD^vgaQ%N2suXJLveV$G>X1<@trmMfmcJ^GCdl*ZOd4{iTHDy52`+*BuD z=W@cSXSNtyyE=Nd2`8Tf3hbZ8Ss+ahL?=$<1E)}hkruC4-dguGWztoMaCscmz)K1D zN((+pu%M*s#aU2s{-|)CbbbxI70Dq5v-NR5V7tTf#R$61Z@$8KS-*<`zhNz}-Q|J` zi4nGwCra|k50St7SQk5EW(!r{fqhTc(d}}4nZ4Z(Q63H7Wqx(-?9M?#lT#v2e%vct zWN3?fLpS&(-C&1BDv_du>77$WrGlKU$x7(k^u}hDZBmAZl*lIi(-uPv4D|eaZ}4Fb&C5*IjZzh8sro z(mxqH)7xnrTnmhW{ZiRfa&TF}3A_8jYDKrY3a^U#pcoKjOWK_=pzW?y@#Ygr&c4rbfyLjz}a_;DXk}PGKu{7@$qp%<31-jls*VWbk zJ>y}vVg32Cdx+|XL$vFgOfBb)jTfHaS=rAY=s@k{ zr;~O0L3z;`U9r=NLpxl*zTy){ll)()T< zn@E?bG|x6b;<7=!vQbpmfp>JFT26yEjIiNBHVexnUR-=Xk3efRsyf2&>vQ@W6f_TD z0lshQay$O?c&3RR2UwW=TtbxNV<_uqvP5QB8N@Imk-=ctR@}6zoU4?9$#_L9E@4)l z%C8Kf%R6U<WFtSOuo?@xX>-(1@z=PP-@J0a#9J@@a~q0udS(0cPb(=0DK&&JnYQwL49 zT)Gbx<7FI-XB~~tt}|5XR2;VSpCR8{@?C?s_o$Ii>yEAWj99}$@pBUD4_!pc+ruDL z$>+p~CfeIRn0x7JB^5a4eQ@K@MP!C`LknYdx8!N!)OHch)gPa?g40K$olj|So1*GcGtRqPmpiOuR<7&A!%!_V>5bu%wv|pEVag}g zA${(}I=GD=f`k$0h7$(DEW?WM*09fB%crMjkwvZev+Ds}5u;d65ZT@OfKtC@=Cg6) z&%VT1-#20Pj#<&ZpojrGIdw;Q?%HoRdrvNT_L0P%rGEbo12#?r=T~ad&a|zmo;kNF|MVd)vUf<5aN@|6n47swSdSq zWi>v9_YR#vk$ciay4&hjm&%V!c4TddHR22c`ka7sc70l5oQSjSRC~rsy2j!+tTfQ} zr3Q!c(t(KIi8W1dy6_6mdwHO29OolEeiDaY;Mhh6kJ_&9(5D`%E5YN-wZARFVvoT$J}V z@lF~LmyoH5UQq!pFdI4iaRX`mjux0yu|v_KRUC3<*GHk7I$eq}Y;Nsphg3$raBR$J zg^BY9JcYAF?xSO+Oh$4@_YQ&UFIPU2w)fm1$JuVpy3yXntpj#eatxS>4qDImPE^rt z{>o3DVz^EOX~17G{{2Yn>q;wU5S*O3#~5wJG(;ce)B^J;!}nYr2RBh=xs;=EyVm*6 z$so=>mco!UChzTbDes;qf`5OyL#lPgK4a7|K7PW`FkV|EACJ7GJNb$Y&0Rp^W0Y5) zy`ft@6GFl(8VzJx8*o%#_6p$J*7&C=JG8aarIo{f<3AMs>4_Gd2w#({r-UV4-}{tc z83b2;N7?4~(lUUR-f2cwonolA@@b!ffHwK@8LDGhO~?Ct`Ny~fW>*tzls=~$64Jfr#$8wIhC@>8)IIaJ%jFij zjPrt@3|JIo^yVk`!uBh{lAu8Yrd;2xu6zv`+sN?ZWFE%e2kjA~_mX~wa9d`!LE5E0W3P52`VJDn{tf-^X%z)zd{FYYLR`(5E z<*#UYHNc(HI&0MK;pF&OrE7-T@hwK|xYq8mj^I7_w%j@cm1Zlo3gDJE z8ftS9Dli5(KLNRi|5_VobTxcP?AflyCITWp(G^x9=Bo=h0F2pZn;P(&o40heX&?3c z&g$BIMuB!+_uZexN(95!+%LyatNdX&eL>uAFnh#U-=MkF;_(I02i2 z^gxA1o%G)s0F@Hu>Y2=_E5MkJo0y$2!EI+*rM}=5!rmGJ^o}OZG3f=Zyv}TN47|v~ z2FI3FUPwugrP5fN77eHEj=`<0#tA_)S+BsSW*gTp3^q74QV{k)7vV_-Y2{scF<8Gtk!i?D+4$C+^5W;8=27odq=m_|ZvHfqdiuUd2H8LSO^GV?et}CUt!`bDI65RZ!d|v|+r*&z?5Uem4Tlk1aqjQG2MH)ONvMcSF z_bpvvyTczycOuA%C|`?f6&5WQWiO760&xQrs0$x91D6&b#n(ya~<-<7a1&4qqF8o ziZ{%PlXjeCk2VMC6V7B5lxfue=`p<}$o-Xv`fZGKWr`g?CY^J4I{6qi1T3 zx~Im3!*k#^K9B+f_6lr)O&8iOwZD6s>nr9JKGDUwQjWCr(oio!Ct8`yh@tt4mY=A) z(|v}g#*5N*au{%}Ep_86#p&%(4%fqpG)jaBjN$(2>HE66@8w-5xkBL>qJb3=H_e0`K1fI6Li9=1jK@qwo=nEvp|HfBV)6D<+`mGHbLSS4-++ z7mZms4c190mEUpL2cHoW|KWr87#gi5Z85DFiikY?vmV?9ahwPA!L)qW8f)k(41YT` zL6j^fc3$e&Q1}Tai}baxY~^?yP5TdSU>Ba2`)OFvqdYa*&v?%JnuQ#n^XN!8$NTT$ zPlt0uuc4V`+Y5}{dc1N%OoFJ}TL`~r*G$KrFZ}WXj?1(rG%;$XpcyJ2?51&IbhNOwT zd;fM#sNr-J3{J}#YYo@8#a^+vqb0AroNm{YMXc+EdJ07OA82*^POv07DGEO=1yu*Y z=Sn)u>d_2xaSp(^(Hv_l6C<-R=nlr*ht{b}ThULxR0AA6h?UwnGH9q6sIH;Zp@^+<_E0LlZChcMwwoyyB zAJlqubsQDn!gwRWIpbExr!Zh0B4E%F97zgt)V`4u=eXH2=`HwK6L+-m^+tPYIu}3h zX*XZ>oL(5S+LydvPS@FYuV2z)qp9qW!ka-F5z1uuxodbvbx~4|#9OyDGHL3JU$?v^ z`QDj1XtY(8Qbfd$13wp|AdS%z@$+Zh*<zQ+Sh^H$r|FxzF%^7V9BEAy` z!W09SI32d)#q>qXxEv#fuZzn&y4Lhc0JOt$3m%7q%>y8-(dC6`8R1ng?f{1z9dhJI za3=C3Zj1~bB%HQekG#s1E-9SDTu|gMDA(^!#*QZlHQ{sz8VJ^X+w~Iv!j>#IR^v9B z^E20hhtMm9FTQ;}XOjm3_vJTU%7L|@;7^Fhu!*%IOZQs1uLYyXwsV>~l{)d_jh|ua zsQBQ_#7{+UmqtA#hVhBk?-OHJ$FDB9=*%p!twzsq`FftMvE6B(>pDJu^X5y8`3=Uv z2g)%*TR6wZPG(7u%K;6&Wkiip=g~5ss$tSeEg{%~MsvoeLUU`k&M_`$ZDG>&<|rlf z?z7Bz5BVYQ5eYI=Y|75o&}Gu>hA%)g`k3s^!&exxOAXmPp8VFIU%j9)dhwo>TA^zK zhEH|!k!;6~x2)`PcGod+18`|`2ACgHTF^blJqAgU;2r~|TPxj6AYCJ)-jhYHn$MV` zjmTVQurBTpmqrt>axVmbh-#`(rnp~9(8)afAZTDHpJzqgbC{4iRXflJ&COQp0SD0) z1YADCD=gZJx?)mGnlfU0Rg0b|g8!DeV!X=Hac}cKFm2DqZglfT&{VHP1u)Heks9<< zN_Jpn&skD?WG-r;i;#nRz$qF38MEElI)+)}mp<@9TuMBFAb1I{>*0cfwhj zGOVNMfnRY}3=|T_Z=V&Wx8Xv7fJlxQau`9MfP@QpRnk%P=|YI^tPWZ47cV6p2h+Dg z$cJ!E=&0;OINtn(cfPlkMVad^W26}`UCtd8>>U;8;~|$#I{WMjtM?eH-E3z~{hGV{ z^c-1*q;;|4A1}o3s-NkKIbO2D-EBgeR0=1QPfARwkloWfx?8o72~8m3pc~pW09ynj zm05A%GB{bKB1w;}f%!5bAXP5AXm-_`Od?J?Y(=aSdnG>J(u`;)U);ZQY_N(SQQN{VnfhF|aVJU8`?iV5rw#q899?Z?^^w60*4E~^plAsxE%3; z=e4`#hayX8tY-V}P{j~#aoVk=KJ13J>nhVY?-}>M<1yMxh7G%L)C z*!_!_7~0+H_BM%xLONUCzG)-;c;?^;w=y_T^8Bn@ zimv?pBTkyltM25&xG_~#93Ag29ytIzGVofkp+UVh4-Sde*pIeTbAZ^V7%ajIqC3hA zXknw1u1&ki(4%mfs*jNR=)CgPaN!}xC94(LAtYR_xS;~T&#z&G&lc>AoCVr~0>eyP z8CUkm8z>+LxRa?otr+oX~VoukazOr(N zf<=b~23x^H+xEMm2+iQ~-U_z1+ckk}Tc1`uF|p%I2fpU_kqI6rvfKx`iK1OFXAOEU zH{44PYt6xBPbp&s#_sTzl^W+Nt)3%tc6|8~{8c)N?0Mv(B)|hAX&qUP>`K@SNxx-C zzeX&5X3P*!F6kh$XU?{Wga>DYUF%L_&M}}V!*_1$nv$=z!U~DFe&yB|xvGre1GCl+ z4L&jZ{=tbo;%}J~xMN>wx-2|$L3w#JW?j3vKy4w!IJVC6>Xu^+l;KRQ#gH(via#!i z(Nt=wbwWIm^ZzhWQW-`vVmU9CQf1+K$B{&V#+g_l-5!rQC(&`6pfTINgA7sE0(0>br@y)DV&NH_K#*>f zIEN1N5j-u0>v~77X!hJBo7XqMY^t^orzPIl)ZI_POxhOk9|;1 zXP9Y>iNoNQYa4^gc3>@~ItIA& z00Fh*QLb=~_q8kLe#LrWmF*7RdJ%!l&fvP};E7pRU$JzFDQzbAR6bf>LxR%SjsAcF zyW@ssYJjtn%{PE-Z7;#uz-cKK=I;Up;edBG`&qw?KS+>&?XZz9EV-Ms#?ufV zjP!|L$2IG=;T2x)Ub%_C6Jrru@8yB+yAL*0SVP@(4T$U39Fukx^NJxl%taTnIvcW_l51lFQf}7P(n`mCJbv9j)x2ZjG}LWG1&o-*rbzzY)(7%_eNsbkf}@$)bTJRH$5m|Z#+)7i{iPn_kOg@qiqw&2tE z7*>d#ylCXQ7~l}DD9R~-qr#6CR>70_K$lFdS>QZ(cPV89may4jh}(!89a zSK^{|k#j&c$sm&zAWam-@0o&&OEilajnq1l?TydtT3dN4O{3Nbtq?20N}=K`hwJ$4 z(Exr?BalZ@n*_pY?l8v2$KcyzH7EX1EN zv`V?s#1pw!$z>K%~pn^$dlieR@vxP@8MaQ#5t9;>|@f&iHNAX!R4~iu$%V; zs88bYm@>A@3cRuq(tqe`GEOD2AQ6zETk6@ZVEg2Z-G1v!1pPFBf93fczE z!jSlInbm94RA?^h;u7y_qbC>T+dU%`pJzU0wu|P=0JD>$8|h)p5a1&x$AypgF859;w9eR5UI^|g% zB^)&HYvVrYq|WYn)5-BEfD@q6vXv<;tjR|8NhdP~{N&8I>9zo6jJvMJz>PP62>Ox( z=WdNU3%gjO6gl#s3oYbfkQ-X6)^$j>K+n?mWhKePju6(H6An=f8jfIZBcBAFWlh zawvMv(Q5(o&uO@F^uenfFJ235`G&Hb4ikAwIlG_BEtFHjRF@2jCgn2UcGW%FncMpS)4DITawx$&TVv_r**XjMu8eb`-s6G6CNnfZk=}?^Q-(j zq(DnfB&Cqz5>AyKeK(IkTd?8B`iP{&D9bDe_?k%8<%k#cAt~%y0K_rgE=E-gPxy78OVm)iQMm~Ig8CJ&;05kY~b_r%EifgR8Os! zjKwoI(-LUF)0+A!p32}OC5`yLrFa_X>_zpGy{BHWCis@l&PNQ=iL0sLP1BS=aGr)^ritBWirB>%H^hUB~S={m#PAZ$Gi$hg>T$rORKl$tdh*N#%kP5G-AeAL-w7l2IZ8M}`bG9qn?A zrk1FfK3m**i9FKOa&!sfr98Uy%biCowSti|FglW5TTOa_ z)IaGcJsvFqnoR?r<@!w4?)xI}28NX?>61^X*w$bJ zdKPJ7m`DPN% zP10i?)0G0jl2t12jq={A&NypXdHmsOD~wX*_Zg?HZ!MaWQFOJ0&7;$W_StXg;B*4Z ztz5tJC%#ZhY=F+IcwhbO#XFh|cX^z*k{l*&qqVi=)in(NmVK6Av$xdCm#>P`nQSN0 z(B!OjkRf?b`MxH~LniPv0RUk%*cG~6Vi|=R9Z*aL#VGHZmHJu0D13zB^IGBd&ql`A z=KSt$3-?n}RdTRNPs=ySCo1n=3c%q{&}s3dW$lGE4iVd@nGkf|KS5IVLbp$mP=egf>OcsC; zKz0+)TmvvaNfB+Oh{%W)REVj5`Xpy*21r;p8}b7KcdtDV)ps6#H#gR*5as zdG2#KYbc{2Qmh-!;*^cySlDArK!VCt9+Y?XWTxBC#N91xpFO*1K_1L59%W~1<4Ym# zHt{GP4GS4-@b?hubN1oNqjIwSw;amD00d8olY?~3_!tm^#x%X9T_2Aa_alzs(P!?| zO9-qy1BjcbqTWVjoxlS72y4*+ob*$^b-hD6EgbODca0NTz94AT8MyeXaEPxlBII`Kg zYQVLsj%%HqLh(9hq&^0*RS0&UUf-C-5Q-)?C& z;yw1=#;l?H_{o?5%_nUWmUNGbU(sJX4PDdHxPMb0fKx8XdmLJrI0U{a8YP_{_~cF7 zAw4CfAlcL9jCycm;ru5C7EV~>%5Zm8_gd$v)79GcnkRF$oNLkH%MOU;^i!m)(atF} z*W3fA1!I}~>!5HR8s5o)E({XK|IAzu7DYF5QmaUlY4R!jhPcsLOTO@#k^-dYQ2xl$!af07%Eb^DqPwL;4nggvyXduUAQ2 z8Rl-T|1FLn3h$Yx{Ce(1b@D>{MgqP z-Hyi=ehm1K=hvD0miw(7Ga06#C~xIEbs_ub(iT3wT1r(K2j`uHH8divu2tNbDZk-G z;#*!L>??*CvV2q~@Zw0GT+J50C^7P@YaUNv2FOS37CS#+H8k(hr_Hm}EBEn{QiLJr zl&OzoKlRkL4g)7Vb*1d49GjRX*od*&+%l5!>O7p559D|ci5NJ}TM)^Ko{@AqmsM*n zPVtoJ4FMcwTR7}Zm~5=^3;DuJT5)qIAD7~L7XNhd6PFDA!5Qq?C5S65TF&C>TWNu;VCi(5EyX$7-U!tvX zSH@Ymx~N|0SfoWEd7f5Ys^?D`8XP()Q~mcgN)>5RLrFX`8f3vu9hQ9^O6*!VOFYF$ z!Y+&Rx;75E{DGaipX?dtDek=J^FmJ7;*iaG+(TiMrjWfDuZA%AKgU$Lo2r#yT=6H= z&#na9I7;wl<2Zv1jzhROd{aP*n~W+!o)8rb*FvU^6=5U+822iUCGy1^cx_qTiPF|J zV{X!F#=Vv~Zznm~q+z=q4cAttODIt?4Y6G(G4h$X+7nj3tS}$buJyJI%IaNW_t|ns zOIqORb`6Q=$LL!TyRuK|(jT*@s3iyGr2#30W{nx2>$H-S^-DUrN#%&rZzWcib#MUi z5NYBJvfGH95EN`)2J1l&~Zc@(U zN`S7jY+Z8*+=H}oLbot1l!YIv!OvLvB_LQUVDq)<60^$gQoTE0jl+oT()!%j36l8) zsD?d;8>}q@zYlI~M+^FaojEjOHv=#zGbtFOo$j$OFwE|iZU(@+wY(JXy{)f7dcJ9- z6F=#2l68F(Zu4S`P>9W;p>2G8uXVLjDTs;!U`AyfW2BBXO)G(uhTTSOPR8+a#})6m zw$~HZlA>XtK5xB7pVSw5Zeoi&rLM6t+d#Z}1nriuZm3V-7Ki@FHhOYcxWW4Jr*nW# z>qeshzCE-_n+dn6T{)3%AB8C&|I$tJDVN#QfF6)M`X@2|bC%BX0^5Y8XX2DgbqMV_ z2gmVFsF9e#aZ%3;4C9yvQ8bEUrJENjk^xNOV~4@LP>F_M;m3L37(db9Jf0`)>xF9rhlVt1 zo9k|JG-f$iF+==Onbbd*Q&~itue`)tQB7na==}&u+%wy(A!~3mxz&sMAaidl4cmOe zDmE2Gqn~dkx%KS(@;Uz1$lX_qU8OKkm2qa7+wB9Rx7+NtJTrNQGC=H>arnuxWzXdw zD{O^44AHS3b?x3&w{|P_ZfO)e%7<8!wPlk=*l`)Vt*M5O@!qgl#m(V;m)XtQG?C;5 zZ*9FZA_?78pVIM9K|zD{f+}n3R6yflhzNc+ei2aPLVS)&Cn zlY;i>Ke8ZBa}Z5^TwqR(cgXsNYX+BM5xd4pXHk9^TZg9<^kJS2HzH_RbMv@ z!SB^o?ge#Ei|TlH?;({ZUFZiB_^YhxIzM5+)`b4Am&8#GX?GhPyU%uoeH?VlcX~At zyWJl?*p;4bb~I>PanCbx37yUVOWY&n<6VT=S=jn+C8 zhU;6O+tPaa=*u`2a~u&0WqmK)o{cxZt!697pu^erURHM!3q1aOK57}!Dq*&e;H}Zr z2+hA2ePC%B3vuRH+-L{o3kR3`ERRSw+HAokaEz7w_6l$)8m>-9f8>l;aP19i{U{sp z&Dk-uVwKmv_r(KldjY;F)JqvUFP)qFLDSNyb~;9$0>__t?Viv z&t#nXV!$1ZC7;1g%Gr?&=7P=N_c79s)UZ+HIO5jiU9>_Xvj^Z7#950*dX;omz}e-% z8{yR^e*nU}QWV6nBBVlG;G8wCP0{3hew;Fx?lZ>rp`Q*6hm7bZgwqV&x9m=EBCeGDR2dD9_k(%zOKI}gG z9`X%maZOE(Q4B+XTAp&O>31ajdJJ6JPYK0KN3ht8zWR=un~6yTB73>QZ> zF(qHX>n&=`Fe;xrnTo4t-W5tD4(T(0BX z>4?^qP{YT<9ZkcfMDzyrT}6g>9u^Qn%(F7UGPfdSe2KKKmQeXV$w*wRT28(c1()F_pcV?-x(9;i&m zK(?-pl{IuUNO|@?F!-$a>7J1fCEHy&$JLH^XU17&vlX$YGeYnLx!h}fql`KNd7Std z?l9v@B_OP2kU2afyj_ny!%g`tM_KX*ZfW%K%ShKemP4?h6`H_e0?xJGw#F)we7hgm zOB|4sbF5p;aPDy;7f#02?Y1>jztFQA_tRu0Gkj_7Wq{tzFb}G< z;Np-!v}LrM0U=DrF?}(T4x+uzxiK%%$uro|bNyY91i83G8QlxoWDjD=aU&nc_w|sB zhb5g@wqyA^BF@sSf>LVvvZ?OHwqz=UD%=r-ww#WG<1EcfKHC1zuRs6%^WT5-_Nx!T zz1rEObJ1GHx`;AuAr=Xt(500}K-b(F6po=)E09q65bF}mND7Alryt3MuoIu7(5s#y zo|2zM4T?o{9(LjJRPHyP3kmATSd-x zs~z+DE!}yPWZvb0EuXU5g#wtFfEq&-sTJtB)}V3rfoY7`c$LA=wp7WBHz|>}X@Mvw zSPk9$=5fJ@*HH}IT+jW)DUmA-rWWJC8vz2BM>!~)UT_Dw6HL{;<=Z0VC#Zk-^x>vf zoV?CD_cc9~*Zg)VuNVgC+^*Rt%GTYzn=TnTShPDYy3?jRZTQKRaX`yZ0gz7}pnOPM zhS)XtL~cISeOp9ZJ~7wg`V4)sRbg~WduC7lwTL9#I0^MjzB(!2Ehi%=<}ffg0@xSx z5kmBsPk{6m1+rktlIqdu5r_^wXHz4)^9`7>_w%Qcvv&pJmDFhi8t*|6`! zfB9Gcs$J-dr?1|8`6J@~tSk(2E))rnB0dko_>-A@$J_)WAgH0Hd5jl+B*~mU1w;?5m}|Gb${}YOMjhMKg?m9&hB7SDw6vj; z#N`Y2j^(dDxzvE=_9BLvcw&4h1vvm)14^xY>V-}$avkZ3EK0#W@S7{+H5lpPN6T%x zb=pc*F;*Z>6o;)-e4v*(hBk7SoN#znm+Qqy9}xuePh$im_1`ctoWdIg@7B9#eoCs= z*mc?9@;gyF=A4S@<~{ODG<91+T*m+0$hm(2m&bgkpD-&tJ^hGs`&y}$^dqAG>`wC> zidCl96Cie3E#*h};y3sRTtr%EN-qJXo{)gbT;o|&fbLG17K)0rJ0!D~cZBn6Be}OS zYe{!GXGrvvDU}Mj=$eTN^B9NH`m9#P6OS~PfB2O~e=2}RKKne4M^7opBS|Tg^bn>T za4p7nm(SMf_TgrYZ|zzSZIf%tE|)kL(;BvZVqi)5TG()>=;!kK)_hBb)eZpiZp&+^ z#ln~z4+bV38Y{-u*e=!M-ti{NIG z!0Cc<`Fs{-pXriw3)Du-AU zH{*oWTd-30 z?ZI*em$VM}(Dd!_-;DjE%CN3%P2@ruNsk6CEyik~ee%+(hxSyFIE~k@>uHGFh^H>6 z-kkJv$f3?y{g^JWIzo&s9>l)*1=fWdDK3WKIoXm|JtS#D7Z^!$A9;A)p30zVY%6Z? z=?ISAgvFRg82>zTa3az*&iBlH(DO~bryylJd8Uph)<{u_K)cBCVXWeW8UG97*4ayb zj<9@o_swP3IxK@n*hQ<(#gs|ibc%Aphu!+Q_-9^bz>xG?dZg+M!2W;_5%EBCEp>}L zPhAQmBisngRmw%((`i|F%xel^5vQV94^K=C%(x5+REY3|hzu}ld6k0!&BYWWF2aJG zo8vgK3ee!OisGsmTXeN)g^WA8sBq#H?EJ?2J4SY)f{!I!X>`YI@y!jeJZIAo-AmbC z;G+{ATRscDq#LDjw>*#*X!ZqGPVkq&y%r8R9&~N`Vt$hvu9>_tN;;3EXBX13`9Dt> zk%)U`Tpn-cHmt`*gUS>w)QCn)W%Ve9ajR!%i+5|>$}5dnV|Eg&mUT*KEwbCLmIqwE zOhFmhpm-reTBpsXeo%OaB?-jZB7MGExW>0-JTZM3LHw#c$`m}%o?%t5vMVCW5hXu2 zRdC|V`p(F8;1qksjCk)dQ=d9*j`5$f5QjnWffo&cOr6AZ(UqOfN%CD%u%5Y3U|dVC3hMavB}!~p% z%*mBx-nOIw06+jqL_t)~yp+6XtQwUaa89<|_)+RUuQ{!-kBR)Yjt+s2rbQoN>x>cO z9OUB+U_oxUaR`$C941*T+BWPaFi3b+B4y*?HF}05_=9d8m4;kP+qGXoBu!&QE?Fek z#>t}}?P}3&-ls6g_fI_jG`y06##$zssJ+XEme?#u;g~a77UXZ6bcDTgC5( z$NV%(2BlHiUFJMLbFP2@MCrS`>cZe1I&#YFd8RYY<{-eP!v;!cvCB@LqC-~7v)&nH z&+tM5!RMcHby&i`yv*L@#yeYW(Ze&+MUQkUNnXtV#sK(l3zPwW@x>Sa_z!>j2lP5H zIk1C&rvAP1U#6kJPghhi!mJT(>)%t?}Iy*PW1qW4iO%5#?bf|*XA1vg$>9$OhZ zW>QJc!IQ4bh9>|0x#PnQx%w|+Bm8v(Xa6UdJ^4eC|czD=f zxwkxV#}|(65+`MErR9mV%67B8zh(UUlKWYMdM)#b57@a$KO0JB#5TF=Bvhntwdy&asT<3h zIvpCMjku?$&p-diUT45Wy!qEZ{#U<;V*VM49V4dDk(OEbTS7xPyNcy3xtd1~m@LTQ za4q{}%J|dcp~o@{5%7Z3h#8k$$Mm$|GDLwJy-2{vLwh%un@!Rs9@+5?Kk#<8TqrF(Xc~(K2 zO~r6~wrT4N+{_IOFFpG;a>ctNr*BnV`!fGB;(5hzb{V;H(FgLdC=Jk$jPssl-A}jE z>1C79r4_*Whg_5OD5P16Re6Z_g#$@2wuLVlHubTL+^lFXJjj!PoIP@155npq&Ofij zsSMS0kW`jQ7wPBl?XUpTJ!E0G*yW2po@&`>O|H+7?buHv5Jqv+L+LRqi$t#Zio?(j z9BJwh$3;hkMU|u+;pxTi{Z~Ku!5i;0U@v%{`P&%bpYa;(vT+2TwLRjku9m`4P7KPV zg%69FEb$WH-;URVaH9aS+z8u`eEWejKfl?c z4f5&zrv;`Ef<;bC3Xgcw?fy@F*=D|hbdNS$q4KB9b{C&3;D*QHb5(GdNiucG zzj<=UZ@ND!^k9fv`=>hls`vg?KjGFxuFDz55b zp}$YOPHDqu3oadgxdW8|hp#vKj2xbA92iD@0=^zC`NbtYv;21Muye&CdX=Qeg`Ojk+-O`Hagz)%S6+l`7KNi{ zexUOEGC<{%LYY1%bqo^f4rEvbZHkN$-ziw26)P zjZtOets@_W%m#K;0F}_|f_B;LdDsHOQ--SpsqDco_Gp7g6TNhx>F7JT-$}V zJd{AiUh>`_9h1z-Cw}M!mvY-7d73~tkKgIWO}sn~oMN2#a(Ry%Nm4EX^dgy2x-&ek(SZe@;Z+IPD#8_rd&){Q&~t4^`nEMoIP<=nWR}S{xtT1 zv~DzDtwpjrfXBLWPJ#N+L2&jdgZ1xzRX)NJ_J*!2L{pykI!w+Q?@A{EsKF`r^Poep z$LM?Iz6*JUBUYTz44_q#EYv86PSmrHmEu>us_xAXpIfHoW2ga5$x zawW4n01C6xV+9Xg8re6A8oVY|5#~Fq*s7f}-7852k&wDqi(%c@)J|YJ5-BaXh67qnwA&QBo92Zc##6uO7wapXa4Wy^wG?3hTj^3W<{L+edbl z`vRaAt3sow8qEbQ42+5xr|kEQbyO^?4FAv}8ziIS>e=F5gRjdzae!2((!3|6titq2 zN|29oGJvW>^mR=Pg%qEKZJ9z7^{d#OSZbdt?yEobq`V!W3p$j~U@@g|%#kP?KWauH z)h!nq?_td3>(QCR3Sd;L(Rt9wlco93wRPb@jZdab{s;%}!a2hW@ZDVgkBf|x0l&Kb zxxfGR;Y&w_cF@5nQ3}SsIRqs@itDU4O)D|o*(i{r!AthaUW9G0M%M9$;?NVJ_w zgo$TvdVQBMXGAC}zoEgi;dG7@ZZX};v}`?TFc6yoR|_aMEnwc! z%5#!}R;cC~@D}9LO{*JCS9-kZDn~){7gh>%Y&?#H^HPi^GN@pUcx1U~SO#oCL)R#q zEs5Q&3@o0`57yEAp2e=XlP9-)v=G|rCd2!K^$VrD>nH1$4Meh-mKWY_LBywl5`tUz zcCBX_CC&$ags`sdv0NaVOWxeEJX=CnSGE5YWh(>YeRMc0m290YOZuX+vN|9h<>Z7# z@{(p~-?B@t$yS{ho~nR_LAoh&Ddb63=HG^|u7fpIvo;L-yttmob=-77L_W*t44np| z?-<1gJR*@jY#g~;2WTmDio^UCwDmR()?uTgGh>ZBAV3T8ix4>yJ`M84_3htZq?`=+ z7k}{=-~R5u_?>@*clZ@+qQ^s!5F;Y7YiB&&kR}TFM5dpi*ou`vX4t=QOGunberAfw)4^0p${zyx7&X0ueZf zjBfk}yvpGugku{Y6dz)Z(0&6Nt}+`R(HuUbp(T9 zDq01m4D+b?F@j>NLn<3sckru(cC$UJ1Y@w1>iv!bGil~qMv#$=;VVmJmT?#lOcN?x z&DJ+{0mM*#0S7k(L0b-t^KOmgGXpP;YZTUQwE1Mkaifo79AZeXAN9VzW?7|Oa%PN$ z(XhB9%O!h)k>9SkGqM($9@#)BHXZGZV{?Y&RiO=AN9Hk}@*^{N(*+8#Y=>n&Iq0>( z?uR#N*!l>EWP^VGl|hDW*{h5S<1pRreMjn$QMuCDQy7SDC6@XFGq%ctrDfI^e}~np zC+kL2~^hd*Q^$_YmodTuX%lk=~5tsy+R9~260cyKJF zC-oM?tzZ>hp%Ef5J*~vjD?LNeLNHzdV*5 zd>JNP3MP2o*T$^sF2mrg^_3T-MiKF7pnFl4FdKQ6UO%kL1#irV(H71lfphDphVq={0!M<=^z=6=UKPX3DoQR2irHKd^uo za+v0!RXPlm!I^)NsWL4io9-c0GGt+T9`! z`QR^4piyKPoG9xNhl0N-oODPd_gl=&5=D1@)XMLyuAF%Kdwl;iD2 zZ(aCjKJ#?;RIFWhO_JdNPU?y>PB zH`ST8AwJ9Cm!6X*jrJFi*($vn!f)h2q|f@(W?U47_*Z>;MzV@n6g%D`$WY@&N#x)u z)y3Zf;t0=L;6L@J{(~R?&hP%ye+af;Q6)xcKoa;A;CR(in?^UG#%1F4sFh9*J!f4= zS}5ZjgVc&)y!1g6WM0RnPqzx39_GO>HBsreC;{rlk9!R|f!T$3&8hLT@=N2et0uK~ zRvZ7uM{eDsv$f0(kae0-w}M~*5=6Gox2mWeM?{GfK6ihP`1 z7LNvC(T?R6n|fMV5ZWIG>YC`@2?oGxdlo(ip13L3R_f^zd9VrzPLYMU#@MFCqHIc% za({;WP6lc(2nNBS{A8~*@~a!vB=PDUas@8K;+PIK)I%l`?pSgU88jj*lzQc(8PuZ! zR8L1&#anO6Z8P~-M7_X4;pvxBAzqzJp#uVi*-{f!?Bv%@n3Hj>PLi_@>5t`Sg8Ra;UoQO1j1%B7V9 zL4mfkE+VJ~nA$%TM^7#<&_XsDTohV4!V*toS4&|^%Qh7h?qL^>t; zuxw{%S&-o>CLO;ogWFXEYxLBTgGW+T9=&X}q#-LS{)8=XZ?RH5T{kP!Al&>)>`v)Y zK4tB0uaGmN>{wW*Fa}aLjyh4Ml@F47JP}15hvV#w;z_s3BSp&~55~|~7kCm%iv#Q1 zpH@bEEh4=y9dKLGy6TF$O!)yodQuQ8HWFU#I@~(5H*ZfKBs$?Ja`hvlt6`uHtUm}9 zN89u0(9}HWC`czrg8fZ-P_A(hv{mN#srag$&#q$8mpo@wbP8)A1Vy%$LOf78UwmXK4`P zA7mb93mwvpwL;~Pf4Nx_*N7CLf~@OP4k~116yv0j2^f^V_J?c7Sh6qSdOq>^QndFf znSXRP8DDaxBOy*S8rz*Mdljj&+yzT^DdbP$2;58m(5#TTg{W=x&MePL9?Kql(p);2 z{D_wCxZcq+f8ui|uF`Vrm?wG^|Po(uAM&uNLOsSa(*S!wAkA;J97n zpmSVhDLX^_si-ky zGdW8X$^0@V%LP`7NA?;Usqkj^-ms0ubmj8sjvJKUzR;FUyz*_=$g*(9R*0PC6< zqWtF|f1HVA2H(c@S@?zl|I#o0@;~^U-}@(j2-MFHDIf=d1TBpFVh~l(z(84r$L2D? zRrbJk6cIlY_&L)(7HlH3k|>{o+6Fuop|Vlot|2uO6=g5TZijTum=!$BE80CpUg4{i z0B`hLZe1)uW6H`KLJ}&t{t7r$pzv989#VBJdR6FW@Wy?(%;?^VzytmH-7 zP#oy(5e<06S$^n~4_l=+3D<}qN!n71434rB;KcjL26qxK)?`X2ZTu`peE!uf^Qvw> z9ovQxW57y6*-ky$a*A76eimM!#Zf%Ser&`t&9&g5fp&uOFklyOxLnfNW90*1uK#9# zMm`a0OXJ#c`KGl3nJtgbQC?l=?gSr{XTWg8b(NLD`c}>rPTM&a8wH?}UG*X1g{iZ8 zKHz?$>+EI#J=#Mz?w0{48}Y#SID!}&44}wSDwJiIM?x2KkY8mqpQ43QyTHnbe92Co zBYk8#b*9t|9W4hMV?sI>Z8-y@X;8MV+jZ7~na^KR5r+H}@rVE3zx(h11MZ%MZx}Gd zJp3QO`%nK4P=77G5rJWyYyP>l0C}H6CUL5PYZ6e|Q8tNI0Kt1ynInjkUR%Yn#ZxE> z!$~8rX+_D`Or{YAU@7=PY?GD;hJCGjk>hk46hfQ(4Qn z=K(14a7xmaESAzqi!}+Zu27(YxD1?St(Fkk`ZBsbpBr%Z`IKeI%E&EiE?Laq>^t?L z44XSxd@AE7cycj^vbbl)w`a$ScF8Lzgf8SklmoPmk=X_1UdIz*fPlvq|G~BCI97W> zyKcCEPnnQ%a&W1p7Q>LYFI^YJ};Fy2paI$_VhLiSH&LreVTglf_VSQ$C7h3A4vwNG|AF|ZsH@m8|>sS(#x5GD6=U$@uE8EHtF$*a7Tk@X=M@@-fm z9o(80ylIB$S4pQ{MeRgaJqYQh{99XLU$I=^^$t+P!36@!NLj*-!^Hx{9<XlrV+V#UA!q~yOF2{ zuT0ahv6hymClp#WK1hCxw}Rrqe|Xa~LYx;`sI%=Mt4Y)>T#;_V5GsmHVWtLw5wC^v zd^d&hD$v&rE=>JR5tJ2Wq=K+qf`Xna?u`=SmP*uX>5u>f9+LKtTg0x@Q3ZHmxbOXI zTg!)OvHg|03JByBX0e5!&#j2<9I}W>0#!ixWm5BjH}p|^nU=#mCgsOxy;Alu4K+8) z3-r9nq6L}XopfWXv=@0Myz;hfs+#e=H<|l~?wlzf)4#c$~CR zbgj(fZ`HIogZOk2p+@IRr`^Flv>Rc}l2+ zDrXqF`jQqVE-I3#@tWWFm4wL6m=0QT6q|e^erbDwK{q`$5ab`P0m4QYfGxj8h{P8! zEtTRV{!y4oP%|VwT`W10>>RQ?vsk}bj(idox7~3OEvtMIdjj0NT1fd-pI%FmvrK{n z>6hYVy{$%qxCEorwbA?V?DX7qJ;mhtr~-V}S!W&j;+OvBy_E5y8o9NU2EGxs14&^# zD<&6I|+F6h$wCJ=iT(HI_nJ9nGb z%=V=a)>qebkKzhbT$oS>5*1qB#>k&SErx~A`S&^6CO4yKgM z;|A!yEw!{XPm*rQDJ=>_%UXkO#qSg@*U?yU-9SenHA=LyqanDs&Rot)Qu?ooVg_E! zPNeh0GEp%Y%#xNS4{`iLBQ!tmH)Mbw2(IN|732Pk5ism?OUKQPCMuL?nZ-E(=>ZzT zcd@iuoo;y|Aeu{*LFSpGm@Qjn2FB7_Y%H4v8$+3$INz+v8fl7Bc_{GnEaHHWDbaS4 zztV*$s!%PJKu4(fDhoDf3zFuU^ejVAbOGc1i-zL@3R$KaTX#Y}k{>~WvZP`AYw&`2 z%C{Nu<^0&&I$m*@R*o-xXNpT zHQj@02jHrWWG)wX^eG^VweM{(pNunlS-&D1jxwT($}>!-u%bW!XU@<*A3H-xokmMP z*EVMWlHwdmEjPJ}5OyZ$8zMWtxr?l=2ZD&<{L+)EOyTVH5|>3W-7Ckxn%(p%6RyI-6eu$WECMW$VB@wSf^mxpC_^P z++mfOM$NVCwqv|=l#a`dLnG3-Cz?SVME+0mK58hK#HA_qMGv_m9qeamg&#;cxPk3a%C5VC?#GTekFD@=6UIvc^5(kS< zqtOVQy_RMUCS^bgtuBg5$TK1-Z!Kl^I;M%iIZQ`NwW%(kuHYJsy216PE3&3tLWrQy zP%?Z*TIaQVcnk<)ra1g83kV2XDXNNWd;cnfW64wr9Z1}TP7&F=t|utO8_dG=lxKCUnMLkHm6 zVgt&vev;OE-Ez5A0a0NXR0!G|52Jt-ofJvs(s-F7Jm7sRUz*ttqCaX9+e~QyG4bdM zm25%4bEl0SjX|$KDHI={^>*uR+?7JQTYwgi$^y=46L;>&LM7@EFG`?jaPa^eln34x zO2vgndKU_5e{mxoiAX`Olp}ok$^{NcBM^oC>tBAlz*5{f%+u@G$__BLW0%zI(dl)`}Fa& ztS*@>rsTy8u5Hw?FYvVRYUDLsbO+101eY;`jAVbCFe{5fr}&TKqEhGFU#;S zeO}IS(?dORWDt(}#{x%aEz|ZYVThuYe>jY@424e`*$=n9xh0S$W>mp6g^?vR{VwAm z!lB(OaOPT1%hiPG`%`!8;3&4iQ}|VnKz<=kw=k6si1 zqo53_tgVxn#GCaBMPmIN?Vj44d)p|(Q7(=tz)yMd({A|u7jC`K85jQG zz4u0$NWpoSd;xcTs6Rt+?l#oJI z9|*V4IJW3T@3}4d;f$WE!}MbEbwJ9|CEP-x1#jCXwXJj7Nt~%;tgqHN#DMuILpMJQ zTI2~WUxWu`2mKr?a3cY`9@0mMHP_3Tdsh7sU8SlV^YsMk8Ou)Fw@f6I8VZqRNYP?& z>Fr0wotM`832X5a51b6DjudOr1`}|^!X>dKlmMAhy{ZanY!ohd#CQc`)>N+cT?^f3^ANKxSyz}}7}SBa8C>&nFGY}pf^;PnN(Du6n5EkQf5HdFbhc9#QlNA;;}Hr6o-Lk7p>jnEPpz#*Bp!OMC1@>)>P@{E=!LTcAUMc@tAPOgLoH6~)0 zN~Ng91fFiN01e!Wddg6EJhXVUmBfg9+lXS7O;1ZW*d91i$pu5%Y(m(AH9zzecV|Mj ztvG`0Hb5Gh%v6AzxVzv3tx8(GN%)m^pG`hgi-fdn4vW?}c$iTaXpa);E?$h?a)|o$gSmY>M7@mjO)Gg*2MaOb}yo;KBM1 zVGiefxA!knxxv&CTxngjwG1}75P}o|w zG8H>sQ7IjTv^KqO`VVt+jGwT?F`iF7?TJsj^On!w^lr+?loHjZ4_g&7pG+drOJj0{ z>ny?4#vuU}jkdBfTx%8Lj`5tja@YtA#vpk6_wia+goVMD^o#8ut}@WG8tbZiscRxP zI4|oKooj3Rux7UKVCtUjdqTW9+};J}Mzvrx@Z!G3seSwRr+=*F%1CN!c-_E*2M=y6djHr;Z@Z^9+{Znept#K!r;DfXwV4_5Tp@mT(Ma?&jw9wKh7LRxrLQ(=mfiR>EL+cf&SOSN-siDX< zE4CHNQp~D)%IYKN<9DfP8>9jI04Vv6Gc;FlrTrGhU|prCwd0X> zN!JW$5j=HMgYV-CMEI|A=4>5nfDEOaczBvwj=|8Sr0~2XlK#qpUMTr8*H8J@+d8X_ z?P7K~#!FkfM+V!A#P7cR<(J=?h-3Ubpa2Kp)XZC9-qD=!=%wlgSeAAKPi>Pbf>2eu zZe^ZCwDkQ%HB;FdD4Gv(6gZi2nf~XI*_Eoa76}U{LpvB`u+OdgsQ~E0YndGY(+gN! zUz*y)MYULH$q4rm_H|xInAkM}xO2ML5n$X}toibxgY=2I5w6gSDJmw)AIL^avKiAX?}Z`|ntlm8By!RR%87 z%z>wS58?^jqbq+8{a=(9I7b;;kqBqeRi&AoD4=;Qeqlb`0W_?!?xZ+NM;XD7mENMw^UW?;TUdwn7G*%g*dd&M)v3sEKpal5oPks8wKK<#DaU*mL{saEpxQ7(3~>}zuQM4>rFD_Cii?Y+N80QMtECnYwuSY@sUf4n z)2sAqfMXsW~^+ z?K`6wNGIdXE=*4?A#nCD>nj7e_FT)13ck&?x_l%;eBi)=sR4qsq8m!1)+Z4RyACc})2D1`+^&@-ov)zaD=S~*Ofd#3KejaOL+OGPk4`ROx3 zFB>|-DDzXl2;ZH$d8~2*7e}M_Gq7cMA(jz5q^HVmG|)&bGC%`76@Y9RcUzOvgj<

U3ox%j;k>w33fjXDc@;4NZj)dc*)+c^ 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 K=d#Wzp$P!X&_+4{ literal 0 HcmV?d00001 diff --git a/android/drawable-xxxhdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png b/android/drawable-xxxhdpi/node_modules_reactnavigation_stack_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..17e52e8550e5668f7117bcb755beb70c3a21c9e9 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcgrg^$JhEy=Vy>(TP*-+rv1Kz7M z%I*XNJ!(VLzdH4Ge@o8ai4)e^3vK%P+bZq#{MQci z?P`C0d3kxcKa^1~`zt>B;jiLd|K_aKfAEz>edFmDy)D6SUw`+o@R*?B*u=sqq~bB* zgRIJrKN^lr3+tD}bFTI}~XjubmVU5CWQ(LZ;AgeuH{an^LB{Ts5E|^v% literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 1ba7206f..a4b44297 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/raw/i18n_fbt_translatedfbts.json b/android/raw/i18n_fbt_translatedfbts.json new file mode 100644 index 00000000..f5372106 --- /dev/null +++ b/android/raw/i18n_fbt_translatedfbts.json @@ -0,0 +1 @@ +{"en_US":{"18yDJU":"Go Back","4rqrl3":"Sign In","3fayOT":"Navigate","zcXn6":"Change Theme"},"ko_KR":{"18yDJU":"뒤로가기","4rqrl3":"로그인","3fayOT":"화면 전환","zcXn6":"테마 변경"}} \ No newline at end of file diff --git a/android/raw/node_modules_csscolorkeywords_colors.json b/android/raw/node_modules_csscolorkeywords_colors.json new file mode 100644 index 00000000..6637d25d --- /dev/null +++ b/android/raw/node_modules_csscolorkeywords_colors.json @@ -0,0 +1,148 @@ +{ + "black": "#000000", + "silver": "#c0c0c0", + "gray": "#808080", + "white": "#ffffff", + "maroon": "#800000", + "red": "#ff0000", + "purple": "#800080", + "fuchsia": "#ff00ff", + "green": "#008000", + "lime": "#00ff00", + "olive": "#808000", + "yellow": "#ffff00", + "navy": "#000080", + "blue": "#0000ff", + "teal": "#008080", + "aqua": "#00ffff", + "orange": "#ffa500", + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "blanchedalmond": "#ffebcd", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgreen": "#006400", + "darkgrey": "#a9a9a9", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "greenyellow": "#adff2f", + "grey": "#808080", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgray": "#d3d3d3", + "lightgreen": "#90ee90", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "oldlace": "#fdf5e6", + "olivedrab": "#6b8e23", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "whitesmoke": "#f5f5f5", + "yellowgreen": "#9acd32", + "rebeccapurple": "#663399" +} diff --git a/app.config.js b/app.config.js new file mode 100644 index 00000000..f5182ac9 --- /dev/null +++ b/app.config.js @@ -0,0 +1,11 @@ +import 'dotenv/config'; + +export default { + name: 'dooboo', + displayName: 'dooboo', + entryPoint: 'index.js', + packagerOpts: { + assetExts: ['ttf', 'png'], + sourceExts: ['ts', 'tsx'], + }, +}; diff --git a/app.json b/app.json deleted file mode 100644 index 58c36cba..00000000 --- a/app.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "dooboo", - "displayName": "dooboo", - "entryPoint": "index.js", - "packagerOpts": { - "assetExts": ["ttf", "png"], - "sourceExts": ["ts", "tsx"] - } -} diff --git a/assets/langs/en.json b/assets/langs/en.json deleted file mode 100644 index 54d34e02..00000000 --- a/assets/langs/en.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "HELLO": "Hello", - "LOGIN": "Login", - "EMAIL": "Email", - "PASSWORD": "Password", - "SIGNUP": "SIGN UP", - "FORGOT_PW": "Forgot password?", - "NAVIGATE": "Navigate to %{name}", - "CHANGE_THEME": "Change theme" -} diff --git a/assets/langs/ko.json b/assets/langs/ko.json deleted file mode 100644 index f2151ca8..00000000 --- a/assets/langs/ko.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "HELLO": "안녕하세요", - "LOGIN": "로그인", - "EMAIL": "이메일", - "PASSWORD": "패스워드", - "SIGNUP": "회원가입", - "FORGOT_PW": "비밀번호를 잊어버리셨나요?", - "NAVIGATE": "%{name}으로 이동", - "CHANGE_THEME": "테마 변경" -} diff --git a/assets/translations/en.json b/assets/translations/en.json new file mode 100644 index 00000000..3da3cfbe --- /dev/null +++ b/assets/translations/en.json @@ -0,0 +1,15 @@ +{ + "fb-locale": "en_US", + "translations": { + "8187f7a32af24a016622027a1aaf7c49": { + "tokens": [], + "types": [], + "translations": [ + { + "translation": "Sign In", + "variations": {} + } + ] + } + } +} \ No newline at end of file diff --git a/assets/translations/ko.json b/assets/translations/ko.json new file mode 100644 index 00000000..7b882998 --- /dev/null +++ b/assets/translations/ko.json @@ -0,0 +1,45 @@ +{ + "fb-locale": "ko_KR", + "translations": { + "8187f7a32af24a016622027a1aaf7c49": { + "tokens": [], + "types": [], + "translations": [ + { + "translation": "로그인", + "variations": {} + } + ] + }, + "579290b3f62f0fd93162fd1c69667b80": { + "tokens": [], + "types": [], + "translations": [ + { + "translation": "화면 전환", + "variations": {} + } + ] + }, + "266e827836b82d38073d828285fd7b08": { + "tokens": [], + "types": [], + "translations": [ + { + "translation": "테마 변경", + "variations": {} + } + ] + }, + "d045dda0e2a4f8df14e676e3adbcf94d": { + "tokens": [], + "types": [], + "translations": [ + { + "translation": "뒤로가기", + "variations": {} + } + ] + } + } +} \ No newline at end of file diff --git a/babel.config.js b/babel.config.js index 7f36c258..47791c68 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,6 +1,16 @@ +const path = require('path'); + module.exports = { presets: [ 'module:metro-react-native-babel-preset', '@babel/preset-typescript', ], + plugins: [ + 'babel-plugin-fbt-runtime', + ['babel-plugin-fbt', { + fbtEnumPath: path.join(__dirname, 'i18n/fbt/.enum_manifest.json'), + extraOptions: { __self: true }, + }, + ], + ], }; diff --git a/i18n/FbtI18nNativeAssets.js b/i18n/FbtI18nNativeAssets.js new file mode 100644 index 00000000..1356f8d1 --- /dev/null +++ b/i18n/FbtI18nNativeAssets.js @@ -0,0 +1,48 @@ +/** + * @generated SignedSource<> + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * !! This file is synchronized from fbsource. You should not !! + * !! modify it directly. Instead: !! + * !! !! + * !! 1) Update this file on fbsource and land your change there. !! + * !! 2) A sync diff should be created and accepted automatically !! + * !! within 30 minutes that copies the changes you made on !! + * !! fbsource to www. All that's left is to verify the !! + * !! revision is good land it on www. !! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + */ + +'use strict'; + +import NativeFbtModule from './NativeFbtModule'; + +const _translationsDictionary: {[hashKey: string]: ?string} = {}; + +export default class FbtI18nNativeAssets { + static getString = (hashKey: string): ?string => { + let translatedPayload; + if (hashKey in _translationsDictionary) { + translatedPayload = _translationsDictionary[hashKey]; + } else { + if (__DEV__ && !global.nativeExtensions && !global.nativeCallSyncHook) { + // Chrome debugger does not support synchronous native method. + // Thus do not use getString in Chrome debugger. + // **Translations will not work while debugging** + translatedPayload = null; + } else if (NativeFbtModule != null) { + translatedPayload = NativeFbtModule.getString(hashKey); + } + _translationsDictionary[hashKey] = translatedPayload; + } + + return translatedPayload; + }; +} diff --git a/i18n/NativeFbtModule.js b/i18n/NativeFbtModule.js new file mode 100644 index 00000000..13934417 --- /dev/null +++ b/i18n/NativeFbtModule.js @@ -0,0 +1,32 @@ +/** + * @generated SignedSource<> + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * !! This file is synchronized from fbsource. You should not !! + * !! modify it directly. Instead: !! + * !! !! + * !! 1) Update this file on fbsource and land your change there. !! + * !! 2) A sync diff should be created and accepted automatically !! + * !! within 30 minutes that copies the changes you made on !! + * !! fbsource to www. All that's left is to verify the !! + * !! revision is good land it on www. !! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + */ + +'use strict'; + +import {TurboModule} from 'react-native/Libraries/TurboModule/RCTExport'; +import * as TurboModuleRegistry from 'react-native/Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + getString: (hashKey: string) => string; +} + +export default (TurboModuleRegistry.get('FbtModule'): ?Spec); diff --git a/i18n/fbt/translatedFbts.json b/i18n/fbt/translatedFbts.json new file mode 100644 index 00000000..f5372106 --- /dev/null +++ b/i18n/fbt/translatedFbts.json @@ -0,0 +1 @@ +{"en_US":{"18yDJU":"Go Back","4rqrl3":"Sign In","3fayOT":"Navigate","zcXn6":"Change Theme"},"ko_KR":{"18yDJU":"뒤로가기","4rqrl3":"로그인","3fayOT":"화면 전환","zcXn6":"테마 변경"}} \ No newline at end of file diff --git a/i18n/getTranslatedInput.js b/i18n/getTranslatedInput.js new file mode 100644 index 00000000..edb09d4b --- /dev/null +++ b/i18n/getTranslatedInput.js @@ -0,0 +1,42 @@ +/** + * @generated SignedSource<<64f5f834628fc680784f95cc3842b80e>> + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * !! This file is synchronized from fbsource. You should not !! + * !! modify it directly. Instead: !! + * !! !! + * !! 1) Update this file on fbsource and land your change there. !! + * !! 2) A sync diff should be created and accepted automatically !! + * !! within 30 minutes that copies the changes you made on !! + * !! fbsource to www. All that's left is to verify the !! + * !! revision is good land it on www. !! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + */ + +'use strict'; + +import type {FbtRuntimeCallInput, FbtTranslatedInput} from 'fbt/lib/FbtHooks'; + +import FbtI18nNativeAssets from './FbtI18nNativeAssets'; + +function getTranslatedInput( + input: FbtRuntimeCallInput, +): ?FbtTranslatedInput { + const {options} = input; + if (options.hk != null) { + let translatedPayload = FbtI18nNativeAssets.getString(options.hk); + if (translatedPayload) { + return {table: JSON.parse(translatedPayload), args: input.args}; + } + } + return null; +} + +export {getTranslatedInput}; diff --git a/i18n/scripts/generate-android-localizables-executor.js b/i18n/scripts/generate-android-localizables-executor.js new file mode 100644 index 00000000..c7f93382 --- /dev/null +++ b/i18n/scripts/generate-android-localizables-executor.js @@ -0,0 +1,71 @@ +/** + * @generated SignedSource<<342c45ee3cb664f60d81eea85f914c6f>> + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * !! This file is synchronized from fbsource. You should not !! + * !! modify it directly. Instead: !! + * !! !! + * !! 1) Update this file on fbsource and land your change there. !! + * !! 2) A sync diff should be created and accepted automatically !! + * !! within 30 minutes that copies the changes you made on !! + * !! fbsource to www. All that's left is to verify the !! + * !! revision is good land it on www. !! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * Nice wraper to use generate-android-localizables from babel node directly + */ + +'use strict'; + +const { + generateAndroidLocalizableFiles, +} = require('./generate-android-localizables'); +const fs = require('fs'); +const yargs = require('yargs'); + +const args = { + HELP: 'h', + TRANSLATION_OUTPUT: 'translationOutput', + ANDROID_RES_DIR: 'androidResDir', + TRANSLATIONS_FILENAME: 'translationsFilename', +}; + +const argv = yargs + .usage( + 'Take translations output, and write individual JSON files for each ' + + 'locale: raw-es_rES/localizable.json => {: translatedString}', + ) + .string(args.TRANSLATION_OUTPUT) + .default(args.TRANSLATION_OUTPUT, './i18n/fbt/translatedFbts.json') + .describe(args.TRANSLATION_OUTPUT, `path to the translatedFbts`) + .string(args.ANDROID_RES_DIR) + .default(args.ANDROID_RES_DIR, 'android/app/src/main/res') + .describe( + args.ANDROID_RES_DIR, + `path to the res folder of your android application`, + ) + .string(args.TRANSLATIONS_FILENAME) + .default(args.TRANSLATIONS_FILENAME, 'localizable.json') + .describe( + args.TRANSLATIONS_FILENAME, + `name that json translation files should take`, + ).argv; + +if (argv[args.HELP]) { + yargs.showHelp(); + process.exit(0); +} + +generateAndroidLocalizableFiles( + JSON.parse( + fs.readFileSync(argv[args.TRANSLATION_OUTPUT], {encoding: 'utf8'}), + ), + argv[args.ANDROID_RES_DIR], + argv[args.TRANSLATIONS_FILENAME], +); diff --git a/i18n/scripts/generate-android-localizables.js b/i18n/scripts/generate-android-localizables.js new file mode 100644 index 00000000..8a431bae --- /dev/null +++ b/i18n/scripts/generate-android-localizables.js @@ -0,0 +1,87 @@ +/** + * @generated SignedSource<<8eb51a2ebfe40bc40fca79cd0f9cc1fc>> + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * !! This file is synchronized from fbsource. You should not !! + * !! modify it directly. Instead: !! + * !! !! + * !! 1) Update this file on fbsource and land your change there. !! + * !! 2) A sync diff should be created and accepted automatically !! + * !! within 30 minutes that copies the changes you made on !! + * !! fbsource to www. All that's left is to verify the !! + * !! revision is good land it on www. !! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + */ + +import type {TranslationScriptOutput} from './translate-fbts'; + +const invariant = require('invariant'); +const fs = require('fs'); +const path = require('path'); + +/** + * Generates locales that comply with Android resources format + * https://developer.android.com/guide/topics/resources/providing-resources + * + * @param locale Locale in the form langCode_regionCode. + * @return Locale in the form langCode-rRegionCode. + */ +function generateAndroidLocale(locale: string): string { + const langRegionCode = locale.split('_'); + invariant( + langRegionCode.length == 2, + 'Lang-region array must have two items', + ); + return `${langRegionCode[0]}-r${langRegionCode[1]}`; +} + +function jsonEncodeValues(localeValues) { + const encodedValues = {}; + for (const hash in localeValues) { + encodedValues[hash] = JSON.stringify(localeValues[hash]); + } + return encodedValues; +} + +/** + * Take translations output, and write individual JSON files for each locale + * raw-es_rES/localizable.json => {: translatedString} + * raw-ru_rRU/localizable.json + */ +function generateAndroidLocalizableFiles( + translationOutput: TranslationScriptOutput, + androidResDir: string, + translationsFileName: string, +) { + try { + for (const locale in translationOutput) { + const androidLocale = generateAndroidLocale(locale); + const rawXXDir = path.join(androidResDir, `raw-${androidLocale}`); + + if (!fs.existsSync(rawXXDir)) { + fs.mkdirSync(rawXXDir); + } + fs.writeFileSync( + path.join(rawXXDir, translationsFileName), + JSON.stringify(jsonEncodeValues(translationOutput[locale])), + {encoding: 'utf8'}, + ); + } + } catch (error) { + console.error('An error ocurred while generating the android localizables'); + console.error(error); + process.exit(1); + throw error; + } +} + +module.exports = { + generateAndroidLocalizableFiles, +}; diff --git a/ios/Podfile b/ios/Podfile index 1f61546d..97bdf23e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,7 +1,7 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, '10.0' +platform :ios, '11.0' target 'dooboo' do config = use_native_modules! @@ -20,14 +20,12 @@ target 'dooboo' do use_flipper! post_install do |installer| flipper_post_install(installer) - end -end - -target 'dooboo-tvOS' do - # Pods for dooboo-tvOS - - target 'dooboo-tvOSTests' do - inherit! :search_paths - # Pods for testing + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + config.build_settings["ONLY_ACTIVE_ARCH"] = "YES" + config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" + end + end end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9ac9553b..83f3f38e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3,58 +3,58 @@ PODS: - CocoaAsyncSocket (7.6.4) - CocoaLibEvent (1.0.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.63.2) - - FBReactNativeSpec (0.63.2): + - FBLazyVector (0.63.4) + - FBReactNativeSpec (0.63.4): - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.2) - - RCTTypeSafety (= 0.63.2) - - React-Core (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - Flipper (0.41.5): + - RCTRequired (= 0.63.4) + - RCTTypeSafety (= 0.63.4) + - React-Core (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - Flipper (0.54.0): - Flipper-Folly (~> 2.2) - Flipper-RSocket (~> 1.1) - Flipper-DoubleConversion (1.1.7) - - Flipper-Folly (2.2.0): + - Flipper-Folly (2.3.0): - boost-for-react-native - CocoaLibEvent (~> 1.0) - Flipper-DoubleConversion - Flipper-Glog - - OpenSSL-Universal (= 1.0.2.19) + - OpenSSL-Universal (= 1.0.2.20) - Flipper-Glog (0.3.6) - Flipper-PeerTalk (0.0.4) - Flipper-RSocket (1.1.0): - Flipper-Folly (~> 2.2) - - FlipperKit (0.41.5): - - FlipperKit/Core (= 0.41.5) - - FlipperKit/Core (0.41.5): - - Flipper (~> 0.41.5) + - FlipperKit (0.54.0): + - FlipperKit/Core (= 0.54.0) + - FlipperKit/Core (0.54.0): + - Flipper (~> 0.54.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.41.5): - - Flipper (~> 0.41.5) - - FlipperKit/FBCxxFollyDynamicConvert (0.41.5): + - FlipperKit/CppBridge (0.54.0): + - Flipper (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.54.0): - Flipper-Folly (~> 2.2) - - FlipperKit/FBDefines (0.41.5) - - FlipperKit/FKPortForwarding (0.41.5): + - FlipperKit/FBDefines (0.54.0) + - FlipperKit/FKPortForwarding (0.54.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.41.5) - - FlipperKit/FlipperKitLayoutPlugin (0.41.5): + - FlipperKit/FlipperKitHighlightOverlay (0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (0.54.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.41.5) - - FlipperKit/FlipperKitNetworkPlugin (0.41.5): + - FlipperKit/FlipperKitLayoutTextSearchable (0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (0.54.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.41.5): + - FlipperKit/FlipperKitReactPlugin (0.54.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.41.5): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.41.5): + - FlipperKit/SKIOSNetworkPlugin (0.54.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin - Folly (2020.01.13.00): @@ -67,249 +67,249 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - OpenSSL-Universal (1.0.2.19): - - OpenSSL-Universal/Static (= 1.0.2.19) - - OpenSSL-Universal/Static (1.0.2.19) - - RCTRequired (0.63.2) - - RCTTypeSafety (0.63.2): - - FBLazyVector (= 0.63.2) + - OpenSSL-Universal (1.0.2.20): + - OpenSSL-Universal/Static (= 1.0.2.20) + - OpenSSL-Universal/Static (1.0.2.20) + - RCTRequired (0.63.4) + - RCTTypeSafety (0.63.4): + - FBLazyVector (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.2) - - React-Core (= 0.63.2) - - React (0.63.2): - - React-Core (= 0.63.2) - - React-Core/DevSupport (= 0.63.2) - - React-Core/RCTWebSocket (= 0.63.2) - - React-RCTActionSheet (= 0.63.2) - - React-RCTAnimation (= 0.63.2) - - React-RCTBlob (= 0.63.2) - - React-RCTImage (= 0.63.2) - - React-RCTLinking (= 0.63.2) - - React-RCTNetwork (= 0.63.2) - - React-RCTSettings (= 0.63.2) - - React-RCTText (= 0.63.2) - - React-RCTVibration (= 0.63.2) - - React-callinvoker (0.63.2) - - React-Core (0.63.2): + - RCTRequired (= 0.63.4) + - React-Core (= 0.63.4) + - React (0.63.4): + - React-Core (= 0.63.4) + - React-Core/DevSupport (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-RCTActionSheet (= 0.63.4) + - React-RCTAnimation (= 0.63.4) + - React-RCTBlob (= 0.63.4) + - React-RCTImage (= 0.63.4) + - React-RCTLinking (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - React-RCTSettings (= 0.63.4) + - React-RCTText (= 0.63.4) + - React-RCTVibration (= 0.63.4) + - React-callinvoker (0.63.4) + - React-Core (0.63.4): - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.63.2) - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/CoreModulesHeaders (0.63.2): + - React-Core/CoreModulesHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/Default (0.63.2): + - React-Core/Default (0.63.4): - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/DevSupport (0.63.2): + - React-Core/DevSupport (0.63.4): - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.63.2) - - React-Core/RCTWebSocket (= 0.63.2) - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) - - React-jsinspector (= 0.63.2) + - React-Core/Default (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - React-jsinspector (= 0.63.4) - Yoga - - React-Core/RCTActionSheetHeaders (0.63.2): + - React-Core/RCTActionSheetHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTAnimationHeaders (0.63.2): + - React-Core/RCTAnimationHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTBlobHeaders (0.63.2): + - React-Core/RCTBlobHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTImageHeaders (0.63.2): + - React-Core/RCTImageHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTLinkingHeaders (0.63.2): + - React-Core/RCTLinkingHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTNetworkHeaders (0.63.2): + - React-Core/RCTNetworkHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTSettingsHeaders (0.63.2): + - React-Core/RCTSettingsHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTTextHeaders (0.63.2): + - React-Core/RCTTextHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTVibrationHeaders (0.63.2): + - React-Core/RCTVibrationHeaders (0.63.4): - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTWebSocket (0.63.2): + - React-Core/RCTWebSocket (0.63.4): - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.63.2) - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsiexecutor (= 0.63.2) + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-CoreModules (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - React-CoreModules (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.2) - - React-Core/CoreModulesHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - React-RCTImage (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-cxxreact (0.63.2): + - RCTTypeSafety (= 0.63.4) + - React-Core/CoreModulesHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTImage (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-cxxreact (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.2) - - React-jsinspector (= 0.63.2) - - React-jsi (0.63.2): + - React-callinvoker (= 0.63.4) + - React-jsinspector (= 0.63.4) + - React-jsi (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - Folly (= 2020.01.13.00) - glog - - React-jsi/Default (= 0.63.2) - - React-jsi/Default (0.63.2): + - React-jsi/Default (= 0.63.4) + - React-jsi/Default (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - Folly (= 2020.01.13.00) - glog - - React-jsiexecutor (0.63.2): + - React-jsiexecutor (0.63.4): - DoubleConversion - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - React-jsinspector (0.63.2) - - react-native-safe-area-context (3.1.8): + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsinspector (0.63.4) + - react-native-fbt (0.0.1): + - React + - react-native-safe-area-context (3.1.9): - React-Core - - React-RCTActionSheet (0.63.2): - - React-Core/RCTActionSheetHeaders (= 0.63.2) - - React-RCTAnimation (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - React-RCTActionSheet (0.63.4): + - React-Core/RCTActionSheetHeaders (= 0.63.4) + - React-RCTAnimation (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.2) - - React-Core/RCTAnimationHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTBlob (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTAnimationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTBlob (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.63.2) - - React-Core/RCTWebSocket (= 0.63.2) - - React-jsi (= 0.63.2) - - React-RCTNetwork (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTImage (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - React-Core/RCTBlobHeaders (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTImage (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.2) - - React-Core/RCTImageHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - React-RCTNetwork (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTLinking (0.63.2): - - FBReactNativeSpec (= 0.63.2) - - React-Core/RCTLinkingHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTNetwork (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTImageHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTLinking (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - React-Core/RCTLinkingHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTNetwork (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.2) - - React-Core/RCTNetworkHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTSettings (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTNetworkHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTSettings (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.2) - - React-Core/RCTSettingsHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - React-RCTText (0.63.2): - - React-Core/RCTTextHeaders (= 0.63.2) - - React-RCTVibration (0.63.2): - - FBReactNativeSpec (= 0.63.2) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTSettingsHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTText (0.63.4): + - React-Core/RCTTextHeaders (= 0.63.4) + - React-RCTVibration (0.63.4): + - FBReactNativeSpec (= 0.63.4) - Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.63.2) - - React-jsi (= 0.63.2) - - ReactCommon/turbomodule/core (= 0.63.2) - - ReactCommon/turbomodule/core (0.63.2): + - React-Core/RCTVibrationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - ReactCommon/turbomodule/core (0.63.4): - DoubleConversion - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.2) - - React-Core (= 0.63.2) - - React-cxxreact (= 0.63.2) - - React-jsi (= 0.63.2) - - RNCAsyncStorage (1.12.0): - - React + - React-callinvoker (= 0.63.4) + - React-Core (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - RNCAsyncStorage (1.12.1): + - React-Core - RNCMaskedView (0.1.10): - React - - RNGestureHandler (1.8.0): - - React - - RNLocalize (1.4.1): - - React - - RNReanimated (1.13.1): - - React - - RNScreens (2.11.0): - - React + - RNGestureHandler (1.9.0): + - React-Core + - RNReanimated (1.13.2): + - React-Core + - RNScreens (2.16.1): + - React-Core - Yoga (1.14.0) - YogaKit (1.18.1): - Yoga (~> 1.14) @@ -318,25 +318,25 @@ DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - Flipper (~> 0.41.1) + - Flipper (~> 0.54.0) - Flipper-DoubleConversion (= 1.1.7) - Flipper-Folly (~> 2.2) - Flipper-Glog (= 0.3.6) - Flipper-PeerTalk (~> 0.0.4) - Flipper-RSocket (~> 1.1) - - FlipperKit (~> 0.41.1) - - FlipperKit/Core (~> 0.41.1) - - FlipperKit/CppBridge (~> 0.41.1) - - FlipperKit/FBCxxFollyDynamicConvert (~> 0.41.1) - - FlipperKit/FBDefines (~> 0.41.1) - - FlipperKit/FKPortForwarding (~> 0.41.1) - - FlipperKit/FlipperKitHighlightOverlay (~> 0.41.1) - - FlipperKit/FlipperKitLayoutPlugin (~> 0.41.1) - - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.41.1) - - FlipperKit/FlipperKitNetworkPlugin (~> 0.41.1) - - FlipperKit/FlipperKitReactPlugin (~> 0.41.1) - - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.41.1) - - FlipperKit/SKIOSNetworkPlugin (~> 0.41.1) + - FlipperKit (~> 0.54.0) + - FlipperKit/Core (~> 0.54.0) + - FlipperKit/CppBridge (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0) + - FlipperKit/FBDefines (~> 0.54.0) + - FlipperKit/FKPortForwarding (~> 0.54.0) + - FlipperKit/FlipperKitHighlightOverlay (~> 0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (~> 0.54.0) + - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (~> 0.54.0) + - FlipperKit/FlipperKitReactPlugin (~> 0.54.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.54.0) + - FlipperKit/SKIOSNetworkPlugin (~> 0.54.0) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) @@ -351,6 +351,7 @@ DEPENDENCIES: - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - react-native-fbt (from `../node_modules/react-native-fbt`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -365,7 +366,6 @@ DEPENDENCIES: - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - - RNLocalize (from `../node_modules/react-native-localize`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNScreens (from `../node_modules/react-native-screens`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -416,6 +416,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector" + react-native-fbt: + :path: "../node_modules/react-native-fbt" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" React-RCTActionSheet: @@ -444,8 +446,6 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/masked-view" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" - RNLocalize: - :path: "../node_modules/react-native-localize" RNReanimated: :path: "../node_modules/react-native-reanimated" RNScreens: @@ -458,48 +458,48 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 3ef4a7f62e7db01092f9d517d2ebc0d0677c4a37 - FBReactNativeSpec: dc7fa9088f0f2a998503a352b0554d69a4391c5a - Flipper: 33585e2d9810fe5528346be33bcf71b37bb7ae13 + FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e + FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e + Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 - Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 + Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 - FlipperKit: bc68102cd4952a258a23c9c1b316c7bec1fecf83 + FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d Folly: b73c3869541e86821df3c387eb0af5f65addfab4 glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 - RCTRequired: f13f25e7b12f925f1f6a6a8c69d929a03c0129fe - RCTTypeSafety: 44982c5c8e43ff4141eb519a8ddc88059acd1f3a - React: e1c65dd41cb9db13b99f24608e47dd595f28ca9a - React-callinvoker: 552a6a6bc8b3bb794cf108ad59e5a9e2e3b4fc98 - React-Core: 9d341e725dc9cd2f49e4c49ad1fc4e8776aa2639 - React-CoreModules: 5335e168165da7f7083ce7147768d36d3e292318 - React-cxxreact: d3261ec5f7d11743fbf21e263a34ea51d1f13ebc - React-jsi: 54245e1d5f4b690dec614a73a3795964eeef13a8 - React-jsiexecutor: 8ca588cc921e70590820ce72b8789b02c67cce38 - React-jsinspector: b14e62ebe7a66e9231e9581279909f2fc3db6606 - react-native-safe-area-context: 79fea126c6830c85f65947c223a5e3058a666937 - React-RCTActionSheet: 910163b6b09685a35c4ebbc52b66d1bfbbe39fc5 - React-RCTAnimation: 9a883bbe1e9d2e158d4fb53765ed64c8dc2200c6 - React-RCTBlob: 39cf0ece1927996c4466510e25d2105f67010e13 - React-RCTImage: de355d738727b09ad3692f2a979affbd54b5f378 - React-RCTLinking: 8122f221d395a63364b2c0078ce284214bd04575 - React-RCTNetwork: 8f96c7b49ea6a0f28f98258f347b6ad218bc0830 - React-RCTSettings: 8a49622aff9c1925f5455fa340b6fe4853d64ab6 - React-RCTText: 1b6773e776e4b33f90468c20fe3b16ca3e224bb8 - React-RCTVibration: 4d2e726957f4087449739b595f107c0d4b6c2d2d - ReactCommon: a0a1edbebcac5e91338371b72ffc66aa822792ce - RNCAsyncStorage: 2a692bcb9b69b76a2f1a95f33db057129700af64 + OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd + RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e + RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b + React: b0a957a2c44da4113b0c4c9853d8387f8e64e615 + React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe + React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b + React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60 + React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3 + React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31 + React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 + React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a + react-native-fbt: 6f5cf86b6c1f407856dd2ae68024d2a1f49a33b3 + react-native-safe-area-context: b6e0e284002381d2ff29fa4fff42b4d8282e3c94 + React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 + React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b + React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 + React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0 + React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2 + React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae + React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a + React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c + React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d + ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b + RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f - RNGestureHandler: 7a5833d0f788dbd107fbb913e09aa0c1ff333c39 - RNLocalize: 49634a6a605dcdeb319e9c42a5c2f1aec508694b - RNReanimated: dd8c286ab5dd4ba36d3a7fef8bff7e08711b5476 - RNScreens: 0e91da98ab26d5d04c7b59a9b6bd694124caf88c - Yoga: 7740b94929bbacbddda59bf115b5317e9a161598 + RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b + RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad + RNScreens: 45c457af3d2ee9e08fc01e70da87e653d46b1198 + Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 73f909c2b4533e55ed87d09d4f712b98f76fa947 +PODFILE CHECKSUM: 01b4c2c0870cfc4db814a311c242840c221c0baa -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.0 diff --git a/ios/dooboo.xcodeproj/project.pbxproj b/ios/dooboo.xcodeproj/project.pbxproj index 1fa8aeb0..d747b0c0 100644 --- a/ios/dooboo.xcodeproj/project.pbxproj +++ b/ios/dooboo.xcodeproj/project.pbxproj @@ -12,13 +12,11 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2C2F24E9C70DB46763B59EBD /* libPods-dooboo-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 12E824000AE1642C8D8AE62F /* libPods-dooboo-tvOSTests.a */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* doobooTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* doobooTests.m */; }; 386370538CEF1D2DCB8A5E71 /* libPods-dooboo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F97A477A04E5A0CE527DC64B /* libPods-dooboo.a */; }; - 3D43E79D64940A68AE921F45 /* libPods-dooboo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DC92724D93ECB64F4F8D5C98 /* libPods-dooboo-tvOS.a */; }; 7ED01A28318BAEC924CF05DC /* libPods-dooboo-doobooTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D1E2A78FA19AD6D2670147 /* libPods-dooboo-doobooTests.a */; }; /* End PBXBuildFile section */ @@ -44,9 +42,6 @@ 00E356EE1AD99517003FC87E /* doobooTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = doobooTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* doobooTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = doobooTests.m; sourceTree = ""; }; - 0BAA10794AB471D92AE08F3E /* Pods-dooboo-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-dooboo-tvOSTests/Pods-dooboo-tvOSTests.release.xcconfig"; sourceTree = ""; }; - 12E0E58F6E4EA64DC50675A9 /* Pods-dooboo-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-tvOS.release.xcconfig"; path = "Target Support Files/Pods-dooboo-tvOS/Pods-dooboo-tvOS.release.xcconfig"; sourceTree = ""; }; - 12E824000AE1642C8D8AE62F /* libPods-dooboo-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dooboo-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* dooboo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dooboo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = dooboo/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = dooboo/AppDelegate.m; sourceTree = ""; }; @@ -56,14 +51,11 @@ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = dooboo/main.m; sourceTree = ""; }; 24FE732FDF9BA60D44E52033 /* Pods-dooboo-doobooTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-doobooTests.debug.xcconfig"; path = "Target Support Files/Pods-dooboo-doobooTests/Pods-dooboo-doobooTests.debug.xcconfig"; sourceTree = ""; }; 27D1E2A78FA19AD6D2670147 /* libPods-dooboo-doobooTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dooboo-doobooTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2984CEDFA03E33646B8EE484 /* Pods-dooboo-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-dooboo-tvOSTests/Pods-dooboo-tvOSTests.debug.xcconfig"; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* dooboo-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "dooboo-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* dooboo-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "dooboo-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 48CBD2C8CC19555343597BB2 /* Pods-dooboo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo.release.xcconfig"; path = "Target Support Files/Pods-dooboo/Pods-dooboo.release.xcconfig"; sourceTree = ""; }; 55B7D9F61F111B13C977C0DE /* Pods-dooboo-doobooTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-doobooTests.release.xcconfig"; path = "Target Support Files/Pods-dooboo-doobooTests/Pods-dooboo-doobooTests.release.xcconfig"; sourceTree = ""; }; - 8585EE60D8938FD9B7BF8684 /* Pods-dooboo-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-dooboo-tvOS/Pods-dooboo-tvOS.debug.xcconfig"; sourceTree = ""; }; 921D8784156B2139E974811E /* Pods-dooboo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dooboo.debug.xcconfig"; path = "Target Support Files/Pods-dooboo/Pods-dooboo.debug.xcconfig"; sourceTree = ""; }; - DC92724D93ECB64F4F8D5C98 /* libPods-dooboo-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dooboo-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; F97A477A04E5A0CE527DC64B /* libPods-dooboo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dooboo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -90,7 +82,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3D43E79D64940A68AE921F45 /* libPods-dooboo-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -98,7 +89,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2C2F24E9C70DB46763B59EBD /* libPods-dooboo-tvOSTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -143,10 +133,6 @@ 48CBD2C8CC19555343597BB2 /* Pods-dooboo.release.xcconfig */, 24FE732FDF9BA60D44E52033 /* Pods-dooboo-doobooTests.debug.xcconfig */, 55B7D9F61F111B13C977C0DE /* Pods-dooboo-doobooTests.release.xcconfig */, - 8585EE60D8938FD9B7BF8684 /* Pods-dooboo-tvOS.debug.xcconfig */, - 12E0E58F6E4EA64DC50675A9 /* Pods-dooboo-tvOS.release.xcconfig */, - 2984CEDFA03E33646B8EE484 /* Pods-dooboo-tvOSTests.debug.xcconfig */, - 0BAA10794AB471D92AE08F3E /* Pods-dooboo-tvOSTests.release.xcconfig */, ); name = Pods; path = Pods; @@ -159,8 +145,6 @@ ED2971642150620600B7C4FE /* JavaScriptCore.framework */, F97A477A04E5A0CE527DC64B /* libPods-dooboo.a */, 27D1E2A78FA19AD6D2670147 /* libPods-dooboo-doobooTests.a */, - DC92724D93ECB64F4F8D5C98 /* libPods-dooboo-tvOS.a */, - 12E824000AE1642C8D8AE62F /* libPods-dooboo-tvOSTests.a */, ); name = Frameworks; sourceTree = ""; @@ -246,7 +230,6 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "dooboo-tvOS" */; buildPhases = ( - 2DE459A6844CB2A9CB9C1F07 /* [CP] Check Pods Manifest.lock */, FD10A7F122414F3F0027D42C /* Start Packager */, 2D02E4771E0B4A5D006451C7 /* Sources */, 2D02E4781E0B4A5D006451C7 /* Frameworks */, @@ -266,7 +249,6 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "dooboo-tvOSTests" */; buildPhases = ( - 705AC4BDDB402A7C8D7237C2 /* [CP] Check Pods Manifest.lock */, 2D02E48C1E0B4A5D006451C7 /* Sources */, 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 2D02E48E1E0B4A5D006451C7 /* Resources */, @@ -391,50 +373,6 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 2DE459A6844CB2A9CB9C1F07 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-dooboo-tvOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - 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; - }; - 705AC4BDDB402A7C8D7237C2 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-dooboo-tvOSTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - 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; - }; 7D6619BBAE3F2D6D5FAE2DCF /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -711,7 +649,6 @@ }; 2D02E4971E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8585EE60D8938FD9B7BF8684 /* Pods-dooboo-tvOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -739,7 +676,6 @@ }; 2D02E4981E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 12E0E58F6E4EA64DC50675A9 /* Pods-dooboo-tvOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -767,7 +703,6 @@ }; 2D02E4991E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2984CEDFA03E33646B8EE484 /* Pods-dooboo-tvOSTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; @@ -794,7 +729,6 @@ }; 2D02E49A1E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0BAA10794AB471D92AE08F3E /* Pods-dooboo-tvOSTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; diff --git a/package.json b/package.json index 8dbb3962..8794906f 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "private": true, "postinstall": "npx jetify", "scripts": { + "postinstall": "yarn fbt:all", "dev": "node node_modules/react-native/local-cli/cli.js start", "tsc": "tsc", "watch": "tsc -w", @@ -31,51 +32,63 @@ "ios:reset": "rm -rf ios/build/ModuleCache", "lint": "eslint src --ext .ts,.tsx,.js,.jsx", "build:ios": "react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ./ios", - "build:android": "react-native bundle --entry-file index.js --platform android --dev false --bundle-output android/main.jsbundle --assets-dest ./android" + "build:android": "react-native bundle --entry-file index.js --platform android --dev false --bundle-output android/main.jsbundle --assets-dest ./android", + "manifest": "babel-node ./node_modules/babel-plugin-fbt/bin/manifest --src src/ --enum-manifest i18n/fbt/.enum_manifest.json --src-manifest i18n/fbt/.src_manifest.json", + "collect-fbts": "babel-node ./node_modules/babel-plugin-fbt/bin/collectFBT --hash-module 'fb-tiger-hash/src/hashPhrases' --react-native-mode --manifest --options __self < i18n/fbt/.src_manifest.json > i18n/fbt/.source_strings.json", + "translate-fbts": "babel-node ./node_modules/babel-plugin-fbt/bin/translate.js --jenkins --source-strings i18n/fbt/.source_strings.json --translations assets/translations/*.json > i18n/fbt/translatedFbts.json", + "clean-fbts": "rm i18n/fbt/.enum_manifest.json i18n/fbt/.src_manifest.json i18n/fbt/.source_strings.json assets/translatedFbts.json 2&> /dev/null || exit 0", + "fbt:all": "yarn manifest && yarn collect-fbts && yarn translate-fbts", + "fbt:android": "babel-node i18n/scripts/generate-android-localizables-executor.js" }, "dependencies": { - "@dooboo-ui/native-theme": "^0.1.7", + "@dooboo-ui/theme": "^0.0.3", "@react-native-community/async-storage": "^1.12.0", "@react-native-community/masked-view": "^0.1.10", - "@react-navigation/core": "^5.14.1", - "@react-navigation/native": "^5.8.7", - "@react-navigation/stack": "^5.12.4", - "i18n-js": "^3.8.0", + "@react-navigation/core": "^5.14.4", + "@react-navigation/native": "^5.8.10", + "@react-navigation/stack": "^5.12.8", + "fbt": "^0.16.0", "react": "16.13.1", - "react-native": "0.63.3", - "react-native-gesture-handler": "^1.8.0", - "react-native-localize": "^1.4.3", - "react-native-reanimated": "^1.13.1", - "react-native-safe-area-context": "^3.1.8", - "react-native-screens": "^2.13.0", + "react-native": "0.63.4", + "react-native-gesture-handler": "^1.9.0", + "react-native-reanimated": "^1.13.2", + "react-native-safe-area-context": "^3.1.9", + "react-native-screens": "^2.16.1", "styled-components": "^5.2.1" }, "devDependencies": { - "@babel/cli": "^7.12.1", - "@babel/core": "^7.12.3", - "@babel/preset-typescript": "^7.12.1", + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/node": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", "@babel/runtime": "^7.12.5", - "@dooboo/eslint-config": "^0.5.4", + "@dooboo/eslint-config": "^0.5.8", "@testing-library/jest-native": "^3.4.3", "@testing-library/react-native": "^7.1.0", - "@types/i18n-js": "^3.0.3", - "@types/jest": "^26.0.15", - "@types/react": "^16.9.56", - "@types/react-native": "^0.63.33", - "@types/react-test-renderer": "^16.9.3", - "@types/styled-components": "^5.1.4", + "@types/jest": "^26.0.19", + "@types/react": "^17.0.0", + "@types/react-native": "^0.63.43", + "@types/react-test-renderer": "^17.0.0", + "@types/styled-components": "^5.1.7", "babel-jest": "^26.6.3", + "babel-plugin-fbt": "^0.16.0", + "babel-plugin-fbt-runtime": "^0.9.12", + "babel-preset-react-native": "^4.0.1", "codecov": "^3.8.1", - "eslint": "^7.13.0", + "eslint": "^7.16.0", + "fb-tiger-hash": "^0.1.6", + "fbt-generate-translations": "^0.0.4", "jest": "^26.6.3", "jest-fetch-mock": "^3.0.3", "jest-styled-components": "^7.0.3", "jetifier": "^1.6.6", - "metro-react-native-babel-preset": "^0.63.0", - "prettier": "^2.1.2", + "metro-react-native-babel-preset": "^0.64.0", + "prettier": "^2.2.1", "react-dom": "^16.13.1", + "react-native-fbt": "^0.0.1", "react-test-renderer": "16.13.1", + "shelljs": "^0.8.4", "ts-jest": "^26.4.4", - "typescript": "4.0.5" + "typescript": "4.1.3" } } diff --git a/src/App.tsx b/src/App.tsx index 4432cae6..345d8d1f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,9 @@ import React from 'react'; import RootNavigator from './components/navigation/RootStackNavigator'; import RootProvider from './providers'; +import { initFbt } from './utils/fbt'; + +initFbt(); function App(): React.ReactElement { return ; diff --git a/src/components/navigation/RootStackNavigator.tsx b/src/components/navigation/RootStackNavigator.tsx index 3c3ecc79..a5d83117 100644 --- a/src/components/navigation/RootStackNavigator.tsx +++ b/src/components/navigation/RootStackNavigator.tsx @@ -1,7 +1,7 @@ import 'react-native-gesture-handler'; import { StackNavigationProp, createStackNavigator } from '@react-navigation/stack'; -import { ThemeType, useThemeContext } from '@dooboo-ui/native-theme'; +import { ThemeType, useThemeContext } from '@dooboo-ui/theme'; import Intro from '../screen/Intro'; import { NavigationContainer } from '@react-navigation/native'; diff --git a/src/components/navigation/__tests__/RootStackNavigator.test.tsx b/src/components/navigation/__tests__/RootStackNavigator.test.tsx index 502310ab..f457c01e 100644 --- a/src/components/navigation/__tests__/RootStackNavigator.test.tsx +++ b/src/components/navigation/__tests__/RootStackNavigator.test.tsx @@ -4,7 +4,7 @@ import React, { ReactElement } from 'react'; import { createTestElement, createTestProps } from '../../../../test/testUtils'; import StackNavigator from '../RootStackNavigator'; -import { ThemeType } from '@dooboo-ui/native-theme'; +import { ThemeType } from '@dooboo-ui/theme'; import renderer from 'react-test-renderer'; // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/components/navigation/__tests__/__snapshots__/RootStackNavigator.test.tsx.snap b/src/components/navigation/__tests__/__snapshots__/RootStackNavigator.test.tsx.snap index ec263d0c..e68537cf 100644 --- a/src/components/navigation/__tests__/__snapshots__/RootStackNavigator.test.tsx.snap +++ b/src/components/navigation/__tests__/__snapshots__/RootStackNavigator.test.tsx.snap @@ -57,16 +57,21 @@ exports[`[Stack] navigator should renders [Dark] mode 1`] = ` onGestureCanceled={[Function]} onGestureEnd={[Function]} onOpen={[Function]} - onTransitionStart={[Function]} + onTransition={[Function]} pointerEvents="box-none" style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": undefined, + }, + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] } transitionSpec={ Object { @@ -355,7 +360,7 @@ exports[`[Stack] navigator should renders [Dark] mode 1`] = ` ] } > - Navigate to Temp + Navigate @@ -398,7 +403,7 @@ exports[`[Stack] navigator should renders [Dark] mode 1`] = ` ] } > - Change theme + Change Theme @@ -678,16 +683,21 @@ exports[`[Stack] navigator should renders without crashing 1`] = ` onGestureCanceled={[Function]} onGestureEnd={[Function]} onOpen={[Function]} - onTransitionStart={[Function]} + onTransition={[Function]} pointerEvents="box-none" style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": undefined, + }, + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] } transitionSpec={ Object { @@ -976,7 +986,7 @@ exports[`[Stack] navigator should renders without crashing 1`] = ` ] } > - Navigate to Temp + Navigate @@ -1019,7 +1029,7 @@ exports[`[Stack] navigator should renders without crashing 1`] = ` ] } > - Change theme + Change Theme diff --git a/src/components/screen/Intro.tsx b/src/components/screen/Intro.tsx index 89c938aa..e3def2ef 100644 --- a/src/components/screen/Intro.tsx +++ b/src/components/screen/Intro.tsx @@ -4,10 +4,10 @@ import React from 'react'; import { RootStackNavigationProps } from '../navigation/RootStackNavigator'; import { User } from '../../types'; import { View } from 'react-native'; -import { getString } from '../../../STRINGS'; +import { fbt } from 'fbt'; import styled from 'styled-components/native'; import { useAppContext } from '../../providers/AppProvider'; -import { useThemeContext } from '@dooboo-ui/native-theme'; +import { useThemeContext } from '@dooboo-ui/theme'; const Container = styled.View` flex: 1; @@ -48,7 +48,7 @@ interface Props { } function Intro(props: Props): React.ReactElement { - let timer: NodeJS.Timeout; + let timer: number; const { state: { user }, setUser } = useAppContext(); const { changeThemeType } = useThemeContext(); const [isLoggingIn, setIsLoggingIn] = React.useState(false); @@ -88,21 +88,21 @@ function Intro(props: Props): React.ReactElement { imgLeftSrc={IC_MASK} isLoading={isLoggingIn} onClick={(): void => onLogin()} - text={getString('LOGIN')} + text={fbt('Login', 'login')} />