diff --git a/.buckconfig b/.buckconfig new file mode 100644 index 0000000..934256c --- /dev/null +++ b/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..40c6dcd --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native-community', +}; diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..4afc766 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,75 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore "BUCK" generated dirs +/\.buckd/ + +; Ignore polyfills +node_modules/react-native/Libraries/polyfills/.* + +; These should not be required directly +; require from fbjs/lib instead: require('fbjs/lib/warning') +node_modules/warning/.* + +; Flow doesn't support platforms +.*/Libraries/Utilities/LoadingView.js + +[untyped] +.*/node_modules/@react-native-community/cli/.*/.* + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow/ + +[options] +emoji=true + +esproposal.optional_chaining=enable +esproposal.nullish_coalescing=enable + +module.file_ext=.js +module.file_ext=.json +module.file_ext=.ios.js + +munge_underscores=true + +module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' +module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +[lints] +sketchy-null-number=warn +sketchy-null-mixed=warn +sketchy-number=warn +untyped-type-import=warn +nonstrict-import=warn +deprecated-type=warn +unsafe-getters-setters=warn +inexact-spread=warn +unnecessary-invariant=warn +signature-verification-failure=warn +deprecated-utility=error + +[strict] +deprecated-type +nonstrict-import +sketchy-null +unclear-type +unsafe-getters-setters +untyped-import +untyped-type-import + +[version] +^0.105.0 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d42ff18 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed3539d --- /dev/null +++ b/.gitignore @@ -0,0 +1,60 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore +!debug.keystore +!charoensin.release.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifact +*.jsbundle + +# CocoaPods +/ios/Pods/ diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..5c4de1a --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + bracketSpacing: false, + jsxBracketSameLine: true, + singleQuote: true, + trailingComma: 'all', +}; diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/App.js b/App.js new file mode 100644 index 0000000..8850637 --- /dev/null +++ b/App.js @@ -0,0 +1,119 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * + * @format + * @flow + */ + +import React, { Component } from 'react' +import { Platform, StyleSheet, Text, StatusBar, TouchableOpacity, View } from 'react-native' +import MainNav from './src/navigation/MainNav' +import firebase, { Notification } from 'react-native-firebase' +import { store, persistor } from './src/redux/store' +import { Provider } from 'react-redux' +import { registerDevice, testConnect ,news} from './src/api/UserApi' +import { appSetPushToken, appSetDevice, appCleanDevice,appSetNotification } from './src/redux/app/action' +import { setLanguage, setStore as setApiStore, setToken } from 'src/api/api' +import { PersistGate } from 'redux-persist/integration/react' +import { create } from 'apisauce' + +import SplashScreen from 'react-native-splash-screen' + +Text.defaultProps = Text.defaultProps || {}; +Text.defaultProps.allowFontScaling = false; + +if (TouchableOpacity.defaultProps == null) TouchableOpacity.defaultProps = {} +TouchableOpacity.defaultProps.activeOpacity = 0.7 + +// setApiStore(store) +class App extends Component { + + constructor(props) { + super(props) + this._setDataFromInitState = this._setDataFromInitState.bind(this) + } + + componentDidMount = () => { + SplashScreen.hide() + + }; + + initNotification = async () => { + await this.setPermission() + const fcmToken = await firebase.messaging().getToken() + if (fcmToken) { + store.dispatch(appSetPushToken(fcmToken)) + const resultSendDevice = await registerDevice(fcmToken) + console.log(' re sult register_device =>',resultSendDevice); + if (resultSendDevice.ok && resultSendDevice.data.success) { + store.dispatch(appSetDevice(resultSendDevice.data.device)) + } + } + + } + + setPermission = async () => { + try { + const enabled = await firebase.messaging().hasPermission() + if (!enabled) { + await firebase.messaging().requestPermission() + } + } catch (error) { + console.log('error', error) + } + } + + _setDataFromInitState() { + const appState = store.getState().app + let device = appState.device; + + if (appState.token) { + setToken(appState.token) + } + if(appState.lang){ + setLanguage(appState.lang) + } + + if (!device) { + this.initNotification() + } + + console.log('app state', appState, device) + + } + + render() { + + return ( + + + + + + + ) + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + instructions: { + textAlign: 'center', + color: '#333333', + marginBottom: 5, + }, +}) + +export default App + diff --git a/__tests__/App-test.js b/__tests__/App-test.js new file mode 100644 index 0000000..1784766 --- /dev/null +++ b/__tests__/App-test.js @@ -0,0 +1,14 @@ +/** + * @format + */ + +import 'react-native'; +import React from 'react'; +import App from '../App'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + renderer.create(); +}); diff --git a/android/.project b/android/.project new file mode 100644 index 0000000..07c266b --- /dev/null +++ b/android/.project @@ -0,0 +1,17 @@ + + + csareactrn60 + Project android created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e889521 --- /dev/null +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/android/app/.classpath b/android/app/.classpath new file mode 100644 index 0000000..eb19361 --- /dev/null +++ b/android/app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/android/app/.project b/android/app/.project new file mode 100644 index 0000000..ac485d7 --- /dev/null +++ b/android/app/.project @@ -0,0 +1,23 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/android/app/.settings/org.eclipse.buildship.core.prefs b/android/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..b1886ad --- /dev/null +++ b/android/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/android/app/_BUCK b/android/app/_BUCK new file mode 100644 index 0000000..9b0f456 --- /dev/null +++ b/android/app/_BUCK @@ -0,0 +1,55 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") + +lib_deps = [] + +create_aar_targets(glob(["libs/*.aar"])) + +create_jar_targets(glob(["libs/*.jar"])) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "th.co.csasset.mobile", +) + +android_resource( + name = "res", + package = "th.co.csasset.mobile", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..c292715 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,239 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation + * entryFile: "index.android.js", + * + * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format + * bundleCommand: "ram-bundle", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + entryFile: "index.js", + enableHermes: false, // clean and rebuild if changing +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore. + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +/** + * Whether to enable the Hermes VM. + * + * This should be set on project.ext.react and mirrored here. If it is not set + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode + * and the benefits of using Hermes will therefore be sharply reduced. + */ +def enableHermes = project.ext.react.get("enableHermes", false); + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId "th.co.csasset.mobile" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 60 + versionName "2.12" + vectorDrawables.useSupportLibrary = true + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + } + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + test { + storeFile file('test_keystore.jks') + storePassword 'aabbccddee' + keyAlias 'csa-test' + keyPassword 'aabbccddee' + } + production { + storeFile file('charoensin.release.keystore') + storePassword 'aabbccddee' + keyAlias 'charoensin' + keyPassword 'aabbccddee' + } + release { + if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { + storeFile file(MYAPP_RELEASE_STORE_FILE) + storePassword MYAPP_RELEASE_STORE_PASSWORD + keyAlias MYAPP_RELEASE_KEY_ALIAS + keyPassword MYAPP_RELEASE_KEY_PASSWORD + } + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://facebook.github.io/react-native/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // https://developer.android.com/studio/build/configure-apk-splits.html + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + + } + } + + packagingOptions { + pickFirst '**/armeabi-v7a/libc++_shared.so' + pickFirst '**/x86/libc++_shared.so' + pickFirst '**/arm64-v8a/libc++_shared.so' + pickFirst '**/x86_64/libc++_shared.so' + pickFirst '**/x86/libjsc.so' + pickFirst '**/armeabi-v7a/libjsc.so' + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation "com.facebook.react:react-native:+" // From node_modules + if (enableHermes) { + def hermesPath = "../../node_modules/hermesvm/android/"; + debugImplementation files(hermesPath + "hermes-debug.aar") + releaseImplementation files(hermesPath + "hermes-release.aar") + } else { + implementation jscFlavor + } + implementation project(':react-native-device-info') + implementation "com.google.android.gms:play-services-base:${googlePlayServiceVersion}" + implementation "com.google.firebase:firebase-core:16.0.9" + implementation "com.google.firebase:firebase-config:17.0.0" + implementation "com.google.firebase:firebase-messaging:18.0.0" + + // implementation 'com.facebook.android:facebook-android-sdk:[5,6)' +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/app/build_defs.bzl b/android/app/build_defs.bzl new file mode 100644 index 0000000..fff270f --- /dev/null +++ b/android/app/build_defs.bzl @@ -0,0 +1,19 @@ +"""Helper definitions to glob .aar and .jar targets""" + +def create_aar_targets(aarfiles): + for aarfile in aarfiles: + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] + lib_deps.append(":" + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +def create_jar_targets(jarfiles): + for jarfile in jarfiles: + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] + lib_deps.append(":" + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) diff --git a/android/app/charoensin.release.keystore b/android/app/charoensin.release.keystore new file mode 100644 index 0000000..97ea082 Binary files /dev/null and b/android/app/charoensin.release.keystore differ diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 0000000..364e105 Binary files /dev/null and b/android/app/debug.keystore differ diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..3b730ea --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,42 @@ +{ + "project_info": { + "project_number": "300814322402", + "firebase_url": "https://charoensin-ec628.firebaseio.com", + "project_id": "charoensin-ec628", + "storage_bucket": "charoensin-ec628.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:300814322402:android:61e2ca18a6ba4174", + "android_client_info": { + "package_name": "th.co.csasset.mobile" + } + }, + "oauth_client": [ + { + "client_id": "300814322402-82gqcb4dte5m2tv1dr2imsf0u7regk87.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAIXzIwPy-023B3sbDQv42LaxXaSnJcWmU" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..11b0257 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..fa26aa5 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7fe42b8 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/fonts/AntDesign.ttf b/android/app/src/main/assets/fonts/AntDesign.ttf new file mode 100644 index 0000000..2abf035 Binary files /dev/null and b/android/app/src/main/assets/fonts/AntDesign.ttf differ diff --git a/android/app/src/main/assets/fonts/Entypo.ttf b/android/app/src/main/assets/fonts/Entypo.ttf new file mode 100644 index 0000000..1c8f5e9 Binary files /dev/null and b/android/app/src/main/assets/fonts/Entypo.ttf differ diff --git a/android/app/src/main/assets/fonts/EvilIcons.ttf b/android/app/src/main/assets/fonts/EvilIcons.ttf new file mode 100644 index 0000000..6868f7b Binary files /dev/null and b/android/app/src/main/assets/fonts/EvilIcons.ttf differ diff --git a/android/app/src/main/assets/fonts/Feather.ttf b/android/app/src/main/assets/fonts/Feather.ttf new file mode 100644 index 0000000..852c713 Binary files /dev/null and b/android/app/src/main/assets/fonts/Feather.ttf differ diff --git a/android/app/src/main/assets/fonts/FontAwesome.ttf b/android/app/src/main/assets/fonts/FontAwesome.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome.ttf differ diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf new file mode 100644 index 0000000..5f72e91 Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf new file mode 100644 index 0000000..a309313 Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf new file mode 100644 index 0000000..7ece328 Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ diff --git a/android/app/src/main/assets/fonts/Fontisto.ttf b/android/app/src/main/assets/fonts/Fontisto.ttf new file mode 100644 index 0000000..96e2e81 Binary files /dev/null and b/android/app/src/main/assets/fonts/Fontisto.ttf differ diff --git a/android/app/src/main/assets/fonts/Foundation.ttf b/android/app/src/main/assets/fonts/Foundation.ttf new file mode 100644 index 0000000..6cce217 Binary files /dev/null and b/android/app/src/main/assets/fonts/Foundation.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaBlkIt.ttf b/android/app/src/main/assets/fonts/HelveticaBlkIt.ttf new file mode 100644 index 0000000..e8e1477 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaBlkIt.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Black.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Black.otf new file mode 100644 index 0000000..981ea5a Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Black.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BlackCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BlackCond.otf new file mode 100644 index 0000000..bb2841f Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BlackCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BlackCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BlackCondObl.otf new file mode 100644 index 0000000..ae48566 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BlackCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BlackExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BlackExt.otf new file mode 100644 index 0000000..35e595b Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BlackExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BlackExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BlackExtObl.otf new file mode 100644 index 0000000..81ed96c Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BlackExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BoldCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BoldCondObl.otf new file mode 100644 index 0000000..21abbd1 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BoldCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BoldExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BoldExt.otf new file mode 100644 index 0000000..1742490 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BoldExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-BoldExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-BoldExtObl.otf new file mode 100644 index 0000000..c6ec420 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-BoldExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Condensed.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Condensed.otf new file mode 100644 index 0000000..6569226 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Condensed.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-CondensedObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-CondensedObl.otf new file mode 100644 index 0000000..8d30616 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-CondensedObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCond.otf new file mode 100644 index 0000000..7e22193 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCondObl.otf new file mode 100644 index 0000000..362096e Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ExtBlackCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Extended.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Extended.otf new file mode 100644 index 0000000..069208d Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Extended.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ExtendedObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ExtendedObl.otf new file mode 100644 index 0000000..7178a88 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ExtendedObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Heavy.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Heavy.otf new file mode 100644 index 0000000..1179f78 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Heavy.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCond.otf new file mode 100644 index 0000000..6cffaa2 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCondObl.otf new file mode 100644 index 0000000..5fad2f6 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExt.otf new file mode 100644 index 0000000..0231d71 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExtObl.otf new file mode 100644 index 0000000..b3072af Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-HeavyItalic.otf b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyItalic.otf new file mode 100644 index 0000000..188c768 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-HeavyItalic.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-LightCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-LightCondObl.otf new file mode 100644 index 0000000..3e0e9d3 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-LightCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-LightExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-LightExt.otf new file mode 100644 index 0000000..b269bdf Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-LightExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-LightExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-LightExtObl.otf new file mode 100644 index 0000000..cd39ee2 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-LightExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-MediumCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-MediumCond.otf new file mode 100644 index 0000000..a9a707b Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-MediumCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-MediumCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-MediumCondObl.otf new file mode 100644 index 0000000..1a47da0 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-MediumCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-MediumExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-MediumExt.otf new file mode 100644 index 0000000..87ded39 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-MediumExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-MediumExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-MediumExtObl.otf new file mode 100644 index 0000000..1239aaf Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-MediumExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Roman.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Roman.otf new file mode 100644 index 0000000..6948ed7 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Roman.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-Thin.otf b/android/app/src/main/assets/fonts/HelveticaNeue-Thin.otf new file mode 100644 index 0000000..36560d5 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-Thin.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ThinCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ThinCond.otf new file mode 100644 index 0000000..eecf12d Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ThinCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ThinCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ThinCondObl.otf new file mode 100644 index 0000000..eb4c35f Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ThinCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ThinExtObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ThinExtObl.otf new file mode 100644 index 0000000..2956ad9 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ThinExtObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-ThinItalic.otf b/android/app/src/main/assets/fonts/HelveticaNeue-ThinItalic.otf new file mode 100644 index 0000000..ffb557b Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-ThinItalic.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCond.otf b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCond.otf new file mode 100644 index 0000000..5818125 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCond.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCondObl.otf b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCondObl.otf new file mode 100644 index 0000000..a7439ef Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigCondObl.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigExt.otf b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigExt.otf new file mode 100644 index 0000000..2cf66d0 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeue-UltraLigExt.otf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueBoldItalic.ttf b/android/app/src/main/assets/fonts/HelveticaNeueBoldItalic.ttf new file mode 100644 index 0000000..a2fc731 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueBoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueItalic.ttf b/android/app/src/main/assets/fonts/HelveticaNeueItalic.ttf new file mode 100644 index 0000000..f2e69d7 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueLight.ttf b/android/app/src/main/assets/fonts/HelveticaNeueLight.ttf new file mode 100644 index 0000000..84c1dd3 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueLight.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueLightItalic.ttf b/android/app/src/main/assets/fonts/HelveticaNeueLightItalic.ttf new file mode 100644 index 0000000..57b4f3c Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueLightItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueMedium.ttf b/android/app/src/main/assets/fonts/HelveticaNeueMedium.ttf new file mode 100644 index 0000000..9a1e4cf Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueMedium.ttf differ diff --git a/android/app/src/main/assets/fonts/HelveticaNeueUltraLight.ttf b/android/app/src/main/assets/fonts/HelveticaNeueUltraLight.ttf new file mode 100644 index 0000000..bac9da1 Binary files /dev/null and b/android/app/src/main/assets/fonts/HelveticaNeueUltraLight.ttf differ diff --git a/android/app/src/main/assets/fonts/Ionicons.ttf b/android/app/src/main/assets/fonts/Ionicons.ttf new file mode 100644 index 0000000..67bd842 Binary files /dev/null and b/android/app/src/main/assets/fonts/Ionicons.ttf differ diff --git a/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf new file mode 100644 index 0000000..cfe2d9f Binary files /dev/null and b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ diff --git a/android/app/src/main/assets/fonts/MaterialIcons.ttf b/android/app/src/main/assets/fonts/MaterialIcons.ttf new file mode 100644 index 0000000..7015564 Binary files /dev/null and b/android/app/src/main/assets/fonts/MaterialIcons.ttf differ diff --git a/android/app/src/main/assets/fonts/Octicons.ttf b/android/app/src/main/assets/fonts/Octicons.ttf new file mode 100644 index 0000000..ceac75d Binary files /dev/null and b/android/app/src/main/assets/fonts/Octicons.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Black.ttf b/android/app/src/main/assets/fonts/Prompt-Black.ttf new file mode 100644 index 0000000..f943884 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Black.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-BlackItalic.ttf b/android/app/src/main/assets/fonts/Prompt-BlackItalic.ttf new file mode 100644 index 0000000..8cc74f1 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-BlackItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Bold.ttf b/android/app/src/main/assets/fonts/Prompt-Bold.ttf new file mode 100644 index 0000000..d6c5f40 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Bold.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-BoldItalic.ttf b/android/app/src/main/assets/fonts/Prompt-BoldItalic.ttf new file mode 100644 index 0000000..b6fb892 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-BoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-ExtraBold.ttf b/android/app/src/main/assets/fonts/Prompt-ExtraBold.ttf new file mode 100644 index 0000000..3f35894 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-ExtraBold.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-ExtraBoldItalic.ttf b/android/app/src/main/assets/fonts/Prompt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..e01d096 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-ExtraBoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-ExtraLight.ttf b/android/app/src/main/assets/fonts/Prompt-ExtraLight.ttf new file mode 100644 index 0000000..19ff8e3 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-ExtraLight.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-ExtraLightItalic.ttf b/android/app/src/main/assets/fonts/Prompt-ExtraLightItalic.ttf new file mode 100644 index 0000000..149bc70 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-ExtraLightItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Italic.ttf b/android/app/src/main/assets/fonts/Prompt-Italic.ttf new file mode 100644 index 0000000..ec31758 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Italic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Light.ttf b/android/app/src/main/assets/fonts/Prompt-Light.ttf new file mode 100644 index 0000000..e00a747 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Light.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-LightItalic.ttf b/android/app/src/main/assets/fonts/Prompt-LightItalic.ttf new file mode 100644 index 0000000..5c9b8b4 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-LightItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Medium.ttf b/android/app/src/main/assets/fonts/Prompt-Medium.ttf new file mode 100644 index 0000000..0ecd711 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Medium.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-MediumItalic.ttf b/android/app/src/main/assets/fonts/Prompt-MediumItalic.ttf new file mode 100644 index 0000000..0e7df5a Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-MediumItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Regular.ttf b/android/app/src/main/assets/fonts/Prompt-Regular.ttf new file mode 100644 index 0000000..2c32e98 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Regular.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-SemiBold.ttf b/android/app/src/main/assets/fonts/Prompt-SemiBold.ttf new file mode 100644 index 0000000..ab839b8 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-SemiBold.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-SemiBoldItalic.ttf b/android/app/src/main/assets/fonts/Prompt-SemiBoldItalic.ttf new file mode 100644 index 0000000..ad8392e Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-SemiBoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-Thin.ttf b/android/app/src/main/assets/fonts/Prompt-Thin.ttf new file mode 100644 index 0000000..2767999 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-Thin.ttf differ diff --git a/android/app/src/main/assets/fonts/Prompt-ThinItalic.ttf b/android/app/src/main/assets/fonts/Prompt-ThinItalic.ttf new file mode 100644 index 0000000..cc6d9a9 Binary files /dev/null and b/android/app/src/main/assets/fonts/Prompt-ThinItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Roboto.ttf b/android/app/src/main/assets/fonts/Roboto.ttf new file mode 100644 index 0000000..3e6e2e7 Binary files /dev/null and b/android/app/src/main/assets/fonts/Roboto.ttf differ diff --git a/android/app/src/main/assets/fonts/Roboto_medium.ttf b/android/app/src/main/assets/fonts/Roboto_medium.ttf new file mode 100644 index 0000000..aa00de0 Binary files /dev/null and b/android/app/src/main/assets/fonts/Roboto_medium.ttf differ diff --git a/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf new file mode 100644 index 0000000..6ecb686 Binary files /dev/null and b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ diff --git a/android/app/src/main/assets/fonts/Zocial.ttf b/android/app/src/main/assets/fonts/Zocial.ttf new file mode 100644 index 0000000..e4ae46c Binary files /dev/null and b/android/app/src/main/assets/fonts/Zocial.ttf differ diff --git a/android/app/src/main/assets/fonts/arial.ttf b/android/app/src/main/assets/fonts/arial.ttf new file mode 100644 index 0000000..ff0815c Binary files /dev/null and b/android/app/src/main/assets/fonts/arial.ttf differ diff --git a/android/app/src/main/assets/fonts/icomoon.ttf b/android/app/src/main/assets/fonts/icomoon.ttf new file mode 100644 index 0000000..dc2b05b Binary files /dev/null and b/android/app/src/main/assets/fonts/icomoon.ttf differ diff --git a/android/app/src/main/assets/fonts/rubicon-icon-font.ttf b/android/app/src/main/assets/fonts/rubicon-icon-font.ttf new file mode 100644 index 0000000..25e7d92 Binary files /dev/null and b/android/app/src/main/assets/fonts/rubicon-icon-font.ttf differ diff --git a/android/app/src/main/java/com/csareactrn60/MainActivity.java b/android/app/src/main/java/com/csareactrn60/MainActivity.java new file mode 100644 index 0000000..602659f --- /dev/null +++ b/android/app/src/main/java/com/csareactrn60/MainActivity.java @@ -0,0 +1,18 @@ +package th.co.csasset.mobile; + +import com.facebook.react.ReactActivity; +import org.devio.rn.splashscreen.SplashScreen; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + SplashScreen.show(this); + + return "csareactrn60"; + } +} diff --git a/android/app/src/main/java/com/csareactrn60/MainApplication.java b/android/app/src/main/java/com/csareactrn60/MainApplication.java new file mode 100644 index 0000000..4a16761 --- /dev/null +++ b/android/app/src/main/java/com/csareactrn60/MainApplication.java @@ -0,0 +1,62 @@ +package th.co.csasset.mobile; + +import android.app.Application; +import android.util.Log; + +import com.facebook.react.PackageList; +import com.facebook.hermes.reactexecutor.HermesExecutorFactory; +import com.facebook.react.bridge.JavaScriptExecutorFactory; +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.soloader.SoLoader; +import com.learnium.RNDeviceInfo.RNDeviceInfo; + +import com.reactnativecommunity.cameraroll.CameraRollPackage; + +// Firebase +import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; +import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage; +import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage; + +import com.facebook.reactnative.androidsdk.FBSDKPackage; + +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + packages.add(new RNFirebaseNotificationsPackage()); + packages.add(new RNFirebaseMessagingPackage()); + packages.add(new RNFirebaseRemoteConfigPackage()); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } +} diff --git a/android/app/src/main/res/drawable/ic_splash.png b/android/app/src/main/res/drawable/ic_splash.png new file mode 100644 index 0000000..6eb8075 Binary files /dev/null and b/android/app/src/main/res/drawable/ic_splash.png differ diff --git a/android/app/src/main/res/layout/launch_screen.xml b/android/app/src/main/res/layout/launch_screen.xml new file mode 100644 index 0000000..6ed6741 --- /dev/null +++ b/android/app/src/main/res/layout/launch_screen.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..6d0f9e1 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_splash.png b/android/app/src/main/res/mipmap-hdpi/ic_splash.png new file mode 100644 index 0000000..1ef085c Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_splash.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..515c0a7 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_splash.png b/android/app/src/main/res/mipmap-mdpi/ic_splash.png new file mode 100644 index 0000000..f2e567b Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_splash.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..fb2901f Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_splash.png b/android/app/src/main/res/mipmap-xhdpi/ic_splash.png new file mode 100644 index 0000000..75485ae Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_splash.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..b7b47eb Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png b/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png new file mode 100644 index 0000000..abd9afa Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4cd821d Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png new file mode 100644 index 0000000..06be4ec Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png differ diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..89fe7f9 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #000000 + #2C7C0B + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..d377461 --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + charoensin + 2445409335553902 + fb2445409335553902 + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..62fe59f --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/android/app/test_keystore.jks b/android/app/test_keystore.jks new file mode 100644 index 0000000..1333679 Binary files /dev/null and b/android/app/test_keystore.jks differ diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..8329f5a --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,43 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + googlePlayServiceVersion = "17.0.0" + buildToolsVersion = "28.0.3" + minSdkVersion = 21 + compileSdkVersion = 28 + targetSdkVersion = 28 + } + repositories { + google() + mavenCentral() + jcenter() + } + dependencies { + classpath("com.android.tools.build:gradle:3.4.1") + classpath 'com.google.gms:google-services:4.2.0' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url("$rootDir/../node_modules/react-native/android") + } + maven { + // Android JSC is installed from npm + url("$rootDir/../node_modules/jsc-android/dist") + } + + google() + jcenter() + + maven { url 'https://maven.google.com' } + maven { url "https://jitpack.io" } + } +} diff --git a/android/google-services.json b/android/google-services.json new file mode 100644 index 0000000..2f1eb40 --- /dev/null +++ b/android/google-services.json @@ -0,0 +1,48 @@ +{ + "project_info": { + "project_number": "468878476620", + "firebase_url": "https://csasset-mobile.firebaseio.com", + "project_id": "csasset-mobile", + "storage_bucket": "csasset-mobile.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:468878476620:android:61e2ca18a6ba4174", + "android_client_info": { + "package_name": "th.co.csasset.mobile" + } + }, + "oauth_client": [ + { + "client_id": "468878476620-v3rqr1b2bta862r6q974csuc3rq917ni.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyB7o8KiFwABvfyYubdWTcjpm3Y6ciCrO1I" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "468878476620-v3rqr1b2bta862r6q974csuc3rq917ni.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "468878476620-dn0mrhcve5jjpfst3u1vlm4k00uackb6.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "th.co.csasset.mobile", + "app_store_id": "1455804320" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..1cc02f3 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,26 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +android.useAndroidX=true +android.enableJetifier=true + +MYAPP_RELEASE_STORE_FILE=charoensin.release.keystore +MYAPP_RELEASE_KEY_ALIAS=charoensin +MYAPP_RELEASE_STORE_PASSWORD=aabbccddee +MYAPP_RELEASE_KEY_PASSWORD=aabbccddee \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..5c2d1cf Binary files /dev/null and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e0c4de3 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100644 index 0000000..b0d6d0a --- /dev/null +++ b/android/gradlew @@ -0,0 +1,188 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 0000000..9991c50 --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..f486d24 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = 'charoensin' +include ':react-native-device-info' +project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android') +include ':react-native-fbsdk' +project(':react-native-fbsdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fbsdk/android') +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':app' diff --git a/app.json b/app.json new file mode 100644 index 0000000..db07328 --- /dev/null +++ b/app.json @@ -0,0 +1,5 @@ +{ + "name": "csareactrn60", + "displayName": "csareactrn60", + "orientation": "portrait" +} \ No newline at end of file diff --git a/assets/fonts/Arial/arial.ttf b/assets/fonts/Arial/arial.ttf new file mode 100644 index 0000000..ff0815c Binary files /dev/null and b/assets/fonts/Arial/arial.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaBlkIt.ttf b/assets/fonts/HelveticaNeue/HelveticaBlkIt.ttf new file mode 100644 index 0000000..e8e1477 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaBlkIt.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Black.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Black.otf new file mode 100644 index 0000000..981ea5a Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Black.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCond.otf new file mode 100644 index 0000000..bb2841f Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCondObl.otf new file mode 100644 index 0000000..ae48566 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExt.otf new file mode 100644 index 0000000..35e595b Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExtObl.otf new file mode 100644 index 0000000..81ed96c Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BlackExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BoldCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldCondObl.otf new file mode 100644 index 0000000..21abbd1 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExt.otf new file mode 100644 index 0000000..1742490 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExtObl.otf new file mode 100644 index 0000000..c6ec420 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-BoldExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Condensed.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Condensed.otf new file mode 100644 index 0000000..6569226 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Condensed.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedObl.otf new file mode 100644 index 0000000..8d30616 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCond.otf new file mode 100644 index 0000000..7e22193 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCondObl.otf new file mode 100644 index 0000000..362096e Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Extended.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Extended.otf new file mode 100644 index 0000000..069208d Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Extended.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ExtendedObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtendedObl.otf new file mode 100644 index 0000000..7178a88 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ExtendedObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Heavy.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Heavy.otf new file mode 100644 index 0000000..1179f78 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Heavy.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCond.otf new file mode 100644 index 0000000..6cffaa2 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCondObl.otf new file mode 100644 index 0000000..5fad2f6 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExt.otf new file mode 100644 index 0000000..0231d71 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExtObl.otf new file mode 100644 index 0000000..b3072af Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyItalic.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyItalic.otf new file mode 100644 index 0000000..188c768 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-HeavyItalic.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-LightCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-LightCondObl.otf new file mode 100644 index 0000000..3e0e9d3 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-LightCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-LightExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-LightExt.otf new file mode 100644 index 0000000..b269bdf Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-LightExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-LightExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-LightExtObl.otf new file mode 100644 index 0000000..cd39ee2 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-LightExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCond.otf new file mode 100644 index 0000000..a9a707b Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCondObl.otf new file mode 100644 index 0000000..1a47da0 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExt.otf new file mode 100644 index 0000000..87ded39 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExtObl.otf new file mode 100644 index 0000000..1239aaf Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-MediumExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Roman.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Roman.otf new file mode 100644 index 0000000..6948ed7 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Roman.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.otf new file mode 100644 index 0000000..36560d5 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCond.otf new file mode 100644 index 0000000..eecf12d Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCondObl.otf new file mode 100644 index 0000000..eb4c35f Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ThinExtObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinExtObl.otf new file mode 100644 index 0000000..2956ad9 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinExtObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.otf new file mode 100644 index 0000000..ffb557b Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCond.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCond.otf new file mode 100644 index 0000000..5818125 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCond.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCondObl.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCondObl.otf new file mode 100644 index 0000000..a7439ef Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCondObl.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigExt.otf b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigExt.otf new file mode 100644 index 0000000..2cf66d0 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigExt.otf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueBoldItalic.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueBoldItalic.ttf new file mode 100644 index 0000000..a2fc731 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueBoldItalic.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueItalic.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueItalic.ttf new file mode 100644 index 0000000..f2e69d7 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueItalic.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueLight.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueLight.ttf new file mode 100644 index 0000000..84c1dd3 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueLight.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueLightItalic.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueLightItalic.ttf new file mode 100644 index 0000000..57b4f3c Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueLightItalic.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueMedium.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueMedium.ttf new file mode 100644 index 0000000..9a1e4cf Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueMedium.ttf differ diff --git a/assets/fonts/HelveticaNeue/HelveticaNeueUltraLight.ttf b/assets/fonts/HelveticaNeue/HelveticaNeueUltraLight.ttf new file mode 100644 index 0000000..bac9da1 Binary files /dev/null and b/assets/fonts/HelveticaNeue/HelveticaNeueUltraLight.ttf differ diff --git a/assets/fonts/Prompt/OFL.txt b/assets/fonts/Prompt/OFL.txt new file mode 100644 index 0000000..b0f4597 --- /dev/null +++ b/assets/fonts/Prompt/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2015, Cadson Demak (info@cadsondemak.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/Prompt/Prompt-Black.ttf b/assets/fonts/Prompt/Prompt-Black.ttf new file mode 100644 index 0000000..f943884 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Black.ttf differ diff --git a/assets/fonts/Prompt/Prompt-BlackItalic.ttf b/assets/fonts/Prompt/Prompt-BlackItalic.ttf new file mode 100644 index 0000000..8cc74f1 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-BlackItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Bold.ttf b/assets/fonts/Prompt/Prompt-Bold.ttf new file mode 100644 index 0000000..d6c5f40 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Bold.ttf differ diff --git a/assets/fonts/Prompt/Prompt-BoldItalic.ttf b/assets/fonts/Prompt/Prompt-BoldItalic.ttf new file mode 100644 index 0000000..b6fb892 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-BoldItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-ExtraBold.ttf b/assets/fonts/Prompt/Prompt-ExtraBold.ttf new file mode 100644 index 0000000..3f35894 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-ExtraBold.ttf differ diff --git a/assets/fonts/Prompt/Prompt-ExtraBoldItalic.ttf b/assets/fonts/Prompt/Prompt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..e01d096 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-ExtraBoldItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-ExtraLight.ttf b/assets/fonts/Prompt/Prompt-ExtraLight.ttf new file mode 100644 index 0000000..19ff8e3 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-ExtraLight.ttf differ diff --git a/assets/fonts/Prompt/Prompt-ExtraLightItalic.ttf b/assets/fonts/Prompt/Prompt-ExtraLightItalic.ttf new file mode 100644 index 0000000..149bc70 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-ExtraLightItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Italic.ttf b/assets/fonts/Prompt/Prompt-Italic.ttf new file mode 100644 index 0000000..ec31758 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Italic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Light.ttf b/assets/fonts/Prompt/Prompt-Light.ttf new file mode 100644 index 0000000..e00a747 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Light.ttf differ diff --git a/assets/fonts/Prompt/Prompt-LightItalic.ttf b/assets/fonts/Prompt/Prompt-LightItalic.ttf new file mode 100644 index 0000000..5c9b8b4 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-LightItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Medium.ttf b/assets/fonts/Prompt/Prompt-Medium.ttf new file mode 100644 index 0000000..0ecd711 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Medium.ttf differ diff --git a/assets/fonts/Prompt/Prompt-MediumItalic.ttf b/assets/fonts/Prompt/Prompt-MediumItalic.ttf new file mode 100644 index 0000000..0e7df5a Binary files /dev/null and b/assets/fonts/Prompt/Prompt-MediumItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Regular.ttf b/assets/fonts/Prompt/Prompt-Regular.ttf new file mode 100644 index 0000000..2c32e98 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Regular.ttf differ diff --git a/assets/fonts/Prompt/Prompt-SemiBold.ttf b/assets/fonts/Prompt/Prompt-SemiBold.ttf new file mode 100644 index 0000000..ab839b8 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-SemiBold.ttf differ diff --git a/assets/fonts/Prompt/Prompt-SemiBoldItalic.ttf b/assets/fonts/Prompt/Prompt-SemiBoldItalic.ttf new file mode 100644 index 0000000..ad8392e Binary files /dev/null and b/assets/fonts/Prompt/Prompt-SemiBoldItalic.ttf differ diff --git a/assets/fonts/Prompt/Prompt-Thin.ttf b/assets/fonts/Prompt/Prompt-Thin.ttf new file mode 100644 index 0000000..2767999 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-Thin.ttf differ diff --git a/assets/fonts/Prompt/Prompt-ThinItalic.ttf b/assets/fonts/Prompt/Prompt-ThinItalic.ttf new file mode 100644 index 0000000..cc6d9a9 Binary files /dev/null and b/assets/fonts/Prompt/Prompt-ThinItalic.ttf differ diff --git a/assets/icons/icomoon.ttf b/assets/icons/icomoon.ttf new file mode 100644 index 0000000..dc2b05b Binary files /dev/null and b/assets/icons/icomoon.ttf differ diff --git a/assets/icons/package.json b/assets/icons/package.json new file mode 100644 index 0000000..6a378a5 --- /dev/null +++ b/assets/icons/package.json @@ -0,0 +1,3 @@ +{ + "name": "@up-theme" +} \ No newline at end of file diff --git a/assets/icons/selection.json b/assets/icons/selection.json new file mode 100644 index 0000000..0eaa1fd --- /dev/null +++ b/assets/icons/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M1000.003 16h-55.424c-13.476 0-24.315 11.096-23.992 24.572l4.69 197.136c-89.124-134.040-241.7-222.248-414.861-221.706-272.774 0.854-494.84 224.016-494.414 496.791 0.428 273.567 222.33 495.206 495.999 495.206 127.852 0 244.403-48.374 332.355-127.816 10.23-9.236 10.711-25.124 0.968-34.867l-39.475-39.475c-9.001-8.996-23.506-9.569-33.004-1.106-69.268 61.757-160.635 99.267-260.844 99.267-216.644 0-391.999-175.324-391.999-392.003 0-216.644 175.324-391.999 391.999-391.999 159.089 0 295.885 94.564 357.35 230.604l-252.78-6.018c-13.471-0.32-24.571 10.514-24.571 23.994v55.42c0 13.254 10.747 24 24.003 24h384c13.251 0 23.997-10.746 23.997-24v-384c0-13.254-10.747-24-23.997-24z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["ic_refresh"],"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":1417,"id":43,"name":"ic_refresh","prevSize":32,"code":59693},"setIdx":0,"setId":0,"iconIdx":0},{"icon":{"paths":["M1000.003 16h-55.424c-13.476 0-24.315 11.096-23.992 24.572l4.69 197.136c-89.124-134.040-241.7-222.248-414.861-221.706-272.774 0.854-494.84 224.016-494.414 496.791 0.428 273.567 222.33 495.206 495.999 495.206 127.852 0 244.403-48.374 332.355-127.816 10.23-9.236 10.711-25.124 0.968-34.867l-39.475-39.475c-9.001-8.996-23.506-9.569-33.004-1.106-69.268 61.757-160.635 99.267-260.844 99.267-216.644 0-391.999-175.324-391.999-392.003 0-216.644 175.324-391.999 391.999-391.999 159.089 0 295.885 94.564 357.35 230.604l-252.78-6.018c-13.471-0.32-24.571 10.514-24.571 23.994v55.42c0 13.254 10.747 24 24.003 24h384c13.251 0 23.997-10.746 23.997-24v-384c0-13.254-10.747-24-23.997-24z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["ic_reload"],"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":1416,"id":42,"name":"ic_reload","prevSize":32,"code":59692},"setIdx":0,"setId":0,"iconIdx":1},{"icon":{"paths":["M1064.008 772.398c54.999-54.2 87.997-122.199 87.997-196.398 0-160-152.996-292.2-352.399-315.8-62.996-115.2-211-196.2-383.599-196.2-229.8 0-416 143.2-416 320 0 74 33 141.998 88 196.398-30.6 61.404-74.6 109-75.4 109.804-12.6 13.399-16.2 32.998-8.8 49.997 7.2 17.004 24 28.001 42.4 28.001 107 0 193.4-40.402 250.4-77.599 18.4 4.198 37.4 7.398 56.8 9.8 62.8 114.801 210.203 195.599 382.598 195.599 41.6 0 81.603-4.797 119.603-13.599 57.001 36.997 143.201 77.599 250.399 77.599 18.401 0 35-10.998 42.399-28.001 7.204-16.998 3.799-36.598-8.796-49.997-0.804-0.604-45.005-48.2-75.602-109.604v0zM278.407 587.802l-34.2 22.2c-28.2 18.196-57 32.599-86.2 42.798 5.4-9.4 10.8-19.4 16-29.599l31-62.203-49.6-48.998c-27-26.8-59.4-70.6-59.4-128 0-121.4 146.6-224 320-224 173.402 0 319.998 102.6 319.998 224s-146.596 224-319.998 224c-33 0-66-3.799-98-11.203l-39.6-8.996zM996.608 704l-49.403 48.799 31.002 62.203c5.202 10.199 10.598 20.198 16 29.599-29.199-10.199-57.999-24.602-86.2-42.798l-34.202-22.2-39.798 9.196c-32 7.404-64.998 11.203-98.002 11.203-107.996 0-204.396-40.202-262.598-99.4 202.602-21.601 358.598-154.798 358.598-316.6 0-6.8-0.799-13.4-1.398-20 128.799 29 225.398 113.599 225.398 212 0 57.4-32.399 101.202-59.397 128z"],"attrs":[{"fill":"rgb(38, 154, 33)"}],"width":1178,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["ic_q&a"],"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":2}]}},"attrs":[{"fill":"rgb(38, 154, 33)"}],"properties":{"order":1415,"id":41,"name":"ic_qa","prevSize":32,"code":59691},"setIdx":0,"setId":0,"iconIdx":2},{"icon":{"paths":["M537.6 25.6c-179.2 0-337.92 97.28-419.84 245.76l-117.76-117.76v332.8h332.8l-143.36-143.36c66.56-128 194.56-215.040 348.16-215.040 209.92 0 384 174.080 384 384s-174.080 384-384 384c-168.96 0-307.2-107.52-363.52-256h-107.52c56.32 204.8 245.76 358.4 471.040 358.4 271.36 0 486.4-220.16 486.4-486.4s-220.16-486.4-486.4-486.4zM460.8 281.6v261.12l240.64 143.36 40.96-66.56-204.8-122.88v-215.040h-76.8z"],"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.9}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["ic_clock_history"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.9}],"properties":{"order":495,"id":0,"name":"ic_clock_history","prevSize":32,"code":59690},"setIdx":0,"setId":0,"iconIdx":3},{"icon":{"paths":["M1026.048 455.145c-1.613-14.392-18.401-25.22-32.916-25.22-46.915 0-88.556-27.536-106.015-70.155-17.823-43.642-6.323-94.53 28.631-126.596 11.008-10.065 12.349-26.92 3.123-38.62-24.023-30.494-51.313-58.043-81.111-81.917-11.663-9.353-28.795-8.051-38.917 3.148-30.515 33.798-85.335 46.357-127.698 28.683-44.068-18.542-71.88-63.212-69.151-111.158 0.901-15.070-10.117-28.165-25.134-29.914-38.246-4.428-76.833-4.557-115.192-0.301-14.826 1.639-25.835 14.423-25.343 29.303 1.66 47.477-26.469 91.359-70.111 109.236-41.853 17.098-96.292 4.632-126.746-28.869-10.066-11.036-26.898-12.39-38.638-3.237-30.68 24.077-58.584 51.644-82.825 81.89-9.445 11.758-8.051 28.798 3.052 38.9 35.644 32.279 47.136 83.604 28.63 127.756-17.669 42.092-61.373 69.208-111.401 69.208-16.235-0.523-27.788 10.385-29.582 25.149-4.499 38.452-4.548 77.653-0.217 116.422 1.616 14.454 18.901 25.185 33.576 25.185 44.594-1.132 87.382 26.455 105.357 70.154 17.886 43.638 6.372 94.505-28.639 126.618-10.952 10.066-12.351 26.88-3.104 38.564 23.776 30.305 51.091 57.871 80.983 81.951 11.736 9.452 28.803 8.125 38.975-3.087 30.636-33.879 85.447-46.413 127.636-28.708 44.196 18.493 71.997 63.16 69.283 111.119-0.89 15.073 10.154 28.206 25.118 29.916 19.574 2.289 39.249 3.42 58.984 3.42 18.734 0 37.473-1.019 56.207-3.108 14.843-1.638 25.836-14.433 25.334-29.317-1.71-47.457 26.481-91.341 70.067-109.184 42.132-17.208 96.328-4.613 126.802 28.836 10.117 11.013 26.849 12.349 38.636 3.236 30.628-24.018 58.481-51.574 82.826-81.9 9.457-11.735 8.115-28.795-3.052-38.917-35.635-32.256-47.191-83.604-28.682-127.708 17.393-41.528 59.474-69.407 104.735-69.407l6.328 0.169c14.694 1.188 28.196-10.127 29.972-25.114 4.521-38.487 4.572-77.646 0.22-116.426zM687.918 767.703c-48.819 32.645-107.51 51.676-170.639 51.676-169.768 0-307.391-137.626-307.391-307.39 0-169.766 137.623-307.389 307.391-307.389 169.764 0 307.389 137.623 307.389 307.389 0 63.145-19.041 121.841-51.692 170.665l-134.031-133.893-2.417-2.13c11.863-42.567 1.065-90.143-32.389-123.619-33.254-33.166-80.256-44.029-122.576-32.567l71.652 71.652-18.801 70.214-70.211 18.775-71.697-71.607c-11.395 42.3-0.554 89.322 32.7 122.577 34.829 34.852 85.021 45.071 128.893 30.792l0.399 0.399 133.417 134.456z"],"width":1075,"attrs":[{"fill":"rgb(38, 154, 33)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":2}]},"tags":["icon_repair"],"grid":0},"attrs":[{"fill":"rgb(38, 154, 33)"}],"properties":{"order":494,"id":1,"name":"icon_repair","prevSize":32,"code":59689},"setIdx":0,"setId":0,"iconIdx":4},{"icon":{"paths":["M972.191 505.264c0 266.136-215.746 481.882-481.882 481.882s-481.882-215.746-481.882-481.882c0-266.136 215.746-481.882 481.882-481.882s481.882 215.746 481.882 481.882z","M748.158 269.134l-360.001 360.006-132.279-132.281c-6.414-6.413-16.812-6.413-23.227 0l-38.71 38.71c-6.414 6.413-6.414 16.812 0 23.227l182.601 182.599c6.413 6.415 16.812 6.415 23.227 0l410.328-410.324c6.409-6.413 6.409-16.812 0-23.227l-38.713-38.71c-6.415-6.413-16.812-6.413-23.227 0z"],"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(0, 0, 0)"}],"isMulticolor":true,"isMulticolor2":false,"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":7},{"f":0}]},"tags":["ic_check"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(0, 0, 0)"}],"properties":{"order":492,"id":2,"name":"ic_check","prevSize":32,"code":59685,"codes":[59685,59686]},"setIdx":0,"setId":0,"iconIdx":5},{"icon":{"paths":["M972.191 505.264c0 266.136-215.746 481.882-481.882 481.882s-481.882-215.746-481.882-481.882c0-266.136 215.746-481.882 481.882-481.882s481.882 215.746 481.882 481.882z","M490.309 204.088c-166.375 0-301.176 134.801-301.176 301.176 0 166.377 134.801 301.178 301.176 301.178 166.377 0 301.177-134.801 301.177-301.178 0-166.375-134.801-301.176-301.177-301.176zM490.309 748.146c-134.193 0-242.884-108.689-242.884-242.882s108.691-242.884 242.884-242.884c134.193 0 242.887 108.69 242.887 242.884s-108.695 242.882-242.887 242.882zM565.36 621.363l-103.104-74.93c-3.765-2.793-5.951-7.165-5.951-11.78v-199.408c0-8.015 6.558-14.573 14.573-14.573h38.861c8.016 0 14.573 6.558 14.573 14.573v172.084l81.124 59.021c6.56 4.736 7.891 13.844 3.156 20.402l-22.831 31.454c-4.736 6.433-13.844 7.891-20.402 3.156z"],"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(0, 0, 0)"}],"isMulticolor":true,"isMulticolor2":false,"colorPermutations":{"1151167121812222125025025012551490125525525512554585138154331":[{"f":7},{"f":0}]},"tags":["ic_time"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(0, 0, 0)"}],"properties":{"order":493,"id":3,"name":"ic_time","prevSize":32,"code":59687,"codes":[59687,59688]},"setIdx":0,"setId":0,"iconIdx":6},{"icon":{"paths":["M984.003 152h-112.005v-112c0-22.094-17.905-40-39.997-40h-792c-22.094 0-40 17.906-40 40v792c0 105.866 86.133 192 192 192h640c105.866 0 192-86.134 192-192v-640c0-22.094-17.905-40-39.997-40zM792.003 944h-600.003c-61.758 0-112-50.243-112-112v-752h712.003v864zM944 832c0 47.672-29.937 88.484-72.003 104.617v-704.617h72.003v600zM268 531.999h336.001c22.093 0 39.997-17.905 39.997-39.998v-280.001c0-22.093-17.905-39.999-39.997-39.999h-336.001c-22.094 0-40.001 17.906-40.001 39.999v280.001c0 22.094 17.907 39.998 40.001 39.998zM308 252h255.999v199.999h-255.999v-199.999zM152 652.001c0-22.093 17.906-40.003 40-40.003h487.997c22.098 0 40.003 17.91 40.003 40.003s-17.905 39.997-40.003 39.997h-487.997c-22.094 0-40-17.905-40-39.997zM152 812.001c0-22.093 17.906-40.003 40-40.003h487.997c22.098 0 40.003 17.91 40.003 40.003s-17.905 39.997-40.003 39.997h-487.997c-22.094 0-40-17.905-40-39.997z"],"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["newspaper"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"properties":{"order":44,"id":4,"name":"ic_newspaper","prevSize":32,"code":59682},"setIdx":0,"setId":0,"iconIdx":7},{"icon":{"paths":["M903.999 332h-483.999c-35.813 0-67.993 15.792-89.999 40.754-22.006-24.962-54.184-40.754-90-40.754-21.85 0-42.334 5.898-60 16.144v-196.144h-180v720.001h180v-120.001h664v120.001h180c0-57.158 0-369.926 0-419.999 0-66.169-53.832-120.001-120.001-120.001zM120 812.002h-60v-600.002h60c0 187.144 0 412.633 0 600.002zM180 452.001c0-33.087 26.916-60.003 60-60.003s60 26.916 60 60.003v59.999h-120v-59.999zM964.001 812.002h-60.003v-60.003h60.003v60.003zM964.001 692c-36.754 0-742.723 0-784.001 0v-120.001h784.001v120.001zM964.001 512h-604.001v-59.999c0-33.087 26.916-60.003 59.999-60.003h483.999c33.087 0 60.003 26.916 60.003 60.003v59.999z"],"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["bed-outline"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"properties":{"order":46,"id":5,"name":"ic_bed-outline","prevSize":32,"code":59683},"setIdx":0,"setId":0,"iconIdx":8},{"icon":{"paths":["M938.665 1024h-298.665c-47.063 0-85.335-38.272-85.335-85.335v-298.665c0-47.063 38.272-85.335 85.335-85.335h298.665c47.063 0 85.335 38.272 85.335 85.335v298.665c0 47.063-38.272 85.335-85.335 85.335zM640 640v298.665h298.537l0.128-298.665h-298.665zM938.665 469.334h-298.665c-47.063 0-85.335-38.272-85.335-85.334v-298.666c0-47.062 38.272-85.334 85.335-85.334h298.665c47.063 0 85.335 38.272 85.335 85.334v298.666c0 47.062-38.272 85.334-85.335 85.334zM640 85.334v298.666h298.537l0.128-298.666h-298.665zM384.086 1024h-298.752c-47.062 0-85.334-38.272-85.334-85.335v-298.665c0-47.063 38.272-85.335 85.334-85.335h298.752c47.061 0 85.333 38.272 85.333 85.335v298.665c0 47.063-38.272 85.335-85.333 85.335zM85.334 640v298.665h298.624l0.128-298.665h-298.752zM384.086 469.334h-298.752c-47.062 0-85.334-38.272-85.334-85.334v-298.666c0-47.062 38.272-85.334 85.334-85.334h298.752c47.061 0 85.333 38.272 85.333 85.334v298.666c0 47.062-38.272 85.334-85.333 85.334zM85.334 85.334v298.666h298.624l0.128-298.666h-298.752z"],"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["grid"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65}],"properties":{"order":45,"id":6,"name":"ic_grid","prevSize":32,"code":59684},"setIdx":0,"setId":0,"iconIdx":9},{"icon":{"paths":["M908.621 0h-793.24c-63.619 0-115.381 51.762-115.381 115.381v793.24c0 63.616 51.762 115.379 115.381 115.379h793.24c63.616 0 115.379-51.763 115.379-115.379v-793.24c0-63.619-51.763-115.381-115.379-115.381zM951.89 908.621c0 23.859-19.41 43.264-43.269 43.264h-793.24c-23.859 0-43.27-19.405-43.27-43.264v-793.24c0-23.859 19.411-43.27 43.27-43.27h793.24c23.859 0 43.269 19.411 43.269 43.27v793.24z","M880.005 395.066l-229.806-36.905-106.112-207.155c-6.17-12.047-18.56-19.618-32.092-19.618-13.533 0-25.924 7.571-32.092 19.618l-106.113 207.155-229.804 36.905c-13.364 2.144-24.393 11.585-28.579 24.459-4.179 12.863-0.803 26.993 8.743 36.578l164.226 164.938-35.916 229.965c-2.086 13.368 3.483 26.783 14.429 34.729 10.95 7.962 25.427 9.114 37.495 2.99l207.613-105.216 207.612 105.216c5.151 2.611 10.732 3.896 16.297 3.896 7.48 0 14.92-2.324 21.197-6.886 10.952-7.951 16.517-21.361 14.433-34.729l-35.917-229.965 164.224-164.938c9.554-9.585 12.923-23.714 8.745-36.578-4.188-12.874-15.222-22.314-28.585-24.459zM671.621 583.107c-8.105 8.141-11.848 19.656-10.071 31.002l27.868 178.478-161.126-81.664c-5.12-2.596-10.706-3.896-16.296-3.896-5.589 0-11.174 1.3-16.297 3.896l-161.13 81.664 27.875-178.478c1.776-11.346-1.969-22.861-10.075-31.002l-127.452-128.004 178.349-28.641c11.346-1.82 21.142-8.936 26.376-19.163l82.354-160.772 82.355 160.772c5.238 10.226 15.027 17.339 26.373 19.163l178.355 28.641-127.457 128.004z"],"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65},{"fill":"rgb(255, 255, 255)","opacity":0.65}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6},{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7},{"f":7}]},"tags":["star-in-square"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)","opacity":0.65},{"fill":"rgb(255, 255, 255)","opacity":0.65}],"properties":{"order":42,"id":7,"name":"ic_star_sq","prevSize":32,"code":59680},"setIdx":0,"setId":0,"iconIdx":10},{"icon":{"paths":["M828.624 44.645h-666.278c-89.526 0-162.346 72.818-162.346 162.326 0 89.526 72.822 162.35 162.346 162.35h1.807v510.477c0 13.256 5.157 25.699 14.519 35.054l49.822 49.856c14.574 14.319 39.348 14.495 54.244-0.211l31.086-31.12 31.312 31.331c14.577 14.283 39.348 14.514 54.246-0.192l31.116-31.14 31.324 31.331c14.544 14.283 39.341 14.514 54.236-0.192l31.13-31.14 34.344 34.396c14.537 14.283 39.348 14.478 54.242-0.195l34.218-34.202 34.539 34.525c7.158 7.29 17.124 11.462 27.344 11.462 10.197 0 19.803-3.931 27.255-11.274l53.182-53.238c9.348-9.355 14.504-21.801 14.504-35.054v-510.481h1.81c89.524 0 162.344-72.822 162.344-162.348 0-89.506-72.823-162.324-162.344-162.324zM760.773 872.99l-23.592 23.618c-1.397 1.401-3.297 2.187-5.275 2.187s-3.878-0.786-5.275-2.187l-29.617-29.63c-7.254-7.145-16.87-11.079-27.057-11.079-10.257 0-19.892 4-27.153 11.271l-28.973 28.943c-1.401 1.397-3.297 2.183-5.275 2.18-1.979 0-3.878-0.786-5.272-2.19l-29.072-29.128c-14.521-14.267-39.315-14.462-54.209 0.195l-25.881 25.864c-2.91 2.913-7.634 2.91-10.544 0l-26.053-26.056c-14.504-14.267-39.302-14.462-54.209 0.192l-25.877 25.864c-1.401 1.397-3.297 2.183-5.279 2.183-1.979 0-3.875-0.786-5.272-2.183l-26.039-26.056c-14.539-14.267-39.314-14.478-54.246 0.211l-25.841 25.841c-1.4 1.401-3.297 2.187-5.275 2.187s-3.878-0.789-5.276-2.19l-20.013-20.037v-614.415h530.573v614.415zM828.624 270.247h-1.81v-19.87c0-31.888-25.927-57.851-57.856-57.851h-546.947c-31.896 0-57.857 25.945-57.857 57.841v19.88h-1.807c-34.892 0-63.276-28.38-63.276-63.276 0-34.873 28.387-63.253 63.276-63.253h666.278c34.889 0 63.273 28.38 63.273 63.253 0 34.896-28.385 63.276-63.273 63.276z","M325.979 407.516h194.018c18.244 0 33.016-14.785 33.016-33.026 0-18.237-14.772-33.022-33.016-33.022h-194.018c-18.257 0-33.028 14.785-33.028 33.022 0 18.24 14.77 33.026 33.028 33.026z","M325.979 539.615h326.101c18.257 0 33.029-14.789 33.029-33.022 0-18.24-14.772-33.029-33.029-33.029h-326.101c-18.257 0-33.028 14.789-33.028 33.029 0 18.234 14.77 33.022 33.028 33.022z","M325.979 671.704h326.101c18.257 0 33.029-14.782 33.029-33.022s-14.772-33.022-33.029-33.022h-326.101c-18.257 0-33.028 14.782-33.028 33.022s14.77 33.022 33.028 33.022z"],"width":991,"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6},{"f":6},{"f":6},{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7},{"f":7},{"f":7},{"f":7}]},"tags":["shop-receive"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(255, 255, 255)"}],"properties":{"order":488,"id":8,"name":"ic_shop_receive","prevSize":32,"code":59679},"setIdx":0,"setId":0,"iconIdx":11},{"icon":{"paths":["M469.333 213.333v256h-256v85.333h256v256h85.333v-256h256v-85.333h-256v-256h-85.333z"],"attrs":[{"opacity":0.54}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["Add"],"grid":0},"attrs":[{"opacity":0.54}],"properties":{"order":2,"id":9,"name":"ic_add","prevSize":32,"code":59648},"setIdx":0,"setId":0,"iconIdx":12},{"icon":{"paths":["M637.397 949.461l-392.208-392.205c-12.002-12.002-18.745-28.284-18.745-45.257s6.743-33.254 18.745-45.257l392.208-392.207c12.002-12.002 28.284-18.745 45.257-18.745s33.25 6.743 45.252 18.745c12.002 12.003 18.748 28.281 18.748 45.255s-6.746 33.253-18.748 45.255l-346.952 346.954 346.952 346.953c12.002 12.002 18.748 28.284 18.748 45.257s-6.746 33.25-18.748 45.252c-12.002 12.006-28.279 18.748-45.252 18.748s-33.254-6.741-45.257-18.748v0z"],"width":1195,"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["back"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":39,"id":10,"name":"ic_back","prevSize":32,"code":59649},"setIdx":0,"setId":0,"iconIdx":13},{"icon":{"paths":["M957.865 566.4c22.39 0 40.535 18.268 40.535 40.801v231.199h-162.135v-108.8h-648.531v108.8h-162.134v-612c0-22.534 18.147-40.8 40.534-40.8h81.066c22.386 0 40.534 18.267 40.534 40.8v340h770.131zM349.866 240c-74.62 0-135.111 60.889-135.111 136s60.491 136 135.111 136c74.62 0 135.111-60.889 135.111-136s-60.491-136-135.111-136zM998.4 457.6c0-90.132-72.591-163.2-162.135-163.2h-283.73c-22.39 0-40.535 18.267-40.535 40.8v176.8h486.4v-54.4z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["bed"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":38,"id":11,"name":"ic_bed","prevSize":32,"code":59650},"setIdx":0,"setId":0,"iconIdx":14},{"icon":{"paths":["M909.563 661.876c-33.536-33.569-68.194-68.282-68.194-232.165 0-166.052-120.334-304.148-277.285-329.524 7.229-10.645 11.092-23.267 11.073-36.188 0-35.346-28.281-64-63.169-64s-63.169 28.654-63.169 64c-0.018 12.922 3.844 25.544 11.072 36.19-156.951 25.376-277.283 163.472-277.283 329.524 0 163.866-34.646 198.584-68.189 232.158-94.943 95.009-25.414 234.128 87.487 234.128h183.744c0 70.693 56.564 128 126.337 128s126.34-57.307 126.34-128h183.738c112.896 0 182.43-139.166 87.496-234.124zM511.989 943.998c-26.124 0-47.376-21.532-47.376-47.998h94.752c0 26.466-21.253 47.998-47.376 47.998zM822.090 800h-620.221c-33.089 0-49.617-40.778-26.321-64.382 56.428-57.172 101.814-111.448 101.814-305.904 0-131.076 105.253-237.714 234.627-237.714 129.375 0 234.628 106.638 234.628 237.714 0 195.298 45.838 249.147 101.795 305.904 23.398 23.706 6.628 64.382-26.321 64.382z"],"attrs":[{"fill":"rgb(218, 122, 22)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":1}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":3}]},"tags":["bell"],"grid":0},"attrs":[{"fill":"rgb(218, 122, 22)"}],"properties":{"order":5,"id":12,"name":"ic_bell","prevSize":32,"code":59651},"setIdx":0,"setId":0,"iconIdx":15},{"icon":{"paths":["M358.723 576h-80.673c-13.311 0-24.201-10.8-24.201-24v-80c0-13.2 10.891-24 24.201-24h80.673c13.311 0 24.201 10.8 24.201 24v80c0 13.2-10.891 24-24.201 24zM576.538 552v-80c0-13.2-10.891-24-24.202-24h-80.672c-13.311 0-24.202 10.8-24.202 24v80c0 13.2 10.891 24 24.202 24h80.672c13.311 0 24.202-10.8 24.202-24zM770.15 552v-80c0-13.2-10.891-24-24.203-24h-80.673c-13.308 0-24.199 10.8-24.199 24v80c0 13.2 10.891 24 24.199 24h80.673c13.312 0 24.203-10.8 24.203-24zM576.538 744.002v-80.005c0-13.198-10.891-23.998-24.202-23.998h-80.672c-13.311 0-24.202 10.8-24.202 23.998v80.005c0 13.198 10.891 23.998 24.202 23.998h80.672c13.311 0 24.202-10.8 24.202-23.998zM382.924 744.002v-80.005c0-13.198-10.891-23.998-24.201-23.998h-80.673c-13.311 0-24.201 10.8-24.201 23.998v80.005c0 13.198 10.891 23.998 24.201 23.998h80.673c13.311 0 24.201-10.8 24.201-23.998zM770.15 744.002v-80.005c0-13.198-10.891-23.998-24.203-23.998h-80.673c-13.308 0-24.199 10.8-24.199 23.998v80.005c0 13.198 10.891 23.998 24.199 23.998h80.673c13.312 0 24.203-10.8 24.203-23.998zM963.765 224v703.997c0 53.001-43.363 96.003-96.804 96.003h-709.919c-53.445 0-96.807-43.002-96.807-96.003v-703.997c0-53 43.361-96 96.807-96h96.807v-104c0-13.2 10.891-24 24.201-24h80.673c13.311 0 24.201 10.8 24.201 24v104h258.152v-104c0-13.2 10.891-24 24.199-24h80.673c13.312 0 24.203 10.8 24.203 24v104h96.81c53.441 0 96.804 43 96.804 96zM866.961 915.998v-595.998h-709.919v595.998c0 6.602 5.445 11.999 12.101 11.999h685.716c6.656 0 12.101-5.397 12.101-11.999z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["calendar-alt"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":6,"id":13,"name":"ic_calendar_alt","prevSize":32,"code":59652},"setIdx":0,"setId":0,"iconIdx":16},{"icon":{"paths":["M332.8 658.286h614.4c14.080 0 25.6-11.372 25.6-25.267v-202.14c0-13.898-11.52-25.267-25.6-25.267h-76.8v-176.874c0-13.897-11.52-25.267-25.6-25.267h-512c-14.080 0-25.6 11.37-25.6 25.267v404.281c0 13.896 11.52 25.267 25.6 25.267zM665.6 279.273h128v126.339h-128v-126.339zM665.6 481.413h230.4v101.069h-230.4v-101.069zM384 279.273h204.8v303.209h-204.8v-303.209zM998.4 734.088h-768v-606.42c0-13.897-11.52-25.268-25.6-25.268h-179.2c-14.080 0-25.6 11.37-25.6 25.268v25.268c0 13.897 11.52 25.267 25.6 25.267h128v606.419c0 13.898 11.52 25.27 25.6 25.27h81.439c-2.88 7.895-4.639 16.422-4.639 25.267 0 41.848 34.401 75.802 76.8 75.802s76.8-33.953 76.8-75.802c0-8.845-1.92-17.372-4.639-25.267h316.639c-2.88 7.895-4.639 16.422-4.639 25.267 0 41.848 34.399 75.802 76.8 75.802 42.399 0 76.797-33.953 76.797-75.802 0-8.845-1.917-17.372-4.639-25.267h132.48c14.080 0 25.6-11.372 25.6-25.27v-25.267c0-13.896-11.52-25.267-25.6-25.267z"],"attrs":[{"fill":"rgb(0, 151, 167)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":0}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":1}]},"tags":["cart"],"grid":0},"attrs":[{"fill":"rgb(0, 151, 167)"}],"properties":{"order":7,"id":14,"name":"ic_cart","prevSize":32,"code":59653},"setIdx":0,"setId":0,"iconIdx":17},{"icon":{"paths":["M478.477 5.955c-257.125 0-465.454 208.329-465.454 465.454s208.329 465.458 465.454 465.458c257.126 0 465.455-208.332 465.455-465.458s-208.329-465.454-465.455-465.454zM478.477 846.775c-207.39 0-375.367-167.976-375.367-375.367s167.977-375.366 375.367-375.366c207.39 0 375.367 167.976 375.367 375.366s-167.977 375.367-375.367 375.367zM594.466 650.834l-159.343-115.8c-5.818-4.317-9.196-11.073-9.196-18.205v-308.177c0-12.387 10.135-22.521 22.521-22.521h60.059c12.388 0 22.522 10.135 22.522 22.521v265.948l125.372 91.214c10.135 7.32 12.2 21.396 4.88 31.531l-35.284 48.609c-7.32 9.948-21.396 12.2-31.531 4.88z"],"attrs":[{"fill":"rgb(0, 151, 167)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":0}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":1}]},"tags":["clock"],"grid":0},"attrs":[{"fill":"rgb(0, 151, 167)"}],"properties":{"order":8,"id":15,"name":"ic_clock","prevSize":32,"code":59654},"setIdx":0,"setId":0,"iconIdx":18},{"icon":{"paths":["M728.525 590.097l34.879-35.556c6.622-6.756 17.783-1.955 17.783 7.467v292.087c0 47.115-37.49 85.333-83.701 85.333h-613.788c-46.208 0-83.698-38.218-83.698-85.333v-625.776c0-47.111 37.49-85.333 83.698-85.333h509.693c9.239 0 13.949 11.555 7.322 18.133l-34.875 35.556c-1.918 1.955-4.708 3.2-7.324 3.2h-474.815c-15.345 0-27.899 12.8-27.899 28.444v625.776c0 15.644 12.555 28.444 27.899 28.444h613.788c15.349 0 27.904-12.8 27.904-28.444v-256.529c0-2.847 1.041-5.514 3.135-7.47zM982.938 250.186l-544.915 555.554-174.198 19.735c-23.366 2.668-43.070-17.419-40.454-41.244l19.355-177.601 544.912-555.554c28.598-29.156 74.98-29.156 103.578 0l91.722 93.511c28.592 29.156 28.592 76.444 0 105.6zM819.723 336.23l-116.304-118.577-407.336 415.111-14.473 133.513 130.954-14.757 407.159-415.289zM943.525 184.764l-91.716-93.511c-6.628-6.755-17.789-7.111-24.587 0l-84.395 86.044 116.304 118.578 84.395-86.044c6.804-6.756 6.804-18.133 0-25.067z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["edit"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":37,"id":16,"name":"ic_edit","prevSize":32,"code":59655},"setIdx":0,"setId":0,"iconIdx":19},{"icon":{"paths":["M752.941 158.122v-80.314h-80.312v80.314h-321.257v-80.314h-80.314v80.314h-40.157c-44.574 0-80.314 36.141-80.314 80.314v562.193c0 44.177 35.739 80.318 80.314 80.318h562.198c44.171 0 80.312-36.141 80.312-80.318v-562.193c0-44.172-36.141-80.314-80.312-80.314h-40.159zM311.216 439.221v80.314h401.566v-80.314h-401.566zM793.1 800.629h-562.198v-441.722h562.198v441.722zM311.216 599.848v80.311h281.098v-80.311h-281.098z"],"attrs":[{"opacity":0.5}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["event_note_24px"],"grid":0},"attrs":[{"opacity":0.5}],"properties":{"order":10,"id":17,"name":"ic_event_note","prevSize":32,"code":59656},"setIdx":0,"setId":0,"iconIdx":20},{"icon":{"paths":["M928 320h-52.198c12.399-24.2 20.198-51 20.198-80 0-97-79.002-176-176-176-83.2 0-136.998 42.6-205.999 136.6-69.001-94-122.801-136.6-206.001-136.6-97 0-176 79-176 176 0 29 7.6 55.8 20.2 80h-56.2c-53 0-96 43-96 96v256c0 17.6 14.4 32 32 32h32v150.801c0 57.997 47.2 105.199 105.2 105.199h685.601c57.997 0 105.199-47.202 105.199-105.199v-150.801h32c17.6 0 32-14.4 32-32v-256c0-53-42.999-96-96-96zM464 864h-294.8c-5 0-9.2-4.002-9.2-9.199v-150.801h224v-96h-288v-192h368v448zM307.8 320c-44.2 0-80-35.8-80-80s35.8-80 80-80c44 0 75 15.2 168.198 154l4.002 6h-172.2zM551.799 314c93.201-138.8 124.203-154 168.201-154 44.198 0 80 35.8 80 80s-35.802 80-80 80h-172.198l3.998-6zM928 608h-288v96h224v150.801c0 5.001-4.002 9.199-9.199 9.199h-294.801v-448h368v192z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["favors"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":11,"id":18,"name":"ic_favors","prevSize":32,"code":59657},"setIdx":0,"setId":0,"iconIdx":21},{"icon":{"paths":["M927.904 0h-831.79c-85.276 0-128.302 103.462-67.882 163.882l323.767 323.882v344.236c0 30.214 14.227 58.669 38.4 80l128 94.131c62.546 43.712 153.601 3.078 153.601-76.8v-441.567l323.782-323.882c60.301-60.298 17.568-163.882-67.878-163.882zM575.999 448v480l-128-96v-384l-351.999-352h832l-352.001 352z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["filter"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":12,"id":19,"name":"ic_filter","prevSize":32,"code":59658},"setIdx":0,"setId":0,"iconIdx":22},{"icon":{"paths":["M896.868 131.007c-113.085-96.57-287.802-82.065-395.999 29.806-108.196-111.87-282.913-126.574-396-29.806-147.13 125.779-125.609 330.841-20.739 439.534l343.174 355.083c19.565 20.266 45.783 31.593 73.565 31.593 27.977 0 54-11.126 73.563-31.397l343.174-355.083c104.675-108.69 126.589-313.752-20.738-439.73zM850.695 503.577l-343.174 355.083c-4.697 4.768-8.606 4.768-13.303 0l-343.174-355.083c-71.413-73.918-85.891-213.805 14.283-299.447 76.109-64.976 193.5-55.239 267.065 20.864l68.478 70.937 68.479-70.937c73.955-76.501 191.346-85.84 267.064-21.062 99.978 85.641 85.108 226.323 14.283 299.645z","M904.508 127.651c-107.217-92.793-266.672-76.102-365.083 27.023l-38.542 40.336-38.542-40.336c-98.215-103.125-257.864-119.816-365.079-27.023-122.867 106.503-129.324 297.652-19.369 413.097l378.58 397.005c24.456 25.631 64.174 25.631 88.629 0l378.577-397.005c110.151-115.444 103.696-306.594-19.171-413.097z"],"attrs":[{"fill":"rgb(255, 45, 85)"},{"fill":"rgb(255, 45, 85)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":4},{"f":4}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":5},{"f":5}]},"tags":["heart"],"grid":0},"attrs":[{"fill":"rgb(255, 45, 85)"},{"fill":"rgb(255, 45, 85)"}],"properties":{"order":31,"id":20,"name":"ic_heart","prevSize":32,"code":59659},"setIdx":0,"setId":0,"iconIdx":23},{"icon":{"paths":["M640 96c159.058 0 288 128.942 288 288s-128.942 288-288 288c-37.934 0-74.153-7.352-107.32-20.68l-84.68 84.68h-64v96h-96v96h-192v-192l268.354-268.354c-8.212-27.122-12.375-55.308-12.354-83.646 0-159.058 128.942-288 288-288zM640 0c-212.070 0-384 171.908-384 384 0 17.664 1.204 35.246 3.598 52.636l-245.54 245.542c-9.001 9.001-14.057 21.207-14.058 33.94v259.881c0 26.511 21.49 48 48 48h288c26.51 0 48-21.489 48-48v-48h48c26.51 0 48-21.489 48-48v-40.003l80.097-80.333c26.117 5.545 52.823 8.335 79.903 8.335 212.070 0 384-171.909 384-384 0-212.070-171.909-384-384-384zM640 288c0 53.020 42.982 96 96 96s96-42.98 96-96c0-53.020-42.982-96-96-96s-96 42.98-96 96z"],"attrs":[{"fill":"rgb(250, 250, 250)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":5}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":6}]},"tags":["key"],"grid":0},"attrs":[{"fill":"rgb(250, 250, 250)"}],"properties":{"order":29,"id":21,"name":"ic_key","prevSize":32,"code":59660},"setIdx":0,"setId":0,"iconIdx":24},{"icon":{"paths":["M512 0c-212.194 0-384 172.028-384 384 0 142.234 47.982 186.682 302.542 594.848 37.57 60.237 125.388 60.166 162.914 0 254.691-408.38 302.544-452.642 302.544-594.848 0-212.194-172.028-384-384-384zM512 928c-254.848-408.628-288-434.424-288-544 0-159.058 128.942-288 288-288s288 128.942 288 288c0 109.106-30.33 130.851-288 544zM352 384c0-88.366 71.634-160 160-160s160 71.634 160 160c0 88.366-71.634 160-160 160s-160-71.634-160-160z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["location"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":28,"id":22,"name":"ic_location","prevSize":32,"code":59661},"setIdx":0,"setId":0,"iconIdx":25},{"icon":{"paths":["M876.976 106.479l-556.369 556.369-204.43-204.43c-9.912-9.911-25.983-9.911-35.896 0l-59.824 59.824c-9.911 9.911-9.911 25.983 0 35.896l282.202 282.201c9.911 9.911 25.982 9.911 35.896 0l634.144-634.14c9.905-9.911 9.905-25.982 0-35.896l-59.828-59.824c-9.911-9.911-25.983-9.911-35.894 0z"],"attrs":[{"fill":"rgb(0, 151, 167)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":0}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":1}]},"tags":["mark"],"grid":0},"attrs":[{"fill":"rgb(0, 151, 167)"}],"properties":{"order":25,"id":23,"name":"ic_mark","prevSize":32,"code":59662},"setIdx":0,"setId":0,"iconIdx":26},{"icon":{"paths":["M512 115.2c-283.095 0-512 226.516-512 505.331 0 59.103 10.284 115.83 29.18 168.543 24.112 67.267 88.599 112.207 160.891 112.207h643.857c72.292 0 136.781-44.941 160.891-112.207 18.898-52.713 29.181-109.44 29.181-168.543 0-278.815-228.905-505.331-512-505.331zM914.373 760.98c-12.022 33.541-44.352 56.074-80.445 56.074h-643.857c-36.092 0-68.421-22.533-80.444-56.074-97.38-271.662 105.851-561.555 402.373-561.555 296.916 0 499.612 290.285 402.373 561.555zM455.112 283.629c0-31.011 25.469-56.15 56.888-56.15s56.888 25.139 56.888 56.15c0 31.011-25.469 56.15-56.888 56.15s-56.888-25.139-56.888-56.15zM853.332 564.38c31.419 0 56.891 25.139 56.891 56.151 0 31.009-25.472 56.148-56.891 56.148s-56.888-25.139-56.888-56.148c0-31.012 25.469-56.151 56.888-56.151zM227.556 620.531c0 31.009-25.47 56.148-56.889 56.148s-56.889-25.139-56.889-56.148c0-31.012 25.47-56.151 56.889-56.151s56.889 25.139 56.889 56.151zM327.112 381.893c0 31.009-25.472 56.148-56.888 56.148-31.42 0-56.89-25.139-56.89-56.148 0-31.012 25.47-56.151 56.89-56.151 31.416 0 56.888 25.139 56.888 56.151zM810.668 381.893c0 31.009-25.472 56.148-56.891 56.148-31.416 0-56.888-25.139-56.888-56.148 0-31.012 25.472-56.151 56.888-56.151 31.419 0 56.891 25.139 56.891 56.151zM651.592 424.525l-63.091 169.027c22.899 20.544 37.276 50.179 37.276 83.128 0 62.021-50.939 112.3-113.777 112.3s-113.777-50.278-113.777-112.3c0-60.836 49.016-110.336 110.19-112.21l63.107-169.062c8.146-21.821 32.673-32.999 54.787-24.956 22.111 8.039 33.431 32.249 25.285 54.073z"],"attrs":[{"fill":"rgb(0, 151, 167)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":0}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":1}]},"tags":["meter"],"grid":0},"attrs":[{"fill":"rgb(0, 151, 167)"}],"properties":{"order":24,"id":24,"name":"ic_meter","prevSize":32,"code":59663},"setIdx":0,"setId":0,"iconIdx":27},{"icon":{"paths":["M981.333 170.667h-782.222c-37.081 0-68.699 23.781-80.441 56.889h-76.003c-23.564 0-42.667 19.102-42.667 42.667v483.557c0 54.98 44.573 99.554 99.555 99.554h881.778c23.565 0 42.667-19.102 42.667-42.667v-597.333c0-23.564-19.102-42.667-42.667-42.667zM85.333 753.779v-440.89h28.445v440.89c0 7.842-6.38 14.221-14.223 14.221s-14.222-6.379-14.222-14.221zM938.667 768h-740.583c0.665-4.646 1.028-9.391 1.028-14.221v-497.779h739.555v512zM305.778 554.667h241.776c11.785 0 21.333-9.552 21.333-21.333v-170.667c0-11.781-9.549-21.333-21.333-21.333h-241.776c-11.782 0-21.333 9.552-21.333 21.333v170.667c0 11.781 9.552 21.333 21.333 21.333zM355.555 412.445h142.224v71.111h-142.224v-71.111zM284.445 661.333v-42.667c0-11.78 9.552-21.333 21.333-21.333h241.776c11.785 0 21.333 9.553 21.333 21.333v42.667c0 11.78-9.549 21.333-21.333 21.333h-241.776c-11.782 0-21.333-9.553-21.333-21.333zM625.779 661.333v-42.667c0-11.78 9.549-21.333 21.333-21.333h184.887c11.78 0 21.333 9.553 21.333 21.333v42.667c0 11.78-9.553 21.333-21.333 21.333h-184.887c-11.785 0-21.333-9.553-21.333-21.333zM625.779 405.333v-42.667c0-11.781 9.549-21.333 21.333-21.333h184.887c11.78 0 21.333 9.552 21.333 21.333v42.667c0 11.781-9.553 21.333-21.333 21.333h-184.887c-11.785 0-21.333-9.552-21.333-21.333zM625.779 533.333v-42.667c0-11.781 9.549-21.333 21.333-21.333h184.887c11.78 0 21.333 9.552 21.333 21.333v42.667c0 11.781-9.553 21.333-21.333 21.333h-184.887c-11.785 0-21.333-9.552-21.333-21.333z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["news"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":19,"id":25,"name":"ic_news","prevSize":32,"code":59664},"setIdx":0,"setId":0,"iconIdx":28},{"icon":{"paths":["M597.411 176.008l73.252 80h162.118v479.999h-640.465v-479.999h162.118l73.253-80h169.724zM632.636 96.008h-240.175l-73.253 80h-126.892c-44.032 0-80.058 36-80.058 80v479.999c0 44 36.026 80 80.058 80h640.465c44.032 0 80.058-36 80.058-80v-479.999c0-44-36.026-80-80.058-80h-126.893l-73.252-80z","M512.544 376.015c66.048 0 120.087 54 120.087 120s-54.039 120-120.087 120c-66.048 0-120.087-54-120.087-120s54.039-120 120.087-120zM512.544 296.015c-110.481 0-200.145 89.6-200.145 200s89.665 199.997 200.145 199.997c110.481 0 200.147-89.597 200.147-199.997s-89.667-200-200.147-200z"],"attrs":[{"fill":"rgb(255, 149, 0)"},{"fill":"rgb(255, 149, 0)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":3},{"f":3}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":4},{"f":4}]},"tags":["outline-photo_camera-24px"],"grid":0},"attrs":[{"fill":"rgb(255, 149, 0)"},{"fill":"rgb(255, 149, 0)"}],"properties":{"order":33,"id":26,"name":"ic_outline_camera","prevSize":32,"code":59665},"setIdx":0,"setId":0,"iconIdx":29},{"icon":{"paths":["M510.625 804.571l-443.405-548.572 886.812 0-443.407 548.571z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["Polygon"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":18,"id":27,"name":"ic_polygon","prevSize":32,"code":59666},"setIdx":0,"setId":0,"iconIdx":30},{"icon":{"paths":["M777.001 92.6c138.798 88 230.999 243 230.999 419.4 0 273.597-221.599 495.401-495.002 496-272.998 0.599-496.598-221.998-496.998-495.201-0.2-176.799 92-332.199 231-420.199 11.6-7.4 27-3.6 33.8 8.4l23.6 41.8c6.2 11 2.8 25-7.8 31.8-111 71.2-184.6 195.6-184.6 337.4 0 221 179 400 399.999 400s400-179 400-400c0-141.8-73.6-266.2-184.602-337.2-10.598-6.8-13.998-20.8-7.798-31.8l23.598-41.8c6.6-12.2 22.2-15.8 33.802-8.6zM560 551.997v-527.997c0-13.2-10.798-24-23.997-24h-48.002c-13.2 0-24 10.8-24 24v527.997c0 13.204 10.8 24.003 24 24.003h48.002c13.199 0 23.997-10.798 23.997-24.003z"],"attrs":[{"fill":"rgb(218, 122, 22)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":1}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":3}]},"tags":["power-off"],"grid":0},"attrs":[{"fill":"rgb(218, 122, 22)"}],"properties":{"order":15,"id":28,"name":"ic_power_off","prevSize":32,"code":59667},"setIdx":0,"setId":0,"iconIdx":31},{"icon":{"paths":["M512 16c-273.914 0-496 222.166-496 496 0 273.992 222.086 496 496 496 273.915 0 496-222.008 496-496 0-273.834-222.085-496-496-496zM512 912c-221.064 0-400-178.862-400-400 0-220.99 178.944-400 400-400 220.984 0 400 178.942 400 400 0 221.061-178.862 400-400 400zM726.487 401.6c0 134.106-144.84 136.169-144.84 185.725v12.677c0 13.251-10.747 23.997-24.003 23.997h-91.293c-13.254 0-24-10.747-24-23.997v-17.321c0-71.49 54.2-100.068 95.156-123.032 35.123-19.69 56.648-33.082 56.648-59.158 0-34.492-43.996-57.386-79.565-57.386-46.378 0-67.789 21.954-97.885 59.938-8.114 10.24-22.92 12.142-33.332 4.248l-55.648-42.196c-10.214-7.744-12.502-22.132-5.288-32.726 47.254-69.388 107.442-108.37 201.148-108.37 98.145 0 202.9 76.608 202.9 177.6zM595.999 736c0 46.316-37.683 83.999-83.999 83.999-46.318 0-84-37.683-84-83.999s37.682-83.999 84-83.999c46.316 0 83.999 37.683 83.999 83.999z"],"attrs":[{"fill":"rgb(218, 122, 22)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":1}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":3}]},"tags":["question-circle"],"grid":0},"attrs":[{"fill":"rgb(218, 122, 22)"}],"properties":{"order":14,"id":29,"name":"ic_question_circle","prevSize":32,"code":59668},"setIdx":0,"setId":0,"iconIdx":32},{"icon":{"paths":["M1024 585.143h-1024v-146.286h1024v146.286z"],"attrs":[{"opacity":0.5}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["remove"],"grid":0},"attrs":[{"opacity":0.5}],"properties":{"order":13,"id":30,"name":"ic_remove","prevSize":32,"code":59669},"setIdx":0,"setId":0,"iconIdx":33},{"icon":{"paths":["M256 296v-80c0-13.2 10.8-24 24-24h80c13.2 0 24 10.8 24 24v80c0 13.2-10.8 24-24 24h-80c-13.2 0-24-10.8-24-24zM536 320h80c13.201 0 24-10.8 24-24v-80c0-13.2-10.799-24-24-24h-80c-13.201 0-24 10.8-24 24v80c0 13.2 10.799 24 24 24zM280 512h80c13.2 0 24-10.799 24-24v-80c0-13.2-10.8-24-24-24h-80c-13.2 0-24 10.8-24 24v80c0 13.201 10.8 24 24 24zM536 512h80c13.201 0 24-10.799 24-24v-80c0-13.2-10.799-24-24-24h-80c-13.201 0-24 10.8-24 24v80c0 13.201 10.799 24 24 24zM384 680v-80c0-13.201-10.8-24-24-24h-80c-13.2 0-24 10.799-24 24v80c0 13.201 10.8 24 24 24h80c13.2 0 24-10.799 24-24zM536 704h80c13.201 0 24-10.799 24-24v-80c0-13.201-10.799-24-24-24h-80c-13.201 0-24 10.799-24 24v80c0 13.201 10.799 24 24 24zM896 952v72h-896v-72c0-13.201 10.8-24 24-24h39v-880c0-26.6 21.4-48 48-48h673.999c26.603 0 48 21.4 48 48v880h39.002c13.201 0 24 10.799 24 24zM159 925.999h225v-133.999c0-13.201 10.8-24 24-24h80c13.201 0 24 10.799 24 24v133.999h224.998v-827.999l-576.998-2-1 829.999z"],"width":896,"attrs":[{"fill":"rgb(255, 149, 0)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":3}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":4}]},"tags":["room"],"grid":0},"attrs":[{"fill":"rgb(255, 149, 0)"}],"properties":{"order":30,"id":31,"name":"ic_room","prevSize":32,"code":59670},"setIdx":0,"setId":0,"iconIdx":34},{"icon":{"paths":["M995.333 934.434l-231.224-231.229c-4.384-4.379-10.099-6.666-16.194-6.666h-25.142c60.002-69.52 96.378-159.993 96.378-259.035 0-218.846-177.323-396.171-396.17-396.171-218.846 0-396.171 177.325-396.171 396.171s177.325 396.173 396.171 396.173c99.045 0 189.513-36.381 259.033-96.378v25.142c0 6.095 2.477 11.81 6.671 16.189l231.224 231.229c8.953 8.953 23.43 8.953 32.378 0l43.047-43.047c8.953-8.953 8.953-23.425 0-32.378zM422.981 742.254c-168.373 0-304.747-136.377-304.747-304.749s136.374-304.747 304.747-304.747c168.374 0 304.747 136.374 304.747 304.747s-136.372 304.749-304.747 304.749z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["search"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":32,"id":32,"name":"ic_search","prevSize":32,"code":59671},"setIdx":0,"setId":0,"iconIdx":35},{"icon":{"paths":["M996.57 192h-969.141c-15.147 0-27.429-12.281-27.429-27.429v-73.143c0-15.147 12.281-27.429 27.429-27.429h969.141c15.151 0 27.43 12.281 27.43 27.429v73.143c0 15.148-12.279 27.429-27.43 27.429zM996.57 557.713h-969.141c-15.147 0-27.429-12.279-27.429-27.426v-73.144c0-15.147 12.281-27.428 27.429-27.428h969.141c15.151 0 27.43 12.281 27.43 27.428v73.144c0 15.147-12.279 27.426-27.43 27.426zM996.57 923.43h-969.141c-15.147 0-27.429-12.284-27.429-27.43v-73.143c0-15.147 12.281-27.426 27.429-27.426h969.141c15.151 0 27.43 12.279 27.43 27.426v73.143c0 15.147-12.279 27.43-27.43 27.43z"],"attrs":[{"opacity":0.25}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{}],"1151167121812222125025025012551490125525525512554585138154331":[{}]},"tags":["service"],"grid":0},"attrs":[{"opacity":0.25}],"properties":{"order":27,"id":33,"name":"ic_more","prevSize":32,"code":59672},"setIdx":0,"setId":0,"iconIdx":36},{"icon":{"paths":["M949.576 360.728l-267.135-38.44-119.397-238.941c-21.393-42.591-83.377-43.132-104.952 0l-119.398 238.941-267.135 38.44c-47.905 6.858-67.104 65.15-32.363 98.536l193.267 185.884-45.711 262.58c-8.228 47.466 42.42 83.019 84.84 60.819l238.977-123.979 238.98 123.979c42.414 22.016 93.068-13.353 84.835-60.819l-45.711-262.58 193.27-185.884c34.741-33.386 15.537-91.678-32.365-98.536zM694.511 614.829l43.329 249.769-227.273-117.849-227.275 117.849 43.334-249.769-183.941-176.86 254.153-36.455 113.729-227.391 113.73 227.391 254.152 36.455-183.938 176.86z"],"attrs":[{"fill":"rgb(255, 149, 0)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":3}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":4}]},"tags":["star"],"grid":0},"attrs":[{"fill":"rgb(255, 149, 0)"}],"properties":{"order":26,"id":34,"name":"ic_star","prevSize":32,"code":59673},"setIdx":0,"setId":0,"iconIdx":37},{"icon":{"paths":["M257.021 364.334l245.34 151.45 496.132-496.132-436.162 783.369-185.367-156.672-370.737 365.568 250.793-647.582z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["thunder"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":23,"id":35,"name":"ic_thunder","prevSize":32,"code":59674},"setIdx":0,"setId":0,"iconIdx":38},{"icon":{"paths":["M928 191.978h-250.4l71.398-82.8c25.005-25 25.005-65.6 0-90.6-24.998-25-65.6-25-90.598 0l-146.4 169.8-146.4-169.6c-25-25-65.6-25-90.6 0s-25 65.6 0 90.6l71.4 82.6h-250.4c-53 0-96 43-96 96v576.003c0 52.998 43 96 96 96h32v64h96l42.6-64h490.603l42.598 64h96v-64h32c52.998 0 96-43.002 96-96v-576.003c0.198-53-42.803-96-95.802-96zM784 815.981c0 0 0 16-336 16-304 0-304-16-304-16s-16 0-16-240.003c0-240 16-240 16-240s0-16 304-16c336 0 336 16 336 16s16 0 16 240c0 240.003-16 240.003-16 240.003zM928 615.978c0 13.2-10.797 24-24 24h-16c-13.203 0-24-10.8-24-24v-16c0-13.2 10.797-24 24-24h16c13.203 0 24 10.8 24 24v16zM928 487.978c0 13.2-10.797 24-24 24h-16c-13.203 0-24-10.8-24-24v-16c0-13.2 10.797-24 24-24h16c13.203 0 24 10.8 24 24v16z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["tv-retro"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":21,"id":36,"name":"ic_tv_retro","prevSize":32,"code":59675},"setIdx":0,"setId":0,"iconIdx":39},{"icon":{"paths":["M678.4 608c-57.4 0-85.002 32-179.2 32-94.2 0-121.6-32-179.2-32-148.4 0-268.8 120.402-268.8 268.8v51.2c0 53.002 43 96 96 96h704c53.002 0 96-42.998 96-96v-51.2c0-148.398-120.402-268.8-268.8-268.8zM851.2 928h-704v-51.2c0-95.201 77.6-172.8 172.8-172.8 29.2 0 76.6 32 179.2 32 103.398 0 149.801-32 179.2-32 95.201 0 172.8 77.599 172.8 172.8v51.2zM499.2 576c159.002 0 288-129 288-288s-128.998-288-288-288c-159 0-288 129-288 288s129 288 288 288zM499.2 96c105.8 0 192 86.2 192 192s-86.2 192-192 192c-105.8 0-192-86.2-192-192s86.2-192 192-192z"],"attrs":[{"fill":"rgb(250, 250, 250)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":5}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":6}]},"tags":["user"],"grid":0},"attrs":[{"fill":"rgb(250, 250, 250)"}],"properties":{"order":20,"id":37,"name":"ic_user","prevSize":32,"code":59676},"setIdx":0,"setId":0,"iconIdx":40},{"icon":{"paths":["M411.005 34.071c28.445 30.476 56.89 63.855 85.332 100.136 28.446 36.281 61.513 82.721 99.2 139.319 37.692 56.599 67.913 119.002 90.667 187.209 22.758 68.211 34.133 134.967 34.133 200.273 0 92.881-33.421 171.61-100.267 236.19-66.842 64.585-147.2 96.875-241.065 96.875-59.733 0-114.844-13.427-165.333-40.273-50.489-26.85-90.666-63.492-120.533-109.935-11.377-18.863-22.044-39.906-32-63.125-15.644-39.185-23.466-79.095-23.466-119.731v-8.708c1.422-121.903 46.933-254.691 136.533-398.365 28.445-44.989 70.4-100.861 125.867-167.619 25.6-29.025 41.245-46.44 46.933-52.245l2.133-2.177c11.378-8.708 21.333-13.061 29.867-13.061s18.489 4.354 29.867 13.061l2.133 2.177zM379.008 872.171c58.313 0 108.446-21.406 150.4-64.218s62.933-93.969 62.933-153.472c0-30.477-5.687-59.499-17.067-87.074-18.487 71.113-54.046 132.425-106.667 183.945-52.623 51.52-113.777 84.535-183.467 99.051 31.289 14.511 62.577 21.769 93.867 21.769z"],"width":725,"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["water"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":17,"id":38,"name":"ic_water","prevSize":32,"code":59677},"setIdx":0,"setId":0,"iconIdx":41},{"icon":{"paths":["M609.28 735.995c0 49.485-43.556 89.6-97.283 89.6-53.726 0-97.28-40.115-97.28-89.6s43.554-89.598 97.28-89.598c53.727 0 97.283 40.114 97.283 89.598zM816.998 561.776c9.825-9.051 9.492-23.891-0.855-32.434-172.969-142.779-435.521-142.617-608.29 0-10.35 8.543-10.684 23.383-0.857 32.434l51.689 47.608c9.009 8.298 23.505 8.848 33.089 1.115 125.978-101.652 314.751-101.426 440.447 0 9.585 7.734 24.079 7.185 33.091-1.115l51.686-47.608zM987.407 402.571c9.702-8.939 9.503-23.542-0.532-32.162-267.167-229.404-682.684-229.32-949.753 0-10.038 8.62-10.237 23.225-0.532 32.162l51.628 47.552c9.264 8.533 24.154 8.723 33.78 0.537 220.040-187.135 559.903-187.183 779.997 0 9.626 8.187 24.515 7.996 33.782-0.537l51.63-47.552z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["wifi"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":16,"id":39,"name":"ic_wifi","prevSize":32,"code":59678},"setIdx":0,"setId":0,"iconIdx":42},{"icon":{"paths":["M455.672 455.262l96.19 27.099c6.914 1.896 11.715 8.339 11.715 15.352 0 8.716-7.295 15.917-16.13 15.917h-62.976c-6.91 0-13.631-1.516-19.775-4.166-9.216-4.17-19.968-3.224-27.070 3.789l-33.601 33.161c-10.176 10.047-9.024 27.103 2.88 34.869 18.24 11.94 39.167 19.141 61.056 21.795v33.542c0 16.679 13.824 30.323 30.72 30.323h30.72c16.896 0 30.72-13.644 30.72-30.323v-33.354c58.175-6.82 102.527-58.745 94.654-119.386-5.566-43.59-39.743-78.268-82.366-90.396l-96.19-27.1c-6.914-1.895-11.715-8.338-11.715-15.35 0-8.718 7.299-15.919 16.13-15.919h62.976c6.91 0 13.631 1.516 19.775 4.169 9.216 4.169 19.968 3.222 27.070-3.79l33.599-33.164c10.179-10.044 9.028-27.1-2.879-34.869-18.239-11.939-39.166-19.14-61.055-21.793v-33.543c0-16.676-13.824-30.321-30.72-30.321h-30.72c-16.896 0-30.72 13.645-30.72 30.321v33.353c-58.175 6.822-102.528 58.747-94.656 119.389 5.568 43.586 39.552 78.265 82.368 90.393zM944.12 621.462h-66.626c32.641-58.556 51.266-125.645 51.266-197.087 0-226.082-185.663-409.334-414.72-409.334s-414.72 183.253-414.72 409.334c0 71.442 18.624 138.531 51.264 197.087h-66.624c-33.984 0-61.44 32.596-61.44 72.77v218.313c0 40.174 27.456 72.77 61.44 72.77h860.16c33.985 0 61.44-32.596 61.44-72.77v-218.313c0-40.174-27.455-72.77-61.44-72.77zM514.040 106.003c177.791 0 322.56 142.888 322.56 318.371 0 175.485-144.769 318.37-322.56 318.37s-322.56-142.885-322.56-318.37c0-175.483 144.768-318.371 322.56-318.371zM913.4 894.349h-798.72v-181.924h104.832c23.424 23.306 49.728 43.397 78.144 60.641h-75.456c-8.448 0-15.36 6.82-15.36 15.159v30.323c0 8.339 6.912 15.159 15.36 15.159h583.68c8.45 0 15.36-6.82 15.36-15.159v-30.323c0-8.339-6.91-15.159-15.36-15.159h-75.457c28.418-17.244 54.723-37.335 78.143-60.641h104.833v181.924z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"151167121812222125025025012551490125520401255255255125545851":[{"f":6}],"1151167121812222125025025012551490125525525512554585138154331":[{"f":7}]},"tags":["Vector"],"grid":0},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":41,"id":40,"name":"ic_money","prevSize":32,"code":59681},"setIdx":0,"setId":0,"iconIdx":43}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/assets/images/Ellipse.png b/assets/images/Ellipse.png new file mode 100644 index 0000000..3c5a5cd Binary files /dev/null and b/assets/images/Ellipse.png differ diff --git a/assets/images/Ellipse2.png b/assets/images/Ellipse2.png new file mode 100644 index 0000000..301ccc8 Binary files /dev/null and b/assets/images/Ellipse2.png differ diff --git a/assets/images/Ellipse3.png b/assets/images/Ellipse3.png new file mode 100644 index 0000000..2b2830f Binary files /dev/null and b/assets/images/Ellipse3.png differ diff --git a/assets/images/Group1.png b/assets/images/Group1.png new file mode 100644 index 0000000..29c4725 Binary files /dev/null and b/assets/images/Group1.png differ diff --git a/assets/images/GroupCheck.png b/assets/images/GroupCheck.png new file mode 100644 index 0000000..f21db88 Binary files /dev/null and b/assets/images/GroupCheck.png differ diff --git a/assets/images/GroupProject.png b/assets/images/GroupProject.png new file mode 100644 index 0000000..d967cf3 Binary files /dev/null and b/assets/images/GroupProject.png differ diff --git a/assets/images/PAYMENT.png b/assets/images/PAYMENT.png new file mode 100644 index 0000000..d858735 Binary files /dev/null and b/assets/images/PAYMENT.png differ diff --git a/assets/images/QRCODE.png b/assets/images/QRCODE.png new file mode 100644 index 0000000..52f137e Binary files /dev/null and b/assets/images/QRCODE.png differ diff --git a/assets/images/Rectangle1.png b/assets/images/Rectangle1.png new file mode 100644 index 0000000..42d9596 Binary files /dev/null and b/assets/images/Rectangle1.png differ diff --git a/assets/images/Rectangle2.png b/assets/images/Rectangle2.png new file mode 100644 index 0000000..5a315ee Binary files /dev/null and b/assets/images/Rectangle2.png differ diff --git a/assets/images/THAIQR.png b/assets/images/THAIQR.png new file mode 100644 index 0000000..7089d89 Binary files /dev/null and b/assets/images/THAIQR.png differ diff --git a/assets/images/ThaiQRpayments.png b/assets/images/ThaiQRpayments.png new file mode 100644 index 0000000..282b3a2 Binary files /dev/null and b/assets/images/ThaiQRpayments.png differ diff --git a/assets/images/app_icon.png b/assets/images/app_icon.png new file mode 100644 index 0000000..5ce82f0 Binary files /dev/null and b/assets/images/app_icon.png differ diff --git a/assets/images/banner_news.png b/assets/images/banner_news.png new file mode 100644 index 0000000..53d770e Binary files /dev/null and b/assets/images/banner_news.png differ diff --git a/assets/images/camera.png b/assets/images/camera.png new file mode 100644 index 0000000..d539a9c Binary files /dev/null and b/assets/images/camera.png differ diff --git a/assets/images/check.png b/assets/images/check.png new file mode 100644 index 0000000..02f328e Binary files /dev/null and b/assets/images/check.png differ diff --git a/assets/images/default_big.png b/assets/images/default_big.png new file mode 100644 index 0000000..f6af782 Binary files /dev/null and b/assets/images/default_big.png differ diff --git a/assets/images/default_small.png b/assets/images/default_small.png new file mode 100644 index 0000000..26862b4 Binary files /dev/null and b/assets/images/default_small.png differ diff --git a/assets/images/download.png b/assets/images/download.png new file mode 100644 index 0000000..dbf0733 Binary files /dev/null and b/assets/images/download.png differ diff --git a/assets/images/icon_fb.png b/assets/images/icon_fb.png new file mode 100644 index 0000000..2c19aa8 Binary files /dev/null and b/assets/images/icon_fb.png differ diff --git a/assets/images/icon_payment.png b/assets/images/icon_payment.png new file mode 100644 index 0000000..d4c1d24 Binary files /dev/null and b/assets/images/icon_payment.png differ diff --git a/assets/images/icon_promptpay.png b/assets/images/icon_promptpay.png new file mode 100644 index 0000000..ef2aad4 Binary files /dev/null and b/assets/images/icon_promptpay.png differ diff --git a/assets/images/locale_en.png b/assets/images/locale_en.png new file mode 100644 index 0000000..e5592c7 Binary files /dev/null and b/assets/images/locale_en.png differ diff --git a/assets/images/locale_km.png b/assets/images/locale_km.png new file mode 100644 index 0000000..245ff0c Binary files /dev/null and b/assets/images/locale_km.png differ diff --git a/assets/images/locale_my.png b/assets/images/locale_my.png new file mode 100644 index 0000000..8a011d9 Binary files /dev/null and b/assets/images/locale_my.png differ diff --git a/assets/images/locale_th.png b/assets/images/locale_th.png new file mode 100644 index 0000000..e995684 Binary files /dev/null and b/assets/images/locale_th.png differ diff --git a/assets/images/logo_.png b/assets/images/logo_.png new file mode 100644 index 0000000..c7561af Binary files /dev/null and b/assets/images/logo_.png differ diff --git a/assets/images/logo_2.png b/assets/images/logo_2.png new file mode 100644 index 0000000..565da5c Binary files /dev/null and b/assets/images/logo_2.png differ diff --git a/assets/images/logo_3.png b/assets/images/logo_3.png new file mode 100644 index 0000000..4acc307 Binary files /dev/null and b/assets/images/logo_3.png differ diff --git a/assets/images/logo_4.png b/assets/images/logo_4.png new file mode 100644 index 0000000..8b1d1e4 Binary files /dev/null and b/assets/images/logo_4.png differ diff --git a/assets/images/logo_white_border.png b/assets/images/logo_white_border.png new file mode 100644 index 0000000..9d71b5d Binary files /dev/null and b/assets/images/logo_white_border.png differ diff --git a/assets/images/map.png b/assets/images/map.png new file mode 100644 index 0000000..421c5cf Binary files /dev/null and b/assets/images/map.png differ diff --git a/assets/images/meter.png b/assets/images/meter.png new file mode 100644 index 0000000..9832564 Binary files /dev/null and b/assets/images/meter.png differ diff --git a/assets/images/news_test.png b/assets/images/news_test.png new file mode 100644 index 0000000..894e985 Binary files /dev/null and b/assets/images/news_test.png differ diff --git a/assets/images/pin_map.png b/assets/images/pin_map.png new file mode 100644 index 0000000..5ed1543 Binary files /dev/null and b/assets/images/pin_map.png differ diff --git a/assets/images/pin_map_active.png b/assets/images/pin_map_active.png new file mode 100644 index 0000000..da3aa00 Binary files /dev/null and b/assets/images/pin_map_active.png differ diff --git a/assets/images/praw.png b/assets/images/praw.png new file mode 100644 index 0000000..08a2669 Binary files /dev/null and b/assets/images/praw.png differ diff --git a/assets/images/profile.png b/assets/images/profile.png new file mode 100644 index 0000000..0c34e7e Binary files /dev/null and b/assets/images/profile.png differ diff --git a/assets/images/prompay.png b/assets/images/prompay.png new file mode 100644 index 0000000..4675ebe Binary files /dev/null and b/assets/images/prompay.png differ diff --git a/assets/images/room1.png b/assets/images/room1.png new file mode 100644 index 0000000..9bd0801 Binary files /dev/null and b/assets/images/room1.png differ diff --git a/assets/images/silde_new_test.png b/assets/images/silde_new_test.png new file mode 100644 index 0000000..a027d4b Binary files /dev/null and b/assets/images/silde_new_test.png differ diff --git a/assets/images/translate.png b/assets/images/translate.png new file mode 100644 index 0000000..5134865 Binary files /dev/null and b/assets/images/translate.png differ diff --git a/assets/images/tree2.png b/assets/images/tree2.png new file mode 100644 index 0000000..ce0ac41 Binary files /dev/null and b/assets/images/tree2.png differ diff --git a/assets/images/tree_border.png b/assets/images/tree_border.png new file mode 100644 index 0000000..69d1fed Binary files /dev/null and b/assets/images/tree_border.png differ diff --git a/assets/images/zone_map.png b/assets/images/zone_map.png new file mode 100644 index 0000000..093695c Binary files /dev/null and b/assets/images/zone_map.png differ diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..f842b77 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], +}; diff --git a/config.js b/config.js new file mode 100644 index 0000000..3a69a34 --- /dev/null +++ b/config.js @@ -0,0 +1,3 @@ +export default { + API_BASE_URL: 'https://app.csasset.co.th/mobile', +} diff --git a/fix.sh b/fix.sh new file mode 100644 index 0000000..6ba6327 --- /dev/null +++ b/fix.sh @@ -0,0 +1,3 @@ +cp ./node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js ./node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js +cp ./node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js ./node_modules/react-native/Libraries/StyleSheet/ColorPropType.js +cp ./node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js ./node_modules/react-native/Libraries/Image/ImageStylePropTypes.js \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..a850d03 --- /dev/null +++ b/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/ios/AuthKey_M48TTKMT8X.p8 b/ios/AuthKey_M48TTKMT8X.p8 new file mode 100644 index 0000000..b36387c --- /dev/null +++ b/ios/AuthKey_M48TTKMT8X.p8 @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgCd4/AjkszZr3xM6G +GAAekvhX0KseAw0IXgyJ0U7Qk8GgCgYIKoZIzj0DAQehRANCAASS/OF2wy3zk4mO +And5sdHgswzNkYjgxIIIauiEKYo/CUkh2UBHmXIHcQ4K4xDgYGxChL6jS7T6YAp5 +S1A6v/g+ +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..08dc3ab --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,51 @@ +platform :ios, '9.0' +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + +target 'csareactrn60' do + # Pods for csareactrn60 + pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" + pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" + pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" + pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" + pod 'React', :path => '../node_modules/react-native/' + pod 'React-Core', :path => '../node_modules/react-native/' + pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' + pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' + pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' + pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' + pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' + pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' + pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' + pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' + pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' + pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' + pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' + pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' + + pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' + pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' + pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' + pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' + pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon" + pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" + pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga' + + pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' + pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' + pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' + + pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk' + pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' + + pod 'FBSDKCoreKit' + pod 'FBSDKLoginKit' + pod 'FBSDKShareKit' + + #Firebase + pod 'Firebase/Messaging', '~> 6.8.0' + + pod 'react-native-view-shot', :path => '../node_modules/react-native-view-shot' + pod 'RNImageCropPicker', :path => '../node_modules/react-native-image-crop-picker' + + use_native_modules! +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..74e08fe --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,619 @@ +PODS: + - boost-for-react-native (1.63.0) + - BVLinearGradient (2.5.6): + - React + - Crashlytics (3.14.0): + - Fabric (~> 1.10.2) + - DoubleConversion (1.1.6) + - Fabric (1.10.2) + - FBLazyVector (0.61.5) + - FBReactNativeSpec (0.61.5): + - Folly (= 2018.10.22.00) + - RCTRequired (= 0.61.5) + - RCTTypeSafety (= 0.61.5) + - React-Core (= 0.61.5) + - React-jsi (= 0.61.5) + - ReactCommon/turbomodule/core (= 0.61.5) + - FBSDKCoreKit (5.8.0): + - FBSDKCoreKit/Basics (= 5.8.0) + - FBSDKCoreKit/Core (= 5.8.0) + - FBSDKCoreKit/Basics (5.8.0) + - FBSDKCoreKit/Core (5.8.0): + - FBSDKCoreKit/Basics + - FBSDKLoginKit (5.8.0): + - FBSDKLoginKit/Login (= 5.8.0) + - FBSDKLoginKit/Login (5.8.0): + - FBSDKCoreKit (~> 5.0) + - FBSDKShareKit (5.8.0): + - FBSDKShareKit/Share (= 5.8.0) + - FBSDKShareKit/Share (5.8.0): + - FBSDKCoreKit (~> 5.0) + - Firebase/Core (6.8.1): + - Firebase/CoreOnly + - FirebaseAnalytics (= 6.1.1) + - Firebase/CoreOnly (6.8.1): + - FirebaseCore (= 6.2.3) + - Firebase/Messaging (6.8.1): + - Firebase/CoreOnly + - FirebaseMessaging (~> 4.1.4) + - FirebaseAnalytics (6.1.1): + - FirebaseCore (~> 6.2) + - FirebaseInstanceID (~> 4.2) + - GoogleAppMeasurement (= 6.1.1) + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 0.3) + - FirebaseAnalyticsInterop (1.5.0) + - FirebaseCore (6.2.3): + - FirebaseCoreDiagnostics (~> 1.0) + - FirebaseCoreDiagnosticsInterop (~> 1.0) + - GoogleUtilities/Environment (~> 6.2) + - GoogleUtilities/Logger (~> 6.2) + - FirebaseCoreDiagnostics (1.2.4): + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleDataTransportCCTSupport (~> 3.0) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - nanopb (~> 0.3.901) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseInstanceID (4.2.7): + - FirebaseCore (~> 6.0) + - GoogleUtilities/Environment (~> 6.0) + - GoogleUtilities/UserDefaults (~> 6.0) + - FirebaseMessaging (4.1.10): + - FirebaseAnalyticsInterop (~> 1.3) + - FirebaseCore (~> 6.2) + - FirebaseInstanceID (~> 4.1) + - GoogleUtilities/AppDelegateSwizzler (~> 6.2) + - GoogleUtilities/Environment (~> 6.2) + - GoogleUtilities/Reachability (~> 6.2) + - GoogleUtilities/UserDefaults (~> 6.2) + - Protobuf (>= 3.9.2, ~> 3.9) + - Folly (2018.10.22.00): + - boost-for-react-native + - DoubleConversion + - Folly/Default (= 2018.10.22.00) + - glog + - Folly/Default (2018.10.22.00): + - boost-for-react-native + - DoubleConversion + - glog + - glog (0.3.5) + - GoogleAppMeasurement (6.1.1): + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 0.3) + - GoogleDataTransport (6.1.0) + - GoogleDataTransportCCTSupport (3.0.0): + - GoogleDataTransport (~> 6.0) + - nanopb (~> 0.3.901) + - GoogleUtilities/AppDelegateSwizzler (6.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (6.6.0): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/MethodSwizzler (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/Network (6.6.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (6.6.0)" + - GoogleUtilities/Reachability (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (6.6.0): + - GoogleUtilities/Logger + - libwebp (1.1.0): + - libwebp/demux (= 1.1.0) + - libwebp/mux (= 1.1.0) + - libwebp/webp (= 1.1.0) + - libwebp/demux (1.1.0): + - libwebp/webp + - libwebp/mux (1.1.0): + - libwebp/demux + - libwebp/webp (1.1.0) + - nanopb (0.3.9011): + - nanopb/decode (= 0.3.9011) + - nanopb/encode (= 0.3.9011) + - nanopb/decode (0.3.9011) + - nanopb/encode (0.3.9011) + - PromisesObjC (1.2.8) + - Protobuf (3.12.0) + - QBImagePickerController (3.4.0) + - RCTRequired (0.61.5) + - RCTTypeSafety (0.61.5): + - FBLazyVector (= 0.61.5) + - Folly (= 2018.10.22.00) + - RCTRequired (= 0.61.5) + - React-Core (= 0.61.5) + - React (0.61.5): + - React-Core (= 0.61.5) + - React-Core/DevSupport (= 0.61.5) + - React-Core/RCTWebSocket (= 0.61.5) + - React-RCTActionSheet (= 0.61.5) + - React-RCTAnimation (= 0.61.5) + - React-RCTBlob (= 0.61.5) + - React-RCTImage (= 0.61.5) + - React-RCTLinking (= 0.61.5) + - React-RCTNetwork (= 0.61.5) + - React-RCTSettings (= 0.61.5) + - React-RCTText (= 0.61.5) + - React-RCTVibration (= 0.61.5) + - React-Core (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default (= 0.61.5) + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/CoreModulesHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/Default (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/DevSupport (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default (= 0.61.5) + - React-Core/RCTWebSocket (= 0.61.5) + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - React-jsinspector (= 0.61.5) + - Yoga + - React-Core/RCTActionSheetHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTAnimationHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTBlobHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTImageHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTLinkingHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTNetworkHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTSettingsHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTTextHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTVibrationHeaders (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-Core/RCTWebSocket (0.61.5): + - Folly (= 2018.10.22.00) + - glog + - React-Core/Default (= 0.61.5) + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsiexecutor (= 0.61.5) + - Yoga + - React-CoreModules (0.61.5): + - FBReactNativeSpec (= 0.61.5) + - Folly (= 2018.10.22.00) + - RCTTypeSafety (= 0.61.5) + - React-Core/CoreModulesHeaders (= 0.61.5) + - React-RCTImage (= 0.61.5) + - ReactCommon/turbomodule/core (= 0.61.5) + - React-cxxreact (0.61.5): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-jsinspector (= 0.61.5) + - React-jsi (0.61.5): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-jsi/Default (= 0.61.5) + - React-jsi/Default (0.61.5): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-jsiexecutor (0.61.5): + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - React-jsinspector (0.61.5) + - react-native-appearance (0.2.4): + - React + - react-native-cameraroll (1.6.2): + - React + - react-native-fbsdk (1.1.2): + - React + - react-native-fbsdk/Core (= 1.1.2) + - react-native-fbsdk/Login (= 1.1.2) + - react-native-fbsdk/Share (= 1.1.2) + - react-native-fbsdk/Core (1.1.2): + - FBSDKCoreKit (= 5.8) + - React + - react-native-fbsdk/Login (1.1.2): + - FBSDKLoginKit (= 5.8) + - React + - react-native-fbsdk/Share (1.1.2): + - FBSDKShareKit (= 5.8) + - React + - react-native-splash-screen (3.2.0): + - React + - react-native-view-shot (3.1.2): + - React + - react-native-webview (9.4.0): + - React + - React-RCTActionSheet (0.61.5): + - React-Core/RCTActionSheetHeaders (= 0.61.5) + - React-RCTAnimation (0.61.5): + - React-Core/RCTAnimationHeaders (= 0.61.5) + - React-RCTBlob (0.61.5): + - React-Core/RCTBlobHeaders (= 0.61.5) + - React-Core/RCTWebSocket (= 0.61.5) + - React-jsi (= 0.61.5) + - React-RCTNetwork (= 0.61.5) + - React-RCTImage (0.61.5): + - React-Core/RCTImageHeaders (= 0.61.5) + - React-RCTNetwork (= 0.61.5) + - React-RCTLinking (0.61.5): + - React-Core/RCTLinkingHeaders (= 0.61.5) + - React-RCTNetwork (0.61.5): + - React-Core/RCTNetworkHeaders (= 0.61.5) + - React-RCTSettings (0.61.5): + - React-Core/RCTSettingsHeaders (= 0.61.5) + - React-RCTText (0.61.5): + - React-Core/RCTTextHeaders (= 0.61.5) + - React-RCTVibration (0.61.5): + - React-Core/RCTVibrationHeaders (= 0.61.5) + - ReactCommon/jscallinvoker (0.61.5): + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-cxxreact (= 0.61.5) + - ReactCommon/turbomodule/core (0.61.5): + - DoubleConversion + - Folly (= 2018.10.22.00) + - glog + - React-Core (= 0.61.5) + - React-cxxreact (= 0.61.5) + - React-jsi (= 0.61.5) + - ReactCommon/jscallinvoker (= 0.61.5) + - RNDeviceInfo (5.5.8): + - React + - RNFastImage (8.1.5): + - React + - SDWebImage (~> 5.0) + - SDWebImageWebPCoder (~> 0.4.1) + - RNFirebase (5.6.0): + - Firebase/Core + - React + - RNFirebase/Crashlytics (= 5.6.0) + - RNFirebase/Crashlytics (5.6.0): + - Crashlytics + - Fabric + - Firebase/Core + - React + - RNGestureHandler (1.6.1): + - React + - RNImageCropPicker (0.25.3): + - QBImagePickerController + - React-Core + - React-RCTImage + - RSKImageCropper + - RNScreens (2.7.0): + - React + - RNSVG (9.13.6): + - React + - RNVectorIcons (6.6.0): + - React + - RSKImageCropper (2.2.3) + - SDWebImage (5.8.0): + - SDWebImage/Core (= 5.8.0) + - SDWebImage/Core (5.8.0) + - SDWebImageWebPCoder (0.4.1): + - libwebp (~> 1.0) + - SDWebImage/Core (~> 5.5) + - Yoga (1.14.0) + +DEPENDENCIES: + - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) + - 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`) + - FBSDKCoreKit + - FBSDKLoginKit + - FBSDKShareKit + - Firebase/Messaging (~> 6.8.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`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - 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-appearance (from `../node_modules/react-native-appearance`) + - "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)" + - react-native-fbsdk (from `../node_modules/react-native-fbsdk`) + - react-native-splash-screen (from `../node_modules/react-native-splash-screen`) + - react-native-view-shot (from `../node_modules/react-native-view-shot`) + - react-native-webview (from `../node_modules/react-native-webview`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNDeviceInfo (from `../node_modules/react-native-device-info`) + - RNFastImage (from `../node_modules/react-native-fast-image`) + - RNFirebase (from `../node_modules/react-native-firebase/ios`) + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`) + - RNScreens (from `../node_modules/react-native-screens`) + - RNSVG (from `../node_modules/react-native-svg`) + - RNVectorIcons (from `../node_modules/react-native-vector-icons`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - boost-for-react-native + - Crashlytics + - Fabric + - FBSDKCoreKit + - FBSDKLoginKit + - FBSDKShareKit + - Firebase + - FirebaseAnalytics + - FirebaseAnalyticsInterop + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCoreDiagnosticsInterop + - FirebaseInstanceID + - FirebaseMessaging + - GoogleAppMeasurement + - GoogleDataTransport + - GoogleDataTransportCCTSupport + - GoogleUtilities + - libwebp + - nanopb + - PromisesObjC + - Protobuf + - QBImagePickerController + - RSKImageCropper + - SDWebImage + - SDWebImageWebPCoder + +EXTERNAL SOURCES: + BVLinearGradient: + :path: "../node_modules/react-native-linear-gradient" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" + Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + react-native-appearance: + :path: "../node_modules/react-native-appearance" + react-native-cameraroll: + :path: "../node_modules/@react-native-community/cameraroll" + react-native-fbsdk: + :path: "../node_modules/react-native-fbsdk" + react-native-splash-screen: + :path: "../node_modules/react-native-splash-screen" + react-native-view-shot: + :path: "../node_modules/react-native-view-shot" + react-native-webview: + :path: "../node_modules/react-native-webview" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNDeviceInfo: + :path: "../node_modules/react-native-device-info" + RNFastImage: + :path: "../node_modules/react-native-fast-image" + RNFirebase: + :path: "../node_modules/react-native-firebase/ios" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" + RNImageCropPicker: + :path: "../node_modules/react-native-image-crop-picker" + RNScreens: + :path: "../node_modules/react-native-screens" + RNSVG: + :path: "../node_modules/react-native-svg" + RNVectorIcons: + :path: "../node_modules/react-native-vector-icons" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 + Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df + DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 + Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74 + FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f + FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 + FBSDKCoreKit: e7dcac0aabcfb09d0166998edd95fe3b05a0ce5d + FBSDKLoginKit: 1b0cf04df0370b37404213157b060d6666ede814 + FBSDKShareKit: abc29e1bb4f9f59f679adf1ae191006d68455f96 + Firebase: 9cbe4e5b5eaafa05dc932be58b7c8c3820d71e88 + FirebaseAnalytics: 843c7f64a8f9c79f0d03281197ebe7bb1d58d477 + FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae + FirebaseCore: e9d9bd1dae61c1e82bc1e0e617a9d832392086a0 + FirebaseCoreDiagnostics: b59c024493a409f8aecba02c99928d0d8431d159 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseInstanceID: ebd2ea79ee38db0cb5f5167b17a0d387e1cc7b6e + FirebaseMessaging: 089b7a4991425783384acc8bcefcd78c0af913bd + Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 + glog: 1f3da668190260b06b429bb211bfbee5cd790c28 + GoogleAppMeasurement: 86a82f0e1f20b8eedf8e20326530138fd71409de + GoogleDataTransport: f6f8eba931df03ebd2232ff4645aa85f8f47b5ab + GoogleDataTransportCCTSupport: 0f39025e8cf51f168711bd3fb773938d7e62ddb5 + GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1 + libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3 + nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 + Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9 + QBImagePickerController: d54cf93db6decf26baf6ed3472f336ef35cae022 + RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 + RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 + React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 + React-Core: 688b451f7d616cc1134ac95295b593d1b5158a04 + React-CoreModules: d04f8494c1a328b69ec11db9d1137d667f916dcb + React-cxxreact: d0f7bcafa196ae410e5300736b424455e7fb7ba7 + React-jsi: cb2cd74d7ccf4cffb071a46833613edc79cdf8f7 + React-jsiexecutor: d5525f9ed5f782fdbacb64b9b01a43a9323d2386 + React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0 + react-native-appearance: ea4a65c382cff00249abbeed09bda9a7b5e16ca8 + react-native-cameraroll: ac69828fc43b9dbf92149714fd739577d38e4448 + react-native-fbsdk: c35d42169e64aaf66f01713c1e18d0674f7f6519 + react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865 + react-native-view-shot: 4475fde003fe8a210053d1f98fb9e06c1d834e1c + react-native-webview: cf5527893252b3b036eea024a1da6996f7344c74 + React-RCTActionSheet: 600b4d10e3aea0913b5a92256d2719c0cdd26d76 + React-RCTAnimation: 791a87558389c80908ed06cc5dfc5e7920dfa360 + React-RCTBlob: d89293cc0236d9cb0933d85e430b0bbe81ad1d72 + React-RCTImage: 6b8e8df449eb7c814c99a92d6b52de6fe39dea4e + React-RCTLinking: 121bb231c7503cf9094f4d8461b96a130fabf4a5 + React-RCTNetwork: fb353640aafcee84ca8b78957297bd395f065c9a + React-RCTSettings: 8db258ea2a5efee381fcf7a6d5044e2f8b68b640 + React-RCTText: 9ccc88273e9a3aacff5094d2175a605efa854dbe + React-RCTVibration: a49a1f42bf8f5acf1c3e297097517c6b3af377ad + ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd + RNDeviceInfo: 655265668063a05fff096c6819da0b7289753ef7 + RNFastImage: 35ae972d6727c84ee3f5c6897e07f84d0a3445e9 + RNFirebase: 37daa9a346d070f9f6ee1f3b4aaf4c8e3b1d5d1c + RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38 + RNImageCropPicker: bfb3ea9c8622f290532e2fe63f369e0d5a52f597 + RNScreens: cf198f915f8a2bf163de94ca9f5bfc8d326c3706 + RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f + RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 + RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a + SDWebImage: 84000f962cbfa70c07f19d2234cbfcf5d779b5dc + SDWebImageWebPCoder: 36f8f47bd9879a8aea6044765c1351120fd8e3a8 + Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b + +PODFILE CHECKSUM: 1047c93f57a8f62051dd231435a5bc47724c02f4 + +COCOAPODS: 1.8.4 diff --git a/ios/csareactrn60.xcodeproj/project.pbxproj b/ios/csareactrn60.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8002be7 --- /dev/null +++ b/ios/csareactrn60.xcodeproj/project.pbxproj @@ -0,0 +1,793 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 05D9C7D844A84FF383CF9E27 /* HelveticaNeue-HeavyExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = B42396AA50F146C9BB464DB4 /* HelveticaNeue-HeavyExtObl.otf */; }; + 060425A5EF864C418B548F15 /* HelveticaNeue-LightExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2349329EF6A48AD89E6B4D6 /* HelveticaNeue-LightExt.otf */; }; + 0DA72BE62DD04FCA91E95C99 /* HelveticaNeue-MediumExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = BBEF583229764B3EB88778EE /* HelveticaNeue-MediumExtObl.otf */; }; + 10F3B34383D24C0295B848D1 /* HelveticaNeue-UltraLigExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = F942D35FD2AC4A9AA6B2735A /* HelveticaNeue-UltraLigExt.otf */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 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 */; }; + 17F864C9C4A74744B4649FFC /* Prompt-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 862548AAB33E42CCA52E8C5A /* Prompt-ExtraBold.ttf */; }; + 1F7FF07D5687407EA1D187ED /* HelveticaNeue-ThinItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 4BE8AE7BD21C42E693C0AC63 /* HelveticaNeue-ThinItalic.otf */; }; + 28B708D71DC74110BA5414C9 /* Prompt-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8A0E7A5B712240B0A5D80CD0 /* Prompt-ExtraLightItalic.ttf */; }; + 3315BDDF38E744F5A8F2E12D /* arial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AEB357E1B49949988E70615A /* arial.ttf */; }; + 37240CDF898442598823F626 /* HelveticaNeue-ExtBlackCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 957ECBB408F7400E97E4ABB7 /* HelveticaNeue-ExtBlackCondObl.otf */; }; + 3B0DFA8A3E66426C83106178 /* HelveticaNeue-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = B46DE0A65D4D46598592DFCA /* HelveticaNeue-Black.otf */; }; + 3F1F4FFDE2E64BCDB0EF1568 /* Prompt-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 83BCD4C4237245CC8FD65EBA /* Prompt-Thin.ttf */; }; + 43368876D94248E3A8A13602 /* HelveticaNeue-ExtBlackCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 231E3867554C4E1A81C5E143 /* HelveticaNeue-ExtBlackCond.otf */; }; + 45A7A9558AD64A09B6EA6EA2 /* Prompt-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 862B9827E2E44C69BEAD246C /* Prompt-LightItalic.ttf */; }; + 487D36DF001C919C6AA18B38 /* libPods-csareactrn60.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E619403A5F8E86D88BFFD6C /* libPods-csareactrn60.a */; }; + 4C37F2DC742A425F913826A7 /* HelveticaBlkIt.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6CE71051FC114CD0B4D6EAF5 /* HelveticaBlkIt.ttf */; }; + 59D523C8F50B4740944768F7 /* HelveticaNeue-BlackExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 12FFE6B1F22E45B389BE558E /* HelveticaNeue-BlackExt.otf */; }; + 6059ACDBE70E4CECA8A06232 /* HelveticaNeueBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5D2BF1F31E004EEE9D522238 /* HelveticaNeueBoldItalic.ttf */; }; + 613CD38CE1D34789B42DE436 /* HelveticaNeue-BlackCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A12439D9E8543F5BE6EE3D1 /* HelveticaNeue-BlackCondObl.otf */; }; + 64317D2EBF034084A3D0E110 /* Prompt-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5636EF3B5B25467E8C547356 /* Prompt-SemiBoldItalic.ttf */; }; + 64D541496C194E35AA212970 /* HelveticaNeueUltraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 73D1933D9D434B94925AEA3D /* HelveticaNeueUltraLight.ttf */; }; + 6617BBF9E0FD491FB83BB4CA /* HelveticaNeue-ThinCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = F1E91A4685864E6EA1AB8961 /* HelveticaNeue-ThinCondObl.otf */; }; + 67B01251A35044E5BDBFC48B /* HelveticaNeue-ExtendedObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 521C14EB958C485B95341C15 /* HelveticaNeue-ExtendedObl.otf */; }; + 6803037915D0497EA6A335A2 /* Prompt-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 08D55EB6D05E4FC4B7F1FE43 /* Prompt-ExtraBoldItalic.ttf */; }; + 699BE7A98DCC4F7482409379 /* Prompt-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2972004E4D90493294310170 /* Prompt-Bold.ttf */; }; + 6AEA55507CC74E2588262083 /* HelveticaNeue-BoldExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 16B8B82AA0D44EFC802AB0BC /* HelveticaNeue-BoldExtObl.otf */; }; + 73D75F4367A045AD85E215F4 /* Prompt-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1C19FE1049FC4342976A84F0 /* Prompt-ExtraLight.ttf */; }; + 744F09052D2B460C934469B8 /* HelveticaNeue-MediumCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 001EC7C37F9448CA8B7BE559 /* HelveticaNeue-MediumCond.otf */; }; + 80DAA3500C1145B1973F7FD9 /* HelveticaNeue-LightCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 215DEA32BCB74D1CBD7D8158 /* HelveticaNeue-LightCondObl.otf */; }; + 81C42E72D1474B48947D9C8F /* Prompt-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BD3C50CEE1DC417691196E47 /* Prompt-SemiBold.ttf */; }; + 87ABB24159D441B5AAD56102 /* HelveticaNeue-Extended.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2708E5627D3E425BAC665EB6 /* HelveticaNeue-Extended.otf */; }; + 883370E023323B1E0045FDA1 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 883370DF23323B1E0045FDA1 /* GoogleService-Info.plist */; }; + 88D28ABE233238AE00C7CDA7 /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88D28ABD233238AE00C7CDA7 /* libRNFirebase.a */; settings = {ATTRIBUTES = (Required, ); }; }; + 90745F7DC6274104A4DB7493 /* HelveticaNeue-HeavyCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = BC841BEACCFB4C6189DA5F50 /* HelveticaNeue-HeavyCond.otf */; }; + 9735962A8E33451AA784CC52 /* HelveticaNeue-MediumCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = EA62BFA1F6294323BFAE7EA0 /* HelveticaNeue-MediumCondObl.otf */; }; + 9AE35102815944178A4BA1EE /* Prompt-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 07562EA7B93E4C4EA182A2F7 /* Prompt-MediumItalic.ttf */; }; + 9FEF2682392E49C6A92C415F /* HelveticaNeue-HeavyItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = EC46ED0640744514BC9A3908 /* HelveticaNeue-HeavyItalic.otf */; }; + A041F64477744FFC83EDAE30 /* HelveticaNeue-BlackCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5E74820688DD452C826EF9E4 /* HelveticaNeue-BlackCond.otf */; }; + A730EB9733D0415FBAB6119D /* Prompt-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EE71CEECA7FE41A3BB61EAC4 /* Prompt-Medium.ttf */; }; + AB69EFB603DF4447B8D7C797 /* HelveticaNeue-ThinCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 579D9C6E7CF64DBFBCB6DDC0 /* HelveticaNeue-ThinCond.otf */; }; + AB7F6C9732154D9899F68238 /* HelveticaNeueMedium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C06F86F2A28D4C48867E7656 /* HelveticaNeueMedium.ttf */; }; + AD4D58D7044B4CF0B513E73B /* HelveticaNeue-LightExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1F140B31FD8E42ADA477F817 /* HelveticaNeue-LightExtObl.otf */; }; + AF05F001427343ED9B54558A /* HelveticaNeueLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57204244BCE64FD3B00387F1 /* HelveticaNeueLight.ttf */; }; + AF06DA2E2AFB4B75A842CE83 /* Prompt-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1DC385B0DEE246E599862EEF /* Prompt-Italic.ttf */; }; + AFB62531EB284F5FAD8D60D7 /* HelveticaNeue-BoldCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = C1BEE168DA7240A0BA35DB71 /* HelveticaNeue-BoldCondObl.otf */; }; + B52C1A10D8454F1D8789A722 /* Prompt-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D1E4802508184C2398E398D4 /* Prompt-BlackItalic.ttf */; }; + B7249E7F499746C994028283 /* Prompt-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6B1C611BFCF747E2955D2D25 /* Prompt-Black.ttf */; }; + BF2D955F76D547E2A06A95F7 /* HelveticaNeue-HeavyExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6CDCC02C517545A4BB84A7E3 /* HelveticaNeue-HeavyExt.otf */; }; + C33A29FD649F45B9AD0E6016 /* HelveticaNeue-UltraLigCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 320BC91979FD45F8B4A1DE10 /* HelveticaNeue-UltraLigCond.otf */; }; + C795F5B3AA2646DC989C8094 /* HelveticaNeue-BlackExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = EA96FDBCA7C749EA867B19D9 /* HelveticaNeue-BlackExtObl.otf */; }; + C827FCC31E014C9AB99E8DC5 /* icomoon.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6A55B30A897D413385D4D499 /* icomoon.ttf */; }; + CC816883C8EA41D481128BBE /* HelveticaNeue-CondensedObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 83FF949DAE7F44E08D13EBBF /* HelveticaNeue-CondensedObl.otf */; }; + D68F95FEDD9C4508A3120F0F /* HelveticaNeueLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 36ED4079622B4A32A63A1824 /* HelveticaNeueLightItalic.ttf */; }; + D77E87C0F90C41D0834EA1F6 /* HelveticaNeue-UltraLigCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5474100744844CAABD7DD120 /* HelveticaNeue-UltraLigCondObl.otf */; }; + DC6D6AD8F35E49B6A1918714 /* HelveticaNeue-Condensed.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1D067B6AEDB34A11B9DDE582 /* HelveticaNeue-Condensed.otf */; }; + E02AA9900E6443CE9B253A5D /* HelveticaNeue-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = 4DE41A5311A74AD8A6489261 /* HelveticaNeue-Heavy.otf */; }; + E47A825148D24193ABFCE9D1 /* Prompt-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 36B2F6E8A87B476298A99464 /* Prompt-ThinItalic.ttf */; }; + E4BF1F2330A94DC99F9D0DBB /* Prompt-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E261252AAEED484D86F503A4 /* Prompt-Regular.ttf */; }; + E577C35A66024E62A0F7EE2A /* HelveticaNeue-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = 401E331B3F084A6694BEA48D /* HelveticaNeue-Thin.otf */; }; + EA2E7CD5D23649239AD8B7C1 /* HelveticaNeue-ThinExtObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = D2017877E59E42C5BDE240A2 /* HelveticaNeue-ThinExtObl.otf */; }; + EEAE6880983148F18CEBC298 /* HelveticaNeue-Roman.otf in Resources */ = {isa = PBXBuildFile; fileRef = 825627A4725D4E8CA2855990 /* HelveticaNeue-Roman.otf */; }; + F0153B418D814179A434916D /* Prompt-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E41D36BC69EB45FBB91C35E7 /* Prompt-Light.ttf */; }; + F411D83EAFEE48EDA1D752F2 /* HelveticaNeueItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F469012A5CCD49CD9EAF23F7 /* HelveticaNeueItalic.ttf */; }; + F5E452C877D74AB48FA03ADB /* HelveticaNeue-MediumExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 30547B3A6F39407E85F47460 /* HelveticaNeue-MediumExt.otf */; }; + F64BDC9779CC4A968323B1D2 /* HelveticaNeue-BoldExt.otf in Resources */ = {isa = PBXBuildFile; fileRef = B61EEAA00E5A44BA97170138 /* HelveticaNeue-BoldExt.otf */; }; + F6941127F42843FC86D2733B /* Prompt-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6F50A6BE5CE745CB95382DB5 /* Prompt-BoldItalic.ttf */; }; + FD86179F379848B883BE640C /* HelveticaNeue-HeavyCondObl.otf in Resources */ = {isa = PBXBuildFile; fileRef = D5533C2F700E41D8A348366C /* HelveticaNeue-HeavyCondObl.otf */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 001EC7C37F9448CA8B7BE559 /* HelveticaNeue-MediumCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-MediumCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-MediumCond.otf"; sourceTree = ""; }; + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 015875F8556949209D4B35B5 /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = ""; }; + 027A3B1A6DDE407E980BFD8B /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = ""; }; + 07562EA7B93E4C4EA182A2F7 /* Prompt-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-MediumItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-MediumItalic.ttf"; sourceTree = ""; }; + 08D55EB6D05E4FC4B7F1FE43 /* Prompt-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-ExtraBoldItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-ExtraBoldItalic.ttf"; sourceTree = ""; }; + 1024EDF4A4F64F5E89E955EA /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; }; + 12F7635DFE8343238183DDB1 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; }; + 12FFE6B1F22E45B389BE558E /* HelveticaNeue-BlackExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BlackExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BlackExt.otf"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* csareactrn60.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = csareactrn60.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = csareactrn60/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = csareactrn60/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = csareactrn60/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = csareactrn60/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = csareactrn60/main.m; sourceTree = ""; }; + 16B8B82AA0D44EFC802AB0BC /* HelveticaNeue-BoldExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BoldExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BoldExtObl.otf"; sourceTree = ""; }; + 1C19FE1049FC4342976A84F0 /* Prompt-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-ExtraLight.ttf"; path = "../assets/fonts/Prompt/Prompt-ExtraLight.ttf"; sourceTree = ""; }; + 1D067B6AEDB34A11B9DDE582 /* HelveticaNeue-Condensed.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Condensed.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Condensed.otf"; sourceTree = ""; }; + 1DC385B0DEE246E599862EEF /* Prompt-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Italic.ttf"; path = "../assets/fonts/Prompt/Prompt-Italic.ttf"; sourceTree = ""; }; + 1F140B31FD8E42ADA477F817 /* HelveticaNeue-LightExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-LightExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-LightExtObl.otf"; sourceTree = ""; }; + 215DEA32BCB74D1CBD7D8158 /* HelveticaNeue-LightCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-LightCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-LightCondObl.otf"; sourceTree = ""; }; + 231E3867554C4E1A81C5E143 /* HelveticaNeue-ExtBlackCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ExtBlackCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCond.otf"; sourceTree = ""; }; + 2444992B64A7443F824B28EF /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; + 25116F45562BB5EB09DF23A8 /* Pods-csareactrn60.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csareactrn60.release.xcconfig"; path = "Target Support Files/Pods-csareactrn60/Pods-csareactrn60.release.xcconfig"; sourceTree = ""; }; + 264A3E43A94848FBADA73D20 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; + 2708E5627D3E425BAC665EB6 /* HelveticaNeue-Extended.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Extended.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Extended.otf"; sourceTree = ""; }; + 2972004E4D90493294310170 /* Prompt-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Bold.ttf"; path = "../assets/fonts/Prompt/Prompt-Bold.ttf"; sourceTree = ""; }; + 2DC17590934E47E6B335C145 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = ""; }; + 30547B3A6F39407E85F47460 /* HelveticaNeue-MediumExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-MediumExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-MediumExt.otf"; sourceTree = ""; }; + 30C86F87245691760093DD8C /* csareactrn60.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = csareactrn60.entitlements; path = csareactrn60/csareactrn60.entitlements; sourceTree = ""; }; + 3112F697376540DD97ED96F7 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = ""; }; + 320BC91979FD45F8B4A1DE10 /* HelveticaNeue-UltraLigCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-UltraLigCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCond.otf"; sourceTree = ""; }; + 36B2F6E8A87B476298A99464 /* Prompt-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-ThinItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-ThinItalic.ttf"; sourceTree = ""; }; + 36ED4079622B4A32A63A1824 /* HelveticaNeueLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueLightItalic.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueLightItalic.ttf; sourceTree = ""; }; + 3C662D837947491182124BDD /* Fontisto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Fontisto.ttf; path = "../node_modules/native-base/Fonts/Fontisto.ttf"; sourceTree = ""; }; + 401E331B3F084A6694BEA48D /* HelveticaNeue-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Thin.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Thin.otf"; sourceTree = ""; }; + 4BE8AE7BD21C42E693C0AC63 /* HelveticaNeue-ThinItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ThinItalic.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.otf"; sourceTree = ""; }; + 4DE41A5311A74AD8A6489261 /* HelveticaNeue-Heavy.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Heavy.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Heavy.otf"; sourceTree = ""; }; + 521C14EB958C485B95341C15 /* HelveticaNeue-ExtendedObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ExtendedObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ExtendedObl.otf"; sourceTree = ""; }; + 5474100744844CAABD7DD120 /* HelveticaNeue-UltraLigCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-UltraLigCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigCondObl.otf"; sourceTree = ""; }; + 55D20555CBAE438D88F3C095 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = ""; }; + 5636EF3B5B25467E8C547356 /* Prompt-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-SemiBoldItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-SemiBoldItalic.ttf"; sourceTree = ""; }; + 57204244BCE64FD3B00387F1 /* HelveticaNeueLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueLight.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueLight.ttf; sourceTree = ""; }; + 579D9C6E7CF64DBFBCB6DDC0 /* HelveticaNeue-ThinCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ThinCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ThinCond.otf"; sourceTree = ""; }; + 5A12439D9E8543F5BE6EE3D1 /* HelveticaNeue-BlackCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BlackCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BlackCondObl.otf"; sourceTree = ""; }; + 5D2BF1F31E004EEE9D522238 /* HelveticaNeueBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueBoldItalic.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueBoldItalic.ttf; sourceTree = ""; }; + 5E74820688DD452C826EF9E4 /* HelveticaNeue-BlackCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BlackCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BlackCond.otf"; sourceTree = ""; }; + 6A55B30A897D413385D4D499 /* icomoon.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = icomoon.ttf; path = ../assets/icons/icomoon.ttf; sourceTree = ""; }; + 6B1C611BFCF747E2955D2D25 /* Prompt-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Black.ttf"; path = "../assets/fonts/Prompt/Prompt-Black.ttf"; sourceTree = ""; }; + 6CDCC02C517545A4BB84A7E3 /* HelveticaNeue-HeavyExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-HeavyExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExt.otf"; sourceTree = ""; }; + 6CE71051FC114CD0B4D6EAF5 /* HelveticaBlkIt.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaBlkIt.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaBlkIt.ttf; sourceTree = ""; }; + 6F50A6BE5CE745CB95382DB5 /* Prompt-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-BoldItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-BoldItalic.ttf"; sourceTree = ""; }; + 73D1933D9D434B94925AEA3D /* HelveticaNeueUltraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueUltraLight.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueUltraLight.ttf; sourceTree = ""; }; + 7EF2E1D9BEE14B03A6149E4A /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; }; + 825627A4725D4E8CA2855990 /* HelveticaNeue-Roman.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Roman.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Roman.otf"; sourceTree = ""; }; + 83BCD4C4237245CC8FD65EBA /* Prompt-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Thin.ttf"; path = "../assets/fonts/Prompt/Prompt-Thin.ttf"; sourceTree = ""; }; + 83FF949DAE7F44E08D13EBBF /* HelveticaNeue-CondensedObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-CondensedObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-CondensedObl.otf"; sourceTree = ""; }; + 862548AAB33E42CCA52E8C5A /* Prompt-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-ExtraBold.ttf"; path = "../assets/fonts/Prompt/Prompt-ExtraBold.ttf"; sourceTree = ""; }; + 862B9827E2E44C69BEAD246C /* Prompt-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-LightItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-LightItalic.ttf"; sourceTree = ""; }; + 883370DF23323B1E0045FDA1 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "csareactrn60/GoogleService-Info.plist"; sourceTree = ""; }; + 88D28ABD233238AE00C7CDA7 /* libRNFirebase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libRNFirebase.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A0E7A5B712240B0A5D80CD0 /* Prompt-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-ExtraLightItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-ExtraLightItalic.ttf"; sourceTree = ""; }; + 912AE64D64EF49D280281E8A /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = ""; }; + 957ECBB408F7400E97E4ABB7 /* HelveticaNeue-ExtBlackCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ExtBlackCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ExtBlackCondObl.otf"; sourceTree = ""; }; + 9C313C620791401F9A2BD0CE /* Roboto_medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto_medium.ttf; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = ""; }; + 9E619403A5F8E86D88BFFD6C /* libPods-csareactrn60.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-csareactrn60.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E832B02F0934D48897D388A /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = ""; }; + A4FCADBFE9B149AF00A57491 /* Pods-csareactrn60.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csareactrn60.debug.xcconfig"; path = "Target Support Files/Pods-csareactrn60/Pods-csareactrn60.debug.xcconfig"; sourceTree = ""; }; + AEB357E1B49949988E70615A /* arial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = arial.ttf; path = ../assets/fonts/Arial/arial.ttf; sourceTree = ""; }; + B2349329EF6A48AD89E6B4D6 /* HelveticaNeue-LightExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-LightExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-LightExt.otf"; sourceTree = ""; }; + B2561120DEFA42ACB00FA588 /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = ""; }; + B41D3628F42C42AE8185C663 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; + B42396AA50F146C9BB464DB4 /* HelveticaNeue-HeavyExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-HeavyExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-HeavyExtObl.otf"; sourceTree = ""; }; + B46DE0A65D4D46598592DFCA /* HelveticaNeue-Black.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-Black.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-Black.otf"; sourceTree = ""; }; + B48E078AFF534DB6805306A9 /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = ""; }; + B61EEAA00E5A44BA97170138 /* HelveticaNeue-BoldExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BoldExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BoldExt.otf"; sourceTree = ""; }; + BBEF583229764B3EB88778EE /* HelveticaNeue-MediumExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-MediumExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-MediumExtObl.otf"; sourceTree = ""; }; + BC841BEACCFB4C6189DA5F50 /* HelveticaNeue-HeavyCond.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-HeavyCond.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCond.otf"; sourceTree = ""; }; + BD3C50CEE1DC417691196E47 /* Prompt-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-SemiBold.ttf"; path = "../assets/fonts/Prompt/Prompt-SemiBold.ttf"; sourceTree = ""; }; + C06F86F2A28D4C48867E7656 /* HelveticaNeueMedium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueMedium.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueMedium.ttf; sourceTree = ""; }; + C1BEE168DA7240A0BA35DB71 /* HelveticaNeue-BoldCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BoldCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BoldCondObl.otf"; sourceTree = ""; }; + D1E4802508184C2398E398D4 /* Prompt-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-BlackItalic.ttf"; path = "../assets/fonts/Prompt/Prompt-BlackItalic.ttf"; sourceTree = ""; }; + D2017877E59E42C5BDE240A2 /* HelveticaNeue-ThinExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ThinExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ThinExtObl.otf"; sourceTree = ""; }; + D5533C2F700E41D8A348366C /* HelveticaNeue-HeavyCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-HeavyCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-HeavyCondObl.otf"; sourceTree = ""; }; + D94DFCEA09754906BBC9F1EF /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = ""; }; + E261252AAEED484D86F503A4 /* Prompt-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Regular.ttf"; path = "../assets/fonts/Prompt/Prompt-Regular.ttf"; sourceTree = ""; }; + E41D36BC69EB45FBB91C35E7 /* Prompt-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Light.ttf"; path = "../assets/fonts/Prompt/Prompt-Light.ttf"; sourceTree = ""; }; + EA62BFA1F6294323BFAE7EA0 /* HelveticaNeue-MediumCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-MediumCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-MediumCondObl.otf"; sourceTree = ""; }; + EA96FDBCA7C749EA867B19D9 /* HelveticaNeue-BlackExtObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-BlackExtObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-BlackExtObl.otf"; sourceTree = ""; }; + EC46ED0640744514BC9A3908 /* HelveticaNeue-HeavyItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-HeavyItalic.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-HeavyItalic.otf"; sourceTree = ""; }; + 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; }; + EE71CEECA7FE41A3BB61EAC4 /* Prompt-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Prompt-Medium.ttf"; path = "../assets/fonts/Prompt/Prompt-Medium.ttf"; sourceTree = ""; }; + F1E91A4685864E6EA1AB8961 /* HelveticaNeue-ThinCondObl.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-ThinCondObl.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-ThinCondObl.otf"; sourceTree = ""; }; + F469012A5CCD49CD9EAF23F7 /* HelveticaNeueItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = HelveticaNeueItalic.ttf; path = ../assets/fonts/HelveticaNeue/HelveticaNeueItalic.ttf; sourceTree = ""; }; + F4F4E0305AB44E4E8AF28BEF /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = ""; }; + F942D35FD2AC4A9AA6B2735A /* HelveticaNeue-UltraLigExt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HelveticaNeue-UltraLigExt.otf"; path = "../assets/fonts/HelveticaNeue/HelveticaNeue-UltraLigExt.otf"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 88D28ABE233238AE00C7CDA7 /* libRNFirebase.a in Frameworks */, + 487D36DF001C919C6AA18B38 /* libPods-csareactrn60.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* csareactrn60 */ = { + isa = PBXGroup; + children = ( + 30C86F87245691760093DD8C /* csareactrn60.entitlements */, + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = csareactrn60; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 88D28ABD233238AE00C7CDA7 /* libRNFirebase.a */, + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + ED2971642150620600B7C4FE /* JavaScriptCore.framework */, + 9E619403A5F8E86D88BFFD6C /* libPods-csareactrn60.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4916917C7A3244F890BEE158 /* Resources */ = { + isa = PBXGroup; + children = ( + AEB357E1B49949988E70615A /* arial.ttf */, + 6CE71051FC114CD0B4D6EAF5 /* HelveticaBlkIt.ttf */, + B46DE0A65D4D46598592DFCA /* HelveticaNeue-Black.otf */, + 5E74820688DD452C826EF9E4 /* HelveticaNeue-BlackCond.otf */, + 5A12439D9E8543F5BE6EE3D1 /* HelveticaNeue-BlackCondObl.otf */, + 12FFE6B1F22E45B389BE558E /* HelveticaNeue-BlackExt.otf */, + EA96FDBCA7C749EA867B19D9 /* HelveticaNeue-BlackExtObl.otf */, + C1BEE168DA7240A0BA35DB71 /* HelveticaNeue-BoldCondObl.otf */, + B61EEAA00E5A44BA97170138 /* HelveticaNeue-BoldExt.otf */, + 16B8B82AA0D44EFC802AB0BC /* HelveticaNeue-BoldExtObl.otf */, + 1D067B6AEDB34A11B9DDE582 /* HelveticaNeue-Condensed.otf */, + 83FF949DAE7F44E08D13EBBF /* HelveticaNeue-CondensedObl.otf */, + 231E3867554C4E1A81C5E143 /* HelveticaNeue-ExtBlackCond.otf */, + 957ECBB408F7400E97E4ABB7 /* HelveticaNeue-ExtBlackCondObl.otf */, + 2708E5627D3E425BAC665EB6 /* HelveticaNeue-Extended.otf */, + 521C14EB958C485B95341C15 /* HelveticaNeue-ExtendedObl.otf */, + 4DE41A5311A74AD8A6489261 /* HelveticaNeue-Heavy.otf */, + BC841BEACCFB4C6189DA5F50 /* HelveticaNeue-HeavyCond.otf */, + D5533C2F700E41D8A348366C /* HelveticaNeue-HeavyCondObl.otf */, + 6CDCC02C517545A4BB84A7E3 /* HelveticaNeue-HeavyExt.otf */, + B42396AA50F146C9BB464DB4 /* HelveticaNeue-HeavyExtObl.otf */, + EC46ED0640744514BC9A3908 /* HelveticaNeue-HeavyItalic.otf */, + 215DEA32BCB74D1CBD7D8158 /* HelveticaNeue-LightCondObl.otf */, + B2349329EF6A48AD89E6B4D6 /* HelveticaNeue-LightExt.otf */, + 1F140B31FD8E42ADA477F817 /* HelveticaNeue-LightExtObl.otf */, + 001EC7C37F9448CA8B7BE559 /* HelveticaNeue-MediumCond.otf */, + EA62BFA1F6294323BFAE7EA0 /* HelveticaNeue-MediumCondObl.otf */, + 30547B3A6F39407E85F47460 /* HelveticaNeue-MediumExt.otf */, + BBEF583229764B3EB88778EE /* HelveticaNeue-MediumExtObl.otf */, + 825627A4725D4E8CA2855990 /* HelveticaNeue-Roman.otf */, + 401E331B3F084A6694BEA48D /* HelveticaNeue-Thin.otf */, + 579D9C6E7CF64DBFBCB6DDC0 /* HelveticaNeue-ThinCond.otf */, + F1E91A4685864E6EA1AB8961 /* HelveticaNeue-ThinCondObl.otf */, + D2017877E59E42C5BDE240A2 /* HelveticaNeue-ThinExtObl.otf */, + 4BE8AE7BD21C42E693C0AC63 /* HelveticaNeue-ThinItalic.otf */, + 320BC91979FD45F8B4A1DE10 /* HelveticaNeue-UltraLigCond.otf */, + 5474100744844CAABD7DD120 /* HelveticaNeue-UltraLigCondObl.otf */, + F942D35FD2AC4A9AA6B2735A /* HelveticaNeue-UltraLigExt.otf */, + 5D2BF1F31E004EEE9D522238 /* HelveticaNeueBoldItalic.ttf */, + F469012A5CCD49CD9EAF23F7 /* HelveticaNeueItalic.ttf */, + 57204244BCE64FD3B00387F1 /* HelveticaNeueLight.ttf */, + 36ED4079622B4A32A63A1824 /* HelveticaNeueLightItalic.ttf */, + C06F86F2A28D4C48867E7656 /* HelveticaNeueMedium.ttf */, + 73D1933D9D434B94925AEA3D /* HelveticaNeueUltraLight.ttf */, + 6B1C611BFCF747E2955D2D25 /* Prompt-Black.ttf */, + D1E4802508184C2398E398D4 /* Prompt-BlackItalic.ttf */, + 2972004E4D90493294310170 /* Prompt-Bold.ttf */, + 6F50A6BE5CE745CB95382DB5 /* Prompt-BoldItalic.ttf */, + 862548AAB33E42CCA52E8C5A /* Prompt-ExtraBold.ttf */, + 08D55EB6D05E4FC4B7F1FE43 /* Prompt-ExtraBoldItalic.ttf */, + 1C19FE1049FC4342976A84F0 /* Prompt-ExtraLight.ttf */, + 8A0E7A5B712240B0A5D80CD0 /* Prompt-ExtraLightItalic.ttf */, + 1DC385B0DEE246E599862EEF /* Prompt-Italic.ttf */, + E41D36BC69EB45FBB91C35E7 /* Prompt-Light.ttf */, + 862B9827E2E44C69BEAD246C /* Prompt-LightItalic.ttf */, + EE71CEECA7FE41A3BB61EAC4 /* Prompt-Medium.ttf */, + 07562EA7B93E4C4EA182A2F7 /* Prompt-MediumItalic.ttf */, + E261252AAEED484D86F503A4 /* Prompt-Regular.ttf */, + BD3C50CEE1DC417691196E47 /* Prompt-SemiBold.ttf */, + 5636EF3B5B25467E8C547356 /* Prompt-SemiBoldItalic.ttf */, + 83BCD4C4237245CC8FD65EBA /* Prompt-Thin.ttf */, + 36B2F6E8A87B476298A99464 /* Prompt-ThinItalic.ttf */, + 6A55B30A897D413385D4D499 /* icomoon.ttf */, + B48E078AFF534DB6805306A9 /* AntDesign.ttf */, + 2DC17590934E47E6B335C145 /* Entypo.ttf */, + D94DFCEA09754906BBC9F1EF /* EvilIcons.ttf */, + 015875F8556949209D4B35B5 /* Feather.ttf */, + 55D20555CBAE438D88F3C095 /* FontAwesome.ttf */, + 7EF2E1D9BEE14B03A6149E4A /* FontAwesome5_Brands.ttf */, + 12F7635DFE8343238183DDB1 /* FontAwesome5_Regular.ttf */, + 1024EDF4A4F64F5E89E955EA /* FontAwesome5_Solid.ttf */, + 3C662D837947491182124BDD /* Fontisto.ttf */, + 027A3B1A6DDE407E980BFD8B /* Foundation.ttf */, + 3112F697376540DD97ED96F7 /* Ionicons.ttf */, + B41D3628F42C42AE8185C663 /* MaterialCommunityIcons.ttf */, + 264A3E43A94848FBADA73D20 /* MaterialIcons.ttf */, + 912AE64D64EF49D280281E8A /* Octicons.ttf */, + 9C313C620791401F9A2BD0CE /* Roboto_medium.ttf */, + B2561120DEFA42ACB00FA588 /* Roboto.ttf */, + 9E832B02F0934D48897D388A /* rubicon-icon-font.ttf */, + 2444992B64A7443F824B28EF /* SimpleLineIcons.ttf */, + F4F4E0305AB44E4E8AF28BEF /* Zocial.ttf */, + ); + name = Resources; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 883370DF23323B1E0045FDA1 /* GoogleService-Info.plist */, + 13B07FAE1A68108700A75B9A /* csareactrn60 */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + A617DCC10EF8CE6D4DD029BF /* Pods */, + 4916917C7A3244F890BEE158 /* Resources */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* csareactrn60.app */, + ); + name = Products; + sourceTree = ""; + }; + A617DCC10EF8CE6D4DD029BF /* Pods */ = { + isa = PBXGroup; + children = ( + A4FCADBFE9B149AF00A57491 /* Pods-csareactrn60.debug.xcconfig */, + 25116F45562BB5EB09DF23A8 /* Pods-csareactrn60.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* csareactrn60 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "csareactrn60" */; + buildPhases = ( + D1160407D2240D48C62B7317 /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + F7A92B6D97F97684A9874FCF /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = csareactrn60; + productName = csareactrn60; + productReference = 13B07F961A680F5B00A75B9A /* csareactrn60.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 940; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = 84F3R56BUC; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "csareactrn60" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* csareactrn60 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + 3315BDDF38E744F5A8F2E12D /* arial.ttf in Resources */, + 4C37F2DC742A425F913826A7 /* HelveticaBlkIt.ttf in Resources */, + 3B0DFA8A3E66426C83106178 /* HelveticaNeue-Black.otf in Resources */, + A041F64477744FFC83EDAE30 /* HelveticaNeue-BlackCond.otf in Resources */, + 613CD38CE1D34789B42DE436 /* HelveticaNeue-BlackCondObl.otf in Resources */, + 59D523C8F50B4740944768F7 /* HelveticaNeue-BlackExt.otf in Resources */, + C795F5B3AA2646DC989C8094 /* HelveticaNeue-BlackExtObl.otf in Resources */, + AFB62531EB284F5FAD8D60D7 /* HelveticaNeue-BoldCondObl.otf in Resources */, + F64BDC9779CC4A968323B1D2 /* HelveticaNeue-BoldExt.otf in Resources */, + 6AEA55507CC74E2588262083 /* HelveticaNeue-BoldExtObl.otf in Resources */, + 883370E023323B1E0045FDA1 /* GoogleService-Info.plist in Resources */, + DC6D6AD8F35E49B6A1918714 /* HelveticaNeue-Condensed.otf in Resources */, + CC816883C8EA41D481128BBE /* HelveticaNeue-CondensedObl.otf in Resources */, + 43368876D94248E3A8A13602 /* HelveticaNeue-ExtBlackCond.otf in Resources */, + 37240CDF898442598823F626 /* HelveticaNeue-ExtBlackCondObl.otf in Resources */, + 87ABB24159D441B5AAD56102 /* HelveticaNeue-Extended.otf in Resources */, + 67B01251A35044E5BDBFC48B /* HelveticaNeue-ExtendedObl.otf in Resources */, + E02AA9900E6443CE9B253A5D /* HelveticaNeue-Heavy.otf in Resources */, + 90745F7DC6274104A4DB7493 /* HelveticaNeue-HeavyCond.otf in Resources */, + FD86179F379848B883BE640C /* HelveticaNeue-HeavyCondObl.otf in Resources */, + BF2D955F76D547E2A06A95F7 /* HelveticaNeue-HeavyExt.otf in Resources */, + 05D9C7D844A84FF383CF9E27 /* HelveticaNeue-HeavyExtObl.otf in Resources */, + 9FEF2682392E49C6A92C415F /* HelveticaNeue-HeavyItalic.otf in Resources */, + 80DAA3500C1145B1973F7FD9 /* HelveticaNeue-LightCondObl.otf in Resources */, + 060425A5EF864C418B548F15 /* HelveticaNeue-LightExt.otf in Resources */, + AD4D58D7044B4CF0B513E73B /* HelveticaNeue-LightExtObl.otf in Resources */, + 744F09052D2B460C934469B8 /* HelveticaNeue-MediumCond.otf in Resources */, + 9735962A8E33451AA784CC52 /* HelveticaNeue-MediumCondObl.otf in Resources */, + F5E452C877D74AB48FA03ADB /* HelveticaNeue-MediumExt.otf in Resources */, + 0DA72BE62DD04FCA91E95C99 /* HelveticaNeue-MediumExtObl.otf in Resources */, + EEAE6880983148F18CEBC298 /* HelveticaNeue-Roman.otf in Resources */, + E577C35A66024E62A0F7EE2A /* HelveticaNeue-Thin.otf in Resources */, + AB69EFB603DF4447B8D7C797 /* HelveticaNeue-ThinCond.otf in Resources */, + 6617BBF9E0FD491FB83BB4CA /* HelveticaNeue-ThinCondObl.otf in Resources */, + EA2E7CD5D23649239AD8B7C1 /* HelveticaNeue-ThinExtObl.otf in Resources */, + 1F7FF07D5687407EA1D187ED /* HelveticaNeue-ThinItalic.otf in Resources */, + C33A29FD649F45B9AD0E6016 /* HelveticaNeue-UltraLigCond.otf in Resources */, + D77E87C0F90C41D0834EA1F6 /* HelveticaNeue-UltraLigCondObl.otf in Resources */, + 10F3B34383D24C0295B848D1 /* HelveticaNeue-UltraLigExt.otf in Resources */, + 6059ACDBE70E4CECA8A06232 /* HelveticaNeueBoldItalic.ttf in Resources */, + F411D83EAFEE48EDA1D752F2 /* HelveticaNeueItalic.ttf in Resources */, + AF05F001427343ED9B54558A /* HelveticaNeueLight.ttf in Resources */, + D68F95FEDD9C4508A3120F0F /* HelveticaNeueLightItalic.ttf in Resources */, + AB7F6C9732154D9899F68238 /* HelveticaNeueMedium.ttf in Resources */, + 64D541496C194E35AA212970 /* HelveticaNeueUltraLight.ttf in Resources */, + B7249E7F499746C994028283 /* Prompt-Black.ttf in Resources */, + B52C1A10D8454F1D8789A722 /* Prompt-BlackItalic.ttf in Resources */, + 699BE7A98DCC4F7482409379 /* Prompt-Bold.ttf in Resources */, + F6941127F42843FC86D2733B /* Prompt-BoldItalic.ttf in Resources */, + 17F864C9C4A74744B4649FFC /* Prompt-ExtraBold.ttf in Resources */, + 6803037915D0497EA6A335A2 /* Prompt-ExtraBoldItalic.ttf in Resources */, + 73D75F4367A045AD85E215F4 /* Prompt-ExtraLight.ttf in Resources */, + 28B708D71DC74110BA5414C9 /* Prompt-ExtraLightItalic.ttf in Resources */, + AF06DA2E2AFB4B75A842CE83 /* Prompt-Italic.ttf in Resources */, + F0153B418D814179A434916D /* Prompt-Light.ttf in Resources */, + 45A7A9558AD64A09B6EA6EA2 /* Prompt-LightItalic.ttf in Resources */, + A730EB9733D0415FBAB6119D /* Prompt-Medium.ttf in Resources */, + 9AE35102815944178A4BA1EE /* Prompt-MediumItalic.ttf in Resources */, + E4BF1F2330A94DC99F9D0DBB /* Prompt-Regular.ttf in Resources */, + 81C42E72D1474B48947D9C8F /* Prompt-SemiBold.ttf in Resources */, + 64317D2EBF034084A3D0E110 /* Prompt-SemiBoldItalic.ttf in Resources */, + 3F1F4FFDE2E64BCDB0EF1568 /* Prompt-Thin.ttf in Resources */, + E47A825148D24193ABFCE9D1 /* Prompt-ThinItalic.ttf in Resources */, + C827FCC31E014C9AB99E8DC5 /* icomoon.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + D1160407D2240D48C62B7317 /* [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-csareactrn60-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; + }; + F7A92B6D97F97684A9874FCF /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-csareactrn60/Pods-csareactrn60-resources.sh", + "${PODS_ROOT}/FBSDKCoreKit/FacebookSDKStrings.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/QBImagePickerController/QBImagePicker.bundle", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_ROOT}/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FacebookSDKStrings.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSKImageCropperStrings.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-csareactrn60/Pods-csareactrn60-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = csareactrn60; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A4FCADBFE9B149AF00A57491 /* Pods-csareactrn60.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = csareactrn60/csareactrn60.entitlements; + CURRENT_PROJECT_VERSION = 61; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 84F3R56BUC; + INFOPLIST_FILE = csareactrn60/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 2.11; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = th.co.csasset.mobile; + PRODUCT_NAME = csareactrn60; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 25116F45562BB5EB09DF23A8 /* Pods-csareactrn60.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = csareactrn60/csareactrn60.entitlements; + CURRENT_PROJECT_VERSION = 61; + DEVELOPMENT_TEAM = 84F3R56BUC; + INFOPLIST_FILE = csareactrn60/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 2.11; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = th.co.csasset.mobile; + PRODUCT_NAME = csareactrn60; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "csareactrn60" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "csareactrn60" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60-tvOS.xcscheme b/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60-tvOS.xcscheme new file mode 100644 index 0000000..9f657ff --- /dev/null +++ b/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60-tvOS.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60.xcscheme b/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60.xcscheme new file mode 100644 index 0000000..fac33aa --- /dev/null +++ b/ios/csareactrn60.xcodeproj/xcshareddata/xcschemes/csareactrn60.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/csareactrn60.xcworkspace/contents.xcworkspacedata b/ios/csareactrn60.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..9a56110 --- /dev/null +++ b/ios/csareactrn60.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/csareactrn60.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/csareactrn60.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/csareactrn60.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/csareactrn60/AppDelegate.h b/ios/csareactrn60/AppDelegate.h new file mode 100644 index 0000000..2726d5e --- /dev/null +++ b/ios/csareactrn60/AppDelegate.h @@ -0,0 +1,15 @@ +/** + * 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. + */ + +#import +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/ios/csareactrn60/AppDelegate.m b/ios/csareactrn60/AppDelegate.m new file mode 100644 index 0000000..43e4058 --- /dev/null +++ b/ios/csareactrn60/AppDelegate.m @@ -0,0 +1,73 @@ +/** + * 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. + */ + +#import "AppDelegate.h" + +#import +#import +#import + +#import +#import "RNSplashScreen.h" + +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + + if ([FIRApp defaultApp] == nil) { + [FIRApp configure]; + } + + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge + moduleName:@"csareactrn60" + initialProperties:nil]; + + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + + [RNSplashScreen show]; + + [[FBSDKApplicationDelegate sharedInstance] application:application + didFinishLaunchingWithOptions:launchOptions]; + return YES; +} + + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation { + + BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation + ]; + // Add any custom logic here. + return handled; +} + + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +@end diff --git a/ios/csareactrn60/Base.lproj/LaunchScreen.xib b/ios/csareactrn60/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..658cacd --- /dev/null +++ b/ios/csareactrn60/Base.lproj/LaunchScreen.xib @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/csareactrn60/GoogleService-Info.plist b/ios/csareactrn60/GoogleService-Info.plist new file mode 100644 index 0000000..fe63b5b --- /dev/null +++ b/ios/csareactrn60/GoogleService-Info.plist @@ -0,0 +1,40 @@ + + + + + AD_UNIT_ID_FOR_BANNER_TEST + ca-app-pub-3940256099942544/2934735716 + AD_UNIT_ID_FOR_INTERSTITIAL_TEST + ca-app-pub-3940256099942544/4411468910 + CLIENT_ID + 468878476620-dn0mrhcve5jjpfst3u1vlm4k00uackb6.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.468878476620-dn0mrhcve5jjpfst3u1vlm4k00uackb6 + API_KEY + AIzaSyAVK68_yvW24xUwOijmsFiTxpWcuTer3iY + GCM_SENDER_ID + 468878476620 + PLIST_VERSION + 1 + BUNDLE_ID + th.co.csasset.mobile + PROJECT_ID + csasset-mobile + STORAGE_BUCKET + csasset-mobile.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:468878476620:ios:61e2ca18a6ba4174 + DATABASE_URL + https://csasset-mobile.firebaseio.com + + \ No newline at end of file diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/100.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/100.png new file mode 100644 index 0000000..59b724c Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/100.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/1024.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/1024.png new file mode 100644 index 0000000..70f530e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/1024.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/114.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/114.png new file mode 100644 index 0000000..797d880 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/114.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120-1.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120-1.png new file mode 100644 index 0000000..9a5cc3e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120-1.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120.png new file mode 100644 index 0000000..22c198e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/120.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/144.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/144.png new file mode 100644 index 0000000..ab71d66 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/144.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/152.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/152.png new file mode 100644 index 0000000..5423fd4 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/152.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/167.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/167.png new file mode 100644 index 0000000..b5d0217 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/167.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/180.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/180.png new file mode 100644 index 0000000..f559c3d Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/180.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/20.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/20.png new file mode 100644 index 0000000..ae360de Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/20.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/29.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/29.png new file mode 100644 index 0000000..30c3c63 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/29.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-1.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-1.png new file mode 100644 index 0000000..9351ae8 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-1.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-2.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-2.png new file mode 100644 index 0000000..9351ae8 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40-2.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40.png new file mode 100644 index 0000000..051af80 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/40.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/50.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/50.png new file mode 100644 index 0000000..df80684 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/50.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/57.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/57.png new file mode 100644 index 0000000..a29a63e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/57.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58-1.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58-1.png new file mode 100644 index 0000000..e07e4d2 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58-1.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58.png new file mode 100644 index 0000000..edb4767 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/58.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/60.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/60.png new file mode 100644 index 0000000..a81e42e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/60.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/72.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/72.png new file mode 100644 index 0000000..f8f2a82 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/72.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/76.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/76.png new file mode 100644 index 0000000..827cc03 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/76.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80-1.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80-1.png new file mode 100644 index 0000000..7d02c49 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80-1.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80.png new file mode 100644 index 0000000..b6b7a7b Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/80.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/87.png b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/87.png new file mode 100644 index 0000000..6f2ca97 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/87.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/Contents.json b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/Contents.json new file mode 100644 index 0000000..c2cfd1c --- /dev/null +++ b/ios/csareactrn60/Images.xcassets/AppIcon-2.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"}]} \ No newline at end of file diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/100.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000..59b724c Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/100.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/1024.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000..70f530e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/1024.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/114.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000..797d880 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/114.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/120.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000..22c198e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/120.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/144.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000..ab71d66 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/144.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/152.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000..5423fd4 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/152.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/167.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 0000000..b5d0217 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/167.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/180.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000..f559c3d Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/180.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/20.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 0000000..ae360de Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/20.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/29.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000..30c3c63 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/29.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/40.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 0000000..051af80 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/40.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/50.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000..df80684 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/50.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/57.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000..a29a63e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/57.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/58.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 0000000..edb4767 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/58.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/60.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 0000000..a81e42e Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/60.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/72.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000..f8f2a82 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/72.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/76.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000..827cc03 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/76.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/80.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 0000000..b6b7a7b Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/80.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/87.png b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 0000000..6f2ca97 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/87.png differ diff --git a/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..c2cfd1c --- /dev/null +++ b/ios/csareactrn60/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"}]} \ No newline at end of file diff --git a/ios/csareactrn60/Images.xcassets/Contents.json b/ios/csareactrn60/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/ios/csareactrn60/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/csareactrn60/Images.xcassets/icon-splash.imageset/Contents.json b/ios/csareactrn60/Images.xcassets/icon-splash.imageset/Contents.json new file mode 100644 index 0000000..85442a3 --- /dev/null +++ b/ios/csareactrn60/Images.xcassets/icon-splash.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_splash.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/csareactrn60/Images.xcassets/icon-splash.imageset/ic_splash.png b/ios/csareactrn60/Images.xcassets/icon-splash.imageset/ic_splash.png new file mode 100644 index 0000000..6eb8075 Binary files /dev/null and b/ios/csareactrn60/Images.xcassets/icon-splash.imageset/ic_splash.png differ diff --git a/ios/csareactrn60/Info.plist b/ios/csareactrn60/Info.plist new file mode 100644 index 0000000..b5d461e --- /dev/null +++ b/ios/csareactrn60/Info.plist @@ -0,0 +1,170 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + CSASSET Mobile + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + CSASSET Mobile + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLSchemes + + fb2445409335553902 + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + FacebookAppID + 2445409335553902 + FacebookDisplayName + CSASSET + ITSAppUsesNonExemptEncryption + + LSApplicationQueriesSchemes + + fbapi + fb-messenger-share-api + fbauth2 + fbshareextension + + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSCameraUsageDescription + This app needs access to the camera to take photos to upload profile picture and create support ticket. + NSLocationWhenInUseUsageDescription + Access current location. + NSMicrophoneUsageDescription + Access audio from camera. + NSPhotoLibraryAddUsageDescription + Choose a picture for user profile image or save image. + NSPhotoLibraryUsageDescription + This app needs access to choose photos to upload profile picture and create support ticket. + UIAppFonts + + arial.ttf + HelveticaBlkIt.ttf + HelveticaNeue-Black.otf + HelveticaNeue-BlackCond.otf + HelveticaNeue-BlackCondObl.otf + HelveticaNeue-BlackExt.otf + HelveticaNeue-BlackExtObl.otf + HelveticaNeue-BoldCondObl.otf + HelveticaNeue-BoldExt.otf + HelveticaNeue-BoldExtObl.otf + HelveticaNeue-Condensed.otf + HelveticaNeue-CondensedObl.otf + HelveticaNeue-ExtBlackCond.otf + HelveticaNeue-ExtBlackCondObl.otf + HelveticaNeue-Extended.otf + HelveticaNeue-ExtendedObl.otf + HelveticaNeue-Heavy.otf + HelveticaNeue-HeavyCond.otf + HelveticaNeue-HeavyCondObl.otf + HelveticaNeue-HeavyExt.otf + HelveticaNeue-HeavyExtObl.otf + HelveticaNeue-HeavyItalic.otf + HelveticaNeue-LightCondObl.otf + HelveticaNeue-LightExt.otf + HelveticaNeue-LightExtObl.otf + HelveticaNeue-MediumCond.otf + HelveticaNeue-MediumCondObl.otf + HelveticaNeue-MediumExt.otf + HelveticaNeue-MediumExtObl.otf + HelveticaNeue-Roman.otf + HelveticaNeue-Thin.otf + HelveticaNeue-ThinCond.otf + HelveticaNeue-ThinCondObl.otf + HelveticaNeue-ThinExtObl.otf + HelveticaNeue-ThinItalic.otf + HelveticaNeue-UltraLigCond.otf + HelveticaNeue-UltraLigCondObl.otf + HelveticaNeue-UltraLigExt.otf + HelveticaNeueBoldItalic.ttf + HelveticaNeueItalic.ttf + HelveticaNeueLight.ttf + HelveticaNeueLightItalic.ttf + HelveticaNeueMedium.ttf + HelveticaNeueUltraLight.ttf + Prompt-Black.ttf + Prompt-BlackItalic.ttf + Prompt-Bold.ttf + Prompt-BoldItalic.ttf + Prompt-ExtraBold.ttf + Prompt-ExtraBoldItalic.ttf + Prompt-ExtraLight.ttf + Prompt-ExtraLightItalic.ttf + Prompt-Italic.ttf + Prompt-Light.ttf + Prompt-LightItalic.ttf + Prompt-Medium.ttf + Prompt-MediumItalic.ttf + Prompt-Regular.ttf + Prompt-SemiBold.ttf + Prompt-SemiBoldItalic.ttf + Prompt-Thin.ttf + Prompt-ThinItalic.ttf + icomoon.ttf + AntDesign.ttf + Entypo.ttf + EvilIcons.ttf + Feather.ttf + FontAwesome.ttf + FontAwesome5_Brands.ttf + FontAwesome5_Regular.ttf + FontAwesome5_Solid.ttf + Foundation.ttf + Ionicons.ttf + MaterialIcons.ttf + MaterialCommunityIcons.ttf + SimpleLineIcons.ttf + Octicons.ttf + Zocial.ttf + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UIRequiresFullScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UIUserInterfaceStyle + Light + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/csareactrn60/csareactrn60.entitlements b/ios/csareactrn60/csareactrn60.entitlements new file mode 100644 index 0000000..903def2 --- /dev/null +++ b/ios/csareactrn60/csareactrn60.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/ios/csareactrn60/main.m b/ios/csareactrn60/main.m new file mode 100644 index 0000000..c316cf8 --- /dev/null +++ b/ios/csareactrn60/main.m @@ -0,0 +1,16 @@ +/** + * 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. + */ + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..13a9642 --- /dev/null +++ b/metro.config.js @@ -0,0 +1,17 @@ +/** + * Metro configuration for React Native + * https://github.com/facebook/react-native + * + * @format + */ + +module.exports = { + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + }, +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..acea183 --- /dev/null +++ b/package.json @@ -0,0 +1,80 @@ +{ + "name": "charoensin", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "react-native start", + "test": "jest", + "lint": "eslint .", + "postinstall": "sh ./fix.sh", + "prod-android": "cd android && ./gradlew assembleRelease", + "run-android": "react-native run-android", + "run-ios": "react-native run-ios --simulator \"iPhone 11\"" + }, + "rnpm": { + "assets": [ + "./assets/fonts", + "./assets/icons" + ] + }, + "dependencies": { + "@react-native-community/cameraroll": "^1.2.1", + "apisauce": "^1.1.0", + "deprecated-react-native-listview": "^0.0.5", + "i18n-js": "^3.5.1", + "intl": "^1.2.5", + "moment": "^2.24.0", + "native-base": "^2.13.8", + "react": "16.9.0", + "react-native": "0.61.5", + "react-native-action-sheet": "^2.2.0", + "react-native-appearance": "^0.2.2", + "react-native-device-info": "^5.5.7", + "react-native-easy-grid": "^0.2.2", + "react-native-elastic-image-slider": "^1.0.0", + "react-native-elements": "^1.2.0", + "react-native-fast-image": "^8.1.5", + "react-native-fbsdk": "^1.1.2", + "react-native-firebase": "^5.5.6", + "react-native-gesture-handler": "^1.4.1", + "react-native-hyperlink": "^0.0.16", + "react-native-image-crop-picker": "0.25.3", + "react-native-image-slider-show": "^1.0.3", + "react-native-image-slideshow": "^1.0.1", + "react-native-image-view": "^2.1.5", + "react-native-linear-gradient": "^2.5.6", + "react-native-modal-datetime-picker": "^7.5.0", + "react-native-picker-dropdown": "^0.1.2", + "react-native-qrcode": "^0.2.7", + "react-native-qrcode-svg": "^5.2.0", + "react-native-render-html": "^4.1.2", + "react-native-screens": "^2.7.0", + "react-native-searchable-dropdown": "^1.1.1", + "react-native-signature-canvas": "^2.4.0", + "react-native-snap-carousel": "^3.8.0", + "react-native-splash-screen": "^3.2.0", + "react-native-svg": "^9.9.3", + "react-native-switch-toggle": "^1.1.0", + "react-native-vector-icons": "^6.6.0", + "react-native-view-shot": "^3.0.2", + "react-native-webview": "^9.4.0", + "react-navigation": "^3.3.0", + "react-redux": "^7.1.1", + "redux": "^4.0.4", + "redux-persist": "^5.10.0", + "redux-persist-transform-encrypt": "^2.0.1" + }, + "devDependencies": { + "@babel/core": "^7.6.0", + "@babel/runtime": "^7.6.0", + "@react-native-community/eslint-config": "^0.0.5", + "babel-jest": "^24.9.0", + "eslint": "^6.3.0", + "jest": "^24.9.0", + "metro-react-native-babel-preset": "^0.56.0", + "react-test-renderer": "16.8.6" + }, + "jest": { + "preset": "react-native" + } +} diff --git a/src/api/UserApi.js b/src/api/UserApi.js new file mode 100644 index 0000000..87f976a --- /dev/null +++ b/src/api/UserApi.js @@ -0,0 +1,238 @@ +import Api from './api' +import { Platform } from 'react-native' +import Config from 'src/utils/Config' +import DeviceInfo from 'react-native-device-info' + +export const getUserProfile = () => { + return Api.get('/me'); +} + +export const testConnect = () => { + return Api.get('/'); +} + +export const registerDevice = (pushToken) => { + return Api.post('/register/device', { + push_token: pushToken, + uid: DeviceInfo.getUniqueId(), + brand: DeviceInfo.getBrand(), + model: DeviceInfo.getModel() + }); +} + +export const register = (user) => { + return Api.post('/register', + user + ); +} + +export const login = (params) => { + return Api.post('/login', + params + ); +} + +export const dashboard = (params) => { + return Api.get('/me/dashboard'); +} + +export const getNews = (params) => { + return Api.get('/news'); +} + +export const getNewsPage = (page = 1) => { + return Api.get('/news?page='+page); +} + +export const getNewsDetail = (news_id) => { + return Api.get('/news/'+news_id); +} + +export const getNewsByProject = (project_id) => { + return Api.get('/news_projects/'+project_id); +} + +export const project = (keyword) => { + return Api.get('/project'); +} + +export const getBuildingByProjectId = (project_id) => { + return Api.get(`/project/${project_id}/building`); +} + +export const room = (project_id) => { + return Api.get(`/room/?project_id=${project_id}`); +} + +export const roomdetail = (room_id) => { + return Api.get('/room_detail', { + room_id: room_id + }); +} + +export const payment = (user_id) => { + return Api.get('/payment', { + user_id: user_id + }); +} + +export const payment_detail = (payments_id) => { + return Api.get('/payment/'+payments_id); +} + +export const total_payment = (user_id) => { + return Api.get('/payment/' + user_id); +} + +export const edit_profile = (user) => { + const formData = new FormData() + for (let k in user) { + formData.append(k, user[k]) + } + return Api.post('/me/profile', formData ); +} + +export const get_notification = (user_id, page) => { + return Api.get('/notification', { + user_id: user_id, + page: page + }) +} + +export const read_notification = (noti_id) => { + return Api.post('/notification',{noti_id: noti_id}) +} + +export const count_notification = (user_id) => { + return Api.get('/notification/count', { + user_id: user_id + }) + +} + +export const getSubscription = (customer_id,type) => { + return Api.get('/subscription', { + customer_id: customer_id, + type: type, + }) +} + +export const postSubscription = (customer_id,type) => { + return Api.post('/subscription', { + customer_id: customer_id, + type: type, + }) +} + +export const getProductList = () => { + return Api.get('/product'); +} + +export const getProductDetail = (product_id) => { + return Api.get('/product/'+product_id); +} + +export const getServices = () => { + return Api.get('/service'); +} + +export const getServicesType = (service_id) => { + return Api.get('/service/type/'+service_id); +} + +export const getServicesDetail = (service_id) => { + return Api.get('/service/'+service_id); +} + +export const getRepairList = (service_id) => { + return Api.get('/repair'); +} + +export const getRepairById = (repair_id) => { + return Api.get('/repair/'+repair_id); +} + +export const postRepair = (param) => { + return Api.post('/repair',param) +} + +export const postReserveRoom = (room_id,params) => { + return Api.post(`/room/${room_id}/reserve`, params) +} + +//Suggestion +export const postSuggestion = (params) => { + const formData = new FormData() + for (let k in params) { + formData.append(k, params[k]) + } + return Api.post('/suggestion',formData) +} + +export const postSuggestionLogin = (params) => { + const formData = new FormData() + for (let k in params) { + formData.append(k, params[k]) + } + return Api.post('/service_suggestion',formData) +} + + +//Question & Answer +export const getConversation = () => { + return Api.get('/conversation'); +} + +export const postConversation = (param) => { + return Api.post('/conversation/messages',param); +} + +//Object & Message +export const getObjectMessage = () => { + return Api.get('/parcel'); +} + +export const postSignatureImage = (params) => { + const formData = new FormData() + for (let k in params) { + formData.append(k, params[k]) + } + return Api.post('/parcel',formData); +} + +export const getObjectMessageByID = (id) => { + return Api.get(`/parcel/${id}`); +} + +//Meter +export const getMeterList = () => { + return Api.get('/meter'); +} + +export const getRoomSlideList = (roon_id) => { + return Api.get('/meter?room_id='+roon_id); +} + +export const postMeter = (params) => { + const formData = new FormData() + for (let k in params) { + formData.append(k, params[k]) + } + + return Api.post('/meter',formData); +} + +export const postMeterImage = (params) => { + const formData = new FormData() + for (let k in params) { + formData.append(k, params[k]) + } + + return Api.post('/ocr',formData); +} + +export const disconnectFacebook = (user) => { + return Api.post('/disconnectFacebook', + user + ); +} diff --git a/src/api/api.js b/src/api/api.js new file mode 100644 index 0000000..46fc8b8 --- /dev/null +++ b/src/api/api.js @@ -0,0 +1,91 @@ +import { create } from 'apisauce' +import Config from 'src/utils/Config' +import DeviceInfo from 'react-native-device-info' +import { Alert, NetInfo, Platform } from 'react-native' +import NavigationService from 'src/utils/NavigationService' + +// import { strings as t } from '../i18n' +// import { userLogout } from 'src/redux/app/action' +// import I18n from 'i18n-js' + +let store + +const Api = create({ + baseURL: Config.API_BASE_URL, + headers: { + 'X-Frame-Options': 'sameorigin', + 'X-App-Version': DeviceInfo.getVersion(), + 'X-Device-OS': Platform.OS, + 'X-Device-Version': Platform.Version, + } +}) + +DeviceInfo.getDeviceName().then(name => { + Api.setHeader('X-Device-Name', name) +}) + +Api.addRequestTransform(request => { + // request.headers['X-App-Locale'] = I18n.locale +}) +if (process.env.NODE_ENV !== 'production') { + Api.addRequestTransform(request => { + console.info('--> [' + request.method + '] ' + Api.getBaseURL() + request.url,request.params, request.data) + console.info('header --' + request.url +' -- ', request.headers) + }) + Api.addMonitor(response => { + console.info('<-- ' + response.status + ' --- ' + response.config.url,response) + }) +} + +// error alert monitor +Api.addMonitor(response => { + if (!response.ok) { + switch (response.problem) { + case 'CONNECTION_ERROR': + case 'NETWORK_ERROR': + case 'TIMEOUT_ERROR': + // Alert.alert('error_internet_title', 'error_internet_message', [{text: 'ok'}]) + break + case 'SERVER_ERROR': + case 'CANCEL_ERROR': + case 'CLIENT_ERROR': // 4XX + if (response.status === 401) { + // store.dispatch(userLogout) + Alert.alert('Session timeout', 'Please login again to continue using application', [ + { + text: 'ok', + onPress: () => { + // NavigationService.navigate('AppLoading') + } + } + ], {cancelable: false}) + return + } + // Alert.alert(null, 'error_getting_data', [{text: 'ok'}]) + break + } + } +}) + +export function setStore(reduxStore) { + store = reduxStore +} + +export function setToken(token) { + Api.setHeader('Authorization', 'Bearer ' + token) +} + +export function setLanguage (languageCode) { + Api.setHeader('language', languageCode) +} + +export function clearToken() { + Api.deleteHeader('Authorization') +} + +export function setLocation(lat, lng) { + Api.setHeader('X-Current-Latitude', lat.toString() || '0.0') + Api.setHeader('X-Current-Longitude', lng.toString() || '0.0') +} + +export default Api \ No newline at end of file diff --git a/src/color.js b/src/color.js new file mode 100644 index 0000000..4c03815 --- /dev/null +++ b/src/color.js @@ -0,0 +1,6 @@ +export default { + gray_half: '#00000080', + green_title: '#2C7C0B', + blue: '#145EB3', + button_blue: '#145EB3' +} \ No newline at end of file diff --git a/src/components/BackgroundImage.js b/src/components/BackgroundImage.js new file mode 100644 index 0000000..d522abe --- /dev/null +++ b/src/components/BackgroundImage.js @@ -0,0 +1,24 @@ +import React, { Component } from 'react' +import ImageBackground from 'react-native-fast-image' +export class BackgroundImage extends Component { + + render() { + const props = this.props; + return ( + + + {this.props.children} + + + ) + } +} + +const styles = { + backgroundImage: { + flex: 1, + width: null, + height: null, + resizeMode: 'cover' + } +}; \ No newline at end of file diff --git a/src/components/BackgroundImage_RegisterForm.js b/src/components/BackgroundImage_RegisterForm.js new file mode 100644 index 0000000..d407c9e --- /dev/null +++ b/src/components/BackgroundImage_RegisterForm.js @@ -0,0 +1,26 @@ +import React, { Component } from 'react' +import ImageBackground from 'react-native-fast-image' + +export class BackgroundImage_RegisterForm extends Component { + + render() { + const props = this.props; + return ( + + + {this.props.children} + + + ) + } +} + +const styles = { + backgroundImage: { + + flex: 1, + width: null, + height: null, + resizeMode: 'cover' + } +}; \ No newline at end of file diff --git a/src/components/CustomButton.js b/src/components/CustomButton.js new file mode 100644 index 0000000..a2c45c6 --- /dev/null +++ b/src/components/CustomButton.js @@ -0,0 +1,52 @@ +import React, { Component } from 'react' +import { TouchableOpacity, View } from 'react-native' +import Icon from 'src/components/Icon' +import Text from 'src/components/Text'; +export class CustomButton extends Component { + + render() { + const props = this.props; + + + return ( + + {props.iconName && + + + } + {props.title && + {props.title} + + } + + + ) + + + } +} + +const styles = { + custom_button_container: { + // flex:1, + // flexDirection: 'row', + height: 35, + abckgroundColor: '#FF9500', + borderRadius: 5, + width: '100%', + justifyContent: 'center', + alignItems: 'center', + }, + icon: { + justifyContent: 'center', + // alignItems: '', + // flex: 1, + paddingLeft: 5, + paddingRight: 5 + }, +} + diff --git a/src/components/CustomDatePicker.js b/src/components/CustomDatePicker.js new file mode 100644 index 0000000..a7e2417 --- /dev/null +++ b/src/components/CustomDatePicker.js @@ -0,0 +1,91 @@ +import React, { Component } from 'react' +import { View } from 'react-native' +import { DatePicker, Picker } from 'native-base' +import Icon from 'src/components/Icon' +import Text from 'src/components/Text' + +export class CustomDatePicker extends Component { + + render() { + const props = this.props + return ( + + {props.iconName && + + + } + {props.labelName && + {props.labelName} + + } + + + + + {/* */} + + + + + + ) + } +} + +const styles = { + container: { + flexGrow: 1, + flexDirection: 'row', + borderRadius: 5, + height: 40, + maxHeight: 48, + minHeight: 40, + paddingHorizontal: 5, + backgroundColor: '#FFF' + }, + icon: { + justifyContent: 'center', + // alignItems: '', + // flex: 1, + paddingLeft: 5, + paddingRight: 5 + }, + date_time_reservation: { + marginLeft: 5, + marginRight: 0, + width: '100%', + height: 40, + borderRadius: 5, + display: 'flex', + alignItems: 'center', + backgroundColor: 'transparent', + position: 'relative', + zIndex: 5, + }, +} + diff --git a/src/components/CustomInput.js b/src/components/CustomInput.js new file mode 100644 index 0000000..69c8e4c --- /dev/null +++ b/src/components/CustomInput.js @@ -0,0 +1,58 @@ +import React, { Component } from 'react' +import { TextInput, View } from 'react-native' +import Icon from 'src/components/Icon' +import Text from 'src/components/Text'; +export class CustomInput extends Component { + + render() { + let props = this.props + return ( + + {props.iconName && + + + } + {props.labelName && + {props.labelName} + + } + + + + + + ) + } +} + +const styles = { + container: { + flexGrow: 1, + flexDirection: 'row', + borderRadius: 5, + height: 40, + maxHeight: 48, + minHeight: 40, + paddingHorizontal: 5, + backgroundColor: '#FFF' + }, + icon: { + justifyContent: 'center', + // alignItems: '', + // flex: 1, + paddingLeft: 5, + paddingRight: 5 + }, + input: { + // width: 100, + // alignItems: 'flex-start', + color: 'rgba(0, 0, 0, 0.5)', + overflow: 'hidden', + fontSize: 14 + } +} diff --git a/src/components/CustomPicker.js b/src/components/CustomPicker.js new file mode 100644 index 0000000..9c42832 --- /dev/null +++ b/src/components/CustomPicker.js @@ -0,0 +1,100 @@ +import React, { Component } from 'react' +import { TextInput, View, Platform } from 'react-native' +import Icon from 'src/components/Icon' +import { Picker } from 'native-base' +import Text from 'src/components/Text' + +export class CustomPicker extends Component { + + render() { + let props = this.props + + return ( + + {props.iconName && + + + } + {props.labelName && + {props.labelName} + + } + + + + + {Platform.OS === 'android' && + + } + {(props.dataSource && props.dataSource.length > 0) && + props.dataSource.map((item, index) => { + return () + }) + } + + + + + + + ) + } +} + +const styles = { + container: { + flexGrow: 1, + flexDirection: 'row', + borderRadius: 5, + height: 40, + maxHeight: 48, + minHeight: 40, + paddingHorizontal: 5, + backgroundColor: '#FFF' + }, + icon: { + justifyContent: 'center', + // alignItems: '', + // flex: 1, + paddingLeft: 5, + paddingRight: 5 + }, + input: { + // width: 100, + // alignItems: 'flex-start', + color: 'rgba(0, 0, 0, 0.5)', + overflow: 'hidden', + fontSize: 14 + }, + picker: { + + color:'white', + flex: 1, + // marginTop: -6 + marginVertical: 0, + // padding: 0, + // justifyContent: 'center', + // alignItems: 'center' + }, + pickerItem: { + // flex: 1, + // marginTop: -6 + // marginVertical: 0, + // padding: 0, + // justifyContent: 'center', + // alignItems: 'center', + // backgroundColor: 'red', + textAlign: 'center', + color: 'blue' + } +} diff --git a/src/components/FacebookUtils.js b/src/components/FacebookUtils.js new file mode 100644 index 0000000..ff46b17 --- /dev/null +++ b/src/components/FacebookUtils.js @@ -0,0 +1,121 @@ +import { AccessToken, GraphRequest, GraphRequestManager, LoginManager } from 'react-native-fbsdk'; +import { setToken } from '../api/api' +import { appSetToken, appSetUser, appSetFacebook } from '../redux/app/action' +import { login, disconnectFacebook } from '../api/UserApi' +import { store } from '../redux/store' +import { Alert } from 'react-native' +import NavigationService from '../utils/NavigationService'; + + +let requestManager = new GraphRequestManager(); + +export function loginWithFacebook(onSuccess){ + LoginManager.logInWithPermissions(["public_profile","email"]) + .then( + (result) => { + if (!result.isCancelled || result.grantedPermissions.length !== permissions.length) { + // console.log('login with facebook get access token') + AccessToken.getCurrentAccessToken().then( + (data) => { + LoginManager.logOut() + + const accessToken = data.accessToken.toString() + + loginAccessTokenToServer(accessToken,onSuccess) + } + ) + // console.log("Login success with permissions: " + result.grantedPermissions.toString()); + } + }, + function(error) { + // console.log("Login fail with error: " + error); + } + ); +} + +function loginAccessTokenToServer(accessToken,onSuccess){ + let params = { + access_token: accessToken, + } + login(params) + .then(async (res) => { + if(res.status == 500){ + Alert.alert('','ไม่สามารถเชื่อมต่อกับเซิฟเวอร์ได้ กรุณาลองใหม่อีกครั้ง') + return + } + + if (res.ok) { + if (res.data.token) { + //Alert.alert('Connect with Facebook Success') + setToken(res.data.token) + store.dispatch(appSetToken(res.data.token)) + store.dispatch(appSetUser(res.data.user)) + onSuccess && onSuccess() + } + } else { + if(res.data.msg != null){ + Alert.alert('',res.data.msg) + } + } + }) +} + +export function logoutFacebook() { + LoginManager.logOut() +} + + +export function disconnectWithFacebook(onSuccess){ + + AccessToken.getCurrentAccessToken().then( + (data) => { + console.log("AccessToken.getCurrentAccessToken():") + console.log(data) + + const accessToken = data.accessToken.toString() + //console.log("accessToken:") + //console.log(accessToken) + + let params = { + access_token: accessToken, + } + + //alert(accessToken) + //onSuccess && onSuccess() + + disconnectFacebook(params) + .then(async (res) => { + if(res.status == 500){ + Alert.alert('','ไม่สามารถเชื่อมต่อกับเซิฟเวอร์ได้ กรุณาลองใหม่อีกครั้ง') + return + } + + if (res.ok) { + Alert.alert('Disconnect with Facebook Success') +// if (res.data.token) { +// setToken(res.data.token) +// store.dispatch(appSetToken(res.data.token)) + + this.state.user.fb_token = null + this.state.user.fb_is_link = 'f' + //Alert.alert(this.state.user) + //console.log('console.log(this.state.user):') + //console.log(this.state.user) +// store.dispatch(appSetUser(this.state.user)) +// store.dispatch(appSetFacebook('f')) + onSuccess && onSuccess() +// } + } else { + if(res.data.msg != null){ + Alert.alert('',res.data.msg) + } + } + }) + + + + } + ) + + +} diff --git a/src/components/GetWidthHeightDevice.js b/src/components/GetWidthHeightDevice.js new file mode 100644 index 0000000..a1412b7 --- /dev/null +++ b/src/components/GetWidthHeightDevice.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react' +import { Dimensions, StatusBar } from 'react-native' +import { Header } from 'react-navigation' + +const {height, width} = Dimensions.get('window') + +const HeightDevice = height +const WidthDevice = width + +const HeightStatusBar = StatusBar.currentHeight +const HeightHeader = Header.HEIGHT +const HeightContainer = height - Header.HEIGHT - StatusBar.currentHeight + +export default {HeightDevice, WidthDevice, HeightStatusBar, HeightHeader, HeightContainer} \ No newline at end of file diff --git a/src/components/Icon.js b/src/components/Icon.js new file mode 100644 index 0000000..5a17a10 --- /dev/null +++ b/src/components/Icon.js @@ -0,0 +1,6 @@ +import { createIconSetFromIcoMoon } from 'react-native-vector-icons' +import icoMoonConfig from '../../assets/icons/selection.json' + +const Icon = createIconSetFromIcoMoon(icoMoonConfig, 'IcoMoon', 'icomoon.ttf') + +export default Icon \ No newline at end of file diff --git a/src/components/ImageSliderz.js b/src/components/ImageSliderz.js new file mode 100644 index 0000000..bf03610 --- /dev/null +++ b/src/components/ImageSliderz.js @@ -0,0 +1,410 @@ +/** + * Created by jsking on 8/10/18. + */ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { + Image, + View, + ScrollView, + StyleSheet, + Animated, + PanResponder, + TouchableHighlight, + TouchableOpacity, + Dimensions +} from 'react-native'; +import { Badge } from 'native-base' +import Icon from '../components/Icon' +import Text from '../components/Text' +import reactNativePackage from 'react-native/package.json'; +import LinearGradient from 'react-native-linear-gradient'; +import { t } from '../utils/i18n'; +const splitVersion = reactNativePackage.version.split('.'); +const majorVersion = +splitVersion[0]; +const minorVersion = +splitVersion[1]; + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + backgroundColor: '#222', + }, + layoutIndicator: { + height: 15, + position: 'absolute', + bottom: 5, + left: 0, + right: 0, + justifyContent: 'center', + alignItems: 'center', + flexDirection: 'row', + backgroundColor: 'transparent', + }, + indicator: { + margin: 3, + opacity: 0.9 + }, + indicatorSelected: { + opacity: 1, + }, + containerImage: { + flex: 1, + width: Dimensions.get('window').width, + + }, + overlay: { + opacity: 0.5, + backgroundColor: 'black', + }, + layoutText: { + position: 'absolute', + paddingHorizontal: 15, + bottom: 30, + left: 0, + right: 0, + justifyContent: 'flex-start', + alignItems: 'flex-start', + flexDirection: 'column', + //backgroundColor: 'transparent', + }, + textTitle: { + fontWeight: undefined, + fontSize: 15, + color: 'white', + }, + textCaption: { + fontWeight: undefined, + fontSize: 12, + color: 'white', + } +}); + +export default class ImageSliderz extends Component { + constructor(props) { + super(props); + + this.state = { + position: 0, + height: Dimensions.get('window').width * (4 / 9), + width: Dimensions.get('window').width, + scrolling: false, + }; + } + + _onRef(ref) { + this._ref = ref; + if (ref && this.state.position !== this._getPosition()) { + this._move(this._getPosition()); + } + } + + _move(index) { + const isUpdating = index !== this._getPosition(); + const x = this.state.width * index; + if (majorVersion === 0 && minorVersion <= 19) { + this._ref.scrollTo(0, x, true); // use old syntax + } else { + this._ref.scrollTo({ x: this.state.width * index, y: 0, animated: true }); + } + this.setState({ position: index }); + if (isUpdating && this.props.onPositionChanged) { + this.props.onPositionChanged(index); + } + } + + _getPosition() { + if (typeof this.props.position === 'number') { + return this.props.position; + } + return this.state.position; + } + + _next() { + const pos = this.state.position === this.props.dataSource.length - 1 ? 0 : this.state.position + 1; + this._move(pos); + this.setState({ position: pos }); + } + + _prev() { + const pos = this.state.position === 0 ? this.props.dataSource.length - 1 : this.state.position - 1; + this._move(pos); + this.setState({ position: pos }); + } + + componentDidUpdate(prevProps) { + if (prevProps.position !== this.props.position) { + this._move(this.props.position); + } + } + + componentWillMount() { + const width = this.state.width; + + let release = (e, gestureState) => { + const width = this.state.width; + const relativeDistance = gestureState.dx / width; + const vx = gestureState.vx; + let change = 0; + + if (relativeDistance < -0.5 || (relativeDistance < 0 && vx <= 0.5)) { + change = 1; + } else if (relativeDistance > 0.5 || (relativeDistance > 0 && vx >= 0.5)) { + change = -1; + } + const position = this._getPosition(); + if (position === 0 && change === -1) { + change = 0; + } else if (position + change >= this.props.dataSource.length) { + change = (this.props.dataSource.length) - (position + change); + } + this._move(position + change); + return true; + }; + + this._panResponder = PanResponder.create({ + onPanResponderRelease: release + }); + + this._interval = setInterval(() => { + const newWidth = Dimensions.get('window').width; + if (newWidth !== this.state.width) { + this.setState({ width: newWidth }); + } + }, 16); + } + + componentWillUnmount() { + clearInterval(this._interval); + } + + render() { + const width = this.state.width; + const height = this.props.height || this.state.height; + const position = this._getPosition(); + return ( + + {/* SECTION IMAGE */} + + this._onRef(ref)} + decelerationRate={0.99} + horizontal={true} + showsHorizontalScrollIndicator={false} + scrollEnabled={this.props.scrollEnabled} + {...this._panResponder.panHandlers} + style={[ + styles.container, + { height: height } + ]}> + {this.props.dataSource.map((image, index) => { + const imageObject = typeof image.url === 'string' ? { uri: image.url } : image.url; + const textComponent = ( + + + {image.is_new == true ? {t('latest_news')} : null} + {image.title === undefined ? null : {image.title}} + {image.date === undefined ? null : {image.date}} + + + + ); + const imageComponent = ( + + + + {textComponent} + + ); + const imageComponentWithOverlay = ( + + + + + + {textComponent} + + ); + if (this.props.onPress) { + return ( + this.props.onPress({ image, index })} + delayPressIn={200}> + {this.props.overlay ? imageComponentWithOverlay : imageComponent} + + ); + } else { + return this.props.overlay ? imageComponentWithOverlay : imageComponent + } + })} + + {/* END SECTION IMAGE */} + {/* SECTION INDICATOR */} + + {this.props.dataSource.map((image, index) => { + return ( + { return this._move(index); }} + style={[ + [ + styles.indicator, + setIndicatorSize(this.props.indicatorSize), + setIndicatorColor(this.props.indicatorColor) + ], + position === index && + [ + styles.indicatorSelected, + setIndicatorColor(this.props.indicatorSelectedColor) + ] + ]}> + + ); + })} + + {/* END SECTION INDICATOR */} + {/* SECTION ARROW LEFT */} + + this._prev()}> + { + this.props.arrowRight == undefined ? + + : + this.props.arrowLeft + } + + + {/* END SECTION ARROW LEFT */} + {/* SECTION ARROW RIGHT */} + + this._next()}> + { + this.props.arrowRight == undefined ? + + : + this.props.arrowRight + } + + + {/* END SECTION ARROW RIGHT */} + + + ); + } +} + +ImageSliderz.defaultProps = { + height: 150, + indicatorSize: 8, + indicatorColor: '#CCCCCC', + indicatorSelectedColor: '#FFFFFF', + scrollEnabled: true, + arrowSize: 16, +} + +ImageSliderz.propTypes = { + dataSource: PropTypes.arrayOf(PropTypes.shape({ + title: PropTypes.string, + caption: PropTypes.string, + url: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + })).isRequired, + indicatorSize: PropTypes.number, + indicatorColor: PropTypes.string, + indicatorSelectedColor: PropTypes.string, + height: PropTypes.number, + position: PropTypes.number, + scrollEnabled: PropTypes.bool, + containerStyle: PropTypes.object, + overlay: PropTypes.bool, + arrowSize: PropTypes.number, + arrowLeft: PropTypes.object, + arrowRight: PropTypes.object, + onPress: PropTypes.func, + onPositionChanged: PropTypes.func, +}; + +const setIndicatorSize = function (size) { + return { + width: size, + height: size, + borderRadius: size / 2, + }; +} + +const setIndicatorColor = function (color) { + return { + backgroundColor: color, + }; +} + +const layoutArrow = function (imageHeight, iconHeight) { + return { + position: 'absolute', + backgroundColor: 'transparent', + justifyContent: 'flex-start', + alignItems: 'flex-start', + top: (imageHeight - iconHeight) / 2, + bottom: (imageHeight - iconHeight) / 2, + }; +} + +const iconArrow = function (iconHeight) { + return { + width: 0, + height: 0, + margin: 5, + backgroundColor: 'transparent', + borderStyle: 'solid', + borderTopColor: 'transparent', + borderBottomColor: 'transparent', + borderTopWidth: iconHeight / 2, + borderBottomWidth: iconHeight / 2, + }; +} + +const iconArrowRight = function (iconHeight) { + return { + borderRightWidth: 0, + borderLeftWidth: iconHeight * 75 / 100, + borderRightColor: 'transparent', + borderLeftColor: 'white', + }; +} + +const iconArrowLeft = function (iconHeight) { + return { + borderRightWidth: iconHeight * 75 / 100, + borderLeftWidth: 0, + borderRightColor: 'white', + borderLeftColor: 'transparent', + }; +} diff --git a/src/components/IndicatorLoading.js b/src/components/IndicatorLoading.js new file mode 100644 index 0000000..6475ecf --- /dev/null +++ b/src/components/IndicatorLoading.js @@ -0,0 +1,31 @@ +import React, { Component } from 'react'; +import { View, Modal, ActivityIndicator } from 'react-native'; +import Text from './Text'; + +export default class IndicatorLoading extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + + render() { + return ( + + { + Alert.alert('Modal has been closed.'); + }}> + + + + Loading... + + + + + ); + } +} diff --git a/src/components/SearchableDropDown.js b/src/components/SearchableDropDown.js new file mode 100644 index 0000000..962fa4b --- /dev/null +++ b/src/components/SearchableDropDown.js @@ -0,0 +1,147 @@ +import React, { Component } from 'react'; +import { + FlatList, + View, + TouchableOpacity, + Keyboard +} from 'react-native'; +// import {ListView} from 'deprecated-react-native-listview' +import {CustomInput} from './CustomInput' +import Icon from './Icon' +import Text from './Text' +// var ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); +export default class SearchableDropDown extends Component { + constructor(props) { + super(props); + this.state = { + item: {}, + listItems: [], + focus: false, + }; + this.renderList = this.renderList.bind(this); + }; + + renderList() { + if (this.state.focus) { + return ( + index.toString()} + renderItem={({ item }) => this.renderItems(item)} /> + // + // + ) + } + } + + renderFlatList() { + if (this.state.focus) { + return ( + index.toString()} + renderItem={({ item }) => this.renderItems(item)} /> + ) + } + } + + componentDidMount() { + const listItems = this.props.items; + const defaultIndex = this.props.defaultIndex; + if (defaultIndex && listItems.length > defaultIndex) { + this.setState({ + listItems, + item: listItems[defaultIndex] + }); + } + else { + this.setState({ listItems }); + } + } + + searchedItems = (searchedText) => { + var ac = this.props.items.filter(function (item) { + return item.name.toLowerCase().indexOf(searchedText.toLowerCase()) > -1; + }); + let item = { + id: -1, + name: searchedText + } + this.setState({ listItems: ac, item: item }); + + const onTextChange = this.props.onTextChange; + if (onTextChange && typeof onTextChange === 'function') { + setTimeout(() => { + onTextChange(searchedText); + }, 0); + } + }; + + renderItems = (item) => { + return ( + { + this.setState({ item: item, focus: false }); + Keyboard.dismiss(); + setTimeout(() => { + this.props.onItemSelect(item); + }, 0); + }}> + {item.name} + + ); + }; + + renderListType() { + return this.props.listType == 'ListView' ? this.renderList() : this.renderFlatList(); + } + + render() { + return ( + + + + + + { + this.setState({ + focus: true, + item: { + name: '', + id: 0 + }, + listItems: this.props.items + }); + }} + onBlur={() => { + this.setState({ focus: false }) + }} + ref={(e) => this.input = e} + onChangeText={(text) => { + this.searchedItems(text) + } + } + afterInput={'#269A21'} + inputTextAlign={'left'} + value={this.state.item.name} + style={{ ...this.props.textInputStyle , fontWeight:undefined ,color:'#269A21'}} + placeholderTextColor={this.props.placeholderTextColor} + placeholder={this.props.placeholder} /> + {this.renderListType()} + + + + + + ); + }; +} diff --git a/src/components/SliderEntry.js b/src/components/SliderEntry.js new file mode 100644 index 0000000..17557cc --- /dev/null +++ b/src/components/SliderEntry.js @@ -0,0 +1,73 @@ +import React, { Component } from 'react'; +import { View, Text, TouchableOpacity } from 'react-native'; +import Image from 'react-native-fast-image' +import PropTypes from 'prop-types'; +import { ParallaxImage } from 'react-native-snap-carousel'; +import styles from '../styles/SliderEntry.style'; + +export default class SliderEntry extends Component { + + static propTypes = { + data: PropTypes.object.isRequired, + even: PropTypes.bool, + parallax: PropTypes.bool, + parallaxProps: PropTypes.object + }; + + get image () { + const { data: { illustration }, parallax, parallaxProps, even } = this.props; + + return parallax ? ( + + ) : ( + + ); + } + + render () { + const { data: { title, subtitle }, even } = this.props; + + const uppercaseTitle = title ? ( + + { title.toUpperCase() } + + ) : false; + + return ( + { alert(`You've clicked '${title}'`); }} + > + + + { this.image } + + + + { uppercaseTitle } + + { subtitle } + + + + ); + } +} \ No newline at end of file diff --git a/src/components/StepIndicator.js b/src/components/StepIndicator.js new file mode 100644 index 0000000..df4ba5a --- /dev/null +++ b/src/components/StepIndicator.js @@ -0,0 +1,171 @@ +import React,{Component} from 'react' +import { Text, View } from 'react-native' +import Icon from 'src/components/Icon' + +class StepNumber extends Component { + render() { + if(this.props.isFinished) { + return( + + {this.props.number} + + ) + } else if(this.props.isCurrent) { + return( + + {this.props.number} + + ) + } else { + return( + + {this.props.number} + + ) + } + + } +} + +class LineStep extends Component { + render() { + if(this.props.isFinished){ + return( + + + + ) + }else if(this.props.isCurrent){ + return( + + + + ) + } else { + return( + + + + ) + } + } +} + +export class CustomStepIndicator extends Component { + + render() { + let items = []; + let currentStep = this.props.currentStep || 1; + for (let i = 1; i< this.props.totalStep+1; i++){ + if(i == this.props.totalStep){ + items.push( + i ? true:false} + isCurrent={currentStep == i ? true:false} + isUnFinished={currentStep < i ? true:false} + > + + ) + }else{ + items.push( + i ? true:false} + isCurrent={currentStep == i ? true:false} + isUnFinished={currentStep < i ? true:false} + > + + ) + items.push( + i ? true:false} + isCurrent={currentStep-1 == i ? true:false} + isUnFinished={currentStep > i ? true:false} + > + + ) + } + + } + + return( + + {items} + + ) + } + +} + +const styles = { + step_indicator : { + // flex: 1, + backgroundColor: 'transparent', + paddingTop:5, + paddingBottom:10, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center' + }, + step_number_text: { + fontSize: 12, + lineHeight: 14, + color: '#8BC34A' + }, + step_number_unfinished : { + borderRadius : 50, + width:24, + height: 24, + backgroundColor: 'rgba(0, 0, 0, 0.25)', + alignItems: 'center', + justifyContent: 'center', + }, + step_number_finished : { + borderRadius : 50, + width:24, + height: 24, + backgroundColor: '#FFFFFF', + alignItems: 'center', + justifyContent: 'center', + }, + step_number_current : { + borderRadius : 50, + width:24, + height: 24, + backgroundColor: '#FFFFFF', + alignItems: 'center', + justifyContent: 'center', + }, + line_step_unfinished: { + backgroundColor: '#8BC34A', + // backgroundColor: '#00420A', + height: 3, + marginLeft: 5, + marginRight: 5, + width: 50, + alignItems: 'center', + justifyContent: 'center', + }, + line_step_current: { + backgroundColor: '#00420A', + height: 3, + marginLeft: 5, + marginRight: 5, + width: 50, + alignItems: 'center', + justifyContent: 'center', + }, + line_step_finished: { + backgroundColor: '#00420A', + height: 3, + marginLeft: 5, + marginRight: 5, + width: 50, + alignItems: 'center', + justifyContent: 'center', + } +} diff --git a/src/components/Text.js b/src/components/Text.js new file mode 100644 index 0000000..a72744b --- /dev/null +++ b/src/components/Text.js @@ -0,0 +1,6 @@ +import React from 'react' +import { Text } from 'react-native' +Text.defaultProps = Text.defaultProps || {}; +Text.defaultProps.allowFontScaling = false; + +export default ({style, ...props}) => () \ No newline at end of file diff --git a/src/navigation/AppStack.js b/src/navigation/AppStack.js new file mode 100644 index 0000000..1614db8 --- /dev/null +++ b/src/navigation/AppStack.js @@ -0,0 +1,540 @@ +import React from 'react' +import { TouchableOpacity, View, StyleSheet } from 'react-native' +import Image from 'react-native-fast-image' +import { createStackNavigator, createBottomTabNavigator } from 'react-navigation' +import NewsScreen from '../screens/news/News' +import RoomScreen from '../screens/room/Room' +import ProductScreen from '../screens/product/Product' +import MeterScreen from '../screens/meters/Meter' +import BillScreen from '../screens/bill/Bill' +import NotificationScreen from '../screens/notification/Notification' +import ServiceScreen from '../screens/service/Service' +import NewsDetailScreen from '../screens/news/NewsDetail' +import RoomDetailScreen from '../screens/room/RoomDetail' +import SettingsNotificationScreen from '../screens/service/SettingNotification' +import SuggestionScreen from '../screens/service/Suggestion' +import EditProfileScreen from '../screens/profile/EditProfile' +import ProfileScreen from '../screens/profile/Profile' +import Icon from 'src/components/Icon' +import PersonRoomReservationScreen from '../screens/room/PersonRoomReservation' +import CompanyRoomReservationScreen from '../screens/room/CompanyRoomReservation' +import RoomHeaderReservationScreen from '../screens/room/RoomHeaderReservation' +import Text from 'src/components/Text'; +import { news } from '../api/UserApi'; +import { bindActionCreators } from 'redux' +import { appSetNotification } from '../redux/app/action' +import { connect } from 'react-redux' +import PaymentScreen from "../screens/bill/Payment"; +import MessageObject from '../screens/object/MessageObject'; +import MessageObjectDetail from '../screens/object/MessageObjectDetail'; +import RegisterScreen from '../screens/login/Register' +import RegisterProfileScreen from '../screens/login/RegisterProfile' +import RegisterFormLoginScreen from '../screens/login/RegisterFormLogin' +import LoginScreen from '../screens/login/Login' +import SignaturePadScreen from '../screens/object/SignaturePadScreen'; +import WaterMeter from '../screens/meters/WaterMeter'; +import PEAMeter from '../screens/meters/PEAMeter'; +import ZoneAreaScreen from '../screens/room/ZoneAreaScreen'; +import RepairServiceDetail from '../screens/repair/RepairServiceDetail'; +import RepairService from '../screens/repair/RepairService'; +import RepairConfirm from '../screens/repair/RepairConfirm'; +import RepairHistory from '../screens/repair/RepairHistory'; +import RepairSuccess from '../screens/repair/RepairSuccess'; +import RepairHistoryDetail from '../screens/repair/RepairHistoryDetail'; +import RewardScreen from '../screens/reward/RewardScreen'; +import RewardDetailScreen from '../screens/reward/RewardDetailScreen'; +import QuestionScreen from '../screens/service/QuestionScreen'; +import TermsAndCondition from '../screens/login/TermsAndCondition' +import { locale, t } from 'src/utils/i18n' + +const screenConfig = (screen, title, backgroundColor = undefined) => ({ + screen, + navigationOptions: defaultNavOption(title, backgroundColor) +}) + +const NavWithRightIcon = (title, iconName, routeName) => ({ navigation }) => ({ + title: t(title), + headerStyle: { + backgroundColor: '#00420A', + height: 50, + elevation: 0, + shadowOpacity: 0, + }, + headerTintColor: '#000', + headerTitleStyle: { + fontWeight: '400', + fontSize: 18, + color: '#fff', + textAlign: 'left', + flex: 1, + fontFamily: 'Prompt-Regular', + marginLeft: 0, + + }, + headerTitleContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + }, + headerLeftContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + width: '10%', + }, + headerTitleAllowFontScaling: false, + + headerLeft: ( + navigation.goBack()}> + + + ), + headerRight: ( + {navigation.navigate(routeName)}}> + + + ) +}) + +const defaultNavOption = (title, backgroundColor) => ({ navigation }) => ({ + title: t(title), + headerStyle: { + backgroundColor: backgroundColor || '#00420A', + height: 50, + elevation: 0, + shadowOpacity: 0, + }, + headerTintColor: '#000', + headerTitleStyle: { + fontWeight: '400', + fontSize: 18, + color: '#fff', + textAlign: 'left', + flex: 1, + fontFamily: 'Prompt-Regular', + marginLeft: 0, + + }, + headerTitleContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + }, + headerLeftContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + width: '10%', + }, + headerTitleAllowFontScaling: false, + + headerLeft: ( + navigation.goBack()}> + + + ), + headerRight: ( + + {/**/} + + ) +}) + +const BottomTab = createBottomTabNavigator({ + HomeScreen: { + screen: NewsScreen, + navigationOptions: ({ navigation }) => ({ + tabBarVisible: true, + tabBarLabel: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + + return + + {t('news')} + /* 'Room' */ + }, + tabBarIcon: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + return + } + }) + }, + RoomScreen: { + screen: ZoneAreaScreen, + // screen: RoomScreen, + navigationOptions: ({ navigation }) => ({ + tabBarLabel: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + return + + {t('room')} + /* 'Room' */ + }, + tabBarIcon: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + } + }) + }, + FavorsScreen: { + screen: RewardScreen, + navigationOptions: ({ navigation }) => ({ + tabBarLabel: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + return + + {t('products')} + /* 'Favaors' */ + }, + tabBarIcon: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + } + }) + }, + ServiceScreen: { + screen: ServiceScreen/* ServiceScreen */, + navigationOptions: ({ navigation }) => ({ + tabBarLabel: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + + return + + {t('service')} + /* 'Room' */ + }, + tabBarIcon: ({ focused, tintColor }) => { + if (focused) { + tintColor = '#FFCC00' + } else { + tintColor = 'rgba(255, 255, 255, 0.65)' + } + } + }) + } +}, + { + tabBarOptions: { + activeTintColor: '#FFCC00', + tabStyle: { backgroundColor: '#00420A', color: 'rgba(255, 255, 255, 0.65)' }, + } + }) +//export default LoginScreen + const mapDisPatchToProps = state => { + return state.app + } + const setNotification = dispatch => bindActionCreators({ appSetNotification }, dispatch) + const NotificationIcon = connect(mapDisPatchToProps, setNotification)(({count_noti,user}) => { + let count = 0; + if(count_noti){ + count = count_noti + } + if(count > 0){ + return + + {count && count > 9 ? '9+' : count } + + + + + ; + }else{ + return ( + + + + + + ) + } +}) + + +const MainTitle = connect(state => ({ + user: state.app.user, +}))((props) => { + let userText = ''; + let room = ''; + let name = ''; + console.log("props.user.", props.user); + if(props.user && typeof props.user.room != 'undefined'){ + room = " "+props.user.room; + } + if(props.user && typeof props.user.name != 'undefined'){ + name = props.user.name.split(" "); + } + if (props.user) { + userText = `(${name[0]}${room})` + } + return {t('charoensin_asset')} {userText} +}) + + +const AppStack = createStackNavigator({ + BottomTab: { + screen: BottomTab, + navigationOptions: ({ navigation }) => { + let langIcon + switch (locale()) { + case 'th': + langIcon = require('../../assets/images/locale_th.png') + break + case 'my': + langIcon = require('../../assets/images/locale_my.png') + break + case 'km': + langIcon = require('../../assets/images/locale_km.png') + break + default: + langIcon = require('../../assets/images/locale_en.png') + break + } + return { + // title: 'Charoensin Condo', + headerStyle: { + backgroundColor: '#00420A', + height: 50, + elevation: 0, + shadowOpacity: 0, + }, + headerTitleStyle: { + fontWeight: '200', + fontSize: 20, + color: '#fff', + textAlign: 'left', + flex: 1, + marginLeft: 30, + }, + headerRight: ( + + navigation.navigate('LanguageSelect')} style={{marginRight:8}}> + + + + navigation.navigate('Notification')}> + + + + ), + headerLeftContainerStyle: { + width:'80%', + alignItems: 'center', + justifyContent: 'center', + }, + headerLeft: ( + + + + + ), + }; + + } + + }, + Room: screenConfig(RoomScreen, 'project'), + RoomDetail: screenConfig(RoomDetailScreen, 'room_detail'), + ZoneArea: screenConfig(ZoneAreaScreen, 'room_detail'), + PersonRoomReservation: screenConfig(PersonRoomReservationScreen, 'book_room'), + CompanyRoomReservation: screenConfig(CompanyRoomReservationScreen, 'book_room'), + RoomHeaderReservation: screenConfig(RoomHeaderReservationScreen, 'book_room'), + News: { + screen: NewsScreen, + navigationOptions: ({ navigation }) => ({ + title: t('charoensin_asset'), + headerLeft: ( + navigation.goBack()}> + {'<'} + + ) + }) + }, + NewsDetail: { + screen: NewsDetailScreen, + navigationOptions: ({ navigation }) => ({ + title: '', + headerStyle: { + backgroundColor: '#00420A', + height: 50, + elevation: 0, + shadowOpacity: 0, + }, + headerTitleStyle: { + fontWeight: '200', + fontSize: 20, + color: '#fff', + flex: 1, + marginLeft: 10, + }, + headerLeft: null, + headerRight: ( + navigation.goBack()}> + {t('close')} + + ) + }) + }, + Product: { + screen: ProductScreen, + navigationOptions: ({ navigation }) => ({ + title: t('products'), + headerLeft: ( + navigation.goBack()}> + {'<'} + + ) + }) + }, + Notification: screenConfig(NotificationScreen, 'notification') + // { + // screen: NotificationScreen, + // navigationOptions: ({navigation}) => ({ + // title: 'Notification', + // headerLeft: ( + // navigation.goBack()}> + // {'<'} + // + // ) + // }) + // } + , + Meter: screenConfig(MeterScreen, 'smart_meter'), + WaterMeter: screenConfig(WaterMeter,'save_water_meter'), + PEAMeter: screenConfig(PEAMeter,'save_electric_meter'), + // Bill: screenConfig(BillScreen, 'รายละเอียดยอดค้างชำระ'), + Bill: screenConfig(BillScreen,'outstanding_balance_detail'), + Payment: screenConfig(PaymentScreen, 'pay'), + SettingsNotification: screenConfig(SettingsNotificationScreen, 'noti_setting'), + Suggestion: screenConfig(SuggestionScreen, 'suggestion'), + Question: { + screen: QuestionScreen, + navigationOptions: ({ navigation }) => ({ + title: t('faqs'), + headerStyle:{ + backgroundColor: '#00420A', + }, + headerTitleStyle: { + + fontSize: 18, + color: '#fff', + fontFamily: 'Prompt-Regular', + fontWeight: undefined, + }, headerLeftContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + width: '10%', + + }, + headerLeft: ( + navigation.goBack()} style={{flex:1,alignItems:'center'}}> + + + ), + headerRight:( + navigation.state.params.onRefreshMessage()} style={{paddingRight:16}}> + + + ) + }) + }, + Profile: screenConfig(ProfileScreen, 'profile', '#3AA40C'), + EditProfile: screenConfig(EditProfileScreen, 'edit_profile', '#3AA40C'), + Object: screenConfig(MessageObject, 'mail_and_parcel'), + ObjectDetail: screenConfig(MessageObjectDetail, 'mail_and_parcel'), + Signature: screenConfig(SignaturePadScreen, 'please_sign'), + Login: { + screen: LoginScreen, + navigationOptions: ({ navigation }) => ({ + title: t('login'), + headerStyle:{ + backgroundColor: '#00420A', + }, + headerTitleStyle: { + + fontSize: 18, + color: '#fff', + fontFamily: 'Prompt-Regular', + fontWeight: undefined, + }, headerLeftContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + width: '10%', + + }, + headerLeft: ( + navigation.navigate('HomeScreen')}> + + + ) + }) + }, + //Register Screen + Register: screenConfig(RegisterScreen,'register'), + RegisterFormLogin: screenConfig(RegisterFormLoginScreen, 'register'), + RegisterProfile: screenConfig(RegisterProfileScreen, 'register'), + //Repair Service + RepairService: { + screen: RepairService, + navigationOptions: NavWithRightIcon('request_repair_and_Other','ic_clock_history','RepairHistory') + }, + RepairDetail: screenConfig(RepairServiceDetail,'service_detail'), + RepairConfirm: screenConfig(RepairConfirm, 'confirm_info'), + RepairHistory: screenConfig(RepairHistory, 'repair_history'), + RepairSuccess: screenConfig(RepairSuccess, 'request_sent'), + RepairHistoryDetail: screenConfig(RepairHistoryDetail, 'รายละเอียดประวัติ'), + //Reward + Reward: screenConfig(RewardScreen, 'redeem_reward'), + RewardDetail: screenConfig(RewardDetailScreen,'product_detail'), + //Terms and Condition + Terms: screenConfig(TermsAndCondition, 'term_condition'), +}) + +const styles = StyleSheet.create({ + textBottomTab:{ + fontSize:12, + textAlign: 'center', + } +}) + +export default AppStack diff --git a/src/navigation/AuthStack.js b/src/navigation/AuthStack.js new file mode 100644 index 0000000..9295070 --- /dev/null +++ b/src/navigation/AuthStack.js @@ -0,0 +1,116 @@ +import { createStackNavigator } from 'react-navigation' +import RegisterScreen from '../screens/login/Register' +import { TouchableOpacity } from 'react-native' +import React from 'react' +import RegisterProfileScreen from '../screens/login/RegisterProfile' +import RegisterFormLoginScreen from '../screens/login/RegisterFormLogin' +import Icon from 'src/components/Icon' +import LoginScreen from '../screens/login/Login' +import Text from 'src/components/Text'; +import { t } from '../utils/i18n'; + +const screenConfig = (screen, title) => ({ + screen, + navigationOptions: defaultNavOption(title) +}) + +const defaultNavOption = (title) => ({ navigation }) => ({ + title: title, + headerStyle: { + backgroundColor: '#3AA40C', + //backgroundColor: '#FF9500', + height: 50, + elevation: 0, + shadowOpacity: 0, + // border:0 + }, + headerTintColor: '#000', + headerTitleStyle: { + + fontSize: 16, + color: '#fff', + textAlign: 'left', + flex: 1, + // marginTop: 5, + marginLeft: 0, + // backgroundColor: 'red' + fontFamily: 'Prompt-Regular', + fontWeight: undefined, + }, + headerTitleContainerStyle: { + alignItems: 'center', + justifyContent: 'center', + // marginLeft: -20, + // backgroundColor: 'red' + }, + headerLeftContainerStyle: { + // flexGrow: 1, + alignItems: 'center', + justifyContent: 'center', + width: '10%', + // backgroundColor: 'green' + + }, + headerTitleAllowFontScaling: false, + + headerLeft: ( + navigation.goBack()}> + + + ), + headerRight: ( + + {/**/} + + ) +}) + +const AuthStack = createStackNavigator({ + Login: { + screen: LoginScreen, + navigationOptions: ({ navigation }) => ({ + title: t('login'), + headerStyle:{ + backgroundColor: '#00420A', + }, + headerTitleStyle: { + + fontSize: 18, + color: '#fff', + fontFamily: 'Prompt-Regular', + fontWeight: undefined, + }, headerLeftContainerStyle: { + // flexGrow: 1, + alignItems: 'center', + justifyContent: 'center', + width: '10%', + // backgroundColor: 'green' + + }, + headerLeft: ( + navigation.navigate('HomeScreen')}> + + + ) + }) + }, + Register: screenConfig(RegisterScreen, t('register')), + RegisterFormLogin: screenConfig(RegisterFormLoginScreen, t('register')), + RegisterProfile: screenConfig(RegisterProfileScreen, t('register')) +}, { + defaultNavigationOptions: { + title: 'Welcome', + navigationOptions: ({ navigation }) => ({ + title: 'Register', + headerLeft: ( + navigation.goBack()}> + + + ) + }) + } +}) + +export default AuthStack diff --git a/src/navigation/MainNav.js b/src/navigation/MainNav.js new file mode 100644 index 0000000..26ea8ca --- /dev/null +++ b/src/navigation/MainNav.js @@ -0,0 +1,28 @@ +import { createSwitchNavigator, createAppContainer } from 'react-navigation' +import AuthStack from './AuthStack' +import AppStack from './AppStack' +import React from 'react' +import AppLoading from '../screens/app/AppLoading' +import LanguageSelect from '../screens/app/LanguageSelect' +import { View } from 'react-native' +import NavigationService from '../utils/NavigationService' + +const MainNav = createAppContainer(createSwitchNavigator({ + AppLoading, + LanguageSelect, + App: AppStack +})) + +export class AppNavContainer extends React.Component { + constructor (p) { + super(p) + } + + render () { + return + {NavigationService.setTopLevelNavigator(navigatorRef)}}/> + + } +} + +export default AppNavContainer \ No newline at end of file diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..8234647 --- /dev/null +++ b/src/package.json @@ -0,0 +1,3 @@ +{ + "name": "src" +} \ No newline at end of file diff --git a/src/redux/app/action.js b/src/redux/app/action.js new file mode 100644 index 0000000..03a88b2 --- /dev/null +++ b/src/redux/app/action.js @@ -0,0 +1,99 @@ +import { switchLanguage } from 'src/utils/i18n' +import { setLanguage } from '../../api/api' + +// action type +export const ACTION_APP_SET_TOKEN = 'APP_SET_TOKEN' +export const ACTION_APP_CLEAN_TOKEN = 'APP_SET_CLEAN_TOKEN' +export const ACTION_APP_SET_PUSH_TOKEN = 'APP_SET_PUSH_TOKEN_TOKEN' +export const ACTION_APP_SET_DEVICE = 'ACTION_APP_SET_DEVICE' +export const ACTION_APP_CLEAN_DEVICE = 'ACTION_APP_CLEAN_DEVICE' +export const ACTION_APP_SET_USER = 'ACTION_APP_SET_USER' +export const ACTION_APP_CLEAN_USER = 'ACTION_APP_CLEAN_USER' +export const ACTION_APP_SET_NOTIFICATION = 'ACTION_APP_SET_NOTIFICATION' +export const ACTION_APP_CHANGE_NOTIFICATION = 'ACTION_APP_CHANGE_NOTIFICATION' +export const ACTION_APP_SET_PROJECT_ID = 'ACTION_APP_SET_PROJECT_ID' +export const ACTION_APP_CLEAN_PROJECT_ID = 'ACTION_APP_CLEAN_PROJECT_ID' +export const ACTION_APP_SET_LANGUAGE = 'ACTION_APP_SET_LANGUAGE' + +// action creator +export function appSetToken (token) { + return { + type: ACTION_APP_SET_TOKEN, + token + } +} + +export function appSetNotification (count) { + return { + type: ACTION_APP_SET_NOTIFICATION, + count_noti: count + } +} + +export function appChangeNotification (notification) { + return { + type: ACTION_APP_CHANGE_NOTIFICATION, + notification + } +} + +export function appCleanToken () { + return { + type: ACTION_APP_CLEAN_TOKEN + } +} + +export function appSetPushToken (pushToken) { + return { + type: ACTION_APP_SET_PUSH_TOKEN, + pushToken + } +} + +export function appSetDevice (device) { + return { + type: ACTION_APP_SET_DEVICE, + device + } +} + +export function appCleanDevice () { + return { + type: ACTION_APP_CLEAN_DEVICE, + } +} + +export function appSetUser (user) { + return { + type: ACTION_APP_SET_USER, + user + } +} + +export function appCleanUser () { + return { + type: ACTION_APP_CLEAN_USER, + } +} + +export function appSetProjectID (projectId) { + return { + type: ACTION_APP_SET_PROJECT_ID, + project_id: projectId + } +} + +export function appCleanProjectID () { + return { + type: ACTION_APP_CLEAN_PROJECT_ID, + } +} + +export function appSetLanguage (langCode) { + switchLanguage(langCode) + setLanguage(langCode) + return { + type: ACTION_APP_SET_LANGUAGE, + lang: langCode + } +} \ No newline at end of file diff --git a/src/redux/app/reducer.js b/src/redux/app/reducer.js new file mode 100644 index 0000000..1c63eeb --- /dev/null +++ b/src/redux/app/reducer.js @@ -0,0 +1,55 @@ +import { + ACTION_APP_CLEAN_TOKEN, + ACTION_APP_SET_PUSH_TOKEN, + ACTION_APP_SET_TOKEN, + ACTION_APP_SET_DEVICE, + ACTION_APP_CLEAN_DEVICE, + ACTION_APP_SET_USER, + ACTION_APP_CLEAN_USER, + ACTION_APP_SET_NOTIFICATION, + ACTION_APP_CHANGE_NOTIFICATION, + ACTION_APP_SET_PROJECT_ID, + ACTION_APP_CLEAN_PROJECT_ID, + ACTION_APP_SET_LANGUAGE, +} from './action' + +const initialState = { + token: null, + push_token: null, + device: null, + user: null, + notification: null, + project_id: null, + lang: null, +}; + +export default function (state = initialState, action) { + switch (action.type) { + case ACTION_APP_SET_LANGUAGE: + return { ...state, lang: action.lang } + case ACTION_APP_SET_TOKEN: + return { ...state, token: action.token }; + case ACTION_APP_CLEAN_TOKEN: + return { ...state, token: null }; + case ACTION_APP_SET_PUSH_TOKEN: + return { ...state, push_token: action.pushToken }; + case ACTION_APP_SET_DEVICE: + return { ...state, device: action.device }; + case ACTION_APP_CLEAN_DEVICE: + return { ...state, device: null }; + case ACTION_APP_SET_USER: + return { ...state, user: action.user }; + case ACTION_APP_CLEAN_USER: + return { ...state, user: null }; + case ACTION_APP_SET_NOTIFICATION: + return { ...state, count_noti: action.count_noti }; + case ACTION_APP_CHANGE_NOTIFICATION: + return { ...state, notification: action.notification }; + case ACTION_APP_SET_PROJECT_ID: + return { ...state, project_id: action.project_id }; + case ACTION_APP_CLEAN_PROJECT_ID: + return { ...state, project_id: null }; + default: + return state + } +} \ No newline at end of file diff --git a/src/redux/reducers.js b/src/redux/reducers.js new file mode 100644 index 0000000..cdbf851 --- /dev/null +++ b/src/redux/reducers.js @@ -0,0 +1,5 @@ +import app from './app/reducer' + +export default { + app +} \ No newline at end of file diff --git a/src/redux/store.js b/src/redux/store.js new file mode 100644 index 0000000..dc637ee --- /dev/null +++ b/src/redux/store.js @@ -0,0 +1,29 @@ +import { combineReducers, createStore } from 'redux' +import { persistReducer, persistStore } from 'redux-persist' +import reducers from './reducers' +import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2' +import storage from 'redux-persist/lib/storage' + +import createEncryptor from 'redux-persist-transform-encrypt' + +const k = 'oafsjeojasofjwoefjjforFOJISEOfisweofijmowefjoewjfJFOIeofjPOAFJIefjOIJFoiQJAEW' +const encryptor = createEncryptor({ + secretKey: k, + onError: function (error) { + // Handle the error. + } +}) +const persistConfig = { + key: 'app', + storage, + whitelist: ['app'], + stateReconciler: autoMergeLevel2, + transforms: [encryptor] +} +var combindedReducers = combineReducers(reducers) +const persistedReducer = persistReducer(persistConfig, combindedReducers) + +export const store = createStore( + persistedReducer, +) +export const persistor = persistStore(store) \ No newline at end of file diff --git a/src/screens/app/AppLoading.js b/src/screens/app/AppLoading.js new file mode 100644 index 0000000..de04fa9 --- /dev/null +++ b/src/screens/app/AppLoading.js @@ -0,0 +1,31 @@ +import React, { Component } from 'react' +import { bindActionCreators } from 'redux' +import { appSetDevice, appSetPushToken, appSetToken, appSetUser } from '../../redux/app/action' +import { connect } from 'react-redux' +import { View } from 'react-native' +import { switchLanguage } from '../../utils/i18n' + +class AppLoading extends Component { + + constructor (props) { + super(props) + if (props.lang) { + switchLanguage(props.lang) + this.props.navigation.navigate('HomeScreen') + } else { + this.props.navigation.navigate('LanguageSelect') + } + } + + render () { + return () + } +} + +const mapStateToProps = state => { + return { + lang: state.app.lang + } +} +const setUser = dispatch => bindActionCreators({ appSetToken, appSetPushToken, appSetDevice, appSetUser }, dispatch) +export default connect(mapStateToProps, setUser)(AppLoading) \ No newline at end of file diff --git a/src/screens/app/LanguageSelect.js b/src/screens/app/LanguageSelect.js new file mode 100644 index 0000000..dc17f8b --- /dev/null +++ b/src/screens/app/LanguageSelect.js @@ -0,0 +1,44 @@ +import React from 'react' +import { TouchableOpacity, View } from 'react-native' +import Text from 'src/components/Text' +import { useDispatch } from 'react-redux' +import { appSetLanguage } from '../../redux/app/action' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient' + +const languages = [ + { code: 'th', name: 'ภาษาไทย' }, + { code: 'en', name: 'English' }, + { code: 'my', name: 'မြန်မာဘာသာ' }, + { code: 'km', name: 'ភាសាខ្មែរ' }, +] + +export default function ({ navigation }) { + const dispatch = useDispatch() + + function selectLanguage (code) { + dispatch(appSetLanguage(code)) + navigation.navigate('HomeScreen') + } + + return + + {languages.map(lang => { + return selectLanguage(lang.code)}> + + {lang.name} + + + })} + + + +} \ No newline at end of file diff --git a/src/screens/bill/Bill.js b/src/screens/bill/Bill.js new file mode 100644 index 0000000..d74cbdd --- /dev/null +++ b/src/screens/bill/Bill.js @@ -0,0 +1,564 @@ +import React, { Component } from 'react' +import Icon from '../../components/Icon' +import { + Accordion, + Badge, + Body, + Button, + Content, + Header, + Left, + List, + ListItem, + Right, + Title, + View +} from 'native-base' +import { Dimensions, FlatList, ScrollView, StyleSheet, TouchableOpacity, SafeAreaView, Alert } from 'react-native' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text'; +import { payment } from '../../api/UserApi' +import { connect } from "react-redux"; +import {bindActionCreators} from "redux"; +import {appSetDevice, appSetPushToken, appSetToken, appSetUser} from "../../redux/app/action"; +import moment from "moment"; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from 'src/utils/i18n' + +const { height, width } = Dimensions.get('window') + +function ItemOrder({title,cost,description,type}){ + + let iconShow = '' + let iconColor = '' + switch(type){ + case 0: + iconShow = 'ic_event_note' + iconColor = '#00000080' + break; + case 1: + iconShow = 'ic_bed' + iconColor = '#FF6122' + break; + case 2: + iconShow = 'ic_water' + iconColor = '#5AC8FA' + break; + case 3: + iconShow = 'ic_thunder' + iconColor = '#FFCC00' + break; + case 4: + iconShow = 'ic_event_note' + iconColor = '#00000080' + break; + case 5: + iconShow = 'ic_water' + iconColor = '#5AC8FA' + break; + case 6: + iconShow = 'ic_thunder' + iconColor = '#FFCC00' + break; + case 7: + iconShow = 'ic_event_note' + iconColor = '#00000080' + break; + } + + return + + + + + + {title} + {cost} {t('baht')} + + {description != '' ? description : '-'} + + +} + +class BillScreen extends Component { + constructor(props) { + super(props) + this.state = { + isLoading:false, + payment: [], + sum_payment: [], + activePage: 0, + isCanPay: true, + all_payment : [], + room_number_array : [], + }; + + this._onCarouselScroll = this._onCarouselScroll.bind(this) + this.checkDueDate = this.checkDueDate.bind(this) + this.checkstatusBill = this.checkstatusBill.bind(this) + } + + componentDidMount() { + this.setState({isLoading: true}) + if(this.props.user){ + payment(this.props.user.id) + .then(res => { + if(res.ok){ + let sum_payment = []; + let array_payment = []; + let sum_cost_room = res.data.sum_cost_room; + if(Object.keys(sum_cost_room).length > 0) { + Object.keys(sum_cost_room).map((sum_cost) => { + sum_payment.push({ + total_cost : sum_cost_room[sum_cost].total_cost, + room: sum_cost_room[sum_cost].room, + project: sum_cost_room[sum_cost].project, + due_at: sum_cost_room[sum_cost].due_at, + } + ) + }) + } + + let payment = res.data.payment_room_period + if(Object.keys(payment).length > 0){ + Object.keys(payment).map((pay) => { + if(Object.keys(payment[pay]).length > 0){ + Object.keys(payment[pay]).map((detail) => { + this.state.room_number_array.push(pay) + array_payment.push({ + room_id: pay, + period: detail, + // total_cost: payment[pay][detail].total_cost, + // details: payment[pay][detail].details, + // status: payment[pay][detail].status, + // created_at: payment[pay][detail].created_at, + // payment_id: payment[pay][detail].id, + // enable_qr: payment[pay][detail].enable_qr + ...payment[pay][detail] + }) + }) + } + }) + } + let all_payment_data = array_payment; + let array_room_no = this.state.room_number_array; + this.setState({ + room_number_array: array_room_no.filter((item, i, ar) => ar.indexOf(item) === i) + }); + + + let first_room = this.state.room_number_array[0]; + array_payment = array_payment.filter((obj)=>{ + return Object.keys(obj).reduce((acc, curr)=>{ + return obj.room_id === first_room + }, false); + }); + + + let date_now = moment() + let findTimeout = array_payment.find((item) => {return moment(item.due_at) == date_now}) + //check bill timeout + if(findTimeout !== undefined){ + this.setState({ + isCanPay: false + }) + } + + + if(sum_payment.length > 0){ + this.setState({ + room_number_array: sum_payment.map(function(item){ + return item.room + }) + }); + } + + this.setState({ + isLoading:false, + payment: array_payment, + sum_payment: sum_payment, + all_payment: all_payment_data + }) + } + }) + } + } + + getMonth(period_month){ + let new_month = 'มกราคม' + switch (period_month) { + case '01': + new_month = 'มกราคม'; + break; + case '02': + new_month = 'กุมภาพันธ์'; + break; + case '03': + new_month = 'มีนาคม'; + break; + case '04': + new_month = 'เมษายน'; + break; + case '05': + new_month = 'พฤษภาคม'; + break; + case '06': + new_month = 'มิถุนายน'; + break; + case '07': + new_month = 'กรกฎาคม'; + break; + case '08': + new_month = 'สิงหาคม'; + break; + case '09': + new_month = 'กันยายน'; + break; + case '10': + new_month = 'ตุลาคม'; + break; + case '11': + new_month = 'พฤศจิกายน'; + break; + case '12': + new_month = 'ธันวาคม'; + break; + default: + new_month = 'มกราคม'; + break; + } + + return new_month; + } + + getTitle (period) { + let period_month = moment(period, "MM/Y").format('MM'); + let period_year = parseInt(moment(period, "MM/Y").format('Y')) + 543; + let new_month = 'มกราคม'; + let new_period = new_month + ' ' + period_year; + + new_month = this.getMonth(period_month) + + new_period = new_month + ' ' + period_year; + return new_period; + } + + checkDueDate(date){ + // console.log('date -------- ',moment(date)) + // console.log('now -------- ',moment()) + let due_date = moment(date) + let now = moment() + if(due_date < now){ + return false + } + return true + } + + checkstatusBill(data,boolDate){ + if(data.status == 'paid'){ + return { + this.state.isCanPay ? + data.status === 'pending' && this.props.navigation.navigate('Payment',{payment_id:data.id}) + : Alert.alert(null, 'รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า',[{text: t('ok')}]) + }}> + {data.status === 'pending' ? 'จ่ายเงิน' : 'จ่ายแล้ว'} + + }else{ + if(!boolDate){ + return + {'เกินกำหนดชำระ'} + + }else{ + return { + this.state.isCanPay ? + data.status === 'pending' && this.props.navigation.navigate('Payment',{payment_id:data.id}) + : Alert.alert(null, 'รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า',[{text: t('ok')}]) + }}> + {data.status === 'pending' ? 'จ่ายเงิน' : 'จ่ายแล้ว'} + + } + } + } + + _renderHeader(data, expanded) { + // if(data.room_id == this.state.sum_payment[this.state.activePage].room.id){ + let checkBool = this.checkDueDate(data.due_at == null || data.due_at == undefined ? moment() : data.due_at) + return ( + + + {t('month')} {this.getTitle(data.period)} + + {expanded || data.status != 'pending' ? : {t('outstanding_balance')} {data.total_cost}} + {expanded || {t('view_more')}} + + + { + this.checkstatusBill(data,checkBool) + } + {/* { + checkBool ? + data.enable_qr && + { + this.state.isCanPay ? + data.status === 'pending' && this.props.navigation.navigate('Payment',{payment_id:data.id}) + : Alert.alert(null, 'รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า',[{text: t('ok')}]) + }}> + {data.status === 'pending' ? 'จ่ายเงิน' : 'จ่ายแล้ว'} + + : + + {'เกินกำหนดชำระ'} + + } */} + + ) + // } + } + + _renderContent(data) { + let water_cost = 0; + let electrict_cost = 0; + let room_cost = 0; + let service_cost = 0; + let date_payment = ''; + let extra_info = ''; + let d = moment(data.created_at).format('D') + let m = moment(data.created_at).format('MM') + let y = parseInt(moment(data.created_at).format('Y')) + 543 + date_payment = d + ' ' + this.getMonth(m) + ' ' + y + + let descriptionRoom = '-' + let descriptionWater = '-' + let descriptionElec = '-' + let descriptionService = '-' + + // console.log('check data ----------> ',data) + + if(data.details){ + data.details.map((det) => { + if(det.sequence === 1){ + room_cost = det.cost + room_extra_info = det.extra_info != null ? det.extra_info : '' + descriptionRoom = det.descript == '' ? '-' : det.descript + } + + if(det.sequence === 2){ + water_cost = det.cost + water_extra_info = det.extra_info != null ? det.extra_info : '' + descriptionWater = det.descript == '' ? '-' : det.descript + } + + if(det.sequence === 3){ + electrict_cost = det.cost + electrict_extra_info = det.extra_info != null ? det.extra_info : '' + descriptionElec = det.descript == '' ? '-' : det.descript + } + + if(det.sequence === 4){ + service_cost = det.cost + service_extra_info = det.extra_info != null ? det.extra_info : '' + descriptionService = det.descript == '' ? '-' : det.descript + } + }) + } + + return ( + + { + data.details.map((info,index) => { + return + }) + } + + รวม {data.total_cost} {t('baht')} + + + ) + } + + getDueDate (date) { + if(date){ + let d = moment(date).format('D') + let m = moment(date).format('MM') + let y = parseInt(moment(date).format('Y')) + 543 + let new_month = 'ม.ค.'; + let new_date = d + ' ' + new_month + ' ' + y; + switch (m) { + case '01': + new_month = 'ม.ค.'; + break; + case '02': + new_month = 'ก.พ.'; + break; + case '03': + new_month = 'มี.ค.'; + break; + case '04': + new_month = 'เม.ย.'; + break; + case '05': + new_month = 'พ.ค.'; + break; + case '06': + new_month = 'มิ.ย.'; + break; + case '07': + new_month = 'ก.ค.'; + break; + case '08': + new_month = 'ส.ค.'; + break; + case '09': + new_month = 'ก.ย.'; + break; + case '10': + new_month = 'ต.ค.'; + break; + case '11': + new_month = 'พ.ย.'; + break; + case '12': + new_month = 'ธ.ค.'; + break; + default: + new_month = 'ม.ค.'; + break; + } + + new_date = d + ' ' + new_month + ' ' + y; + return new_date; + }else{ + return ''; + } + } + + renderNativeItemImages = (item) => { + // console.log('check data item ',item) + return + + + + {t('room')} {item.room} + {item.project && item.project.name} + {t('outstanding_balance')} {item.total_cost} {t('baht')} + + + { + item.due_at !== null + ? ( + + {t('please_pay_before')} {this.getDueDate(item.due_at)} + + ) + : null + } + + + + + } + _onCarouselScroll(e) { + const scrollX = e.nativeEvent.contentOffset.x + this.setState({ + activePage: Math.ceil(scrollX / width) + }) + // console.log(e); + } + + groupArrayOfObjects(list, key) { + return list.reduce(function(rv, x) { + (rv[x[key]] = rv[x[key]] || []).push(x); + return rv; + }, {}); + } + + roomFilter(index){ + let payment_exits = this.state.all_payment; + let another_room = this.state.room_number_array[index]; + let payment_array = payment_exits.filter((obj)=>{ + return Object.keys(obj).reduce((acc, curr)=>{ + return obj.room_id === another_room + }, false); + }); + this.state.payment = payment_array; + } + + _keyExtractor = (item, index) => 'bill_'+index + + render() { + return ( + + + + { + this.state.sum_payment.length == 0 && + + {this.props.user.room} {t('no_outstanding_balance')} + + } + this.renderNativeItemImages(item)} + horizontal={true} + onScroll={this._onCarouselScroll} + onScrollEndDrag={this.roomFilter(this.state.activePage)} + pagingEnabled={true} + extraData={this.state} + keyExtractor={this._keyExtractor} + /> + + {this.state.sum_payment.map((item, i) => )} + + + + { return this._renderHeader(data, expanded) }} + renderContent={(data) => { return this._renderContent(data) }} /> + + + + + ) + } +} + +const styles = StyleSheet.create({ + circleShapeView: { + width: 32, + height: 32, + borderRadius: 100, + justifyContent: 'center', + alignItems: 'center' + }, + contentContainer: { + backgroundColor: '#EEFFD7', + paddingVertical: 0, + flexGrow: 1, + }, + colorTextPayment: { + color: '#3AA40C' + } +}) + +const mapDisPatchToProps = state => ({ + user: state.app.user +}) + +export default connect(mapDisPatchToProps)(BillScreen) diff --git a/src/screens/bill/Payment.js b/src/screens/bill/Payment.js new file mode 100644 index 0000000..b80aa69 --- /dev/null +++ b/src/screens/bill/Payment.js @@ -0,0 +1,144 @@ +import React, { Component } from 'react' +import {ScrollView, StyleSheet, Image, TouchableOpacity, Alert, PermissionsAndroid, ImageBackground, Platform} from "react-native"; +import CameraRoll from "@react-native-community/cameraroll"; +import {View} from "native-base"; +import Text from '../../components/Text'; +import { payment_detail } from '../../api/UserApi'; +import ViewShot, { captureRef } from "react-native-view-shot"; +import IndicatorLoading from '../../components/IndicatorLoading'; +import QRCode from 'react-native-qrcode-svg'; +import { t } from '../../utils/i18n'; + +class PaymentScreen extends Component { + constructor(props) { + super(props); + this.state = { + isLoading: false, + text: '', + payment_data: {}, + payment_id: this.props.navigation.getParam('payment_id', 'NO ITEM') + } + this.snapScreen = this.snapScreen.bind(this) + } + + componentDidMount(){ + console.log('payment id ---------> ',this.state.payment_id); + this.setState({isLoading:true}) + payment_detail(this.state.payment_id) + .then( res => { + this.setState({ + payment_data: res.data + },() => { + this.setState({isLoading: false}) + }) + }) + }; + + async snapScreen() { + try { + if(Platform.OS == 'android'){ + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, + { + title: 'Cool Photo App Camera Permission', + message: + 'Cool Photo App needs access to your camera ' + + 'so you can take awesome pictures.', + buttonNeutral: 'Ask Me Later', + buttonNegative: 'Cancel', + buttonPositive: 'OK', + }, + ); + if (granted === PermissionsAndroid.RESULTS.GRANTED) { + console.log('You can use the camera'); + this.viewshot.capture() + .then( + uri => { + console.log('------------> ',uri) + return CameraRoll.saveToCameraRoll(uri,'photo') + .then(Alert.alert(null, 'บันทึกรูปสำเร็จ',[{text: t('ok')}])) + } + ) + } else { + console.log('Camera permission denied'); + } + }else{ + this.viewshot.capture() + .then( + uri => { + console.log('------------> ',uri) + return CameraRoll.saveToCameraRoll(uri,'photo') + .then(Alert.alert(null, 'บันทึกรูปสำเร็จ',[{text: t('ok')}])) + } + ) + } + } catch (err) { + console.warn(err); + } + + } + + render(){ + return( + + + + + this.viewshot = ref}> + + + + + + {t('scan_to_pay')} + + + + ชื่อบัญชี : {this.state.payment_data.receiver_name} + {t('account')} : {this.state.payment_data.receiver_account} + {t('ref_no')}: { this.state.payment_data.payment != null && this.state.payment_data.payment.reference} + {t('ref_no')} 2 : { this.state.payment_data.payment != null && this.state.payment_data.ref2} + + {t('account_name')} + {this.state.payment_data != {} && Intl.NumberFormat().format(this.state.payment_data.total_cost)} {t('baht')} + + Accepts all banks | {t('support_all_bank')} + + + + + + {t('save')} + + + + + + + ) + } +} + + +const styles = StyleSheet.create({ + circleShapeView: { + width: 32, + height: 32, + borderRadius: 100, + justifyContent: 'center', + alignItems: 'center' + }, + contentContainer: { + paddingVertical: 0, + flex:1 + }, + colorTextPayment: { + color: '#7CBB33' + } +}) + +export default PaymentScreen diff --git a/src/screens/login/Login.js b/src/screens/login/Login.js new file mode 100644 index 0000000..dc9e339 --- /dev/null +++ b/src/screens/login/Login.js @@ -0,0 +1,264 @@ +import React, { Component } from 'react' +import { TouchableOpacity, View, Alert, ScrollView, SafeAreaView, KeyboardAvoidingView, Platform } from 'react-native' +import Image from 'react-native-fast-image' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { CustomButton } from '../../components/CustomButton' +import { CustomInput } from '../../components/CustomInput' +import { login } from '../../api/UserApi' +import { setToken } from '../../api/api' +import { BackgroundImage } from '../../components/BackgroundImage' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text' +import { bindActionCreators } from 'redux' +import { appSetDevice, appSetPushToken, appSetToken, appSetUser } from '../../redux/app/action' +import {connect} from 'react-redux' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { locale, t } from '../../utils/i18n' + + +class LoginScreen extends Component { + + constructor(props) { + super(props) + this.state = { + isLoading: false, + username: null, + password: null, + } + this._login = this._login.bind(this) + } + + _login() { + if (this.state.username && this.state.password) { + + var regex = /^\d+$/; + + if (regex.test(this.state.username) === true) { + let params = { + mobile: this.state.username, + password: this.state.password + } + this.setState({isLoading:true}) + login(params) + .then((res) => { + if (res.ok) { + if (res.data.token) { + setToken(res.data.token) + this.props.appSetToken(res.data.token) + this.props.appSetUser(res.data.user) + setTimeout(() => { + this.setState({isLoading:false},() => { + this.props.navigation.navigate('HomeScreen',{isLogin:true}) + }) + }, 300); + } + } else { + setTimeout(() => { + Alert.alert(null, 'ท่านกรอก บัญชีผู้ใช้งาน หรือ รหัสผ่านผิด') + }, 600); + } + this.setState({isLoading:false}) + }) + } else { + Alert.alert(null, 'ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง') + } + } else { + Alert.alert(null, 'กรุณากรอกข้อมูลให้ครบถ้วน') + } + } + + render() { + return ( + + + + + + + + + {/* Logo */} + + + + เจริญสินธานี + ({t('room_for_rent')}) + + + + + + { + this.setState({ + username: e + }) + }} + onEndEditing={(e) => { + this.setState({ + username: e.nativeEvent.text + }) + }} + inputTextAlign={'left'} + iconName={'ic_user'} + placeholder={t('phone')} + placeholderTextColor={'#FFFFFF40'} + style={styles.form_input} /> + + + { + this.setState({ + password: e + }) + }} + onEndEditing={(e) => { + this.setState({ + password: e.nativeEvent.text + }) + }} + style={styles.form_input} /> + + + { this.props.navigation.navigate('HomeScreen') }} + /> + + + + {t('not_a_member')} + { this.props.navigation.navigate('Register') }}> + {t('create_account')} + + + + + + + + + + + + ) + } +} + +//export default LoginScreen +const mapDisPatchToProps = state => { + return state.app +} +const setUser = dispatch => bindActionCreators({ appSetToken, appSetPushToken, appSetDevice, appSetUser }, dispatch) +export default connect(mapDisPatchToProps, setUser)(LoginScreen) + +const styles = { + container: { + flex: 1, + //backgroundColor: 'rgba(53, 151, 12,0.8)'||'#359234', + + // flexGrow: 1, + // flexDirection: 'column', + // height: GetWidthHeightDevice.HeightContainer + + }, + logo: { + // flex: 2, + // height: '50%', + // flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + //backgroundColor: "rgba(53, 151, 12,0.3)"||'#359234', + + }, + form: { + // height: '45%', + flex: 1, + padding: 30, + paddingBottom: 0, + // backgroundColor: 'red', + }, + row: { + // flex: 1, + flexDirection: 'row', + marginBottom: 5, + }, + form_address: { + // flex: 2, + padding: 10, + paddingBottom: 0, + // backgroundColor:"green", + }, + step_indicator: { + // flex: 1, + }, + buttons: { + paddingLeft: 15, + paddingRight: 15, + flexGrow: 1, + // padding: 10, + // backgroundColor: 'red', + // alignItems: 'center', + // justifyContent: 'center', + position: 'absolute', + flexDirection: 'row', + marginHorizontal: 15, + bottom: 15, + left: 25 + }, + row_grow: { + flexGrow: 1, + // marginLeft: 5 + // backgroundColor:"red", + }, + row_grow_first: { + flexGrow: 1, + marginRight: 5, + // backgroundColor:"blue", + }, + headerTitle: { + color: '#DA7A16', + marginVertical: 5 + + }, + form_input: { + backgroundColor: 'rgba(0,0,0,0)', + borderColor: 'white', borderRadius: 30, + borderWidth: 1, + }, + btn_login: { + backgroundColor: 'white', + borderRadius: 30, width: '100%', + + }, btn_login_fb: { + marginLeft: 10, + backgroundColor: '#3b5998', + borderRadius: 30, width: '20%', + + } + +} diff --git a/src/screens/login/Register.js b/src/screens/login/Register.js new file mode 100644 index 0000000..46c4906 --- /dev/null +++ b/src/screens/login/Register.js @@ -0,0 +1,206 @@ +import React, {Component} from 'react' +import {TouchableOpacity, View, ScrollView, Alert, KeyboardAvoidingView, Platform} from 'react-native' +import Image from 'react-native-fast-image' +import {bindActionCreators} from 'redux' +import {connect} from 'react-redux' +import {CustomButton} from '../../components/CustomButton' +import {CustomInput} from '../../components/CustomInput' +import {CustomStepIndicator} from '../../components/StepIndicator' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import {appSetUser} from '../../redux/app/action' +import {BackgroundImage_RegisterForm} from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient'; +import Text from '../../components/Text'; +import { t } from '../../utils/i18n' + +class RegisterScreen extends Component { + + constructor(props) { + super(props) + this.state = { + user: {} + } + this._onNextStep = this._onNextStep.bind() + } + + _onNextStep = async () => { + var regex = /^\d+$/; + + if (this.state.user.mobile && this.state.user.password && this.state.user.password == this.state.user.password_confirm) { + if (regex.test(this.state.user.mobile) === true) { + this.props.appSetUser(this.state.user) + this.props.navigation.navigate('RegisterFormLogin'); + } else { + Alert.alert(null, 'ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง') + } + } else { + Alert.alert(null, 'รหัสผ่านไม่ตรงกัน') + } + } + + render() { + return ( + + + + + + + + + + + + เจริญสินธานี + ({t('room_for_rent')}) + + + + + + + { + this.setState({ + user: { + ...this.state.user, + mobile: mobile + } + }) + }} + iconName={'ic_user'} + placeholder={t('phone')} + placeholderTextColor={'#FFFFFF40'} + value={this.state.user.mobile || ''} + /> + + + { + let password = e.nativeEvent.text + // console.log(password, this.state.user.password_confirm) + let hasError = false + if (this.state.user.password_confirm && password && this.state.user.password_confirm != password) { + // alert('Password not match.') + hasError = true + } + this.setState({ + user: { + ...this.state.user, + password: password + }, + error_password: hasError + }) + }} + /> + + + { + let hasError = false + let text = password_confirm.nativeEvent.text + // console.log(text, this.state.user.password) + if (this.state.user.password && text && text != this.state.user.password) { + hasError = true + } + this.setState({ + user: { + ...this.state.user, + password_confirm: text + }, + error_password: hasError + }) + } + } + placeholderTextColor={'#FFFFFF40'} + placeholder={t('confirm_password_only')}/> + + + + + + + + + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + }, + logo: { + height: '50%', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + + }, + step_indicator: { + backgroundColor: '#3AA40C' + }, + form: { + flex: 1, + padding: 10, + marginTop: 15, + paddingBottom: 0, + }, + row: { + flexDirection: 'row', + marginBottom: 5, + }, + error_password: { + borderColor: 'red', + borderWidth: 2 + }, + password_confirm: { + borderWidth: 0 + }, + btn_next_register: { + height: 40, + backgroundColor: '#145EB3' + }, + register_input: { + backgroundColor: 'rgba(255,255,255,0.3)', + borderRadius: 30, + } +} + + +const setUser = dispatch => bindActionCreators({appSetUser}, dispatch) +export default connect(null, setUser)(RegisterScreen) diff --git a/src/screens/login/RegisterFormLogin.js b/src/screens/login/RegisterFormLogin.js new file mode 100644 index 0000000..d3d7b0e --- /dev/null +++ b/src/screens/login/RegisterFormLogin.js @@ -0,0 +1,664 @@ +import React, { Component } from 'react' +import { Alert, ScrollView, TouchableOpacity, View, Platform, KeyboardAvoidingView } from 'react-native' +import Image from 'react-native-fast-image' +import { CustomStepIndicator } from '../../components/StepIndicator' +import { CustomInput } from '../../components/CustomInput' +import { CustomButton } from '../../components/CustomButton' +import Icon from 'src/components/Icon' +import { bindActionCreators } from 'redux' +import { appSetUser } from '../../redux/app/action' +import { connect } from 'react-redux' +import { Picker } from 'native-base' +import moment from 'moment' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text' +import { getBuildingByProjectId, project } from '../../api/UserApi' +import ImagePicker from 'react-native-image-crop-picker' +import ActionSheet from 'react-native-action-sheet' +import CustomDatePicker from '../room/CustomDatePicker'; +import { t } from '../../utils/i18n' + +let ACTIONSHEET_BUTTONS = [ + 'ถ่ายรูป', + 'รูปจากแกลอรี่', + t('cancel') +] + +let CANCEL_INDEX = 2 + +class RegisterFormLoginScreen extends Component { + constructor(props) { + super(props) + this.state = { + user: props.user, + project_list: [], + building_list: [], + selected_project: 0, + project_name:t('choose_project'), + image_url: require('../../../assets/images/profile.png'), + enableSummit: false, + checkFullname: false, + checkCitizenID: false, + checkBirthDate: null + } + this._onNextStep = this._onNextStep.bind() + this.onImagePick = this.onImagePick.bind(this) + this.onTakeCamera = this.onTakeCamera.bind(this) + } + + componentDidMount() { + this.getProjectList() + this.setDefaultUserData() + } + + setDefaultUserData(){ + this.setState({ + user: { + ...this.state.user, + gender: 'ชาย' + } + }) + } + + getProjectList() { + project() + .then(res => { + if (res.ok) { + return this.setState({ + project_list: res.data.data, + selected_project: res.data.data[0].id + }) + } + }) + .then(res => { + // this.getBuildingList() + }) + } + + getBuildingList() { + getBuildingByProjectId(this.state.selected_project) + .then(res => { + // console.log('-------------------> ', res) + if (res.ok) { + this.setState({ + building_list: res.data.data, + user: { //set default building index 0 + ...this.state.user, + building: res.data.data[0].room_build + } + }) + } + }) + } + + _onNextStep = async () => { + // if (this.state.user.email && this.state.user.mobile) { + if (this.state.user.mobile && this.state.user.tax_id && this.state.user.name && this.state.user.birth_date) { + /*var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + if (email_validate.test(this.state.user.email) === true) { + this.props.appSetUser(this.state.user) + this.props.navigation.navigate('RegisterProfile') + } else { + Alert.alert(null, 'ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง') + }*/ + console.log('check user data next <<<<<<<< ',this.state.user); + this.props.appSetUser(this.state.user) + // next page !! + this.props.navigation.navigate('RegisterProfile') + } else { + Alert.alert(null, 'กรุณากรอกข้อมูลให้ครบถ้วน') + } + } + + onImagePick () { + ImagePicker.openPicker({ + width: 300, + height: 300, + cropping: true, + includeBase64: true + }).then(image => { + console.log('received base64 image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: { uri: `data:${image.mime};base64,` + image.data, width: image.width, height: image.height }, + images: null, + user: { + ...this.state.user, + profile_image_id: image_profile + } + }) + }).catch(e => alert(e)) + } + + onTakeCamera () { + ImagePicker.openCamera({ + cropping: true, + width: 300, + height: 300, + includeExif: true + }).then(image => { + console.log('received image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: { uri: image.path, width: image.width, height: image.height, mime: image.mime }, + images: null, + user: { + ...this.state.user, + profile_image_id: image_profile + } + }) + }).catch(e => alert(e)) + } + + handleRequired = (e,type) => { + // e = value + console.log(type + " : ", e); + switch(type) { + case 'fullname': + // code block + this.setState(() => ({ ['checkFullname']: e })); + break; + case 'citizen_id': + this.setState(() => ({ ['checkCitizenID']: e })); + break; + default: + // code block + } + + // console.log(this.state.user.birth_date); + // check all + if(this.state.checkFullname.length >= 1 && this.state.checkCitizenID.length >= 1 && typeof this.state.user.birth_date != 'undefined'){ + this.setState(() => ({ ['enableSummit']: true })); + } + + } + + render() { + return ( + + + + + + + + + + + { + ActionSheet.showActionSheetWithOptions({ + options: ACTIONSHEET_BUTTONS, + cancelButtonIndex: CANCEL_INDEX, + // destructiveButtonIndex: DESTRUCTIVE_INDEX, + // tintColor: 'blue' + }, + (buttonIndex) => { + // console.log('button clicked :', buttonIndex) + if (buttonIndex == 0) { + this.onTakeCamera() + } else if (buttonIndex == 1) { + this.onImagePick() + } + }) + }} + > + + + + + {/* LOGO */} + + + + {t('profile')} + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + name: input, + } + }) + }} + onChangeText={(evt) => this.handleRequired(evt, "fullname")} + placeholder={t('specific_fullname')} + placeholderTextColor={'#FFFFFF40'} + /> + + {/* + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + email: input + } + }) + }} + textContentType={'emailAddress'} + placeholder={'ระบุอีเมล'} + placeholderTextColor={'#FFFFFF40'} + /> + */} + + + + + + {t('gender')} + + + + { + this.setState({ + user: { + ...this.state.user, + gender: e + } + }) + }} + > + + + + + + + + {/* /// */} + + + { + this.setState({ + user: { + ...this.state.user, + birth_date: moment(data).format('YYYY-MM-DD'), + birth_date_show: moment(data).format('MM/DD/YYYY'), + text_birth: moment(data).add(543, 'years').format('DD-MM-YYYY') + } + }) + this.handleRequired(data, "birth_date"); + }}/> + + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + tax_id: input + } + }) + }} + onChangeText={(evt) => this.handleRequired(evt, "citizen_id")} + placeholder={t('citizen_id_13')} + placeholderTextColor={'#FFFFFF40'} + /> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + mobile: input + } + }) + }} + placeholder={t('phone')} + placeholderTextColor={'#FFFFFF40'} + value={this.state.user.mobile || ''} + /> + + {t('accom_info')} + + + + + {t('project')} + + + + { + // console.log('@@@@@@ project selected --------> ',e); + this.setState({ + project_name: e.name, + project_item: e, + selected_project: e.id, + user: { + ...this.state.user, + project: e.code, + project_name : e.name + }, + }, () => { + // console.log('check project selected --------> ',this.state.project_name); + this.getBuildingList() + }) + }} + > + {this.state.project_list.map((item) => { + return + })} + + + + + + + + + + {t('building')} + + + + { + this.setState({ + user: { + ...this.state.user, + building: e + } + }) + }} + > + {this.state.building_list.map((item) => { + return + })} + + + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + room: input + } + }) + }} + placeholder={t('room_no')} + placeholderTextColor={'#FFFFFF40'} + /> + + + + + + + + + + + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexGrow: 1, + flexDirection: 'column' + }, + logo: { + backgroundColor: '#3AA40C', + height: '20%', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center' + }, + form: { + flex: 1, + padding: 15, + paddingTop: 5, + paddingBottom: 0 + }, + row: { + flexDirection: 'row', + marginBottom: 5 + }, + form_address: { + padding: 10, + paddingBottom: 0 + }, + step_indicator: { + backgroundColor: '#3AA40C' + }, + buttons: { + flexDirection: 'row', + marginTop: 15, + marginBottom: 0, + bottom: 10 + }, + row_grow: { + flexGrow: 1 + }, + row_grow_first: { + flexGrow: 1, + }, + headerTitle: { + color: '#8BC34A', + marginVertical: 5, + marginTop: 10 + }, + btn_next_register: { + opacity: 1, + backgroundColor: '#145EB3' + }, + register_input: { + backgroundColor: 'rgba(255,255,255,0.3)', + color: 'red', + fontFamily: 'Prompt-Regular', + borderRadius: 30 + }, + disableNext :{ + opacity: 0.65, + cursor: "not-allowed", + backgroundColor: '#AAAAAA' + }, + enableNext :{ + opacity: 1, + color: '#FFFFFF', + backgroundColor: '#145EB3' + } +} + +const mapDisPatchToProps = state => { + return state.app +} +const setUser = dispatch => bindActionCreators({ appSetUser }, dispatch) +export default connect( + mapDisPatchToProps, + setUser +)(RegisterFormLoginScreen) diff --git a/src/screens/login/RegisterProfile.js b/src/screens/login/RegisterProfile.js new file mode 100644 index 0000000..e930821 --- /dev/null +++ b/src/screens/login/RegisterProfile.js @@ -0,0 +1,280 @@ +import React, { Component } from 'react' +import { ScrollView, TouchableOpacity, View, Alert } from 'react-native' +import Image from 'react-native-fast-image' +import { CustomStepIndicator } from '../../components/StepIndicator' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { CustomButton } from '../../components/CustomButton' +import { connect } from 'react-redux' +import { register, registerDevice, testConnect } from '../../api/UserApi' +import { bindActionCreators } from 'redux' +import { appSetDevice, appSetPushToken, appSetToken, appSetUser } from '../../redux/app/action' +import firebase, { Notification } from 'react-native-firebase' +import moment from 'moment' +import { setToken } from '../../api/api' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient'; +import Text from '../../components/Text'; +import { t } from '../../utils/i18n' + +class RegisterProfileScreen extends Component { + + constructor(props) { + super(props) + + this.state = { + auth: false, + disableButton: false + } + + this._register = this._register.bind(this); + this.initNotification = this.initNotification.bind(this); + + } + + componentDidMount() { + console.log(this.props) + if (!this.props.push_token) { + this.initNotification(); + } + } + + initNotification = async () => { + await this.setPermission() + const fcmToken = await firebase.messaging().getToken() + console.log('fcmToken', fcmToken) + if (fcmToken) { + this.props.appSetPushToken(fcmToken) + console.log('fcmToken', this.props) + + } else { + Alert.alert(null, 'Cannot get push token.', [{ text: 'ok' }]) + } + + } + + setPermission = async () => { + try { + const enabled = await firebase.messaging().hasPermission() + if (!enabled) { + await firebase.messaging().requestPermission() + } + } catch (error) { + console.log('error', error) + } + } + + + _register() { + this.setState({disableButton: true}) + if (!this.props.device && this.props.push_token) { + const resultSendDevice = registerDevice(this.props.push_token) + if (resultSendDevice.ok && resultSendDevice.data.success) { + this.props.appSetDevice(resultSendDevice.data.device) + } + } + if (!this.props.device || !this.props.push_token) { + Alert.alert(null, 'Cannot get push token or device.', [{ text: 'ok' }]) + return; + } + + register({ + ...this.props.user, + device_id: this.props.device.id + }).then( + (res) => { + if (res.ok && res.data.success) { + let token = res.data.token + //this.props.appSetToken(token) + if (res.data.customer) { + this.props.appSetUser(res.data.customer) + this.props.appSetToken(res.data.token) + setToken(token) + Alert.alert(null, t('register_success'), [{ text: t('ok') }]) + this.props.navigation.navigate('HomeScreen') + } + } else { + this.props.appSetUser(null) + let error_text = res.data.error; + if(res.data.errors && res.data.errors.room[0]){ + error_text = res.data.errors.room[0] + } + Alert.alert(null, error_text, [{ text: t('ok') }]) + this.props.navigation.goBack() + } + } + ); + } + + render() { + const { user } = this.props + return ( + + + + + + + + + + + {/* LOGO */} + + + + + + {t('profile')} + + + + ชื่อ + {/* อีเมล */} + {t('gender')} + {t('birth_date')} + {t('phone2')} + + { + user !== null && + + {user.name} + {/* {user.email} */} + {user.gender} + {moment(user.birth_date_show).add(543, 'years').format('D MMMM YYYY')} + {user.mobile} + + } + + + {t('accom_info')} + + + {t('project')} + {t('building')} + {t('room2')} + + { + user !== null && + + {user.project_name} + {user.building} + {user.room} + + } + + + + + + + + + + + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightDevice + + }, + logo: { + height: '23%', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + form: { + // height: '45%', + + flex: 1, + padding: 15, + paddingBottom: 0, + position: 'relative', + //backgroundColor: 'rgba(0, 66, 18,0.7)' + }, + table: { + flexDirection: 'row', + }, + row: { + // flex: 1, + flexDirection: 'row', + marginVertical: 5, + }, + row_title: { + flex: 2, + flexDirection: 'column', + marginVertical: 5, + }, + row_data: { + flex: 4, + flexDirection: 'column', + marginVertical: 5, + }, + step_indicator: { + // flex: 1, + }, + headerTitle: { + color: '#8BC34A', + marginTop: 5, + marginBottom: 5 + }, + row_grow: { + flexGrow: 1, + // marginLeft: 5 + // backgroundColor:"red", + }, + row_grow_first: { + flexGrow: 1, + marginRight: 5, + // backgroundColor:"blue", + }, + title_data: { + color: 'rgba(255, 255, 255, 0.65)', + fontSize: 14, + marginVertical: 5 + }, + detail_data: { + fontSize: 14, + marginVertical: 5, + color: 'white', + }, + buttons: { + flexGrow: 1, + // padding: 10, + // backgroundColor: 'red', + // alignItems: 'flex-end', + // justifyContent: 'center', + position: 'absolute', + flexDirection: 'row', + marginHorizontal: 15, + bottom: 10 + }, btn_next_register: { + backgroundColor: '#145EB3' + } +} + +const mapDisPatchToProps = state => { + return state.app +} +const setUser = dispatch => bindActionCreators({ appSetToken, appSetPushToken, appSetDevice, appSetUser }, dispatch) +export default connect(mapDisPatchToProps, setUser)(RegisterProfileScreen) diff --git a/src/screens/login/TermsAndCondition.js b/src/screens/login/TermsAndCondition.js new file mode 100644 index 0000000..df86059 --- /dev/null +++ b/src/screens/login/TermsAndCondition.js @@ -0,0 +1,66 @@ +import React, { Component } from 'react'; +import { View, ScrollView, TouchableOpacity, Linking } from 'react-native'; +import Text from '../../components/Text'; +import { Badge } from 'native-base' +import { WebView } from 'react-native-webview'; +import { t } from '../../utils/i18n' + +export default class TermsAndCondition extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + + render() { + return ( + + + + {/* TermsAndCondition */} + { + console.log('onNavigationStateChange >>>>>> ',event); + /*if (event.url.startsWith("http")) { + this.webview.stopLoading(); + this.webview.goBack(); + Linking.openURL(event.url); + }*/ + }} + /> + + + { + this.props.navigation.goBack() + }}> + + + {t('not_agree')} + + + + { + this.props.navigation.navigate('Register') + }}> + + + {t('agree')} + + + + + + + ); + } +} diff --git a/src/screens/meters/Meter.js b/src/screens/meters/Meter.js new file mode 100644 index 0000000..0244ac6 --- /dev/null +++ b/src/screens/meters/Meter.js @@ -0,0 +1,253 @@ +import React, { Component } from 'react'; +import { View, FlatList, TouchableOpacity, StyleSheet } from 'react-native'; +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text'; +import Carousel from 'react-native-snap-carousel' +import { itemWidth, sliderWidth } from '../../styles/SliderEntry.style' +import Icon from '../../components/Icon' +import {getMeterList,getRoomSlideList} from '../../api/UserApi'; +import moment from 'moment'; +import ImagePicker from 'react-native-image-crop-picker' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { NavigationEvents } from 'react-navigation'; +import { t } from '../../utils/i18n'; + + +export default class Meter extends Component { + constructor(props) { + super(props); + this.state = { + room_snap_index:0, + room_list:[], + cost_list:[], + image_selected: {}, + selected_type: '', + isLoading: true, + }; + this.onTakeCamera = this.onTakeCamera.bind(this) + this.selectedImage = this.selectedImage.bind(this) + this.getSlideList = this.getSlideList.bind(this) + this.getMeter = this.getMeter.bind(this) + } + + getMeter(){ + this.setState({ + isLoading: true + }) + getMeterList() + .then(res => { + console.log('check response meter list ----------> ',res.data); + if(res.ok){ + this.setState({ + room_list: res.data.rooms, + cost_list: res.data.data, + }) + } + this.setState({isLoading:false}) + }) + } + + getSlideList(room_id){ + this.setState({ + isLoading: true + }) + getRoomSlideList(room_id) + .then(res => { + console.log('check response meter list ----------> ',res.data); + if(res.ok){ + this.setState({ + // room_list: res.data.rooms, + cost_list: res.data.data, + }) + } + this.setState({isLoading:false}) + }) + } + + onTakeCamera() { + ImagePicker.openCamera({ + cropping: true, + width: 300, + height: 100, + includeExif: true + }).then(image => { + console.log('received image', image) + let image_meter = { + uri: image.path, + type: image.mime, + name: 'image_meter.jpg', + } + this.setState({ + image_url: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null, + }, () => { + this.selectedImage(this.state.image_url) + }) + }).catch(e => alert(e)) + } + + selectedImage(image_meter){ + this.setState({ + image_selected: image_meter, + },() => { + console.log('selected image ',this.state.image_selected) + if(this.state.selected_type == 'pea'){ + this.props.navigation.navigate('PEAMeter',{image: this.state.image_selected,room_id: this.state.room_list[this.state.room_snap_index].id}) + }else{ + this.props.navigation.navigate('WaterMeter',{image: this.state.image_selected,room_id: this.state.room_list[this.state.room_snap_index].id}) + } + }) + } + + _keyExtractor = (item, index) => 'meter_room_'+index; + + _renderItem = ({item}) => ( + + + {item.name} + {item.project_name} + + + {item.water} + + + + + {item.electric} + + + + + ); + + _keyExtractorCost = (item, index) => 'cost_list_'+index + + _renderItemCost = ({item,index}) => ( + // {}}> + + + + + + + + + + + {item.type == 'ค่าน้ำ' ? t('water_bill') : t('electric_unit')} + + + {t('unit')} {item.amount} {t('unit_price')} + {t('amount')} {item.cost} {t('baht')} + + + + {moment(item.created_at).format('DD MMMM YYYY')} + + + + + // + ); + + render() { + return ( + + { + this.getMeter() + }} + /> + { + this.state.room_list.length > 0 && + + { this._carousel = c }} + data={this.state.room_list} + renderItem={this._renderItem} + sliderWidth={sliderWidth} + itemWidth={itemWidth} + containerCustomStyle={{}} + slideStyle={{ justifyContent: 'center' }} + onSnapToItem={(item) => { + this.setState({room_snap_index:item}) + this.getSlideList(this.state.room_list[item].id) + }} + /> + + {this.state.room_list.map((item, i) => )} + + + { + this.setState({ + selected_type: 'water' + },() => { + this.onTakeCamera() + }) + }}> + + {t('save_water_meter')} + + { + this.setState({ + selected_type: 'pea' + },() => { + this.onTakeCamera() + }) + }}> + + {t('save_electric_meter')} + + + + } + + + + {t('no_water_electric_bill')} + + } + /> + + + + ); + } +} + +const styles = StyleSheet.create({ + viewBtn:{ + flex:1, + flexDirection:'row', + height: 50, + justifyContent:'center', + alignItems:'center', + borderRadius:5 + }, + textBtn:{ + color:'white', + fontSize:14, + marginLeft:10, + }, + cardText:{ + marginHorizontal: 10, + color: 'white', + fontSize: 16 + }, + viewTextFlatlist:{ + alignItems:'center', + flexDirection:'row' + }, + textFliatlist:{ + fontSize:12, + color:'#000000' + } +}) diff --git a/src/screens/meters/PEAMeter.js b/src/screens/meters/PEAMeter.js new file mode 100644 index 0000000..fbdde5b --- /dev/null +++ b/src/screens/meters/PEAMeter.js @@ -0,0 +1,137 @@ +import React, { Component } from 'react'; +import { View, Text, Alert } from 'react-native'; +import ImageBackground from 'react-native-fast-image' +import SaveViewMeter from './SaveViewMeter'; +import PopupMeter from './PopupMeter'; +import ImagePicker from 'react-native-image-crop-picker' +import {postMeter, postMeterImage} from '../../api/UserApi'; +import moment from 'moment'; + +export default class PEAMeter extends Component { + constructor(props) { + super(props); + this.state = { + numberMeter: '0', + isVisible: false, + image: this.props.navigation.getParam('image','no-image'), + image_send: {}, + room_id: this.props.navigation.getParam('room_id','no-id'), + isConfirm: false + }; + + this.onTextChanged = this.onTextChanged.bind(this) + this.onConfirm = this.onConfirm.bind(this) + this.onOK = this.onOK.bind(this) + this.onPopup = this.onPopup.bind(this) + this.onTakeCamera = this.onTakeCamera.bind(this) + this.postImageToOCR = this.postImageToOCR.bind(this) + } + + componentDidMount = () => { + this.setState({ + image_send: { + uri: this.state.image.uri, + type: this.state.image.mime, + name: `image_meter_${moment()}.jpg`, + } + },() => { + this.postImageToOCR() + }) + }; + + postImageToOCR(){ + let param = { + image: this.state.image_send + } + postMeterImage(param) + .then(res => { + if(res.ok){ + console.log('response post meter image ------> ',res.data) + this.setState({ + numberMeter: res.data.amount + }) + } + }) + } + + onTextChanged(text){ + this.setState({ + numberMeter: text + },() => { + if(this.state.numberMeter != ''){ + this.setState({ + isConfirm: true + }) + }else{ + this.setState({ + isConfirm: false + }) + } + }) + } + + onTakeCamera() { + ImagePicker.openCamera({ + cropping: true, + width: 300, + height: 100, + includeExif: true + }).then(image => { + console.log('received image', image) + let image_meter = { + uri: image.path, + type: image.mime, + name: 'image_meter.jpg', + } + this.setState({ + image_url: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null, + }, () => { + this.setState({ + image: this.state.image_url, + image_send: image_meter + },() => { + this.postImageToOCR() + }) + }) + }).catch(e => Alert.alert('Error',e)) + } + + onConfirm(){ + this.onPopup() + } + + onOK(){ + let param = { + room_id: this.state.room_id, + type: 'ค่าไฟ', + cost: 0, + amount: parseInt(this.state.numberMeter), + image: this.state.image_send + } + //send api + postMeter(param) + .then(res => { + console.log('response post meter ------> ',res.data) + this.onPopup() + this.props.navigation.goBack() + }) + } + + onPopup(){ + this.setState({ + isVisible: !this.state.isVisible + }) + } + + render() { + return ( + + + + + + + ); + } +} diff --git a/src/screens/meters/PopupMeter.js b/src/screens/meters/PopupMeter.js new file mode 100644 index 0000000..6ae1268 --- /dev/null +++ b/src/screens/meters/PopupMeter.js @@ -0,0 +1,39 @@ +import React, { Component } from 'react'; +import { View, Modal, TouchableOpacity } from 'react-native'; +import Text from '../../components/Text'; + +export default class PopupMeter extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + + render() { + return ( + + { + Alert.alert('Modal has been closed.'); + }}> + + + ยีนยันหมายเลขหน่วย + ระบบอาจจะใช้เวลาในการประมวลผลข้อมูล เพื่อเช็คความถูกต้องของข้อมูลที่กรอก + + {this.props.onCancel()}}> + Cancel + + {this.props.onOk()}}> + OK + + + + + + + ); + } +} diff --git a/src/screens/meters/SaveViewMeter.js b/src/screens/meters/SaveViewMeter.js new file mode 100644 index 0000000..019a1d3 --- /dev/null +++ b/src/screens/meters/SaveViewMeter.js @@ -0,0 +1,50 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity, TextInput, KeyboardAvoidingView, Platform, ScrollView } from 'react-native'; +import Image from 'react-native-fast-image' +import Text from '../../components/Text'; +import Icon from '../../components/Icon' +import moment from 'moment' + +export default class SaveViewMeter extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + + render() { + return ( + + + + + + + ถ่ายเมื่อวันที่ {moment().format('DD/MM/YYYY HH:mm')} น. + + + ถ่ายภาพมิเตอร์{this.props.TypeName}อีกครั้ง + + กรุณากรอกเลขมิเตอร์{this.props.TypeName} + this.props.TextChanged(text)} + value={this.props.amount} + keyboardType={'numeric'} + /> + + + {this.props.Confirm()}}> + + ยืนยันหมายเลขหน่วย + + + + + + ); + } +} diff --git a/src/screens/meters/WaterMeter.js b/src/screens/meters/WaterMeter.js new file mode 100644 index 0000000..07bd04f --- /dev/null +++ b/src/screens/meters/WaterMeter.js @@ -0,0 +1,137 @@ +import React, { Component } from 'react'; +import { View, Text } from 'react-native'; +import ImageBackground from 'react-native-fast-image' +import SaveViewMeter from './SaveViewMeter'; +import PopupMeter from './PopupMeter'; +import ImagePicker from 'react-native-image-crop-picker' +import {postMeter, postMeterImage} from '../../api/UserApi'; +import moment from 'moment'; + +export default class WaterMeter extends Component { + constructor(props) { + super(props); + this.state = { + numberMeter: '0', + isVisible: false, + image: this.props.navigation.getParam('image','no-image'), + image_send: {}, + room_id: this.props.navigation.getParam('room_id','no-id'), + isConfirm: false + }; + + this.onTextChanged = this.onTextChanged.bind(this) + this.onConfirm = this.onConfirm.bind(this) + this.onOK = this.onOK.bind(this) + this.onPopup = this.onPopup.bind(this) + this.onTakeCamera = this.onTakeCamera.bind(this) + this.postImageToOCR = this.postImageToOCR.bind(this) + } + + componentDidMount = () => { + this.setState({ + image_send: { + uri: this.state.image.uri, + type: this.state.image.mime, + name: `image_meter_${moment()}.jpg`, + } + },() => { + this.postImageToOCR() + }) + }; + + postImageToOCR(){ + let param = { + image: this.state.image_send + } + postMeterImage(param) + .then(res => { + if(res.ok){ + console.log('response post meter image ------> ',res.data) + this.setState({ + numberMeter: res.data.amount + }) + } + }) + } + + onTextChanged(text){ + this.setState({ + numberMeter: text + },() => { + if(this.state.numberMeter != ''){ + this.setState({ + isConfirm: true + }) + }else{ + this.setState({ + isConfirm: false + }) + } + }) + } + + onTakeCamera() { + ImagePicker.openCamera({ + cropping: true, + width: 300, + height: 100, + includeExif: true + }).then(image => { + console.log('received image', image) + let image_meter = { + uri: image.path, + type: image.mime, + name: 'image_meter.jpg', + } + this.setState({ + image_url: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null, + }, () => { + this.setState({ + image: this.state.image_url, + image_send: image_meter + },() => { + this.postImageToOCR() + }) + }) + }).catch(e => Alert.alert('Error',e)) + } + + onConfirm(){ + this.onPopup() + } + + onOK(){ + let param = { + room_id: this.state.room_id, + type: 'ค่าน้ำ', + cost: 0, + amount: parseInt(this.state.numberMeter), + image: this.state.image_send + } + //send api + postMeter(param) + .then(res => { + console.log('response post meter ------> ',res.data) + this.onPopup() + this.props.navigation.goBack() + }) + } + + onPopup(){ + this.setState({ + isVisible: !this.state.isVisible + }) + } + + render() { + return ( + + + + + + + ); + } +} diff --git a/src/screens/news/News.js b/src/screens/news/News.js new file mode 100644 index 0000000..6ead058 --- /dev/null +++ b/src/screens/news/News.js @@ -0,0 +1,660 @@ +import React, { Component, Fragment } from 'react' +import { + View, ScrollView, Dimensions, TouchableOpacity, StyleSheet, FlatList, RefreshControl, Animated, ActivityIndicator, Alert +} from 'react-native' +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import Icon from '../../components/Icon' +import { Card, Body, Badge, ListItem, Left, Right, } from 'native-base' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text' +import { NavigationEvents } from 'react-navigation' +import { getNews, getNewsPage, getUserProfile, getNewsByProject, login } from '../../api/UserApi' +import { bindActionCreators } from 'redux' +import { + appSetDevice, + appSetPushToken, + appSetToken, + appSetUser, + appCleanToken, + appCleanUser, + appSetNotification, + appSetProjectID +} from '../../redux/app/action' +import { connect } from 'react-redux' +import moment from 'moment' +import IndicatorLoading from '../../components/IndicatorLoading' +import { loginWithFacebook } from '../../components/FacebookUtils' +import { from } from 'rxjs' +//import Slideshow from 'react-native-image-slider-show'; +import { t, locale } from '../../utils/i18n' + +const { height, width } = Dimensions.get('window') +console.disableYellowBox = true + +class NewsScreen extends Component { + constructor (props) { + super(props) + this.state = { + isLoading: false, + refreshing: false, + auth: null, + position: 0, + user: { + point: 0 + }, + interval: null, + news_head: [{ + title: 'กำลังโหลดข้อมูลข่าว', + content: 'กำลังโหลดข้อมูลข่าว', + date: 'กำลังโหลดข้อมูลข่าว', + is_new: false + }], + new_all: [{ + title: 'กำลังโหลดข้อมูลข่าว', + content: 'กำลังโหลดข้อมูลข่าว', + date: 'กำลังโหลดข้อมูลข่าว', + is_new: false + }], + due_at: '', + pending_payment: '', + noti_count: 0, + isFirstTime: true, + user_point: 0, + user_project_id: 0, + isBilling: false, + isMeter: false, + isShipping: false, + scrollY: new Animated.Value(0), + loadMore: false, + loadPage: 1, + isLoadmore: false, + fb_is_link: false, + email: '', + } + + this._onCarouselScroll = this._onCarouselScroll.bind(this) + this.initData = this.initData.bind(this) + } + + componentDidMount () { + this.initData() + } + + async getUser () { + if (this.props.token != null) { + return await getUserProfile() + .then(res => { + if (res.ok) { + console.log("News:: res.data:") + console.log(res.data) + this.setState({ + pending_payment: res.data.pending_payment != null ? res.data.pending_payment : 0, + noti_count: res.data.count_noti, + user_point: res.data.point_balance, + user_project_id: res.data.project_id, + isBilling: res.data.user.enable_billing == null ? false : res.data.user.enable_billing, + isMeter: res.data.user.enable_meter == null ? false : res.data.user.enable_meter, + isShipping: res.data.user.enable_shipping == null ? false : res.data.user.enable_shipping, + fb_is_link: res.data.user.fb_is_link, + email: res.data.user.email, + }, () => { + if (res.data.message != null) { + Alert.alert('แจ้งเตือนจากระบบ', res.data.message) + } + }) + } else { + setTimeout(() => { + this.setState({ + isLoading: false + }, () => { + this.props.appCleanUser() + this.props.appCleanToken() + }) + }, 600) + + } + }) + } + return true + } + + async getAllNewsList () { + // return getNews() + return getNewsPage(this.state.loadPage) + .then(res => { + if ((res.data.data).length > 5) { + var cut = [] + for (let index = 0; index < 5; index++) { + cut.push(res.data.data[index]) + } + + this.setState({ + user: this.props.user, + news_head: cut, + new_all: res.data.data, + refreshing: false, + isLoading: false + }) + } else { + this.setState({ + news_head: res.data.data, + new_all: res.data.data, + refreshing: false, + isLoading: false + }) + } + }) + } + + initData () { + this.setState({ isLoading: true }) + Promise.all([ + this.getUser(), + this.getAllNewsList() + ]) + .then(() => { + let user_id = 0 + let user_noti_id = 0 + if (this.props.token != null) { + if (this.state.isFirstTime) { + this.props.appSetNotification(this.state.noti_count) + this.props.appSetProjectID(this.state.user_project_id) + this.setState({ isFirstTime: false }) + } + } + + if (this.props.user && this.props.user.id) { + user_id = this.props.user.id + user_noti_id = this.props.user.id + } else if (this.props.device && this.props.device.customer_id) { + user_noti_id = this.props.device.customer_id + } + + if (this.props.token != null && this.props.user != null) { + this.setState({ + auth: true, + }) + } else { + this.setState({ + auth: false + }) + } + + this.setState({ isLoading: false }) + }) + .catch(() => { + // console.log('catch ------------------>'); + // this.setState({isLoading:false}) + // this.props.appCleanUser() + // this.props.appCleanToken() + + setTimeout(() => { + this.setState({ + isLoading: false + }, () => { + this.props.appCleanUser() + this.props.appCleanToken() + }) + }, 600) + this.initData() + }) + } + + _onRefresh = () => { + this.setState({ + refreshing: true, loadPage: 1, loadMore: false + }, () => { + this.initData() + }) + } + + renderNativeItem = ({ item }) => ( + {this.props.navigation.navigate('NewsDetail', { news_id: item.id })}}> + + + {item.title} + + + {item.date} + + {item.type == "promotion" ? t('latest_promotion') : t('latest_news')} + + + + + ) + + renderNativeItemImages = (item) => { + return { + this.props.navigation.navigate('NewsDetail', { news_id: item.id }) + }}> + { this.props.source = require('../../../assets/images/default_big.png') }} style={styles.imgBg}> + + + {item.is_new == true ? + {item.type == "promotion" ? t('latest_promotion') : t('latest_news')} + : null } + {item.title} + + + + {item.date} + + + + + + + } + + getDueAt (date) { + let d = moment(date).format('D') + let m = moment(date).format('MM') + let y = parseInt(moment(date).format('Y')) + 543 + let new_date = moment().format('DD/MM/Y') + new_date = d + '/' + m + '/' + y + return new_date + } + + _onCarouselScroll (e) { + const scrollX = e.nativeEvent.contentOffset.x + this.setState({ + position: Math.ceil(scrollX / width) + }) + + // console.log(this.state.position) + } + + isCloseToBottom = ({ layoutMeasurement, contentOffset, contentSize }) => { + const paddingToBottom = 20 + return layoutMeasurement.height + contentOffset.y >= + contentSize.height - paddingToBottom + } + + loadMoreData = async () => { + const { loadMore } = this.state + if (loadMore) { + return + } + this.setState({ loadMore: true, isLoadmore: true }) + + let loadpage = this.state.loadPage + 1 + + /*loading - set loadMore = false when done*/ + getNewsPage(loadpage) + .then(res => { + if (res.ok) { + let resData = res.data.data + let news_arr = this.state.new_all + resData.forEach(item => { + // console.log('data >>>>>><<<< ',item); + news_arr.push(item) + }) + + this.setState({ + loadPage: loadpage, + new_all: news_arr, + refreshing: false, + loadMore: false, + isLoadmore: false + }) + + if (resData.length < 10) { + this.setState({ + loadMore: true + }) + return + } + } + }) + } + + _keyExtractorNewHead = (item, index) => 'new_head_' + index + _keyExtractorNewAll = (item, index) => 'new_all_' + index + + render () { + return ( + + { + this.setState({ isLoading: true }) + let checkNav = this.props.navigation.getParam('isLogin') + if (checkNav) { + this.props.navigation.setParams({ isLogin: false }) + this.initData() + } else { + this.setState({ isLoading: false }) + } + }} + /> + + + } + showsVerticalScrollIndicator={false} + scrollEventThrottle={16} + onScroll={Animated.event( + [{ nativeEvent: { contentOffset: { y: this.state.scrollY } } }] + )} + onMomentumScrollEnd={({ nativeEvent }) => { + if (this.isCloseToBottom(nativeEvent)) { + this.loadMoreData() + } + }} + > + + this.renderNativeItemImages(item)} + horizontal={true} + showsHorizontalScrollIndicator={false} + pagingEnabled={true} + keyExtractor={this._keyExtractorNewHead} + onScroll={this._onCarouselScroll} + /> + + {(this.state.news_head).map((item, i) => )} + + + {this.state.auth !== null && + ( + !this.state.auth ? ( + + + + + {t('for_csa_customer')} + {t('create_account')} {t('to_view_outstanding_balance')} + + { + // this.props.navigation.navigate('Register') + this.props.navigation.navigate('Terms') + }}> + + + {t('create_account')} + + + + {t('or')} + { this.props.navigation.navigate('Login') }}> + + + {t('login')} + + + + {t('or')} + + { + + loginWithFacebook(() => { + this.initData() + }) + /*if(this.state.fb_is_link !== false){ + loginWithFacebook(() => { + this.initData() + }) + }else{ + Alert.alert( + "", + "อิเมล์ "+this.state.email+" ยังไม่ได้ลงทะเบียนในระบบ กรุณาสมัครสมาชิก", + [ + { text: "OK", onPress: () => console.log("OK Pressed") } + ], + { cancelable: false } + ) + }*/ + + }}> + + + + + {t('login_facebook')} + + + + + + + ) : ( + + + + + + + + + {/*คุณมียอดค้างชำระ*/} + {t('have_outstanding_balance')} + + + {this.state.isBilling ? this.state.pending_payment : 'N/A'} + {/*{parseFloat(this.state.pending_payment) > 0 ?'โปรดชำระก่อนวันที่':'ยังไม่มียอดค้างชำระ'}*/} + {parseFloat(this.state.pending_payment) > 0 ? t('to_view_outstanding_balance') : t('no_outstanding_balance_yet')} + {this.state.due_at !== '' && {parseFloat(this.state.pending_payment) > 0 && this.state.due_at !== '' ? this.getDueAt(this.state.due_at) : ''} } + + {this.props.navigation.navigate('Bill')}}> + {/*ดูเพิ่มเติม*/} + {t('view_more')} + + + + + + + + + + + {/*คะแนนสะสม*/} + {t('view_points')} + {this.state.user_point} + {/*พอยต์*/} + {t('point')} + {}}> + {/*แลกคะแนน*/} + {t('redeem')} + + + + + + + + {this.state.isMeter ? + + { + this.props.navigation.navigate('Meter') + }} style={{ flex: 1 }}> + + + + + {t('smart_meter')} + + + + + + : null} + {this.state.isShipping ? + + { + this.props.navigation.navigate('Object') + }} style={{ flex: 1 }}> + + + + + {t('mail_and_parcel')} + + + + + + : null} + + { this.props.navigation.navigate('RepairService',{ + user:this.props.user + }) }} + style={{ flex: 1 }}> + + + + + {t('request_repair')} + + + + + + + {this.props.navigation.navigate('Question')}} style={{ flex: 1 }}> + + + + + {t('inquire')} + + + + + + + + )) + } + + { + return + }} + ListFooterComponent={() => { + if (!this.state.isLoadmore) return null + return ( + + Loading... + ) + }} + /> + + + + + + ) + } +} + +//export default NewsScreen + +const styles = StyleSheet.create({ + container: { + flex: 1, flexDirection: 'column', + padding: 7 + }, + row: { + flex: 1, flexDirection: 'row', + }, + textNews: { + backgroundColor: '#0D8890', + width: 60, + color: '#FFFFFF', + borderRadius: 5, + + textAlign: 'center', + fontSize: 12 + }, + imgBg: { + flex: 1, + height: 200, + width: width, + justifyContent: 'flex-end' + }, + textNewsName: { + color: '#FFFFFF', + fontSize: 18 + }, + textDate: { + color: 'white', + fontSize: 12, + marginLeft: 5, + marginTop: 10 + }, + contentContainer: { + paddingVertical: 0, + }, + image_style: { + height: 64, + width: 64, + borderRadius: 5, + }, + custom_card: { + width: '50%', paddingHorizontal: 5, + // width: '100%' + } +}) + +const mapDisPatchToProps = state => { + return state.app +} + +const setUser = dispatch => bindActionCreators({ appSetToken, appSetPushToken, appSetDevice, appSetUser, appCleanToken, appCleanUser, appSetNotification, appSetProjectID }, dispatch) +export default connect(mapDisPatchToProps, setUser)(NewsScreen) diff --git a/src/screens/news/NewsDetail.js b/src/screens/news/NewsDetail.js new file mode 100644 index 0000000..0a7b091 --- /dev/null +++ b/src/screens/news/NewsDetail.js @@ -0,0 +1,171 @@ +import React, { Component } from 'react' +import {View, ScrollView, StyleSheet, Linking, Button, TouchableOpacity, Alert} from 'react-native'; +import Image from 'react-native-fast-image' +import { WebView } from 'react-native-webview'; +import { Body, Badge, List, ListItem, Right, Title } from 'native-base' +import Icon from '../../components/Icon' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import { BackgroundImage } from '../../components/BackgroundImage' +import { getNewsDetail } from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n' + +import ImageView from 'react-native-image-view'; +import {NavigationActions} from "react-navigation"; +var uri = null; +const injectScript = ` + (function () { + window.onclick = function(e) { + e.preventDefault(); + window.postMessage(e.target.href); + e.stopPropagation() + } + }()); +`; + +export default class NewsDetailScreen extends Component { + constructor(props) { + super(props) + this.state = { + isLoading: true, + isImageViewVisible: false, + content:'', + news_id: this.props.navigation.getParam('news_id', 'NO ITEM'), + news_detail:{} + } + } + + componentDidMount(){ + this.getNewsData() + }; + + + componentWillUnmount() { + if(this.props && this.props.navigation && this.props.navigation.state && this.props.navigation.state.params && this.props.navigation.state.params.getNotification){ + this.props.navigation.state.params.getNotification() + } + } + + getNewsData(){ + this.setState({ + isLoading: true + }) + getNewsDetail(this.state.news_id) + .then(res => { + if(res.ok){ + this.setState({ + isLoading: false, + news_detail: res.data.data + }) + }else{ + this.setState({ + isLoading: false, + news_detail: [ + { + title: '', + content: '', + style: '', + is_new: true, + date:'', + url:'', + } + ], + + }) + Alert.alert('','ถูกยกเลิกเผยแพร่ข่าว') + // alert('ถูกยกเลิกเผยแพร่ข่าว') + // this.context.router.goBack() + + } + }) + } + + render() { + return ( + + + + + {this.setState({isImageViewVisible: true})}}> + + + + + + {this.state.news_detail.title} + + + + + {this.state.news_detail.date} + + + {this.state.news_detail.is_new == true ? + {t('latest_news')} + : null} + + + + + {t('detail')} + + `+this.state.news_detail.content+'' }} + ref={(ref) => { this.webview = ref; }} + javaScriptEnabled={true} + domStorageEnabled={true} + // onShouldStartLoadWithRequest={(navState)=>{ //open external browser for android + // console.log('onShouldStartLoadWithRequest >>>>>> ',navState); + // Linking.openURL(navState.url) + // return false; + // }} + + onNavigationStateChange={(event) => { + console.log('onNavigationStateChange >>>>>> ',event); + if (event.url.startsWith("http")) { + this.webview.stopLoading(); + this.webview.goBack(); + Linking.openURL(event.url); + } + }} + /> + + + + ) + } +} + +const styles = StyleSheet.create({ + imgBg: { + width: '100%', + height: 200, + paddingTop: 80 + }, + textNews: { + backgroundColor: '#0D8890', + width: 60, + color: '#FFFFFF', + borderRadius: 5, + + textAlign: 'center', + fontSize: 12 + } +}) diff --git a/src/screens/notification/Notification.js b/src/screens/notification/Notification.js new file mode 100644 index 0000000..4c2c972 --- /dev/null +++ b/src/screens/notification/Notification.js @@ -0,0 +1,358 @@ +import React, {Component} from 'react' +import {FlatList, View, TouchableOpacity, RefreshControl, ScrollView, ActivityIndicator} from 'react-native' +import Image from 'react-native-fast-image' +import {BackgroundImage} from '../../components/BackgroundImage' +import LinearGradient from 'react-native-linear-gradient'; +import Text from '../../components/Text'; +import { get_notification, news, read_notification} from '../../api/UserApi' +import {bindActionCreators} from 'redux' +import {appSetNotification} from '../../redux/app/action' +import {connect} from 'react-redux'; +import moment from "moment"; +import { t } from '../../utils/i18n'; + +const injectScript = ` + (function () { + window.onclick = function(e) { + e.preventDefault(); + window.postMessage(e.target.href); + e.stopPropagation() + } + }()); +`; + +class NotificationScreen extends Component { + constructor(props) { + super(props) + this.state = { + new_noti: [], + page: 1, + last_page: 1, + refreshing: false, + } + } + + _set_read(item) { + read_notification(item.id).then(res => { + console.log('read noti => ', res.data.message) + }) + } + + componentDidMount() { + if (this.props.token != null && this.props.user != null) { + this.setState({ + auth: true, + }) + } else { + this.setState({ + auth: false, + }) + } + + this.setState({ + page: 1, + refreshing: true + }, () => { + this.getNotification() + }) + } + + getNotification() { + let user_noti_id = 0; + if(this.props.user && this.props.user.id){ + user_noti_id = this.props.user.id + }else if(this.props.device && this.props.device.customer_id){ + user_noti_id = this.props.device.customer_id + } + + // console.log('user_noti_id => ', user_noti_id) + if(this.props.token != null){ + get_notification(user_noti_id, 1).then(res => { + if (res.data) { + this.setState({ + new_noti: res.data.data, + page: res.data.current_page, + refreshing: false, + last_page: res.data.last_page + }); + } + }) + }else{ + this.setState({ + refreshing: false + }) + } + } + + componentWillUnmount() { + let user_noti_id = 0; + if(this.props.user && this.props.user.id){ + user_noti_id = this.props.user.id + }else if(this.props.device && this.props.device.customer_id){ + user_noti_id = this.props.device.customer_id + } + this.props.appSetNotification(0) + } + + loadMoreNoti() { + // console.log('check loadmore -------------> '); + let user_noti_id = 0; + if(this.props.user && this.props.user.id){ + user_noti_id = this.props.user.id + }else if(this.props.device && this.props.device.customer_id){ + user_noti_id = this.props.device.customer_id + } + + if(parseInt(this.state.page) < parseInt(this.state.last_page) && !this.state.refreshing){ + this.setState({ + page: this.state.page + 1, + refreshing: true + }, () => { + get_notification(user_noti_id, this.state.page).then(res => { + if (res.data) { + let listData = this.state.new_noti + let new_listdata = listData.concat(res.data.data) + this.setState({ + new_noti: new_listdata, + page: res.data.current_page, + refreshing: false, + last_page: res.data.last_page + }); + } + }) + }) + } + } + + _onRefresh = () => { + this.setState({refreshing: true, page: 1}, () => { + this.getNotification() + }); + } + + getTypeNoti(source_type) { + let type = 'ข่าวใหม่'; + switch (source_type) { + case 'news': + type = t('latest_news'); + break; + case 'rooms': + type = t('new_room'); + break; + case 'promotion': + type = t('latest_promotion'); + break; + default: + type = t('latest_news'); + break; + } + + return type; + } + + getDateNoti(date) { + let d = moment(date).format('D') + let m = moment(date).format('MM') + let y = parseInt(moment(date).format('Y')) + 543 + let new_month = 'ม.ค.'; + let new_date = d + ' ' + new_month + ' ' + y; + switch (m) { + case '01': + new_month = 'ม.ค.'; + break; + case '02': + new_month = 'ก.พ.'; + break; + case '03': + new_month = 'มี.ค.'; + break; + case '04': + new_month = 'เม.ย.'; + break; + case '05': + new_month = 'พ.ค.'; + break; + case '06': + new_month = 'มิ.ย.'; + break; + case '07': + new_month = 'ก.ค.'; + break; + case '08': + new_month = 'ส.ค.'; + break; + case '09': + new_month = 'ก.ย.'; + break; + case '10': + new_month = 'ต.ค.'; + break; + case '11': + new_month = 'พ.ย.'; + break; + case '12': + new_month = 'ธ.ค.'; + break; + default: + new_month = 'ม.ค.'; + break; + } + + new_date = d + ' ' + new_month + ' ' + y; + return new_date; + } + + renderSeparator() { + return ( + + ); + } + + renderFooter() { + if (!this.state.refreshing) return null; + return ( + + ); + } + + _keyExtractorNewNoti = (item, index) => 'new_noti_'+index + + render() { + return ( + + + + } + > + + + + {t('no_notification')} + + } + ItemSeparatorComponent={this.renderSeparator} + ListFooterComponent={this.renderFooter.bind(this)} + renderItem={({item, rowData, index}) => + { + this._set_read(item), + this.props.navigation.navigate('NewsDetail', { + news_id: item.source_id, + getNotification: () => this.getNotification() + }) + }} + key={index} + delayPressIn={50} + activeOpacity={0.8} + style={[item.is_read === false ? styles.isReadFalse : styles.isReadTrue]} + > + + + + + {/*{this.getTypeNoti(item.source_type)}*/} + { + item.source && + item.source.content_type && + item.source.content_type == 'general' ? t('latest_news') : t('latest_promotion') + } + + + {item.title} + + + + {this.getDateNoti(item.notified_at)} + + + + + } + /> + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + }, + contentContainer: { + paddingVertical: 0, + }, + isReadFalse: { + flex: 1, + flexDirection: 'row', + backgroundColor: '#E1EDD2', + borderBottomColor: '#7CBB33', + borderBottomWidth: 1 + }, + isReadTrue: { + flex: 1, + flexDirection: 'row', + backgroundColor: '#ffffff', + borderBottomColor: 'rgba(0, 0, 0, 0.25)', + borderBottomWidth: 1 + }, + viewimages: { + flex: 1, + flexDirection: 'row', + alignItems: 'flex-start', + marginBottom: 3 + }, + image: { + width: 50, + height: 50, + borderRadius: 5, + marginLeft: 16, + marginTop: 16 + }, + viewcontainer: { + flex: 1, + justifyContent: 'center', + marginLeft: 5, + padding: 12 + }, + text_emply_noti: { + marginTop: 10, + // fontFamily: Fonts.KrungthaiRegular, + fontSize: 14, + lineHeight: 22, + color: 'rgba(0, 0, 0, 0.5)', + alignItems: 'center' + } +} +const mapDisPatchToProps = state => { + return state.app +} + +const countNotification = dispatch => bindActionCreators({ appSetNotification }, dispatch) +export default connect(mapDisPatchToProps, countNotification)(NotificationScreen) diff --git a/src/screens/object/MessageObject.js b/src/screens/object/MessageObject.js new file mode 100644 index 0000000..b4b3e6b --- /dev/null +++ b/src/screens/object/MessageObject.js @@ -0,0 +1,151 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity, StyleSheet, RefreshControl } from 'react-native'; +import Image from 'react-native-fast-image' +import { FlatList } from 'react-native-gesture-handler'; +import Text from '../../components/Text'; +import Icon from '../../components/Icon' +import {getObjectMessage} from '../../api/UserApi' +import moment from 'moment'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { NavigationEvents } from 'react-navigation' +import { t } from 'src/utils/i18n' +// import 'moment/locale/th'; +// moment.locale('th'); + +export default class MessageObject extends Component { + constructor(props) { + super(props); + this.state = { + isRefreshing: false, + isLoading: true, + message_list:[] + }; + + this.statusText = this.statusText.bind(this) + this.statusColor = this.statusColor.bind(this) + } + + componentDidMount() { + // this.getObject() + } + + getObject(){ + this.setState({ + isLoading: true + }) + getObjectMessage() + .then(res => { + if(res.ok){ + this.setState({ + message_list: res.data.data, + }) + } + this.setState({ + isLoading: false + }) + }) + } + + statusColor(status){ + switch(status){ + case 'PENDING': + return '#C4C4C4' + case 'ERROR': + return '#FF662E' + case 'WAIT_PICKUP': + return '#2C7C0B' + case 'RECEIVE': + return '#2C7C0B' + default: + return '#FF662E' + } + } + + statusText(status){ + switch(status){ + case 'PENDING': + return t('waiting_for_pickup') + case 'WAIT_PICKUP': + return t('awaiting_payment') + case 'RECEIVE': + return t('paid') + case 'ERROR': + default: + return t('contact_front_desk') + } + } + + _keyExtractor = (item, index) => 'msg_obj_'+index + + _renderItem = ({item,index}) => ( + {this.props.navigation.navigate('ObjectDetail',{object_id: item.id})}} + disabled={item.status == 'PENDING' ? false : true} + style={{opacity:item.status == 'PENDING' ? 1 : 0.5}}> + + + + + + + + {item.parcel_name} + {item.code != null && t('confirmation_code')} + + + {t('consignee')} : { item.customer ? item.customer.name : "" } + {item.code != null && item.code} + + + + + {moment(item.updated_at).format('DD MMMM YYYY')} + + + + {this.statusText(item.status)} + + + + + + + ); + + render() { + return ( + + { + this.getObject() + }} + /> + + } + data={this.state.message_list} + extraData={this.state} + keyExtractor={this._keyExtractor} + renderItem={this._renderItem} + style={{flex:1}} + ListEmptyComponent={() => + + {t('no_mail_parcel')} + + } + /> + + + ); + } +} + +const styles = StyleSheet.create({ + textTitle:{ + color:'#269A21', + fontSize: 14, + } +}) diff --git a/src/screens/object/MessageObjectDetail.js b/src/screens/object/MessageObjectDetail.js new file mode 100644 index 0000000..a5a9153 --- /dev/null +++ b/src/screens/object/MessageObjectDetail.js @@ -0,0 +1,126 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity, StyleSheet } from 'react-native'; +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import Text from '../../components/Text'; +import {getObjectMessageByID} from '../../api/UserApi' +import moment from 'moment'; +import { t } from '../../utils/i18n' +//import 'moment/locale/th'; +//moment.locale('th'); + +export default class MessageObjectDetail extends Component { + constructor(props) { + super(props); + this.state = { + object_id: this.props.navigation.getParam('object_id','no-id'), + object_data: {} + }; + this.statusText = this.statusText.bind(this) + this.statusColor = this.statusColor.bind(this) + } + + componentDidMount() { + this.getObjectDetail() + } + + getObjectDetail(){ + getObjectMessageByID(this.state.object_id) + .then(res => { + console.log('check response ============> ',res) + if(res.ok){ + this.setState({ + object_data: res.data.data + }) + } + }) + } + + statusColor(status){ + switch(status){ + case 'PENDING': + return '#C4C4C4' + case 'ERROR': + return '#FF662E' + case 'WAIT_PICKUP': + return '#2C7C0B' + case 'RECEIVE': + return '#2C7C0B' + default: + return '#FF662E' + } + } + + statusText(status){ + switch(status){ + case 'PENDING': + return 'รอรับของ' + case 'ERROR': + return 'ติดต่อเคาน์เตอร์' + case 'WAIT_PICKUP': + return 'รอจ่ายที่เคาน์เตอร์' + case 'RECEIVE': + return 'จ่ายเรียบร้อย' + default: + return 'ติดต่อเคาน์เตอร์' + } + } + + render() { + return ( + + + + + + + {this.state.object_data.parcel_name} + + {t('status')} + + {this.statusText(this.state.object_data.status)} + + + {t('date')} + {moment(this.state.object_data.updated_at).format('DD MMMM YYYY')} + เวลา + {moment(this.state.object_data.updated_at).format('HH:mm')} + + + ผู้รับ + {this.state.object_data.customer != null && this.state.object_data.customer.name} + {/* + + + รหัสยืนยัน + * ใช้รหัสนี้เพื่อยืนยันการรับของ * + + + {this.state.object_data.code} + + */} + + {this.props.navigation.navigate('Signature',{object_id: this.state.object_id})}}> + {t('receive_code')} + + + + ); + } +} + +const styles = StyleSheet.create({ + textTitle:{ + fontSize:14, + color: '#269A21' + }, + textBaclk:{ + color: '#000000', + fontSize: 14 + }, + textGray:{ + color: '#00000080' + ,fontSize: 14 + } +}) diff --git a/src/screens/object/SignaturePadScreen.js b/src/screens/object/SignaturePadScreen.js new file mode 100644 index 0000000..a3ff02c --- /dev/null +++ b/src/screens/object/SignaturePadScreen.js @@ -0,0 +1,92 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity, StyleSheet, Alert } from 'react-native'; +import Text from '../../components/Text'; +import Signature from 'react-native-signature-canvas'; +import {postSignatureImage} from '../../api/UserApi'; +import { t } from '../../utils/i18n'; + +export default class SignaturePadScreen extends Component { + constructor(props) { + super(props); + this.state = { + signature: null, + object_id: this.props.navigation.getParam('object_id','no-id') + }; + } + + handleSignature = signature => { + let param = { + id: this.state.object_id, + image: signature + } + console.log('-----------> handle signature') + this.setState({ signature },() => { + postSignatureImage(param) + .then(res => { + if(res.ok){ + Alert.alert(null,'บันทึกสำเร็จ',[{text: t('ok')}]) + this.props.navigation.navigate('Object') + }else{ + Alert.alert(null,'บันทึกไม่สำเร็จ กรุณาลองอีกครั้ง',[{text: t('ok')}]) + } + }) + }); + }; + + render() { + const signatureStyle = `.m-signature-pad--footer + .button { + background-color: #269A21; + color: #FFF; + }`; + return ( + + {/*image show signature when save*/} + {/* + {this.state.signature ? ( + + ) : null} + */} + { this._signature = c }} + onOK={this.handleSignature} + descriptionText="ลายเซ็น" + clearText="ล้าง" + confirmText="บันทึกรูป" + webStyle={signatureStyle} + /> + {/* {this._signature.onOK()}}>*/} + {/*ยืนยัน*/} + {/**/} + + ); + } +} + +const styles = StyleSheet.create({ + preview: { + width: 335, + height: 114, + backgroundColor: "#F8F8F8", + justifyContent: "center", + alignItems: "center", + marginTop: 15 + }, + previewText: { + color: "#FFF", + fontSize: 14, + height: 40, + lineHeight: 40, + paddingLeft: 10, + paddingRight: 10, + backgroundColor: "#69B2FF", + width: 120, + textAlign: "center", + marginTop: 10 + } +}); diff --git a/src/screens/product/Product.js b/src/screens/product/Product.js new file mode 100644 index 0000000..422ff0d --- /dev/null +++ b/src/screens/product/Product.js @@ -0,0 +1,13 @@ +import React,{Component} from 'react' +import {Text} from 'react-native' + +class ProductScreen extends Component { + + render() { + return( + index Product + ) + } +} + +export default ProductScreen \ No newline at end of file diff --git a/src/screens/profile/EditProfile.js b/src/screens/profile/EditProfile.js new file mode 100644 index 0000000..dd828b4 --- /dev/null +++ b/src/screens/profile/EditProfile.js @@ -0,0 +1,618 @@ +import React, { Component } from 'react' +import { + View, + ScrollView, + Image, + TouchableOpacity, + Platform, + KeyboardAvoidingView, + Alert +} from 'react-native' +import Icon from '../../components/Icon' +import { Picker } from 'native-base' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text' +import { CustomInput } from '../../components/CustomInput' +import { CustomButton } from '../../components/CustomButton' +import { CustomPicker } from '../../components/CustomPicker' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { bindActionCreators } from 'redux' +import { appSetDevice, appSetUser, appCleanUser } from '../../redux/app/action' +import { connect } from 'react-redux' +import { edit_profile, project, getBuildingByProjectId } from '../../api/UserApi' +import moment from 'moment' +import ImagePicker from 'react-native-image-crop-picker' +import ActionSheet from 'react-native-action-sheet' +import CustomDatePicker from '../room/CustomDatePicker'; +import { t } from '../../utils/i18n' + +let ACTIONSHEET_BUTTONS = [ + 'ถ่ายรูป', + 'รูปจากแกลอรี่', + t('cancel') +] + +// let DESTRUCTIVE_INDEX = 3; +let CANCEL_INDEX = 2 + +class EditProfileScreen extends Component { + + constructor (props) { + super(props) + this.edit_profile = this.edit_profile.bind(this) + this.state = { + user: {}, + image_url: require('../../../assets/images/profile.png'), + project_list:[], + building_list: [], + selected_project: 0, + project_name:t('choose_project'), + } + this.onImagePick = this.onImagePick.bind(this) + this.onTakeCamera = this.onTakeCamera.bind(this) + } + + componentDidMount () { + const { navigation } = this.props + const users_state = navigation.getParam('user', 'NO ITEM') + + // console.log('check user state ----------- ',users_state) + if(users_state.gender == null || users_state.gender == 'null'){ + console.log('NULL'); + this.setState({ + user: { + gender: 'male', + ...users_state + } + }) + }else{ + console.log('NOT NULL'); + this.setState({ + user: users_state + }) + } + + this.getProjectList() + } + + getProjectList() { + project() + .then(res => { + if (res.ok) { + return this.setState({ + project_list: res.data.data, + selected_project: res.data.data[0].id + }) + } + }) + } + + getBuildingList() { + getBuildingByProjectId(this.state.selected_project) + .then(res => { + if (res.ok) { + this.setState({ + building_list: res.data.data + }) + } + }) + } + + edit_profile () { + // console.log('send user data for edit ----------> ',this.state.user); + if(this.state.user.password != null || this.state.user.password != ''){ + if(this.state.user.password === this.state.user.confirm_password){ + edit_profile(this.state.user).then(res => res.data) + .then(res => { + this.props.appSetUser(res) + this.props.navigation.navigate('Profile') + }) + }else{ + Alert.alert('รหัสผ่านไม่ถูกต้อง',`รหัสผ่านใหม่ไม่ตรงกับรหัสยืนยัน\nกรุณาลองอีกครั้ง`) + } + }else{ + edit_profile(this.state.user).then(res => res.data) + .then(res => { + this.props.appSetUser(res) + this.props.navigation.navigate('Profile') + }) + } + } + + onImagePick () { + ImagePicker.openPicker({ + width: 300, + height: 300, + cropping: true, + includeBase64: true + }).then(image => { + // console.log('received base64 image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: { uri: `data:${image.mime};base64,` + image.data, width: image.width, height: image.height }, + images: null, + user: { + ...this.state.user, + profile_image_id: image_profile + } + }) + }).catch(e => alert(e)) + } + + onTakeCamera () { + ImagePicker.openCamera({ + cropping: true, + width: 300, + height: 300, + includeExif: true + }).then(image => { + // console.log('received image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: { uri: image.path, width: image.width, height: image.height, mime: image.mime }, + images: null, + user: { + ...this.state.user, + profile_image_id: image_profile + } + }) + }).catch(e => alert(e)) + } + + render () { + const { navigation } = this.props + const users = navigation.getParam('user', 'NO ITEM') + // console.log('users :', users); + return ( + + + + + + + + { + // this.onImagePick() + ActionSheet.showActionSheetWithOptions({ + options: ACTIONSHEET_BUTTONS, + cancelButtonIndex: CANCEL_INDEX, + // destructiveButtonIndex: DESTRUCTIVE_INDEX, + // tintColor: 'blue' + }, + (buttonIndex) => { + // console.log('button clicked :', buttonIndex) + if (buttonIndex == 0) { + this.onTakeCamera() + } else if (buttonIndex == 1) { + this.onImagePick() + } + }) + }}> + + + + + + + + + + {t('profile')} + + { + this.setState({ + user: { + ...this.state.user, + name: text + } + }) + }}/> + + + { + this.setState({ + user: { + ...this.state.user, + email: text + } + }) + }}/> + + + + + + + {t('gender')} + + + + { + // console.log('check gender +++++++++++++++ ',e); + this.setState({ + user: { + ...this.state.user, + gender: e + } + }) + }} + > + + + + + + + + + + { + this.setState({ + user: { + ...this.state.user, + birth_date: moment(data).format('YYYY-MM-DD') + } + })}}/> + + + + { + this.setState({ + user: { + ...this.state.user, + tax_id: text + } + }) + }}/> + + + { + this.setState({ + user: { + ...this.state.user, + mobile: text + } + }) + }}/> + + {t('accom_info')} + + + + + {t('project')} + + + + { + // console.log('@@@@@@ project selected --------> ',e); + this.setState({ + project_name: e.name, + project_item:e, + selected_project: e.id, + user: { + ...this.state.user, + project: e.code, + }, + }, () => { + this.getBuildingList() + }) + }} + > + {this.state.project_list.map((item,index) => { + return + })} + + + + + + + + + {t('building')} + + + + { + this.setState({ + user: { + ...this.state.user, + building: e + } + }) + }}> + {this.state.building_list.length > 0 && this.state.building_list.map((item,index) => { + return + })} + + + + + { + this.setState({ + user: { + ...this.state.user, + room: text + } + }) + }}/> + + + {t('change_password')} + + + { + this.setState({ + user: { + ...this.state.user, + password: text + } + }) + }}/> + + + { + this.setState({ + user: { + ...this.state.user, + confirm_password: text + } + }) + }}/> + + + + + + + + + + + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightDevice, + }, + logo: { + height: '20%', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + form: { + flex: 1, + padding: 15, + paddingTop: 5, + paddingBottom: 0, + }, + row: { + flexDirection: 'row', + marginBottom: 5, + }, + form_address: { + padding: 10, + paddingBottom: 0, + }, + step_indicator: { + }, + buttons: { + flexDirection: 'row', + marginTop: 15, + bottom: 10 + }, + row_grow: { + flexGrow: 1, + }, + row_grow_first: { + flexGrow: 1, + }, + headerTitle: { + color: '#8BC34A', + marginVertical: 5, + marginTop: 10 + + }, btn_next_register: { + backgroundColor: '#145EB3' + }, register_input: { + backgroundColor: 'rgba(255,255,255,0.3)', + borderRadius: 30, + } +} + +const mapDisPatchToProps = state => { + return state.app +} +const setUser = dispatch => bindActionCreators({ appSetDevice, appSetUser, appCleanUser }, dispatch) +export default connect(mapDisPatchToProps, setUser)(EditProfileScreen) diff --git a/src/screens/profile/Profile.js b/src/screens/profile/Profile.js new file mode 100644 index 0000000..d399b08 --- /dev/null +++ b/src/screens/profile/Profile.js @@ -0,0 +1,230 @@ +import React, { Component } from 'react' +import { ScrollView, View, Alert } from 'react-native' +import Image from 'react-native-fast-image' +import { Button } from 'native-base' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import Icon from 'src/components/Icon' +import { CustomButton } from '../../components/CustomButton' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' +import { getUserProfile } from '../../api/UserApi'; +import moment from 'moment' +import { NavigationEvents } from 'react-navigation' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { loginWithFacebook,disconnectWithFacebook } from '../../components/FacebookUtils'; +import { t } from '../../utils/i18n' + +class ProfileScreen extends Component { + constructor(props) { + super(props) + this.state = { + isLoading: false, + user:{}, + room:null, + } + this.getUserData = this.getUserData.bind(this) + } + + componentDidMount(){ + // this.getUserData() + this.setState({ + isLoading: true + }) + }; + + getUserData(){ + this.setState({ + isLoading: true + }) + getUserProfile() + .then(res => { + // console.log('user profile -------> ',res); + if(res.ok){ + this.setState({ + isLoading: false, + user: res.data.user, + room: res.data.room + }) + }else{ + this.setState({ + isLoading: false + }) + } + }) + } + + refreshPage() { + window.location.reload(false); + } + + render() { + return ( + + { + this.getUserData() + }} + /> + + + + + + + + + + {t('profile')} + + {t('category')} + {t('individual2')} + + + {t('name')} + {this.state.user.name} + + + {t('email')} + {this.state.user.email} + + + {t('phone2')} + {this.state.user.mobile} + + + {t('citizen_id')} + {this.state.user.tax_id} + + + {t('gender')} + {this.state.user.gender=="male"? t('male') : t('female')} + + + {t('birth_date')} + {moment(this.state.user.birth_date).format('DD-MM-YYYY')} + + + { + this.state.room != null && + + {t('accom_info')} + + {t('accommodation')} + {this.state.room.project_name} + + + {t('zone')} + {this.state.room.zone_name} + + + {t('room2')} + {this.state.room.number} + + + } + + + + + + { + !this.state.user.fb_is_link? + + + + : + + + + } + + + + + + + + ) + } +} + +const styles = { + container: { + flexDirection: 'column', + height: '100%', + }, + image_profile: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: '25%', + }, + text_field_style: { + color: 'white', + width: '35%', + marginBottom: 8, + fontSize: 14, + }, + data_field_style: { + color: 'white', + marginLeft: 5, + fontSize: 14, + width: '65%', + } +} + +const mapDisPatchToProps = state => { + return state.app +} +const prop_set = dispatch => bindActionCreators({ }, dispatch) +export default connect(mapDisPatchToProps, prop_set)(ProfileScreen) diff --git a/src/screens/repair/RepairConfirm.js b/src/screens/repair/RepairConfirm.js new file mode 100644 index 0000000..a9c62b6 --- /dev/null +++ b/src/screens/repair/RepairConfirm.js @@ -0,0 +1,270 @@ +import React,{Component} from 'react' +import { + TouchableOpacity, + TextInput, + StyleSheet, + View, + ScrollView, + Alert, + Image, + ImageBackground, + FlatList +} from 'react-native' +import Icon from "../../components/Icon"; +import { CustomButton } from '../../components/CustomButton'; +import { Button, Card, Body, Badge, ListItem, Left, Right,CheckBox, } from 'native-base' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import Color from '../../color'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { postRepair } from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import DateTimePicker from "react-native-modal-datetime-picker"; +import moment from 'moment'; +import { t } from '../../utils/i18n' + +export default class RepairConfirm extends Component { + constructor(props) { + super(props) + this.state = { + isLoading: false, + repair:{}, + order_list:[ + { + title: 'น้ำรั่ว', + price: '200' + }, + { + title: 'เปลี่ยนก๊อกน้ำ', + price: '150' + }, + { + title: 'ไฟฟ้าช๊อต', + price: '500' + } + ], + success_data:{}, + select_date: new Date(), + select_time: new Date(), + tomorrow: new Date(moment().add(1, 'days').format()), + isTimePickerVisible: false, + isDateTimePickerVisible: false, + room: '', + project: '', + + } + this.confirmRepairService = this.confirmRepairService.bind(this) + this.hideDateTimePicker = this.hideDateTimePicker.bind(this) + this.handleDatePicked = this.handleDatePicked.bind(this) + this.hideTimePicker = this.hideTimePicker.bind(this) + this.handleTimePicked = this.handleTimePicked.bind(this) + } + + componentDidMount = () => { + const { navigation } = this.props + const repair_state = navigation.getParam('repair', 'NO-DATA') + + // this.state.repair = { repair: repair_state } + this.state.repair = repair_state + this.setState({ + repair: repair_state, + room: repair_state.repairs[0].room, + project: repair_state.repairs[0].project, + }) + console.log('repair_state:') + console.log(repair_state) + console.log('this.state.repair:') + console.log(this.state.repair) + console.log('room') + console.log(this.state.repair.repairs[0].room) + console.log('project') + console.log(this.state.repair.repairs[0].project) + }; + + confirmRepairService(){ + this.setState({ + isLoading: true + }) + + console.log('this.state.repair.date:') + // console.log(this.state.repair.date) + console.log(moment(this.state.select_date).format('YYYY-MM-DD')) + console.log('this.state.repair.time:') + // console.log(this.state.repair.time) + console.log(moment(this.state.select_time).format('HH:mm')) + console.log('this.state.repair:') + console.log(this.state.repair) + + let params = { + // date: this.state.repair.date, + date: moment(this.state.select_date).format('YYYY-MM-DD'), + // time: this.state.repair.time, + time: moment(this.state.select_time).format('HH:mm'), + repairs:[ + { + services_id: this.state.repair.repairs[0].services_id, + }, + ], + room: this.state.repair.repairs[0].room, + project: this.state.repair.repairs[0].project, + } + + console.log('check paran send ------->> ', params) + postRepair(params) + .then(res => { + console.log('response ----------------------- ',res.data); + if(res.ok){ + this.setState({ + success_data: res.data.data, + isLoading: false + },() => { + + console.log('success_data:') + console.log(res.data.data) + this.props.navigation.navigate('RepairSuccess',{ + repair: this.state.success_data, + room: this.state.repair.repairs[0].room, + project: this.state.repair.repairs[0].project, + }) + }) + } + }) + .catch(() => { + this.setState({ + isLoading: false + }) + }) + } + + renderItem = ({item}) => { + console.log(item) + return + {item.name} + {item.service_fee} {t('baht')} + + } + + _keyExtractor = (item, index) => 'repair_order_'+index + + hideDateTimePicker(){ + this.setState({ isDateTimePickerVisible: !this.state.isDateTimePickerVisible }); + //alert("hideDateTimePicker") + }; + + handleDatePicked = date => { + //alert(date) + this.state.select_date = date + this.hideDateTimePicker(); + //this.setState({select_date: date}) + this.state.select_date = date + //alert("handleDatePicked") + //alert(date) + }; + + hideTimePicker(){ + this.setState({ isTimePickerVisible: !this.state.isTimePickerVisible }); + }; + + handleTimePicked = date => { + this.state.select_time = date + //alert(date) + this.hideTimePicker(); + // this.setState({select_time: date}) + this.state.select_time = date + }; + + render() { + return ( + + + + + + + {t('room')} { this.state.room } + { this.state.project } + + + {t('make_appoint')} + + + + {t('date')} + {moment(this.state.select_date).format('DD-MM-YYYY')} + + + + {t('time')} + {moment(this.state.select_time).format('HH:mm')} + + + + + {t('information')} + + + + {t('estimate_charge')} + {this.state.repair.service_fee} {t('baht')} + + + + + { + Alert.alert( + t('send_confirmation'), + t('send_confirm'), + [ + { text: t('cancel'), style: 'cancel' }, + { text: t('ok'), onPress: () => this.confirmRepairService() }, + ], + { cancelable: false } + ) + }} + title={'ยืนยัน'} /> + + + + + + + ) + } +} + +const styles = { + containerHeadbar: { + flex: 1, + height: GetWidthHeightDevice.HeightContainer, + justifyContent:'space-between' + }, + button_style: { + backgroundColor: '#269A21', + height: 40, + borderRadius: 5, + justifyContent:'center', + } +} diff --git a/src/screens/repair/RepairHistory.js b/src/screens/repair/RepairHistory.js new file mode 100644 index 0000000..2c6f16d --- /dev/null +++ b/src/screens/repair/RepairHistory.js @@ -0,0 +1,175 @@ +import React,{Component} from 'react' + +import { + TouchableOpacity, + TextInput, + StyleSheet, + View, + ScrollView, + Alert, + Image, + FlatList, + ImageBackground, + RefreshControl +} from 'react-native' +import Icon from "../../components/Icon"; +import { Button, Card, Body, Badge, ListItem, Left, Right,CheckBox, } from 'native-base' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import Color from '../../color'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import {getRepairList} from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n' + + +export default class RepairHistory extends Component { + + constructor(props) { + super(props) + this.state = { + isLoading: false, + history_list:[ + // { + // title: 'A1-1', + // status: 'รอดำเนินการ', + // tag: '#124456' + // }, + // { + // title: 'A1-2', + // status: 'แจ้งซ่อม', + // tag: '#546315' + // }, + // { + // title: 'A1-2', + // status: 'เสร็จสิ้น', + // tag: '#148521' + // }, + // { + // title: 'A1-2', + // status: 'เสร็จสิ้น', + // tag: '#986521' + // }, + ] + } + this.onRefresh = this.onRefresh.bind(this) + this.convertStatus = this.convertStatus.bind(this) + this.convertColorStatus = this.convertColorStatus.bind(this) + } + + componentDidMount = () => { + this.getRepairHistoryList() + }; + + getRepairHistoryList(){ + this.setState({ + isLoading: true + }) + getRepairList() + .then(res => { + if(res.ok){ + console.log('check data response ----------> ',res.data.data); + this.setState({ + history_list: res.data.data, + }) + } + this.setState({ + isLoading: false + }) + }) + } + + convertStatus(statusName){ + switch(statusName){ + case 'Pending': + return t('pending') + case 'InProgress': + return 'ซ่อมแซม' + case 'NewAppointment': + return 'นัดหมายใหม่' + case 'Cancel': + return t('cancel') + case 'Success': + return 'สำเร็จ' + default: + return t('pending') + } + } + + convertColorStatus(statusName){ + switch(statusName){ + case 'Pending': + return '#C4C4C4' + case 'InProgress': + return '#FFCC00' + case 'NewAppointment': + return '#145EB3' + case 'Cancel': + return '#FF2D55' + case 'Success': + return '#2C7C0B' + default: + return '#C4C4C4' + } + } + + renderItem = (item) => { + return {this.props.navigation.navigate('RepairHistoryDetail',{repair_id:item.id})}}> + + + {t('room')} {item.room_no} + + + {this.convertStatus(item.status)} + + + + {item.services_name} + #{item.tag} + + + + + {`${item.date}, ${item.time}`} + + {item.points} คะแนน + + + + } + + onRefresh(){ + this.getRepairHistoryList() + } + + _keyExtractor = (item, index) => 'history_'+index + + render() { + return ( + + + } + data={this.state.history_list} + renderItem={({ item }) => this.renderItem(item)} + pagingEnabled={true} + extraData={this.state} + style={{backgroundColor:'#EEFFD7'}} + keyExtractor={this._keyExtractor} + ListEmptyComponent={() => ( + + {t('no_repair_history')} + + )} + /> + + + ) + } +} diff --git a/src/screens/repair/RepairHistoryDetail.js b/src/screens/repair/RepairHistoryDetail.js new file mode 100644 index 0000000..53c6cae --- /dev/null +++ b/src/screens/repair/RepairHistoryDetail.js @@ -0,0 +1,169 @@ +import React,{Component} from 'react' +import { + TouchableOpacity, + TextInput, + StyleSheet, + View, + ScrollView, + Alert, + Image, + ImageBackground, + FlatList +} from 'react-native' +import Icon from "../../components/Icon"; +import { CustomButton } from '../../components/CustomButton'; +import { Button, Card, Body, Badge, ListItem, Left, Right,CheckBox, } from 'native-base' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import Color from '../../color'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { getRepairById } from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n' +import moment from 'moment'; + +export default class RepairHistoryDetail extends Component { + constructor(props) { + super(props) + this.state = { + isLoading: false, + repair_id: this.props.navigation.getParam('repair_id','NO_ITEM'), + repair:{}, + order_list:[ + // { + // title: 'น้ำรั่ว', + // price: '200' + // }, + // { + // title: 'เปลี่ยนก๊อกน้ำ', + // price: '150' + // }, + // { + // title: 'ไฟฟ้าช๊อต', + // price: '500' + // }, + ] + } + this.convertStatus = this.convertStatus.bind(this) + this.convertColorStatus = this.convertColorStatus.bind(this) + } + + componentDidMount = () => { + this.getRepairData() + }; + + + getRepairData(){ + this.setState({ + isLoading: true + }) + getRepairById(this.state.repair_id) + .then(res => { + console.log('repair data -------------> ',res.data.data) + this.setState({ + repair: res.data.data, + order_list: res.data.data.services, + isLoading: false + }) + }) + } + + renderItem = (item) => { + return + {item.name} + {item.service_fee} {t('baht')} + + } + + _keyExtractor = (item, index) => 'order_'+index + + convertStatus(statusName){ + switch(statusName){ + case 'Pending': + return t('pending') + case 'InProgress': + return 'ซ่อมแซม' + case 'NewAppointment': + return 'นัดหมายใหม่' + case 'Cancel': + return t('cancel') + case 'Success': + return 'สำเร็จ' + default: + return t('pending') + } + } + + convertColorStatus(statusName){ + switch(statusName){ + case 'Pending': + return '#C4C4C4' + case 'InProgress': + return '#FFCC00' + case 'NewAppointment': + return '#145EB3' + case 'Cancel': + return '#FF2D55' + case 'Success': + return '#2C7C0B' + default: + return '#C4C4C4' + } + } + + render() { + return ( + + + + + + {t('room')} A1-1 + #{this.state.repair.tag} + + โครงการเจริญสินธานี (CNE) + + + {t('make_appoint')} + + {t('date')} + {moment(this.state.repair.date).format('DD-MM-YYYY') } + เวลา + {moment(this.state.repair.time).format('HH:mm') } + + + {t('status')} + + {this.convertStatus(this.state.repair.status)} + + + {t('information')} + this.renderItem(item)} + pagingEnabled={true} + extraData={this.state} + keyExtractor={this._keyExtractor} + /> + + + {t('estimate_charge')} + 850 {t('baht')} + + + + + + + ) + } +} + +const styles = { + textTitle:{ + fontSize: 14, + color: Color.green_title, + marginBottom: 10 + } +} diff --git a/src/screens/repair/RepairService.js b/src/screens/repair/RepairService.js new file mode 100644 index 0000000..2e3f52d --- /dev/null +++ b/src/screens/repair/RepairService.js @@ -0,0 +1,571 @@ +import React, {Component} from 'react' +import {Button, View,} from 'native-base' +import {Dimensions, FlatList, ScrollView, StyleSheet, TouchableOpacity, Alert, RefreshControl} from 'react-native' +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import LinearGradient from 'react-native-linear-gradient' +import Text from '../../components/Text'; +import moment from "moment"; +import Color from '../../../src/color'; +import {getService, getServicesType, getUserProfile, payment} from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t, locale } from '../../utils/i18n'; +import Icon from '../../components/Icon'; + +const SLIDER_1_FIRST_ITEM = 0; +const { height, width } = Dimensions.get('window') + +const btnActiveColor = '#145EB3' +const btnUnActiveColor = '#FFFFFF' +export default class RepairService extends Component { + constructor(props) { + super(props) + + this.state = { + isLoading: false, + refreshing: false, + activePage: 0, + repair_list:[], + isSelectReapair: true, + isSelectOther: false, + indexItem: [], + selectServiceIndex: 0, + selectService:{}, + room_list:[], + service_data : [], + customer_project_name: '', + user:'', + room:'', + project_name:'', + + payment: [], + sum_payment: [], + isCanPay: true, + all_payment : [], + room_number_array : [], + selected_room: '', + selected_project: '', + loadMore: false, + loadPage: 1, + isLoadmore: false, + }; + this._onCarouselScroll = this._onCarouselScroll.bind(this) + this.switchSelected = this.switchSelected.bind(this) + this.getServicesListByType = this.getServicesListByType.bind(this) + this.setCheckIndex = this.setCheckIndex.bind(this) + this.sendRepairService = this.sendRepairService.bind(this) + }; + + componentDidMount = () => { + + const { navigation } = this.props + const users_state = navigation.getParam('user', 'NO ITEM') + const selected_room_state = navigation.getParam('selected_room', '') + const selected_project_state = navigation.getParam('selected_project', '') + this.state.selected_room = selected_room_state + this.state.selected_project = selected_project_state + console.log('init selected_room:'+ selected_room_state) + console.log('init selected_project:'+ selected_project_state) + + // if((selected_room_state !== '')&&(selected_project_state !== '')){ + //this.switchSelected('repair') + // }else{ + this.getServicesListByType(2) + // } + + // console.log('check user state ----------- ',users_state) + if(users_state.gender == null || users_state.gender == 'null'){ + console.log('NULL'); + this.setState({ + user: { + gender: 'male', + ...users_state + } + }) + }else{ + console.log('NOT NULL'); + this.setState({ + user: users_state + }) + } + console.log('users_state:') + console.log(users_state) + if(users_state){ + payment(users_state.id) + .then(res => { + if(res.ok){ + let sum_payment = []; + let array_payment = []; + let sum_cost_room = res.data.sum_cost_room; + if(Object.keys(sum_cost_room).length > 0) { + Object.keys(sum_cost_room).map((sum_cost) => { + sum_payment.push({ + total_cost : sum_cost_room[sum_cost].total_cost, + room: sum_cost_room[sum_cost].room, + project: sum_cost_room[sum_cost].project, + due_at: sum_cost_room[sum_cost].due_at, + } + ) + }) + } + + let payment = res.data.payment_room_period + if(Object.keys(payment).length > 0){ + Object.keys(payment).map((pay) => { + if(Object.keys(payment[pay]).length > 0){ + Object.keys(payment[pay]).map((detail) => { + this.state.room_number_array.push(pay) + array_payment.push({ + room_id: pay, + period: detail, + // total_cost: payment[pay][detail].total_cost, + // details: payment[pay][detail].details, + // status: payment[pay][detail].status, + // created_at: payment[pay][detail].created_at, + // payment_id: payment[pay][detail].id, + // enable_qr: payment[pay][detail].enable_qr + ...payment[pay][detail] + }) + }) + } + }) + } + let all_payment_data = array_payment; + + let array_room_no = this.state.room_number_array; + this.setState({ + room_number_array: array_room_no.filter((item, i, ar) => ar.indexOf(item) === i).reverse() + }); + + let first_room = this.state.room_number_array[0]; + array_payment = array_payment.filter((obj)=>{ + return Object.keys(obj).reduce((acc, curr)=>{ + return obj.room_id === first_room + }, false); + }); + + + let date_now = moment() + let findTimeout = array_payment.find((item) => {return moment(item.due_at) == date_now}) + //check bill timeout + if(findTimeout !== undefined){ + this.setState({ + isCanPay: false + }) + } + + this.setState({ + isLoading:false, + payment: array_payment, + sum_payment: sum_payment, + all_payment: all_payment_data + }) + } + }) + } + + //this.state.selected_room='' + //this.state.selected_project='' + }; + + switchSelected(typeName){ + if(typeName == 'repair'){ + this.setState({ + isSelectReapair: true, + isSelectOther: false + }) + this.getServicesListByType(2) + }else{ + this.setState({ + isSelectReapair: false, + isSelectOther: true + }) + this.getServicesListByType(1) + } + } + + getServicesListByType(id){ + this.setState({ + isLoading: true + }) + getUserProfile() + .then(res => { + if(res.ok){ + //alert(res.data.user.project_name) + this.setState({ + // isLoading: false, + user: res.data.user, + room: res.data.room, + project_name: res.data.user.project_name, + }) + console.log('res.data.user.project_name:') + console.log(res.data.user.project_name) + + getServicesType(id) + .then(res => { + this.state.customer_project_name = this.state.project_name + //alert(this.state.project_name.slice(0,-4)) + //alert(this.state.project_name.normalize()) + //this.state.service_data = res.data.data + console.log('res.data.data:') + console.log(res.data.data) + this.state.service_data = res.data.data.filter(obj => { + return obj.project_code === this.state.selected_project + }) + console.log('this.state.service_data:') + console.log(this.state.service_data) + + /*this.state.service_data = this.state.service_data.filter(l => { + return l.project_code.match( + this.state.selected_project + ) + })*/ + + this.setState({ + repair_list: this.state.service_data, + isLoading: false, + selectService: this.state.service_data[0], + selected_project: this.state.service_data[0].project_name, + },() => { + this.state.repair_list.map(() => { + this.state.indexItem.push(false) + }) + }) + }) + + + }else{ + this.setState({ + isLoading: false + }) + } + }) + + } + + sendRepairService(){ + //alert(this.state.selected_room) + //alert(this.state.selected_project) + + console.log('date:') + console.log('time:') + + + + let params = { + date: moment().format('YYYY-MM-DD'), + time: moment().format('HH:MM:SS'), + repairs:[ + { + name:this.state.selectService.name, + services_id: this.state.selectService.id, + service_fee: this.state.selectService.service_fee, + room: this.state.selected_room, + project: this.state.selected_project, + } + ], + service_fee: this.state.selectService.service_fee + } + + this.props.navigation.navigate('RepairConfirm',{repair: params}) + + } + + setCheckIndex(index){ + let indexBool = this.state.indexItem.slice(); //creates the clone of the state + indexBool[index] = !this.state.indexItem[index] + this.setState({ + indexItem: indexBool + }) + } + + _renderContent = (item,index) => { + return { + // this.setCheckIndex(index) + this.setState({ + selectServiceIndex: index, + selectService: item, + selected_project: item.project_name + }) + }}> + + + {item.name} + ค่าบริการขั้นต่ำ {item.service_fee} {t('baht')} + + { + this.state.repair_list != null && this.state.repair_list.length > 0 && + this.state.repair_list[this.state.selectServiceIndex].id == item.id && + + + + } + + + } + + getDueDate (date) { + let d = moment(date).format('D') + let m = moment(date).format('MM') + let y = parseInt(moment(date).format('Y')) + 543 + let new_month = 'ม.ค.'; + let new_date = d + ' ' + new_month + ' ' + y; + switch (m) { + case '01': + new_month = 'ม.ค.'; + break; + case '02': + new_month = 'ก.พ.'; + break; + case '03': + new_month = 'มี.ค.'; + break; + case '04': + new_month = 'เม.ย.'; + break; + case '05': + new_month = 'พ.ค.'; + break; + case '06': + new_month = 'มิ.ย.'; + break; + case '07': + new_month = 'ก.ค.'; + break; + case '08': + new_month = 'ส.ค.'; + break; + case '09': + new_month = 'ก.ย.'; + break; + case '10': + new_month = 'ต.ค.'; + break; + case '11': + new_month = 'พ.ย.'; + break; + case '12': + new_month = 'ธ.ค.'; + break; + default: + new_month = 'ม.ค.'; + break; + } + new_date = d + ' ' + new_month + ' ' + y; + return new_date; + } + + renderNativeItemImages = (item) => { + return + + + + {item.room && item.room.name} + {item.project && item.project.name} + + + มีการแจ้งใช้บริการ + + + + + } + _onCarouselScroll(e) { + const scrollX = e.nativeEvent.contentOffset.x + this.setState({ + activePage: Math.floor(scrollX / width) + }) + } + + _keyExtractor = (item, index) => 'repair_'+index + _keyExtractorContent = (item, index) => 'repair_content_'+index + + + getListViewItem = (item) => { + console.log('this.state.payment:') + console.log(this.state.payment) + console.log('this.state.sum_payment:') + console.log(this.state.sum_payment) + + let selected_room_data = this.state.sum_payment.filter(obj => { + return obj.room === item + }) + console.log('selected_room_data[0].project:') + console.log(selected_room_data[0].project) + + //this.payment_room_period[''].project_code*/ + this.state.selected_room=item + this.state.selected_project=selected_room_data[0].project + console.log("selected_room_data[0]:") + console.log(selected_room_data[0]) + //Alert.alert(this.state.selected_project) + + this.switchSelected('repair') + + this.props.navigation.navigate('RepairService', + {user:this.state.user, selected_room:this.state.selected_room,selected_project:this.state.selected_project}) + + } + + _onRefresh = () => { + this.setState({ + refreshing: true, loadPage: 1, loadMore: false + }, () => { + //this.initData() + //alert('refresh') + }) + } + + + render() { + let dataTest = [''] + console.log('room_number_array:') + console.log(this.state.room_number_array) + return ( + + + + + + // } + > + + this.renderNativeItemImages(item)} + horizontal={true} + onScroll={this._onCarouselScroll} + pagingEnabled={true} + extraData={this.state} + keyExtractor={this._keyExtractor} + showsHorizontalScrollIndicator={false} + /> + + {this.state.room_list.map((item, i) => )} + + + + + + + { this.state.selected_room !== ''? + + {t('place_choose_service')} + + + + + + : + + กรุณาเลือกห้องที่ต้องการแจ้ง + + } + + + + + { !this.state.room_number_array? + ไม่มีรายการห้องพัก + : + + this.state.selected_room == ''? + ( + + + ห้อง { item } + + + )} + ListEmptyComponent={() => ( + + ไม่มีรายการห้องพัก + + )} + /> + : + this._renderContent(item,index)} + extraData={this.state} + keyExtractor={this._keyExtractorContent} + ListEmptyComponent={() => ( + + ไม่มีรายการของบริการอื่นๆ + + )} + /> + + + } + + + + + + + {this.state.selected_room !== '' ? + { + this.sendRepairService() + // this.props.navigation.navigate('RepairConfirm') + }}> + {t('call_for_service')} + + : + + } + + + + + + + + ) + } +} + +const styles = StyleSheet.create({ + contentContainer: { + paddingVertical: 0, + flexGrow: 1, + }, + button_style_repair: { + height: 32, + borderRadius: 5, + width: 127, + justifyContent: 'center', + marginLeft: 10 + }, + button_style_other: { + height: 32, + borderRadius: 5, + width: 127, + justifyContent: 'center', + }, +}) diff --git a/src/screens/repair/RepairServiceDetail.js b/src/screens/repair/RepairServiceDetail.js new file mode 100644 index 0000000..7262e52 --- /dev/null +++ b/src/screens/repair/RepairServiceDetail.js @@ -0,0 +1,166 @@ +import React, { Component } from 'react' +import { + TouchableOpacity, + TextInput, + StyleSheet, + View, + ScrollView, + Alert, + Image, + Slider, + ImageBackground +} from 'react-native' +import Icon from "../../components/Icon"; +import { CustomButton } from '../../components/CustomButton'; +import { Button, Card, Body, Badge, ListItem, Left, Right,CheckBox, } from 'native-base' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import Color from '../../../src/color'; +import { t } from 'src/utils/i18n' + +export default class RepairServiceDetail extends Component { + constructor(props) { + super(props); + this.state = { + value: 2, + point_selected: 0 + } + this.sendEvaluate = this.sendEvaluate.bind(this) + } + + sendEvaluate(){ + Alert.alert(null, 'ส่งผลประเมินสำเร็จ') + } + + changeSlide(value) { + this.setState({ + value: parseFloat(value), + point_selected: value+1 + }); + } + + render() { + const {value} = this.state; + return ( + + + + + + + {t('room')} A1-1 + #123456 + + โครงการเจริญสินธานี (CNE) + + + + {t('make_appoint')} + + {t('date')} + 01-01-2019 + เวลา + 12:00-13:00 + + + {t('status')} + + {t('complete')} + + + + {t('information')} + + + น้ำรั่ว + ค่าบริการขั้นต่ำ 200 {t('baht')} + + + เปลี่ยนก๊อกน้ำ + ค่าบริการขั้นต่ำ 150 {t('baht')} + + + ไฟฟ้าช๊อต + ค่าบริการขั้นต่ำ 500 {t('baht')} + + + + {t('estimate_charge')} + ค่าบริการขั้นต่ำ 850 {t('baht')} + + + + + {t('rating')} + + 1 + 2 + 3 + 4 + 5 + + + + + + { + Alert.alert( + 'แจ้งเตือน !', + 'ยืนยันการส่งข้อมูล ?', + [ + { text: 'Cancel', style: 'cancel' }, + { text: 'OK', onPress: () => this.sendEvaluate() }, + ], + { cancelable: false } + ) + }} + title={'ส่งประเมิน'} /> + + + ) + } +} + + + +const styles = { + containerHeadbar: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightContainer, + padding:16, + fontStyle: "normal", + justifyContent:'space-between' + }, + hairline: { + marginVertical: 17, + backgroundColor: '#A2A2A2', + height: 1, + width: '100%' + }, + button_style: { + backgroundColor: '#145EB3', + height: 40, + borderRadius: 5, + width: "100%", + }, + row: { + flex: 1, flexDirection: "row", + }, + info_order_view:{ + paddingVertical:5, + flexDirection: 'row', + justifyContent:'space-between' + } +} diff --git a/src/screens/repair/RepairSuccess.js b/src/screens/repair/RepairSuccess.js new file mode 100644 index 0000000..9be7c09 --- /dev/null +++ b/src/screens/repair/RepairSuccess.js @@ -0,0 +1,190 @@ +import React,{Component} from 'react' +import { + TouchableOpacity, + TextInput, + StyleSheet, + View, + ScrollView, + Alert, + Image, + ImageBackground, + FlatList +} from 'react-native' +import Icon from "../../components/Icon"; +import { CustomButton } from '../../components/CustomButton'; +import { Button, Card, Body, Badge, ListItem, Left, Right,CheckBox, } from 'native-base' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import Color from '../../color'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { t } from '../../utils/i18n' +import moment from 'moment'; + +export default class RepairSuccess extends Component { + constructor(props) { + super(props) + this.state = { + repair:{}, + room:'', + project:'', + order_list:[ + { + title: 'น้ำรั่ว', + price: '200' + }, + { + title: 'เปลี่ยนก๊อกน้ำ', + price: '150' + }, + { + title: 'ไฟฟ้าช๊อต', + price: '500' + }, + ] + } + this.convertStatus = this.convertStatus.bind(this) + this.convertColorStatus = this.convertColorStatus.bind(this) + } + + componentDidMount = () => { + + const { navigation } = this.props + const repair_state = navigation.getParam('repair', 'NO-DATA') + const room_state = navigation.getParam('room', 'NO-DATA') + const project_state = navigation.getParam('project', 'NO-DATA') + + this.setState({ + // repair: this.props.navigation.getParam('repair','NO-DATA') + repair: repair_state, + room: room_state, + project: project_state, + }) + console.log('repair_state:') + console.log(repair_state) + + + + + }; + + renderItem = ({item}) => { + return + {item.name} + {item.service_fee} {t('baht')} + + } + + _keyExtractor = (item, index) => 'order_'+index + + convertStatus(statusName){ + switch(statusName){ + case 'Pending': + return t('pending') + case 'InProgress': + return 'ซ่อมแซม' + case 'NewAppointment': + return 'นัดหมายใหม่' + case 'Cancel': + return t('cancel') + case 'Success': + return 'สำเร็จ' + default: + return t('pending') + } + } + + convertColorStatus(statusName){ + switch(statusName){ + case 'Pending': + return '#C4C4C4' + case 'InProgress': + return '#FFCC00' + case 'NewAppointment': + return '#145EB3' + case 'Cancel': + return '#FF2D55' + case 'Success': + return '#2C7C0B' + default: + return '#C4C4C4' + } + } + + render() { + return ( + + + + + + + {t('request_sent')} + + + + + {t('room')} {this.state.room} + #{this.state.repair.tag} + + {this.state.repair.project_name} + + + {t('make_appoint')} + + {t('date')} + { moment(this.state.repair.date).format('DD-MM-YYYY') } + เวลา + + + {this.state.repair.time == null ? '' : this.state.repair.time.slice(0,-3) } + + + + + + + {t('status')} + + {this.convertStatus(this.state.repair.status)} + + + {t('information')} + + + + {t('estimate_charge')} + {this.state.repair.total} {t('baht')} + + + + + {this.props.navigation.popToTop()}} + title={t('back_home')} /> + + + + ) + } +} + +const styles = { + textTitle:{ + fontSize: 14, + color: Color.green_title, + marginBottom: 10 + }, + button_style: { + backgroundColor: '#269A21', + height: 40, + borderRadius: 5, + justifyContent:'center', + } +} diff --git a/src/screens/reward/RewardDetailScreen.js b/src/screens/reward/RewardDetailScreen.js new file mode 100644 index 0000000..8c6ca19 --- /dev/null +++ b/src/screens/reward/RewardDetailScreen.js @@ -0,0 +1,125 @@ +import React, { Component } from 'react' +import { View, StyleSheet, Linking, TouchableOpacity } from 'react-native' +import Image from 'react-native-fast-image' +import { WebView } from 'react-native-webview'; +import { Badge } from 'native-base' +import Icon from '../../components/Icon' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import { BackgroundImage } from '../../components/BackgroundImage' +import { getProductDetail } from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from 'src/utils/i18n' +import ImageView from 'react-native-image-view'; +var uri = null; +const injectScript = ` + (function () { + window.onclick = function(e) { + e.preventDefault(); + window.postMessage(e.target.href); + e.stopPropagation() + } + }()); +`; + +export default class RewardDetailScreen extends Component { + constructor(props) { + super(props); + this.state = { + isLoading: true, + isImageViewVisible: false, + product_id: this.props.navigation.getParam('product_id', 'NO ITEM'), + product: {} + }; + } + + componentDidMount(){ + this.initData() + }; + + initData(){ + getProductDetail(this.state.product_id) + .then(res => { + if(res.ok){ + console.log('data product id ------------> ',res) + this.setState({ + isLoading: false, + product: res.data.data + }) + } + }) + } + + onMessage({ nativeEvent }) { + const data = nativeEvent.data; + + if (data !== undefined && data !== null) { + Linking.openURL(data); + } + } + + render() { + const styles = StyleSheet.create({ + textNews: { + backgroundColor: '#0D8890', + width: 60, + color: '#FFFFFF', + borderRadius: 5, + + textAlign: 'center', + fontSize: 12 + } + }) + const { navigation } = this.props; + const detail = navigation.getParam('item', 'NO ITEM'); + const images = [ + { + source: { + uri: this.state.product.image_path, + } + }, + ]; + return ( + + + + {this.setState({isImageViewVisible: true})}}> + + + + {this.state.product.name} + + + {t('detail')} + + { this.webview = ref; }} + bounces={true} + // dataDetectorTypes={['link', 'phoneNumber']} + originWhitelist={['*']} + source={{ baseUrl: '', html: ` ${this.state.product.style}
`+this.state.product.description+'
' }} + injectedJavaScript={injectScript} + onMessage={this.onMessage} + /> +
+ +
+ ); + } +} diff --git a/src/screens/reward/RewardScreen.js b/src/screens/reward/RewardScreen.js new file mode 100644 index 0000000..6f49334 --- /dev/null +++ b/src/screens/reward/RewardScreen.js @@ -0,0 +1,103 @@ +import React, { Component } from 'react'; +import { View, FlatList, TouchableOpacity, Dimensions, RefreshControl } from 'react-native'; +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import Text from '../../components/Text'; +import Color from '../../color'; +import { getProductList } from '../../api/UserApi' +import { connect } from 'react-redux' +import { NavigationEvents } from 'react-navigation' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from 'src/utils/i18n' +const { height, width } = Dimensions.get('window') +const calWidth = (width / 2) - 20 + +class RewardScreen extends Component { + constructor(props) { + super(props); + this.state = { + refreshing: false, + isLoading: false, + product_list:[] + }; + this.onRefresh = this.onRefresh.bind(this) + } + + componentDidMount(){ + this.setState({isLoading: true}) + this.getProductData() + }; + + getProductData(){ + getProductList() + .then(res => { + console.log('response -------------------> ',res.data); + this.setState({ + product_list: res.data.data, + isLoading: false, + refreshing: false + }) + }) + } + + renderItem = (item) => { + return + + + + + {item.name} + {/* 500 บาท */} + + {this.props.navigation.navigate('RewardDetail',{product_id: item.id})}}> + {t('detail')} + + + } + + _keyExtractor = (item, index) => 'product_'+index + + onRefresh(){ + this.setState({refreshing: true}) + this.getProductData() + } + + render() { + return ( + + + + + } + data={this.state.product_list} + renderItem={({ item }) => this.renderItem(item)} + showsVerticalScrollIndicator={false} + keyExtractor={this._keyExtractor} + numColumns={2} + ListEmptyComponent={() => + + ไม่มีสินค้า + + } + /> + + + + + ); + } +} + +const mapDisPatchToProps = state => { + return state.app +} + +export default connect(mapDisPatchToProps)(RewardScreen) diff --git a/src/screens/room/CompanyRoomReservation.js b/src/screens/room/CompanyRoomReservation.js new file mode 100644 index 0000000..d3f3f8f --- /dev/null +++ b/src/screens/room/CompanyRoomReservation.js @@ -0,0 +1,214 @@ +import React, { Component } from 'react' +import { View, Alert} from 'react-native' +import Text from '../../components/Text' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { CustomInput } from '../../components/CustomInput' +import { CustomButton } from '../../components/CustomButton' +import CustomDatePicker from './CustomDatePicker'; +import moment from 'moment'; +import {postReserveRoom} from '../../api/UserApi'; +import {withNavigation} from 'react-navigation'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n' + +class CompanyRoomReservationScreen extends Component { + + constructor(props) { + super(props) + this.state = { + isLoading: false, + room_id: this.props.roomDetail.id, + activeIndex: 1, + user:{} + } + this.sendReserve = this.sendReserve.bind(this) + } + + componentDidMount = () => { + this.setState({ + user: { + ...this.state.user, + type: 'company', + room_type: this.props.roomDetail.type_name, + project_name: this.props.roomDetail.project.name + } + }) + }; + + sendReserve() { + + var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + if (email_validate.test(this.state.user.email) !== true){ + Alert.alert(null, 'ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง') + return + } + + postReserveRoom(this.state.room_id,this.state.user) + .then(res => { + console.log('response ---------> ',res.data) + }) + .then(() => { + Alert.alert( + t('booking_success'),null, + [ + { text: t('ok'), onPress: () => this.props.navigation.navigate('HomeScreen')}, + ] + ) + }) + } + + handleDatePickedCheckIn = (date) => { + console.log("A date check-in has been picked: ", date); + this.setState({ + user: { + ...this.state.user, + check_in_date: moment(date).format('DD-MM-YYYY') + } + }) + }; + + render() { + return ( + + + + {t('coporate')} + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + name: input + } + }) + }}/> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + email: input + } + }) + }}/> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + phone: input + } + }) + }}/> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + company_code: input + } + }) + }}/> + + + + + + + + + + { + if(this.state.user.name != null && this.state.user.email != null && this.state.user.phone != null + && this.state.user.company_code != null && this.state.user.check_in_date){ + Alert.alert( + t('booking_submit'), + t('booking_confirm'), + [ + { text: t('cancel'), style: 'cancel' }, + { text: t('ok'), onPress: () => this.sendReserve() }, + ], + { cancelable: false } + ) + }else{ + Alert.alert('เกิดข้อผิดพลาด','กรุณากรอกข้อมูลให้ครบถ้วน') + } + }} + /> + + + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightDevice, + }, + row: { + flexDirection: 'row', + height: 48, + marginBottom: 7, + }, + row_grow_first: { + flexGrow: 1, + marginRight: 5, + width: '9%' + }, + row_grow: { + flexGrow: 1, + }, + form: { + height: '100%', + flex: 1, + padding: 15, + paddingTop: 5, + paddingBottom: 0, + }, + box_form_reservation: { + marginLeft: 15, + marginRight: 15, + }, + input_reservation: { + marginLeft: 15, + marginRight: 15, + + }, + contentContainer: { + paddingVertical: 5 + }, + headerTitle: { + color: 'white', + marginVertical: 5 + }, + buttons: { + paddingHorizontal: 15, + paddingVertical: 10 + }, + custom_input: { + backgroundColor: 'rgba(255,255,255,0.3)', + borderRadius: 30, + height: 48, + color: 'white' + } +} + +export default withNavigation(CompanyRoomReservationScreen) diff --git a/src/screens/room/CustomDatePicker.js b/src/screens/room/CustomDatePicker.js new file mode 100644 index 0000000..f4dcf7a --- /dev/null +++ b/src/screens/room/CustomDatePicker.js @@ -0,0 +1,61 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity } from 'react-native'; +import Text from '../../components/Text'; +import DateTimePicker from "react-native-modal-datetime-picker"; +import Icon from 'src/components/Icon' +import { Appearance } from 'react-native-appearance'; +import { t } from '../../utils/i18n' + +const colorScheme = Appearance.getColorScheme(); + +export default class CustomDatePicker extends Component { + constructor(props) { + super(props); + this.state = { + isDateTimePickerVisible: false, + select_date: new Date(), + maxDate: this.props.maxDate == null && undefined, + minDate: this.props.minDate == null && undefined, + isDarkModeEnabled: colorScheme === 'dark' + }; + } + + showDateTimePicker = () => { + this.setState({ isDateTimePickerVisible: true }); + }; + + hideDateTimePicker = () => { + this.setState({ isDateTimePickerVisible: false }); + }; + + handleDatePicked = date => { + // console.log("A date has been picked: ", date); + this.hideDateTimePicker(); + this.setState({select_date:date}) + return this.props.handleDate(date) + }; + + render() { + return ( + + + {this.props.titleText} + + {this.props.dateText == null || this.props.dateText == undefined ? t('select_date') : this.props.dateText} + + + + + + ); + } +} diff --git a/src/screens/room/PersonRoomReservation.js b/src/screens/room/PersonRoomReservation.js new file mode 100644 index 0000000..0a64d14 --- /dev/null +++ b/src/screens/room/PersonRoomReservation.js @@ -0,0 +1,287 @@ +import React, { Component } from 'react' +import { View, Alert, TouchableOpacity, Platform } from 'react-native' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import { CustomInput } from '../../components/CustomInput' +import { CustomPicker } from '../../components/CustomPicker' +import { CustomButton } from '../../components/CustomButton' +import Text from '../../components/Text'; +import { Picker, Right } from 'native-base' +import moment from 'moment' +import CustomDatePicker from './CustomDatePicker'; +import {postReserveRoom} from '../../api/UserApi'; +import {withNavigation} from 'react-navigation'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n' + +class PersonRoomReservationScreen extends Component { + constructor(props) { + super(props) + this.state = { + isLoading:false, + room_id: this.props.roomDetail.id, + activeIndex: 0, + user:{}, + } + this.sendReserve = this.sendReserve.bind(this) + } + + componentDidMount = () => { + this.setState({ + user: { + ...this.state.user, + type: 'customer', + gender: 'ชาย', + room_type: this.props.roomDetail.type_name, + project_name: this.props.roomDetail.project.name + } + }) + }; + + sendReserve() { + + var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + if (email_validate.test(this.state.user.email) !== true){ + Alert.alert(null, 'ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง') + return + } + + postReserveRoom(this.state.room_id,this.state.user) + .then(res => { + console.log('response ---------> ',res.data) + }) + .then(() => { + Alert.alert( + t('booking_success'),null, + [ + { text: t('ok'), onPress: () => this.props.navigation.navigate('HomeScreen') }, + ] + ) + }) + } + + handleDatePickedBirthDay = (date) => { + console.log("A date birth day has been picked: ", date); + this.setState({ + user: { + ...this.state.user, + birth_date: moment(date).format('DD-MM-YYYY') + } + }) + }; + + handleDatePickedCheckIn = (date) => { + console.log("A date check-in has been picked: ", date); + this.setState({ + user: { + ...this.state.user, + check_in_date: moment(date).format('DD-MM-YYYY') + } + }) + }; + + render() { + let width_device = GetWidthHeightDevice.WidthDevice + return ( + + + + {t('profile')} + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + name: input + } + }) + }}/> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + email: input + } + }) + }}/> + + + { + let input = e.nativeEvent.text + this.setState({ + user: { + ...this.state.user, + phone: input + } + }) + }}/> + + + + {t('gender')} + + { + Platform.OS == 'ios' ? + + { + this.setState({ + user: { + ...this.state.user, + gender: e + } + }) + }}> + + + + + : { + this.setState({ + user: { + ...this.state.user, + gender: e + } + }) + }}> + + + + } + + + + = 400 ? styles.row : styles.row_minSize}> + + + + + + + + + + + + { + if(this.state.user.name != null && this.state.user.email != null && this.state.user.phone != null + && this.state.user.birth_date != null && this.state.user.check_in_date){ + Alert.alert( + t('booking_submit'), + t('booking_confirm'), + [ + { text: t('cancel'), style: 'cancel' }, + { text: t('ok'), onPress: () => this.sendReserve() }, + ], + { cancelable: false } + ) + }else{ + Alert.alert('เกิดข้อผิดพลาด','กรุณากรอกข้อมูลให้ครบถ้วน') + } + }} + title={t('book_room')} /> + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightDevice, + }, + row: { + flexDirection: 'row', + marginBottom: 7, + height: 48, + }, + row_grow_first: { + flexGrow: 1, + marginRight: 5, + width: '9%' + }, + row_grow_first_minSize: { + flexGrow: 1, + marginBottom: 5, + width: '100%', + }, + row_grow: { + flexGrow: 1, + + }, + form: { + height: '100%', + flex: 1, + padding: 15, + paddingTop: 5, + paddingBottom: 0, + }, + row_minSize: { + flexDirection: 'column', + marginBottom: 5, + }, + box_form_reservation: { + marginLeft: 15, + marginRight: 15, + }, + input_reservation: { + marginLeft: 15, + marginRight: 15, + + }, + contentContainer: { + paddingVertical: 5 + }, + headerTitle: { + color: 'white', + marginVertical: 5 + }, + buttons: { + paddingHorizontal: 15, + paddingVertical: 10 + }, + custom_input: { + backgroundColor: 'rgba(255,255,255,0.3)', + borderRadius: 30, + height: 48, + color: 'white' + } +} + +export default withNavigation(PersonRoomReservationScreen) diff --git a/src/screens/room/Room.js b/src/screens/room/Room.js new file mode 100644 index 0000000..e664c2d --- /dev/null +++ b/src/screens/room/Room.js @@ -0,0 +1,350 @@ +import React, { Component } from 'react' +import { Dimensions, RefreshControl, ScrollView, TouchableOpacity, View } from 'react-native' +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import { CustomButton } from '../../components/CustomButton' +import LinearGradient from 'react-native-linear-gradient' +import Carousel from 'react-native-snap-carousel' +import Text from '../../components/Text' +import SliderEntry from '../../components/SliderEntry' +import styles_C from '../../styles/index.style' +import { itemWidth, sliderWidth } from '../../styles/SliderEntry.style' +import SearchableDropdown from '../../components/SearchableDropDown' +import { project, room } from '../../api/UserApi' +import 'intl' +import 'intl/locale-data/jsonp/th-TH' +import IndicatorLoading from '../../components/IndicatorLoading'; +//import SearchableDropdown from 'react-native-searchable-dropdown'; +import { t , locale } from 'src/utils/i18n' + +const { height, width } = Dimensions.get('window') +const SLIDER_1_FIRST_ITEM = 0 + + +class RoomScreen extends Component { + + constructor(props) { + super(props) + this.state = { + isLoading: true, + refreshing: false, + e: SLIDER_1_FIRST_ITEM, + slider1ActiveSlide: 0, + project_snap_index:0, + project_select_id:0, + zone_id: this.props.navigation.getParam('zone_id','NO ID'), + items: [ + { + id: 1, + name: 'ยังไม่มีข้อมูล', + }, + ], + rooms: [] + } + this._renderItem = this._renderItem.bind(this) + this.initData = this.initData.bind(this) + } + + componentDidMount() { + this.initData() + } + + initData(){ + Promise.all([ + this.getProjectList(), + ]) + .then(() => { + this.getRoomList(this.state.project_select_id) + this.setState({ refreshing: false }) + }) + } + + _onRefresh = () => { + this.setState({ refreshing: true }) + this.initData() + this.setState({ + project_snap_index:0, + project_select_id:0 + }) + this.forceUpdate() + } + + async getProjectList(){ + return project() + .then(async res => { + if(res.ok){ + let filterProject = res.data.data.filter(project => project.zone_id === this.state.zone_id) + console.log('check project in zone '+this.state.zone_id) + this.setState({ + items: filterProject, + project_select_id: filterProject[0].id + },() => { + console.log('check project ------------> '+this.state.items) + }) + } + }) + } + + async getRoomList(project_id){ + this.setState({ + isLoading: true, + refreshing: false + }) + return await room(project_id) + .then(res => { + if(res.ok){ + return this.setState({ + rooms: res.data.data + }) + } + }) + .then(() => { + this.setState({ + isLoading: false + }) + }) + } + + _keyExtractor = (item, index) => index + + _renderItem({ item, index }) { + return ( + {this.props.navigation.navigate('RoomDetail', {item: item})}}> + + + + + + {item.name} + {item.price} + {t('baht_month')} + + {this.props.navigation.navigate('RoomDetail', {item: item})}}> + + {t('view_details')} + + + + ) + } + + format_price(n) { + return new Intl.NumberFormat('th-TH', {maximumSignificantDigits: 3}).format(n) + } + + _search(project_id) { + room(project_id) + .then(res => { + this.setState({ + rooms: res.data.data + }) + }) + } + + _renderItemWithParallax({ item, index }, parallaxProps) { + return ( + + ) + } + + render() { + return ( + + + + + alert(text)} + onItemSelect={item => { + let findIndex = this.state.items.findIndex(project => item.id == project.id) + this._carousel.snapToItem(findIndex) + this._search(item.id) + }} + containerStyle={{ padding: 5, flexDirection: 'row' }} + textInputStyle={styles.room_screen_search} + itemStyle={{ + padding: 10, + backgroundColor: '#ffffff', + borderColor: 'rgba(0, 0, 0, 0.25)', + borderWidth: 0.5, + + }} + itemTextStyle={{ color: '#269A21' }} + itemsContainerStyle={{ maxHeight: 170, backgroundColor: 'white' }} + items={this.state.items} + placeholder={t('search_project')} + resetValue={false} + underlineColorAndroid="transparent" + placeholderTextColor={'#269A21'} + /> + + { + this._onRefresh() + this._carousel.snapToItem(0) + this._slider1Ref.snapToItem(0) + }} + /> + }> + + this._slider1Ref = c} + data={this.state.rooms} + renderItem={this._renderItem} + sliderWidth={sliderWidth} + itemWidth={itemWidth} + hasParallaxImages={true} + firstItem={SLIDER_1_FIRST_ITEM} + inactiveSlideOpacity={0.5} + loop={false} + loopClonesPerSide={0} + autoplay={false} + autoplayDelay={500} + autoplayInterval={3000} + // containerCustomStyle={{backgroundColor:'red'}} + // contentContainerCustomStyle={{backgroundColor:'black'}} + onSnapToItem={(index) => this.setState({ slider1ActiveSlide: index })} + /> + + {this.state.rooms != null && this.state.rooms != '' ? + + : + + ยังไม่มีข้อมูลประเภทห้อง + + } + + {/* Bottom View */} + + { this._carousel = c }} + data={this.state.items} + renderItem={({ item }) => + + {item.name} + {/* + ดูโครงการ + */} + + } + sliderWidth={sliderWidth} + itemWidth={itemWidth+50} + containerCustomStyle={{}} + slideStyle={{ justifyContent: 'center' }} + onSnapToItem={(index) => { + this.setState({ + project_snap_index:index, + },() => { + this.setState({ + project_select_id: this.state.items[this.state.project_snap_index].id + },() => { + this.getRoomList(this.state.project_select_id) + this._slider1Ref.snapToItem(0) + }) + })}} + /> + + { this._carousel.snapToPrev() }}> + {'<'} + + { this._carousel.snapToNext() }}> + {'>'} + + + + { this.state.items[this.state.project_snap_index].news_link != null && this.props.navigation.navigate('NewsDetail', {news_id: this.state.items[this.state.project_snap_index].news_link})}}> + {t('phone')}: {this.state.items[this.state.project_snap_index].telephone} + {t('address')}: {this.state.items[this.state.project_snap_index].address} + + + + + + ) + } +} + +const styles = { + backgroundImage: { + flex: 1, + width: null, + height: null, + resizeMode: 'center' + }, + container: { + flex: 1 + }, + room_screen_search: { + color: '#269A21', + height: 40, + borderWidth: 1, + borderColor: 'rgba(0,0,0,0)', + width: '100%', + }, + room_border: { + alignItems: 'center', + borderColor: 'white', + borderWidth: 1, + backgroundColor: 'rgba(0, 0, 0, 0.8)', + width: 220, + + marginBottom: 5, + marginTop: 10, + borderRadius: 5, + padding: 15 + }, + image_style: { + borderColor: 'white', + borderWidth: 5, + borderRadius: 80, + width: '100%', + height: '100%', + backgroundColor: 'black' + }, + button_reservation: { + backgroundColor: '#145EB3', + height: 40, + borderRadius: 8 + }, + box_search: { + width: '100%', + flexDirection: 'row', + display: 'flex', + marginTop: 10, + + paddingLeft: 10, + paddingRight: 10 + }, + contentContainer: { + paddingHorizontal: 15, + flex:1, + } +} + +export default RoomScreen diff --git a/src/screens/room/RoomDetail.js b/src/screens/room/RoomDetail.js new file mode 100644 index 0000000..a12adf0 --- /dev/null +++ b/src/screens/room/RoomDetail.js @@ -0,0 +1,282 @@ +import React, {Component} from 'react' +import {ScrollView, View, FlatList, TouchableOpacity, Dimensions, Modal} from 'react-native' +import Image from 'react-native-fast-image' +import ImageBackground from 'react-native-fast-image' +import { WebView } from 'react-native-webview'; +import Icon from 'src/components/Icon' +import ImageSliderz from 'react-native-image-slideshow' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import {CustomButton} from '../../components/CustomButton' +import LinearGradient from 'react-native-linear-gradient'; +import {BackgroundImage} from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import 'intl'; +import 'intl/locale-data/jsonp/th-TH' +import {roomdetail} from '../../api/UserApi'; +import ImageView from 'react-native-image-view'; +import Carousel from 'react-native-snap-carousel' +import { itemWidth, sliderWidth } from '../../styles/SliderEntry.style' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n'; + +const {height, width} = Dimensions.get('window') +const SLIDER_1_FIRST_ITEM = 1 + +const injectScript = ` + (function () { + window.onclick = function(e) { + e.preventDefault(); + window.postMessage(e.target.href); + e.stopPropagation() + } + }()); +`; + +class RoomDetailScreen extends Component { + constructor(props) { + super(props) + this._onCarouselScroll = this._onCarouselScroll.bind(this) + this.state = { + isLoading: true, + position: 0, + room_detail: {}, + room_image: [], + isImageView: false, + select_image_index: 0 + } + } + + componentDidMount() { + this.getRoomDetail() + } + + renderNativeItemImages = (item,index) => { + return { + this.setState({ + select_image_index: index, + isImageView: true + }) + }}> + + + + + + + + + + + } + + renderImage = ({item}) => { + return + + + } + + getRoomDetail() { + const {navigation} = this.props; + const detail = navigation.getParam('item', 'NO ITEM'); + + roomdetail(detail.id) + .then(res => { + if(res.ok){ + this.setState({ + isLoading: false, + room_detail: res.data.data, + room_image: res.data.image + }) + } + }) + } + + _onCarouselScroll(e) { + const scrollX = e.nativeEvent.contentOffset.x + this.setState({ + position: Math.ceil(scrollX / width) + }) + } + + format_price(n, currency) { + return new Intl.NumberFormat('th-TH', { + maximumSignificantDigits: 3 + }).format(n); + } + + _keyExtractor = (item, index) => 'room_detail_' + index + _keyExtractorImage = (item, index) => 'room_image_' + index + + render() { + return ( + + + + + {/* this.setState({ position })} /> */} + this.renderNativeItemImages(item,index)} + horizontal={true} + showsHorizontalScrollIndicator={false} + pagingEnabled={true} + onScroll={this._onCarouselScroll} + extraData={this.state} + keyExtractor={this._keyExtractor} + style={{height: 200,}} + /> + + {(this.state.room_image).map((item, i) => )} + + + + {(this.state.room_image).map((item, i) => )} + + + + + + {this.state.room_detail.type_name} + + + {this.state.room_detail.price} / {t('month')} + + + + {this.state.room_detail.project != null && this.state.room_detail.project.name} + + + + {t('detail')} + { + this.webview = ref; + }} + bounces={true} + // dataDetectorTypes={['link', 'phoneNumber']} + originWhitelist={['*']} + source={{ + baseUrl: '', + html: `
` + this.state.room_detail.detail + '
' + }} + + injectedJavaScript={injectScript} + onMessage={this.onMessage} + /> +
+
+ + { + console.log('check send data --------------',this.state.room_detail); + this.props.navigation.navigate('RoomHeaderReservation',{room_detail: this.state.room_detail,room_image: this.state.room_image} )}} /> + +
+ { + Alert.alert('Modal has been closed.'); + }}> + + + {this.setState({isImageView:false})}}> + + + + { this._carousel = c }} + data={this.state.room_image} + renderItem={({ item }) => + + + + } + sliderWidth={sliderWidth} + itemWidth={width} + containerCustomStyle={{}} + slideStyle={{ flex:1, justifyContent: 'center' }} + /> + + + +
+ ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightDevice + + }, + image_background: { + width: '100%', + }, + margin_border: { + padding: 15, + borderBottomColor: 'white', borderWidth: 0.5, + borderColor: 'transparent' + }, + box_detail: { + height: '100%' + }, room_btn: { + backgroundColor: '#145EB3', + height: 40 + }, imgBg: { + flex: 1, + height: 200, + width: width, + justifyContent: 'flex-end' + }, +} + +export default RoomDetailScreen diff --git a/src/screens/room/RoomHeaderReservation.js b/src/screens/room/RoomHeaderReservation.js new file mode 100644 index 0000000..7dfe331 --- /dev/null +++ b/src/screens/room/RoomHeaderReservation.js @@ -0,0 +1,100 @@ +import React, { Component } from 'react' +import { ScrollView, View, Platform, KeyboardAvoidingView } from 'react-native' +import Image from 'react-native-fast-image' +import Text from '../../components/Text' +import Icon from 'src/components/Icon' +import OptionButton from './SegmentReservation' +import PersonRoomReservationScreen from './PersonRoomReservation' +import CompanyRoomReservationScreen from './CompanyRoomReservation' +import LinearGradient from 'react-native-linear-gradient' +import { BackgroundImage_RegisterForm } from '../../components/BackgroundImage_RegisterForm' +import { BackgroundImage } from '../../components/BackgroundImage' +import { t } from '../../utils/i18n' + +class RoomHeaderReservationScreen extends Component { + + constructor(props) { + super(props) + this.state = { + room_detail: this.props.navigation.getParam('room_detail','NO-DETAIL'), + room_image: this.props.navigation.getParam('room_image','NO-IMAGE'), + activeIndex: 0, + } + this.onchange_activeIndex = this.onchange_activeIndex.bind(this) + + } + + onchange_activeIndex(index) { + this.setState({ + activeIndex: index, + }) + } + + render() { + return ( + + + + + + + + + {this.state.room_detail.type_name} + {this.state.room_detail.price} / {t('month')} + + + {this.state.room_detail.project.name} + + + + + + + + + + { + this.state.activeIndex === 0 ? + + : + + } + + + + + + + ) + } +} + +const styles = { + image_style: { + height: 80, + width: 100, + borderRadius: 3, + }, + box_detail_room: { + borderRadius: 5, + padding: 15, + backgroundColor: '#00420A', + margin: 15, + flexDirection: 'row', + }, + contentContainer: { + paddingVertical: 5 + } +} + +export default RoomHeaderReservationScreen diff --git a/src/screens/room/SegmentReservation.js b/src/screens/room/SegmentReservation.js new file mode 100644 index 0000000..97c5303 --- /dev/null +++ b/src/screens/room/SegmentReservation.js @@ -0,0 +1,73 @@ +import React, { Component } from 'react' +import { View } from 'react-native' +import { Button } from 'native-base' +import Text from '../../components/Text'; +import { t , locale} from '../../utils/i18n'; + +class OptionButton extends Component { + + constructor(props) { + super(props) + this.state = { + activeIndex: 0, + } + this.onPressButton = this.onPressButton.bind(this) + } + + onPressButton(index) { + this.setState({ + activeIndex: index + },()=>{ + this.props.onchange_indax(index) + }) + } + + render() { + const active = this.state.activeIndex + return ( + + + + + ) + } +} + +export default OptionButton + +const styles = { + button_container: { + marginTop: 10, + height: 32, maxWidth: 239, + width: '100%', + borderRadius: 16, + borderColor: 'rgba(0,0,0,0.25)', + position: 'relative', + backgroundColor: 'white' + }, + button_active: { + backgroundColor: '#145EB3', + zIndex: 2, + color: 'white', + overflow: 'hidden' + }, + button_normal: { + lineHeight: 18, + height: 32, + width: '53%', + position: 'absolute', + color: 'rgba(0, 0, 0, 0.55)', + zIndex: 1, + textAlign: 'center' + }, +} + +// export default SegmentReservationScreen diff --git a/src/screens/room/ZoneAreaScreen.js b/src/screens/room/ZoneAreaScreen.js new file mode 100644 index 0000000..e2303dd --- /dev/null +++ b/src/screens/room/ZoneAreaScreen.js @@ -0,0 +1,132 @@ +import React, { Component } from 'react' +import { Dimensions, RefreshControl, ScrollView, TouchableOpacity, View } from 'react-native' +import ImageBackground from 'react-native-fast-image' +import { CustomButton } from '../../components/CustomButton' +import LinearGradient from 'react-native-linear-gradient' +import Carousel from 'react-native-snap-carousel' +import Text from '../../components/Text' +import SliderEntry from '../../components/SliderEntry' +import styles_C from '../../styles/index.style' +import { itemWidth, sliderWidth } from '../../styles/SliderEntry.style' +import SearchableDropdown from '../../components/SearchableDropDown' +import { project, room } from '../../api/UserApi' +import 'intl' +import 'intl/locale-data/jsonp/th-TH' +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n'; + +const { height, width } = Dimensions.get('window') +const SLIDER_1_FIRST_ITEM = 1 + + +export default class ZoneAreaScreen extends Component { + constructor(props) { + super(props); + this.state = { + isLoading: false, + refreshing: false, + e: SLIDER_1_FIRST_ITEM, + slider1ActiveSlide: 1, + zone_snap_index:0, + items: [ + { + id: 418, + name: 'เขตที่ 1', + }, + { + id: 419, + name: 'เขตที่ 2', + }, + { + id: 421, + name: 'เขตที่ 3', + }, + { + id: 422, + name: 'เขตที่ 4', + } + ], + zone_select_id: 418 + + } + } + + render() { + return ( + + + + + {t('submit_area_from_map')} + + + {this.props.navigation.navigate('Room',{zone_id: 421})}}/> + {this.props.navigation.navigate('Room',{zone_id: 422})}}/> + {this.props.navigation.navigate('Room',{zone_id: 419})}}/> + {this.props.navigation.navigate('Room',{zone_id: 419})}}/> + {this.props.navigation.navigate('Room',{zone_id: 418})}}/> + + {/* */} + + ); + } +} + +const styles = { + container: { + flex: 1 + }, + room_screen_search: { + color: '#269A21', + height: 40, + borderWidth: 1, + borderColor: 'rgba(0,0,0,0)', + width: '100%', + + //backgroundColor: '#ffffff', + }, + room_border: { + alignItems: 'center', + borderColor: 'white', + borderWidth: 1, + backgroundColor: 'rgba(0, 0, 0, 0.8)', + width: 220, + + marginBottom: 5, + marginTop: 10, + // alignItems: 'center', + borderRadius: 5, + padding: 15 + }, + image_style: { + borderColor: 'white', + borderWidth: 5, + width: '100%', + borderRadius: 100, + height: '100%', + backgroundColor: 'black' + }, + button_reservation: { + backgroundColor: '#145EB3', + height: 40, + borderRadius: 8 + }, + box_search: { + width: '100%', + flexDirection: 'row', + display: 'flex', + marginTop: 10, + + paddingLeft: 10, + paddingRight: 10 + }, + contentContainer: { + paddingHorizontal: 15, + flex:1 + } +} diff --git a/src/screens/service/QuestionScreen.js b/src/screens/service/QuestionScreen.js new file mode 100644 index 0000000..096c268 --- /dev/null +++ b/src/screens/service/QuestionScreen.js @@ -0,0 +1,157 @@ +import React, { Component } from 'react'; +import { View, TouchableOpacity, KeyboardAvoidingView, FlatList, StyleSheet, TextInput, Alert , Image } from 'react-native'; +import Text from '../../components/Text'; +import moment from "moment"; +import Color from '../../../src/color'; +import {Button} from "native-base"; +import {getConversation, postConversation} from '../../api/UserApi'; +import IndicatorLoading from '../../components/IndicatorLoading'; +import { t } from '../../utils/i18n'; +// import 'moment/locale/th'; +//moment.locale('th'); + +export default class QuestionScreen extends Component { + constructor(props) { + super(props); + this.state = { + isLoading: false, + message_list:[], + text_input:'' + }; + this.sendQuestion = this.sendQuestion.bind(this) + this.getMessageList = this.getMessageList.bind(this) + } + + componentDidMount = () => { + this.props.navigation.setParams({onRefreshMessage: this.getMessageList}) + this.getMessageList() + }; + + getMessageList(){ + this.setState({ + isLoading: true + }) + getConversation() + .then(res => { + if(res.ok){ + console.log('check response conversation --------> ',res.data) + this.setState({ + message_list: res.data.data + },() => { + this._flatlistRef.scrollToEnd() + }) + } + + this.setState({ + isLoading: false + }) + }) + } + + sendQuestion(){ + this.setState({ + isLoading: true + }) + let param = { + message: this.state.text_input + } + postConversation(param) + .then(res => { + if(res.ok){ + Alert.alert('รับคำถามเรียบร้อย', 'ทางเราได้รับคำถามของคุณแล้ว ขอบคุณค่ะ',[{text: t('ok'), onPress: () => this.getMessageList()}]) + this.setState({ + text_input: '' + }) + }else{ + Alert.alert('เกิดข้อผิดพลาด', 'กรุณาลองอีกครั้ง') + } + this.setState({ + isLoading: false + }) + console.log('check data ============== ',res); + }) + } + + _keyExtractor = (item, index) => 'nessage_item_'+index; + + _renderItem = ({item}) => ( + + + {item.sender_type == 'admin' ? t('project') : t('me')} + {moment(item.created_at).format('DD MMMM YYYY, HH:mmน.')} + + {item.content} + {item.media != null ? : null} + + ); + + render() { + return ( + { + this.scrollView = view; + }}> + + this._flatlistRef = c} + data={this.state.message_list} + extraData={this.state} + keyExtractor={this._keyExtractor} + renderItem={this._renderItem} + ItemSeparatorComponent={() => { + return + + }} + onContentSizeChange={()=> this._flatlistRef.scrollToEnd()} + ListEmptyComponent={() => { + return + ไม่มีข้อมูลการสนทนา + + }} + style={{}}/> + + + this.setState({text_input: text})}/> + + + + + ); + } +} + +const styles = StyleSheet.create({ + textArea: { + backgroundColor: 'white', + marginHorizontal: 10, + paddingHorizontal: 10, + marginTop: 10, + paddingVertical: 15, + height: 72, + textAlignVertical: 'top', + borderRadius: 5, + borderWidth: 1, + borderColor: 'rgba(0, 0, 0, 0.25)' + }, + squareShapeView: { + width: 64, + height: 64, + borderRadius: 5, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.25)', + margin: 10 + }, + image: { + width: 150, + height: 130, + }, +}) diff --git a/src/screens/service/Service.js b/src/screens/service/Service.js new file mode 100644 index 0000000..81857b4 --- /dev/null +++ b/src/screens/service/Service.js @@ -0,0 +1,245 @@ +import React, {Component} from 'react' +import {TouchableOpacity, View, Alert} from 'react-native' +import Image from 'react-native-fast-image' +import {NavigationEvents} from 'react-navigation' +import {Badge, Button} from 'native-base' +import Icon from 'src/components/Icon' +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import {BackgroundImage} from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import {bindActionCreators} from 'redux' +import {appCleanToken, appCleanUser, appCleanProjectID} from '../../redux/app/action' +import {connect} from 'react-redux' +import {clearToken} from "../../api/api"; +import DeviceInfo from 'react-native-device-info'; +import { t } from 'src/utils/i18n' +import {getUserProfile} from "../../api/UserApi"; + +const buildVersion = DeviceInfo.getVersion() +const buildNumber = DeviceInfo.getBuildNumber() + +function ButtonBar({ + title, iconName, callback = () => { + } + }) { + return + + + + + {title} + + + +} + +class ServiceScreen extends Component { + constructor(props) { + super(props) + this._logout = this._logout.bind(this) + this.state = { + auth: false, + fb_is_link: false, + user: { + point: 0 + } + } + } + + componentDidMount() { + this.onLoad() + this.initData() + this.getUserData() + } + + onLoad = () => { + this.props.navigation.addListener('didFocus', () => + this.getUserData() + ) + } + + initData() { + if (this.props.token != null && this.props.user != null) { + this.setState({ + user: this.props.user, + auth: true + },() => { + // console.log('USER SHOW > ',this.props.user) + }) + } else { + this.setState({ + auth: false + }) + } + } + + _logout() { + clearToken() + this.props.appCleanUser() + this.props.appCleanToken() + this.props.appCleanProjectID() + this.setState({ + auth: false + }) + this.props.navigation.navigate('HomeScreen',{isLogin:true}) + } + + getUserData(){ + getUserProfile() + .then(res => { + if(res.ok){ + console.log('Service: getUserData:') + console.log(res.data.user) + this.state.user = res.data.user + this.state.fb_is_link = res.data.user.fb_is_link + // this.setState({ + // user: res.data.user, + // }) + } + }) + } + + render() { + return ( + + { + this.initData() + }} + /> + + + {this.state.auth == true ? + + + + + + + {this.state.auth == true && this.props.user != null && this.props.user != "" ? this.props.user.name : null} + { + (this.state.fb_is_link !== false) && + + + } + + + 0 + + + this.props.navigation.navigate('Profile', { + user: this.props.user + })}> + + + : null} + + { + this.props.token != null && + this.props.navigation.navigate('RepairService')}/> + } + { + this.props.token != null && + this.props.navigation.navigate('Object')}/> + } + { + this.props.token != null && + this.props.navigation.navigate('SettingsNotification')}/> + } + { + this.props.token != null && + this.props.navigation.navigate('Question')}/> + } + this.props.navigation.navigate('Suggestion')}/> + {this.state.auth == true ? { + Alert.alert( + t('logout'), + t('logout_confirm'), + [ + {text: t('cancel'), style: 'cancel'}, + {text: t('ok'), onPress: () => this._logout()}, + ], + {cancelable: false} + ) + }} + > + + + + {t('logout')} + + + : null} + + + v{buildVersion} ({buildNumber}) + + + + + ) + } +} + +const styles = { + container: { + flex: 1, + flexDirection: 'column', + }, + profile: { + padding: 16, + height: 96, + flexL: 1, + flexDirection: 'row', + backgroundColor: '#fff', + }, + profile_image: { + height: 64, + width: 64, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderWidth: 1, + borderRadius: 32, + borderColor: 'black' + } + , + profile_detail: { + flex: 1, + marginLeft: 5, + justifyContent: 'center', + }, + services: { + height: '80%', + }, + list_item: { + height: 55, + flexDirection: 'row', + backgroundColor: '#fff', + paddingHorizontal: 16, + alignItems: 'center' + }, + textTitleService: { + flex: 1, + paddingLeft: 16, + fontSize: 14, + color: '#00420A' + } +} +const mapDisPatchToProps = state => { + return state.app +} +const Logout = dispatch => bindActionCreators({appCleanToken, appCleanUser, appCleanProjectID}, dispatch) +export default connect(mapDisPatchToProps, Logout)(ServiceScreen) diff --git a/src/screens/service/SettingNotification.js b/src/screens/service/SettingNotification.js new file mode 100644 index 0000000..05977b4 --- /dev/null +++ b/src/screens/service/SettingNotification.js @@ -0,0 +1,155 @@ +import React, { Component } from 'react' +import { View } from 'react-native' +import Switch_notification from './Switch_notification' +import { BackgroundImage } from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import { Badge, } from 'native-base' +import { bindActionCreators } from 'redux' +import { appCleanToken, appCleanUser } from '../../redux/app/action' +import { connect } from 'react-redux' +import { getSubscription, postSubscription } from "../../api/UserApi"; + +class SettingsNotificationScreen extends Component { + + constructor(props) { + super(props) + console.log('user => ',this.props) + this.state = { + auth: false, + isSwitchNews: false, + isSwitchPromotion: false, + isSwitchDelivery: false, + isSwitchPaymnt: false + } + this.toggleSwitch = this.toggleSwitch.bind(this) + } + + componentDidMount() { + if (this.props.token != null && this.props.user != null) { + this.getSubscriptionUser() + this.setState({ + auth: true + }) + } else { + this.setState({ + auth: false + }) + } + } + componentWillReceiveProps() { + if (this.props.token != null && this.props.user != null) { + this.setState({ + auth: true, + }) + } else { + this.setState({ + auth: false + }) + } + } + + getSubscriptionUser(){ + getSubscription(this.props.user.id, this.props.type) + .then(res => { + this.setState({ + isSwitchNews: res.data.is_receive_news, + isSwitchPromotion: res.data.is_receive_promotion, + isSwitchDelivery: res.data.is_receive_delivery, + isSwitchPaymnt: res.data.is_receive_payment + }) + }) + } + + toggleSwitch(customerId,switchType){ + console.log('select toggle type ------------> ',switchType) + postSubscription(customerId,switchType) + switch(switchType){ + case 'news': + this.setState({ + isSwitchNews: !this.state.isSwitchNews + }) + break; + case 'promotion': + this.setState({ + isSwitchPromotion: !this.state.isSwitchPromotion + }) + break; + case 'delivery': + this.setState({ + isSwitchDelivery: !this.state.isSwitchDelivery + }) + break; + case 'payment': + this.setState({ + isSwitchPaymnt: !this.state.isSwitchPaymnt + }) + break; + } + } + + render() { + return ( + + + + + + + {t('news2')} + + + + + + + + {t('promotion')} + + + + + + {this.state.auth == true ? + + {t('parcel_list')} + + + + + : null} + {this.state.auth == true ? + + {t('payment_due')} + + + + + : null} + + + + + ) + } +} + +const styles = { + box_setting_style: { + flexDirection: 'row', + height: 25, + display: 'flex', + alignItems: 'center', + margin: 10 + } +} +const mapDisPatchToProps = state => { + return state.app +} +const redux_connect = dispatch => bindActionCreators({ }, dispatch) +export default connect(mapDisPatchToProps, redux_connect)(SettingsNotificationScreen) diff --git a/src/screens/service/Suggestion.js b/src/screens/service/Suggestion.js new file mode 100644 index 0000000..afc037d --- /dev/null +++ b/src/screens/service/Suggestion.js @@ -0,0 +1,243 @@ +import React, {Component} from 'react' +import {Alert, ScrollView, StyleSheet, TextInput, View, TouchableOpacity, KeyboardAvoidingView, Platform} from 'react-native' +import Image from 'react-native-fast-image' +import Icon from "../../components/Icon"; +import {Button} from "native-base"; +import {BackgroundImage} from '../../components/BackgroundImage' +import Text from '../../components/Text'; +import LinearGradient from 'react-native-linear-gradient'; +import GetWidthHeightDevice from '../../components/GetWidthHeightDevice' +import ActionSheet from "react-native-action-sheet"; +import ImagePicker from 'react-native-image-crop-picker' +import {postSuggestion, postSuggestionLogin} from '../../api/UserApi'; +import { connect } from "react-redux"; +import { t } from 'src/utils/i18n' + +let ACTIONSHEET_BUTTONS = [ + 'ถ่ายรูป', + 'รูปจากแกลอรี่', + t('cancel') +] + +let CANCEL_INDEX = 2 + +class SuggestionScreen extends Component { + + constructor(props) { + super(props); + this.state = { + suggestionText: null, + image_list: [], + isShowAddBtn: true, + image_selected: {} + }; + this.onImagePick = this.onImagePick.bind(this) + this.onTakeCamera = this.onTakeCamera.bind(this) + this.sendDataSuggestion = this.sendDataSuggestion.bind(this) + } + + sendDataSuggestion() { + let param = { + message: this.state.suggestionText, + image: this.state.image_selected + } + console.log("param",param); + if(this.props.user == null && param.message != null){ + postSuggestion(param) + .then(res => { + console.log('check response suggestion -----------> ',res) + Alert.alert('รับข้อเสนอแนะเรียบร้อย', 'ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือคะ',[{text: t('ok'), onPress:() => {this.props.navigation.goBack()}}]) + }) + }else if(this.props.user != null && param.message != null){ + postSuggestionLogin(param) + .then(res => { + console.log('check response suggestion -----------> ',res) + Alert.alert('รับข้อเสนอแนะเรียบร้อย', 'ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือคะ',[{text: t('ok'), onPress:() => {this.props.navigation.goBack()}}]) + }) + }else{ + console.log('suggestion fails') + Alert.alert('ส่งข้อเสนอแนะไม่สำเร็จ', 'กรุณากรอกข้อเสนอแนะ ขอบคุณสำหรับความร่วมมือคะ',[{text: t('ok')}]) + } + } + + onImagePick() { + ImagePicker.openPicker({ + // width: 300, + // height: 300, + // cropping: true, + includeBase64: true + }).then(image => { + console.log('received base64 image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: {uri: `data:${image.mime};base64,` + image.data, width: image.width, height: image.height}, + images: null, + }, () => { + this.setState({ + image_list: this.state.image_list.concat(this.state.image_url), + image_selected: image_profile, + isShowAddBtn: false + }) + }) + }).catch(e => alert(e)) + } + + onTakeCamera() { + ImagePicker.openCamera({ + // cropping: true, + // width: 300, + // height: 300, + includeExif: true + }).then(image => { + console.log('received image', image) + let image_profile = { + uri: image.path, + type: image.mime, + name: 'image_profile.jpg', + } + this.setState({ + image_url: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null, + }, () => { + this.setState({ + image_list: this.state.image_list.concat(this.state.image_url), + image_selected: image_profile, + isShowAddBtn: false + }) + }) + }).catch(e => alert(e)) + } + + render() { + return ( + + + + + + + {t('suggestion')} + this.setState({suggestionText: text})}/> + + + {t('photo')} + + { + this.state.isShowAddBtn && + { + ActionSheet.showActionSheetWithOptions({ + options: ACTIONSHEET_BUTTONS, + cancelButtonIndex: CANCEL_INDEX, + }, + (buttonIndex) => { + console.log('button clicked :', buttonIndex) + if (buttonIndex == 0) { + this.onTakeCamera() + } else if (buttonIndex == 1) { + this.onImagePick() + } + }) + }}> + + + } + { + this.state.image_list.map((item, index) => { + return + + { + this.setState({ + image_list: [ + ...this.state.image_list.slice(0, index), + ...this.state.image_list.slice(index + 1) + ], + isShowAddBtn: true + }) + }}> + + + + }) + } + + + + + + + + + + + ) + + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + flexDirection: 'column', + height: GetWidthHeightDevice.HeightContainer, + //backgroundColor: '#FAFAFA' + }, + formGroup: { + marginHorizontal: 15, + marginVertical: 5, + backgroundColor: '#ffffff', + width: '93%', + height: 40, + borderRadius: 5, + display: 'flex', + flexDirection: 'row' + }, + textArea: { + backgroundColor: 'white', + marginHorizontal: 10, + paddingHorizontal: 10, + marginVertical: 10, + paddingVertical: 15, + height: 100, + textAlignVertical: 'top', + borderRadius: 5, + borderWidth: 1, + borderColor: 'rgba(0, 0, 0, 0.25)' + }, + squareShapeView: { + width: 64, + height: 64, + borderRadius: 5, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.25)', + margin: 10 + } +}); + +const mapDisPatchToProps = state => ({ + user: state.app.user +}) + +export default connect(mapDisPatchToProps)(SuggestionScreen) diff --git a/src/screens/service/Switch_notification.js b/src/screens/service/Switch_notification.js new file mode 100644 index 0000000..6a5801b --- /dev/null +++ b/src/screens/service/Switch_notification.js @@ -0,0 +1,44 @@ +import React, { Component } from "react"; +import { View } from "react-native"; +import SwitchToggle from "react-native-switch-toggle"; +import { + postSubscription, + getSubscription +} from "../../api/UserApi"; +class Switch_notification extends Component { + constructor(props) { + super(props); + this.state = { + switchOn: false + }; + } + + render() { + return ( + + this.props.onToggle(this.props.customer,this.props.type)} + /> + + ); + } +} + +export default Switch_notification; diff --git a/src/static/entries.js b/src/static/entries.js new file mode 100644 index 0000000..b231876 --- /dev/null +++ b/src/static/entries.js @@ -0,0 +1,65 @@ +export const ENTRIES1 = [ + { + title: 'Beautiful and dramatic Antelope Canyon', + subtitle: 'Lorem ipsum dolor sit amet et nuncat mergitur', + illustration: 'https://i.imgur.com/UYiroysl.jpg' + }, + { + title: 'Earlier this morning, NYC', + subtitle: 'Lorem ipsum dolor sit amet', + illustration: 'https://i.imgur.com/UPrs1EWl.jpg' + }, + { + title: 'White Pocket Sunset', + subtitle: 'Lorem ipsum dolor sit amet et nuncat ', + illustration: 'https://i.imgur.com/MABUbpDl.jpg' + }, + { + title: 'Acrocorinth, Greece', + subtitle: 'Lorem ipsum dolor sit amet et nuncat mergitur', + illustration: 'https://i.imgur.com/KZsmUi2l.jpg' + }, + { + title: 'The lone tree, majestic landscape of New Zealand', + subtitle: 'Lorem ipsum dolor sit amet', + illustration: 'https://i.imgur.com/2nCt3Sbl.jpg' + }, + { + title: 'Middle Earth, Germany', + subtitle: 'Lorem ipsum dolor sit amet', + illustration: 'https://i.imgur.com/lceHsT6l.jpg' + } +]; + +export const ENTRIES2 = [ + { + title: 'Favourites landscapes 1', + subtitle: 'Lorem ipsum dolor sit amet', + illustration: 'https://i.imgur.com/SsJmZ9jl.jpg' + }, + { + title: 'Favourites landscapes 2', + subtitle: 'Lorem ipsum dolor sit amet et nuncat mergitur', + illustration: 'https://i.imgur.com/5tj6S7Ol.jpg' + }, + { + title: 'Favourites landscapes 3', + subtitle: 'Lorem ipsum dolor sit amet et nuncat', + illustration: 'https://i.imgur.com/pmSqIFZl.jpg' + }, + { + title: 'Favourites landscapes 4', + subtitle: 'Lorem ipsum dolor sit amet et nuncat mergitur', + illustration: 'https://i.imgur.com/cA8zoGel.jpg' + }, + { + title: 'Favourites landscapes 5', + subtitle: 'Lorem ipsum dolor sit amet', + illustration: 'https://i.imgur.com/pewusMzl.jpg' + }, + { + title: 'Favourites landscapes 6', + subtitle: 'Lorem ipsum dolor sit amet et nuncat', + illustration: 'https://i.imgur.com/l49aYS3l.jpg' + } +]; \ No newline at end of file diff --git a/src/styles/SliderEntry.style.js b/src/styles/SliderEntry.style.js new file mode 100644 index 0000000..e89c84d --- /dev/null +++ b/src/styles/SliderEntry.style.js @@ -0,0 +1,99 @@ +import { StyleSheet, Dimensions, Platform } from 'react-native'; +import { colors } from '../styles/index.style'; + +const IS_IOS = Platform.OS === 'ios'; +const { width: viewportWidth, height: viewportHeight } = Dimensions.get('window'); + +function wp (percentage) { + const value = (percentage * viewportWidth) / 100; + return Math.round(value); +} + +const slideHeight = viewportHeight * 0.36; +const slideWidth = wp(55); +const itemHorizontalMargin = wp(0); + +export const sliderWidth = viewportWidth; +export const itemWidth = slideWidth + itemHorizontalMargin * 2; + +const entryBorderRadius = 8; + +export default StyleSheet.create({ + slideInnerContainer: { + width: itemWidth, + height: slideHeight, + paddingHorizontal: itemHorizontalMargin, + paddingBottom: 18 // needed for shadow + }, + shadow: { + position: 'absolute', + top: 0, + left: itemHorizontalMargin, + right: itemHorizontalMargin, + bottom: 18, + shadowColor: colors.black, + shadowOpacity: 0.25, + shadowOffset: { width: 0, height: 10 }, + shadowRadius: 10, + borderRadius: entryBorderRadius + }, + imageContainer: { + flex: 1, + marginBottom: IS_IOS ? 0 : -1, // Prevent a random Android rendering issue + backgroundColor: 'white', + borderTopLeftRadius: entryBorderRadius, + borderTopRightRadius: entryBorderRadius + }, + imageContainerEven: { + backgroundColor: colors.black + }, + image: { + ...StyleSheet.absoluteFillObject, + resizeMode: 'cover', + borderRadius: IS_IOS ? entryBorderRadius : 0, + borderTopLeftRadius: entryBorderRadius, + borderTopRightRadius: entryBorderRadius + }, + // image's border radius is buggy on iOS; let's hack it! + radiusMask: { + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + height: entryBorderRadius, + backgroundColor: 'white' + }, + radiusMaskEven: { + backgroundColor: colors.black + }, + textContainer: { + justifyContent: 'center', + paddingTop: 20 - entryBorderRadius, + paddingBottom: 20, + paddingHorizontal: 16, + backgroundColor: 'white', + borderBottomLeftRadius: entryBorderRadius, + borderBottomRightRadius: entryBorderRadius + }, + textContainerEven: { + backgroundColor: colors.black + }, + title: { + color: colors.black, + fontSize: 13, + fontWeight: 'bold', + letterSpacing: 0.5 + }, + titleEven: { + color: 'white' + }, + subtitle: { + marginTop: 6, + color: colors.gray, + fontSize: 12, + fontStyle: 'italic' + }, + subtitleEven: { + color: 'rgba(255, 255, 255, 0.7)' + } +}); \ No newline at end of file diff --git a/src/styles/index.style.js b/src/styles/index.style.js new file mode 100644 index 0000000..de17e94 --- /dev/null +++ b/src/styles/index.style.js @@ -0,0 +1,70 @@ +import { StyleSheet } from 'react-native'; + +export const colors = { + black: '#1a1917', + gray: '#888888', + background1: '#B721FF', + background2: '#21D4FD' +}; + +export default StyleSheet.create({ + safeArea: { + flex: 1, + backgroundColor: colors.black + }, + container: { + flex: 1, + backgroundColor: colors.background1 + }, + gradient: { + ...StyleSheet.absoluteFillObject + }, + scrollview: { + flex: 1 + }, + exampleContainer: { + paddingVertical: 30 + }, + exampleContainerDark: { + backgroundColor: colors.black + }, + exampleContainerLight: { + backgroundColor: 'white' + }, + title: { + paddingHorizontal: 30, + backgroundColor: 'transparent', + color: 'rgba(255, 255, 255, 0.9)', + fontSize: 20, + fontWeight: 'bold', + textAlign: 'center' + }, + titleDark: { + color: colors.black + }, + subtitle: { + marginTop: 5, + paddingHorizontal: 30, + backgroundColor: 'transparent', + color: 'rgba(255, 255, 255, 0.75)', + fontSize: 13, + fontStyle: 'italic', + textAlign: 'center', + }, + slider: { + marginTop: 15, + overflow: 'visible', // for custom animations + }, + sliderContentContainer: { + paddingVertical: 10 // for custom animation + }, + paginationContainer: { + paddingVertical: 8 + }, + paginationDot: { + width: 8, + height: 8, + borderRadius: 4, + marginHorizontal: 8 + } +}); \ No newline at end of file diff --git a/src/translations/en.json b/src/translations/en.json new file mode 100644 index 0000000..77c5aef --- /dev/null +++ b/src/translations/en.json @@ -0,0 +1,180 @@ +{ + "search_project": "Search Projects", + "id_card_existed": "ID No. is already registered.", + "mobile_existed": "Phone No. is already registered.", + "invalid_room_no": "Room No. is invalid.", + "id_card_not_existed": "ID No. is not found in Database.", + "email_not_exist_please_signup": "Email :email is not registered. Please register first.", + "data_invalid": "Invalid Data", + "invalid_mobile_number": "Invaid Phone No.", + "update_read_success": "update read notification success", + "project_not_found'": "Project is not found.", + "room_not_found": "Room is not found.", + "require": ":attribute field is required.", + "have_outstanding_balance": "You have an outstanding balance.", + "no_outstanding_balance_yet": "You have no outstanding balance.", + "view_more": "View Details", + "view_points": "View Points", + "point": "Point", + "redeem": "Redeem", + "mail_and_parcel": "Mail and Parcel", + "request_repair": "Request for Repair", + "inquire": "Inquire", + "latest_news": "News", + "ดู momentjs": "43935", + "outstanding_balance_detail": "Details of outstanding balance", + "no_outstanding_balance": "No outstanding balance", + "save_water_meter": "Water Meter", + "save_electric_meter": "Electricity Meter", + "electric_unit": "Electricity Bill", + "unit": "Unit", + "unit_price": "Unit Price", + "amount": "Amount", + "baht": "Baht", + "request_repair_and_Other": "Request for Repair & Other Services", + "place_choose_service": "Please choose a service.", + "other_service": "Other Services", + "call_for_service": "Call for services", + "repair_history": "Repair History", + "no_repair_history": "No Repair History", + "confirm_info": "Confirm Information", + "make_appoint": "Make Appointment", + "date": "Date", + "time": "Time", + "information": "Information", + "confirm": "Confirm", + "send_confirmation": "Sending Confirmation", + "send_confirm": "Confirm to Send", + "cancel": "Cancel", + "ok": "OK", + "request_sent": "Request sent", + "room": "Room", + "status": "Status", + "pending": "Pending", + "estimate_charge": "Estimate the service charge", + "back_home": "Back to Home", + "faqs": "FAQs", + "me": "Me", + "project": "Project", + "message": "Message", + "submit_data": "Submit data", + "submit_area_from_map": "Select Area from Map", + "news": "News", + "products": "Products", + "service": "Services", + "search_proect": "Search Projects", + "baht_month": "Baht/month", + "view_details": "View Details", + "phone": "Phone No.", + "address": "Address", + "room_detail": "Room details", + "month": "Month", + "detail": "Details", + "book_room": "Book a room", + "individual": "Individual", + "corporate": "Corporate", + "profile": "Profile", + "fullname": "Full Name", + "specific_fullname": "Specify the full name", + "email": "Email", + "specific_email": "Specify an email", + "phone2": "Phone No.", + "specific_phone": "Specify a phone number", + "gender_mf": "Gender Male/Female", + "birth_date": "Date of Birth", + "select_date": "Select date", + "expect_checkin": "Expected check-in date", + "company_name": "Company Name", + "specific_company": "Specify a company name", + "tax_id": "Tax ID No.", + "specific_tax_id": "Specify 13-digit Tax ID No.", + "booking_submit": "Submit booking information", + "booking_confirm": "Confirm Booking", + "booking_success": "Submit booking information successfully", + "close": "Close", + "product_detail": "Product Details", + "request_repair_other": "Request for Repair & Other Services", + "notification": "Notification", + "suggestion": "Suggestion", + "logout": "Log out", + "citizen_id": "ID No.", + "edit_profile": "Edit personal information", + "accom_info": "Accommodation Information", + "building": "Building", + "room2": "Room", + "room_no": "Room No.", + "change_password": "Change Password", + "new_password": "New Password", + "enter_new_password": "Enter a new password", + "confirm_password": "Confirm New Password", + "enter_confirm_password": "Enter a new password to confirm", + "complete": "Complete", + "noti_setting": "Notification Settings", + "news2": "News", + "promotion": "Promotion", + "parcel_list": "List of Parcels", + "payment_due": "Payment due", + "write_suggest": "Write Suggestions", + "photo": "Photo", + "logout_confirm": "Do you want to log out?", + "charoensin_asset": "Charoensin Asset", + "for_csa_customer": "For Charoensin Asset's customers only", + "create_account": "Create an account", + "or": "Or", + "login": "Login", + "login_facebook": "Log in with Facebook", + "term_condition": "Terms and Conditions", + "not_agree": "Not Agree", + "agree": "Agree", + "register": "Create an account", + "next": "Next", + "not_a_member": "You are not a member?", + "gender": "Gender", + "male": "Male", + "female": "Female", + "citizen_id_13": "Citizen ID", + "water_bill": "Water Bill", + "password": "password", + "confirm_password_only": "Confirm Password", + "outstanding_balance": "Outstanding Balance", + "rating": "Rating", + "name": "Name", + "category": "Category", + "individual2": "Individual", + "zone": "Zone", + "accommodation": "Accommodation", + "connect_facebook": "Connect with Facebook", + "choose_project": "Choose Project", + "room_for_rent": "Room for Rent", + "scan_to_pay": "Scan code for payment", + "account_name": "Account Name", + "account": "Account", + "ref_no": "Reference Number", + "total_payment": "Total Payment Amount", + "support_all_bank": "Support every bank", + "save": "Save", + "coporate": "Corporate", + "new_room": "New Room", + "please_pay_before": "Please pay before", + "to_view_outstanding_balance": "to see the outstanding balance", + "no_mail_parcel": "You don't have any mails or parcels", + "no_notification": "You don't have any notifications", + "no_product": "You don't have any products", + "smart_meter": "Smart Meter", + "no_water_electric_bill": "You don't have any water or electric bill", + "receive_code": "Receive confirmation code", + "pay": "Pay", + "please_sign": "Please sign here", + "redeem_reward": "Claim your reward", + "service_detail": "Service details", + "confirmation_code": "Confirmation code", + "consignee": "Consignee", + "waiting_for_pickup": "Waiting for pickup", + "contact_front_desk": "Contact front desk", + "awaiting_payment": "Awaiting payment", + "paid": "Paid", + "latest_promotion": "New Promotion", + "disconnect_facebook": "Disconnect Facebook", + "register_success": "Register Success" + +} diff --git a/src/translations/km.json b/src/translations/km.json new file mode 100644 index 0000000..6126f46 --- /dev/null +++ b/src/translations/km.json @@ -0,0 +1,179 @@ +{ + "search_project": "ស្វែងរកគំរោង", + "id_card_existed": "លេខលិខិតឆ្លងដែនបានប្រើ", + "mobile_existed": "លេខទូរសព្ទបានប្រើ", + "invalid_room_no": "លេខបន្ទប់មិនត្រឹមត្រូវ ។", + "id_card_not_existed": "រកមិនឃើញលេខលិខិតឆ្លងដែននៅក្នុងឃ្លាំងទិន្នន័យ។", + "email_not_exist_please_signup": "អ៊ីមែល :email មិនត្រូវបានចុះឈ្មោះក្នុងប្រព័ន្ធទេសូមចុះឈ្មោះ។", + "data_invalid": "ព័ត៌មានមិនត្រឹមត្រូវ", + "invalid_mobile_number": "លេខទូរស័ព្ទមិនត្រឹមត្រូវ។", + "update_read_success": "ធ្វើឱ្យទាន់សម័យបានអានទទួលបានជោគជ័យជូនដំណឹង។", + "project_not_found'": "រកមិនឃើញគម្រោង។", + "room_not_found": "រកមិនឃើញបន្ទប់។", + "require": "សូមបញ្ចូលព័ត៌មាន : attribute ។", + "have_outstanding_balance": "មានតុល្យភាពលេចធ្លោ។", + "no_outstanding_balance_yet": "មិនមានតុល្យភាពលេចធ្លោ។", + "view_more": "ព័ត៌មាន​បន្ថែម។", + "view_points": "ពិន្ទុរង្វាន់", + "point": "ពិន្ទុ", + "redeem": "ចំណុចផ្លាស់ប្តូរ", + "mail_and_parcel": "ស្មាតម៉ែត្រ", + "request_repair": "ជូនដំណឹងសម្រាប់ការជួសជុល។", + "inquire": "ទាក់ទង​មក​ពួក​យើង", + "latest_news": "ព័ត៌មានថ្មី", + "ดู momentjs": "ថ្ងៃទី ១៤ ខែ មេសា ឆ្នាំ ២០២០", + "outstanding_balance_detail": "ព័ត៌មានលម្អិតអំពីសមតុល្យលេចធ្លោ", + "no_outstanding_balance": "មិនមានតុល្យភាពលេចធ្លោ។", + "save_water_meter": "វិក័យប័ត្រទឹក", + "save_electric_meter": "វិក័យប័ត្រអគ្គិសនី", + "electric_unit": "បរិមាណអគ្គិសនី", + "unit": "បរិមាណ", + "unit_price": "ឯកតា", + "amount": "ចំនួនទឹកប្រាក់", + "baht": "បាត", + "request_repair_and_Other": "ជូនដំណឹងសម្រាប់ការជួសជុល & សេវាកម្មផ្សេងទៀត", + "place_choose_service": "សូមជ្រើសរើសសេវាកម្មដែលចង់បាន។", + "other_service": "សេវាកម្មផ្សេងទៀត", + "call_for_service": "សេវាកម្មជូនដំណឹង", + "repair_history": "បញ្ជីប្រវត្តិ", + "no_repair_history": "គ្មានប្រវត្តិជួសជុលទេ", + "confirm_info": "បញ្ជាក់ព័ត៌មានធាតុ", + "make_appoint": "ការតែងតាំង", + "date": "ថ្ងៃទី", + "time": "ពេលវេលាណាត់ជួប", + "information": "ព័ត៌មានអំពីធាតុ", + "confirm": "បញ្ជាក់", + "send_confirmation": "ផ្ញើព័ត៌មានធាតុ", + "send_confirm": "បញ្ជាក់ការបញ្ជូនព័ត៌មានធាតុ", + "cancel": "ដើម្បីបោះបង់", + "ok": "យល់ព្រម", + "request_sent": "សេវាកម្មដែលបានជូនដំណឹង", + "room": "បន្ទប់", + "status": "ស្ថានភាព", + "pending": "រង់ចាំ", + "estimate_charge": "ថ្លៃសេវាកម្មប៉ាន់ស្មាន", + "back_home": "ត្រលប់ទៅទំព័រមេវិញ", + "faqs": "សំណួរ - ចម្លើយ", + "me": "ខ្ញុំ", + "project": "គម្រោង", + "message": "ប៍តមាន", + "submit_data": "ផ្ញើព័ត៌មាន", + "submit_area_from_map": "ជ្រើសរើសតំបន់ពីផែនទី។", + "news": "ព័ត៌មាន", + "products": "ផលិតផល", + "service": "សេវាកម្ម", + "search_proect": "ស្វែងរកគំរោង", + "baht_month": "បាត / ខែ", + "view_details": "មើលព័ត៌មានលម្អិត", + "phone": "លេខទូរស័ព្ទ", + "address": "អាសយដ្ឋាន", + "room_detail": "ព័ត៌មានលម្អិតបន្ទប់", + "month": "ខែ", + "detail": "ព័ត៌មានលម្អិត", + "book_room": "កក់បន្ទប់", + "individual": "បុគ្គល", + "corporate": "នីតិបុគ្គល", + "profile": "ព័ត៌មានផ្ទាល់ខ្លួន", + "fullname": "ឈ្មោះ - នាមត្រកូល", + "specific_fullname": "បញ្ជាក់ឈ្មោះនិងនាមត្រកូល", + "email": "អ៊ីមែល", + "specific_email": "បញ្ជាក់អ៊ីមែល", + "phone2": "លេខទូរស័ព្ទ", + "specific_phone": "បញ្ជាក់លេខទូរស័ព្ទ", + "gender_mf": "ភេទ: បុរស/ស្រី", + "birth_date": "ថ្ងៃទី/ខែ/ឆ្នាំកំណើត", + "select_date": "ជ្រើសរើសកាលបរិច្ឆេទ", + "expect_checkin": "កាលបរិច្ឆេទនៃការស្នាក់នៅរំពឹងទុក", + "company_name": "ឈ្មោះក្រុមហ៊ុន", + "specific_company": "បញ្ជាក់ឈ្មោះក្រុមហ៊ុន", + "tax_id": "លេខសម្គាល់ពន្ធ", + "specific_tax_id": "បញ្ជាក់ ១៣ ខ្ទង់", + "booking_submit": "ផ្ញើព័ត៌មានកក់", + "booking_confirm": "ការបញ្ជាក់ពីការកក់", + "booking_success": "ព័ត៌មាននៃការកក់ត្រូវបានផ្ញើដោយជោគជ័យ។", + "close": "បិទ", + "product_detail": "ព័ត៌មានលម្អិតអំពីផលិតផល", + "request_repair_other": "ជូនដំណឹងអំពីការជួសជុលនិងសេវាកម្ម", + "notification": "ការជូនដំណឹង", + "suggestion": "សំណូមពរ", + "logout": "ចេញ", + "citizen_id": "លេខអត្តសញ្ញាណប័ណ្ណ", + "edit_profile": "កែសម្រួលព័ត៌មានផ្ទាល់ខ្លួន", + "accom_info": "ព័ត៌មានអំពីការស្នាក់នៅ", + "building": "អគារ", + "room2": "បន្ទប់", + "room_no": "លេខបន្ទប់", + "change_password": "កែលេខសម្ងាត់", + "new_password": "ពាក្យសម្ងាត់ថ្មី", + "enter_new_password": "បញ្ចូលពាក្យសម្ងាត់ថ្មី", + "confirm_password": "បញ្ជាក់ពាក្យសម្ងាត់ថ្មី", + "enter_confirm_password": "បញ្ចូលពាក្យសម្ងាត់ថ្មីដើម្បីបញ្ជាក់។", + "complete": "បានបញ្ចប់", + "noti_setting": "រៀបចំការជូនដំណឹង", + "news2": "ព័ត៌មាន", + "promotion": "ផសបវផសាយ", + "parcel_list": "បញ្ជីផលិតផល", + "payment_due": "ទូទាត់សមតុល្យ", + "write_suggest": "សំណូមពរ", + "photo": "រូបភាព", + "logout_confirm": "តើអ្នកចង់ចេញ?", + "charoensin_asset": "Charoen Sin Asset", + "for_csa_customer": "សម្រាប់អតិថិជនក្រុមហ៊ុន", + "create_account": "ចុះឈ្មោះនៅទីនេះ", + "or": "ឬ", + "login": "ចូល", + "login_facebook": "ចូលជាមួយ Facebook", + "term_condition": "កិច្ចព្រមព្រៀងនិងលក្ខខណ្ឌ", + "not_agree": "មិន​យល់ព្រម", + "agree": "យល់ព្រម", + "register": "ចុះឈ្មោះ", + "next": "ក្រោយ", + "not_a_member": "មិនមែនជាសមាជិកនៅឡើយទេ?", + "gender": "ភេទ", + "male": "បុរស", + "female": "ស្រី", + "citizen_id_13": "លេខសម្គាល់ពលរដ្ឋ", + "water_bill": "ថ្លៃប្រើប្រាស់ទឹកស្អាត", + "password": "ការពាក្យសម្ងាត់", + "confirm_password_only": "អះអាងពាក្យសម្ងាត់", + "outstanding_balance": "សមតុល្យឆ្នើម", + "rating": "ការផ្តល់ចំណាត់ថ្នាក់", + "name": "ឈ្មោះ", + "category": "ប្រភេទ", + "individual2": "បុគគល", + "zone": "តំបន់", + "accommodation": "ការស្នាក់នៅ", + "connect_facebook": "ភ្ជាប់ជាមួយហ្វេសប៊ុក", + "choose_project": "ជ្រើសគម្រោង", + "room_for_rent": "បន្ទប់សម្រាប់ជួល", + "scan_to_pay": "ស្កេនកូដសម្រាប់ការទូទាត់", + "account_name": "ឈ្មោះ​គណនី", + "account": "គណនី", + "ref_no": "លេខ​យោង", + "total_payment": "ចំនួនទឹកប្រាក់ទូទាត់សរុប", + "support_all_bank": "គាំទ្រដល់ធនាគារជារៀងរាល់", + "save": "រក្សាទុក", + "coporate": "សហការ", + "new_room": "បន្ទប់ថ្មី", + "please_pay_before": "សូមយកចិត្តមុនពេល", + "to_view_outstanding_balance": "ដើម្បីមើលឃើញសមតុល្យដែលលេចធ្លោ", + "no_mail_parcel": "អ្នកមិនមានសំបុត្រឬក្បាលដីណាមួយ", + "no_notification": "អ្នកមិនមានការជូនដំណឹងណាមួយឡើយ", + "no_product": "អ្នកមិនមានផលិតផលណាមួយ", + "smart_meter": "Smart Meter", + "no_water_electric_bill": "អ្នកមិនមានវិក័យប័ត្រទឹកឬអគ្គិសនី", + "receive_code": "ទទួលបានលេខកូដការបញ្ជាក់", + "pay": "បង់", + "please_sign": "សូមចុះហត្ថលេខានៅទីនេះ", + "redeem_reward": "ទាមទារយករង្វាន់របស់អ្នក", + "service_detail": "ព័ត៌មានលម្អិតសេវាកម្ម", + "confirmation_code": "កូដបញ្ជាក់ទទួលស្គាល់", + "consignee": "អ្នកទទួលទំនិញ", + "waiting_for_pickup": "កំពុងរង់ចាំភីកអាប់", + "contact_front_desk": "តុមានទំនាក់ទំនងមុខ", + "awaiting_payment": "រង់ចាំការទូទាត់ប្រាក់", + "paid": "បង់ប្រាក់", + "latest_promotion": "លើកកម្ពស់ថ្មី", + "disconnect_facebook": "ផ្តាច់ហ្វេសប៊ុក", + "register_success": "ចុះឈ្មោះទទួលបានជោគជ័យ" +} diff --git a/src/translations/my.json b/src/translations/my.json new file mode 100644 index 0000000..dee4229 --- /dev/null +++ b/src/translations/my.json @@ -0,0 +1,179 @@ +{ + "search_project": "စီမံကိန္းမ်ား ရွာေဖြမည္", + "id_card_existed": "အသုံးျပဳခဲ့ၿပီးေသာ ႏုိင္ငံကူးလက္မွတ္နံပါတ္ျဖစ္သည္", + "mobile_existed": "အသုံးျပဳခဲ့ၿပီးေသာ ဖုန္းနံပါတ္ျဖစ္သည္", + "invalid_room_no": "အခန္းနံပါတ္ မမွန္ကန္ပါ", + "id_card_not_existed": "အခ်က္အလက္မွာ ႏုိင္ငံကူးလက္မွတ္ရွာမေတြ႕ပါ", + "email_not_exist_please_signup": "အီးေမး မွတ္ပုံမတင္ရေသးပါ ေက်းဇူးျပဳ၍ အသင္း၀င္ရန္ေလွ်ာက္ထားပါ", + "data_invalid": "အခ်က္အလက္မွန္ကန္မႈမရိွပါ", + "invalid_mobile_number": "ဖုန္းေမာ္ဒယ္နံပါတ္ မွန္ကန္မႈမရိွပါ", + "update_read_success": "", + "project_not_found'": "စီမံကိန္း မေတြ႕ပါ", + "room_not_found": "အခန္းမေတြ႕ပါ", + "require": "ေက်းဇူးျပဳ၍ :attribute အခ်က္အလက္ထည့္သြင္းပါ", + "have_outstanding_balance": "သင္ ေငြေပးသြင္းရန္က်န္ရိွေသးသည္", + "no_outstanding_balance_yet": "ေငြေပးသြင္းရန္ မရိွပါ", + "view_more": "ထပ္မံၾကည့္ရွဳရန္", + "view_points": "စုေပါင္းအမွတ္", + "point": "အမွတ္", + "redeem": "အမွတ္လဲလွယ္ရန္", + "mail_and_parcel": "မက္ေဆ့ခ်္ႏွင့္ ကုန္စည္", + "request_repair": "ျပင္ဆင္မႈအတြက္ အေၾကာင္းၾကားျခင္း", + "inquire": "ေမးျမန္းရန္", + "latest_news": "သတင္းအသစ္", + "ดู momentjs": "14-04-63", + "outstanding_balance_detail": "ေငြေပးရန္က်န္ရိွသည့္ အေသးစိတ္", + "no_outstanding_balance": "ေငြထပ္မံေပးသြင္းရန္ မရိွပါ", + "save_water_meter": "ေရခမွတ္တမ္း", + "save_electric_meter": "မီးခမွတ္တမ္း", + "electric_unit": "မီးခ", + "unit": "စုေပါင္း", + "unit_price": "ယူနစ္", + "amount": "စုေပါင္းေငြ", + "baht": "ဘတ္", + "request_repair_and_Other": "ျပင္ဆင္ျခင္းႏွင့္ အျခား၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး အေၾကာင္းၾကားပါ", + "place_choose_service": "ေက်းဇူးျပဳ၍ ၀န္ေဆာင္မႈေရြးခ်ယ္ပါ", + "other_service": "၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး", + "call_for_service": "၀န္ေဆာင္မႈကုိ အေၾကာင္းၾကားပါ", + "repair_history": "စာရင္းသမုိင္း", + "no_repair_history": "ျပဳျပင္မႈ စာရင္းသမုိင္းမရိွပါ", + "confirm_info": "စာရင္းအခ်က္အလက္ကုိ အတည္ျပဳပါ", + "make_appoint": "ခ်ိန္းထားသည့္အခ်ိန္", + "date": "ရက္စြဲ", + "time": "ခ်ိန္းထားအခ်ိန္", + "information": "အခ်က္အလက္အေၾကာင္း", + "confirm": "အတည္ျပဳမည္", + "send_confirmation": "သတင္းအခ်က္အလက္ ေပးပုိ႔မည္", + "send_confirm": "သတင္းအခ်က္အလက္ ေပးပုိ႔အတည္ျပဳမည္", + "cancel": "ပယ္ဖ်က္မည္", + "ok": "အုိေက", + "request_sent": "၀န္ေဆာင္မႈ အသိေပးၿပီးၿပီ", + "room": "အခန္း", + "status": "အေျခအေန", + "pending": "ေစာင့္ဆုိင္းေနသည္", + "estimate_charge": "၀န္ေဆာင္မႈအခေၾကး ခန္႔မွန္းခ်က္", + "back_home": "ပင္မစာမ်က္ႏွာသုိ႔ ျပန္သြားမည္", + "faqs": "အေမး-အေျဖ", + "me": "က်ေနာ္", + "project": "စီမံကိန္း", + "message": "မက္ေဆ့ခ်္", + "submit_data": "မက္ေဆ့ခ်္ပုိ႔မည္", + "submit_area_from_map": "ေျမပုံမွ ေနရာေဒသကုိေရြးမည္", + "news": "သတင္း", + "products": "ထုတ္ကုန္", + "service": "၀န္ေဆာင္မႈ", + "search_proect": "စီမံကိန္းမ်ား ရွာေဖြမည္", + "baht_month": "ဘတ္/လ", + "view_details": "အေသးစိတ္ၾကည့္ရွဳရန္", + "phone": "ဖုန္းနံပါတ္", + "address": "လိပ္စာ", + "room_detail": "အခန္းအေသးစိတ္", + "month": "လ", + "detail": "အေသးစိတ္", + "book_room": "အခန္းဘြတ္ကင္လုပ္မည္", + "individual": "သာမန္လူပုဂၢဳိလ္", + "corporate": "ေကာ္ပုိေရးရွင္း", + "profile": "ကုိယ္ေရးမွတ္တမ္း", + "fullname": "အမည္-မ်ဳိးရုိးနာမည္", + "specific_fullname": "အမည္ႏွင့္မ်ဳိးရုိးနာမည္ ျဖည့္ပါ", + "email": "အီးေမး", + "specific_email": "အီးေမး ျဖည့္ပါ", + "phone2": "ဖုန္းနံပါတ္", + "specific_phone": "ဖုန္းနံပါတ္ ျဖည့္ပါ", + "gender_mf": "လိင္ က်ား ၊ မ", + "birth_date": "ေမြးရက္/လ/ခုႏွစ္", + "select_date": "ရက္စြဲေရြးပါ", + "expect_checkin": "နားေနမည့္ရက္", + "company_name": "ကုမၸဏီနာမည္", + "specific_company": "ကုမၸဏီနာမည္ ျဖည့္ပါ", + "tax_id": "အခြန္ေဆာင္သူမွတ္ပုံတင္နံပါတ္", + "specific_tax_id": "မွတ္ပုံတင္နံပါတ္ 13 လုံး ျဖည့္ပါ", + "booking_submit": "ဘြတ္ကင္အခ်က္အလက္ ပုိ႔ပါ", + "booking_confirm": "ဘြတ္ကင္အတည္ျပဳပါ", + "booking_success": "ဘြတ္ကင္ ေအာင္ျမင္ပါသည္", + "close": "ပိတ္မည္", + "product_detail": "ထုတ္ကုန္အေသးစိတ္အေၾကာင္း", + "request_repair_other": "ျပင္ဆင္ျခင္းႏွင့္ အျခား၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး အေၾကာင္းၾကားပါ", + "notification": "အသိေပးခ်က္", + "suggestion": "အႀကံျပဳခ်က္", + "logout": "အေကာင့္မွ ထြက္မည္", + "citizen_id": "မွတ္ပုံတင္နံပါတ္", + "edit_profile": "ကုိယ္ေရးမွတ္တမ္း ျပင္ဆင္မည္", + "accom_info": "တည္းခုိမည့္ေနရာအခ်က္အလက္", + "building": "တုိက္", + "room2": "အခန္း", + "room_no": "အခန္းနံပါတ္", + "change_password": "လွ်ဳိ႕၀ွက္နံပါတ္ေျပာင္းလဲမည္", + "new_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္", + "enter_new_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ ျဖည့္မည္", + "confirm_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ အတည္ျပဳ", + "enter_confirm_password": "အတည္ျပဳရန္ လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ ျဖည့္ပါ", + "complete": "ၿပီးၿပီ", + "noti_setting": "အသိေပးရန္ သတ္မွတ္ခ်က္မ်ားျပဳလုပ္မည္", + "news2": "သတင္းအေၾကာင္းအရာ", + "promotion": "ပရုိမုိးရွင္း", + "parcel_list": "ကုန္စည္စာရင္း", + "payment_due": "ေငြေပးသြင္းရန္ အခ်ိန္ေရာက္ၿပီ", + "write_suggest": "အႀကံျပဳခ်က္မ်ား ေရးသားပါ", + "photo": "ဓါတ္ပုံ", + "logout_confirm": "သင္သည္ အေကာင့္မွ ထြက္မည္ဟုတ္မဟုတ္ ?", + "charoensin_asset": "က်လိန္းဆင္အက္ဆက္", + "for_csa_customer": "က်လိန္းဆင္အက္ဆက္ကုမၸဏီ၏ ေဖါက္သည္မ်ားအတြက္", + "create_account": "ဤေနရာတြင္ အသင္း၀င္ ေလွ်ာက္ထားပါ", + "or": "သုိ႔မဟုတ္", + "login": "အေကာင့္ထဲ ၀င္မည္", + "login_facebook": "Facebook ကုိ အသုံးျပဳ၍ ၀င္မည္", + "term_condition": "အေျခအေနႏွင့္ သေဘာတူညီခ်က္မ်ား", + "not_agree": "လက္မခံပါ", + "agree": "လက္ခံသည္", + "register": "အသင္း၀င္ေလွ်ာက္ထားပါ", + "next": "ဆက္သြားပါ", + "not_a_member": "သင္သည္ အသင္း၀င္သူမဟုတ္ေသးပါ ဟုတ္လား ?", + "gender": "ကျား, မ", + "male": "အထီး", + "female": "အမြိုးသမီး", + "citizen_id_13": "နိုင်ငံသား ID ကို", + "water_bill": "ရေဘီလ်", + "password": "စကားဝှက်ကို", + "confirm_password_only": "စကားဝှက်ကိုအတည်ပြုပါ", + "outstanding_balance": "ထူးချွန်ချိန်ခွင်လျှာ", + "rating": "rating", + "name": "အမည်", + "category": "အမျိုးအစား", + "individual2": "တစ်ဦးချင်း", + "zone": "ဇုန်", + "accommodation": "နေရာထိုင်ခင်း", + "connect_facebook": "Facebook နှင့်ဆက်သွယ်ပါ", + "choose_project": "စီမံကိန်းရွေးပါ", + "room_for_rent": "အခန်းငှားရန်", + "scan_to_pay": "အခန်းငှားရန်", + "account_name": "အကောင့်နာမည်", + "account": "အကောင့်", + "ref_no": "ကိုးကားစရာအရေအတွက်", + "total_payment": "စုစုပေါင်းငွေပေးချေမှုရမည့်ငွေပမာဏ", + "support_all_bank": "တိုင်းဘဏ်ကိုထောကျပံ့", + "save": "သိမ်းဆည်းပါ", + "coporate": "ဥပဒေရေးရာပုဂ္ဂိုလ်သတင်းအချက်အလက်", + "new_room": "အခန်းအသစ်", + "please_pay_before": "မတိုင်မှီပေးဆောင် ကျေးဇူးပြု.", + "to_view_outstanding_balance": "အဆိုပါထူးချွန်ချိန်ခွင်လျှာကြည့်ဖို့", + "no_mail_parcel": "သင်သည်မည်သည့်မေးလ်သို့မဟုတ်ချောထုပ်ရှိသည်မဟုတ်ကြဘူး", + "no_notification": "သင်သည်မည်သည့်အကြောင်းကြားစာများရှိသည်မဟုတ်ကြဘူး", + "no_product": "သင်သည်မည်သည့်ထုတ်ကုန်ရှိသည်မဟုတ်ကြဘူး", + "smart_meter": "Smart Meter", + "no_water_electric_bill": "သင်သည်မည်သည့်ရေသို့မဟုတ်လျှပ်စစ်ဥပဒေကြမ်းရှိသည်မဟုတ်ကြဘူး", + "receive_code": "အတည်ပြုချက်ကိုကုဒ်လက်ခံရရှိ", + "pay": "ပေးဆောင်", + "please_sign": "ကျေးဇူးပြုပြီးဒီမှာလက်မှတ်ထိုးပါ", + "redeem_reward": "မင်းရဲ့ဆုကိုတောင်းခံပါ", + "service_detail": "ဝန်ဆောင်မှုအသေးစိတ်", + "confirmation_code": "အတည်ပြုသည့်ကုတ်", + "consignee": "အခကြေးငွေ", + "waiting_for_pickup": "ပစ်ကပ်ဘို့စောင့်ဆိုင်းနေ", + "contact_front_desk": "ဆက်သွယ်ရန်ရှေ့စားပွဲပေါ်မှာ", + "awaiting_payment": "ငွေပေးချေမှုစောင့်ဆိုင်း", + "paid": "ပေးဆောင်သည်", + "latest_promotion": "နယူးမြှင့်တင်ရေး", + "disconnect_facebook": "အဆက်ဖြုတ် Facebook က", + "register_success": "မှတ်ပုံတင်မည်အောင်မြင်" +} diff --git a/src/translations/th.json b/src/translations/th.json new file mode 100644 index 0000000..b4db44c --- /dev/null +++ b/src/translations/th.json @@ -0,0 +1,179 @@ +{ + "search_project": "ค้นหาโครงการ", + "id_card_existed": "หมายเลขบัตรประชาชนใช้ลงทะเบียนไปแล้ว", + "mobile_existed": "หมายเลขโทรศัพท์ใช้ลงทะเบียนไปแล้ว", + "invalid_room_no": "หมายเลขห้องพักไม่ถูกต้อง", + "id_card_not_existed": "ไม่พบหมายเลขบัตรประชาชนในฐานข้อมูล", + "email_not_exist_please_signup": "อีเมล์ :email ยังไม่ได้ลงทะเบียนในระบบ กรุณาสมัครสมาชิก", + "data_invalid": "ข้อมูลไม่ถูกต้อง", + "invalid_mobile_number": "หมายเลขเครื่องโทรศัพท์ไม่ถูกต้อง", + "update_read_success": "อ่านแล้ว", + "project_not_found'": "ไม่พบโครงการ", + "room_not_found": "ไม่พบห้องพัก", + "require": "กรุณาใส่ข้อมูล :attribute", + "have_outstanding_balance": "คุณมียอดค้างชำระ", + "no_outstanding_balance_yet": "ยังไม่มียอดค้างชำระ", + "view_more": "ดูเพิ่มเติม", + "view_points": "คะแนนสะสม", + "point": "พอยต์", + "redeem": "แลกคะแนน", + "mail_and_parcel": "จดหมายและพัสดุ", + "request_repair": "แจ้งซ่อม", + "inquire": "สอบถาม", + "latest_news": "ข่าวใหม่", + "ดู momentjs": "14 เม.ษ. 2563", + "outstanding_balance_detail": "รายละเอียดยอดค้างชำระ", + "no_outstanding_balance": "ไม่มียอดค้างชำระ", + "save_water_meter": "บันทึกค่าน้ำ", + "save_electric_meter": "บันทึกค่าไฟ", + "electric_unit": "ค่าไฟ", + "unit": "จำนวน", + "unit_price": "หน่วย", + "amount": "จำนวนเงิน", + "baht": "บาท", + "request_repair_and_Other": "แจ้งซ่อม & บริการอื่นๆ", + "place_choose_service": "กรุณาเลือกบริการที่ต้องการ", + "other_service": "บริการอื่นๆ", + "call_for_service": "แจ้งใช้บริการ", + "repair_history": "ประวัติรายการ", + "no_repair_history": "ไม่มีประวัติรายการซ่อม", + "confirm_info": "ยืนยันข้อมูลรายการ", + "make_appoint": "นัดหมายเวลา", + "date": "วันที่", + "time": "เวลานัด", + "information": "ข้อมูลรายการ", + "confirm": "ยืนยัน", + "send_confirmation": "ส่งข้อมูลรายการ", + "send_confirm": "ยืนยันการส่งข้อมูลรายการ", + "cancel": "ยกเลิก", + "ok": "ตกลง", + "request_sent": "แจ้งบริการเรียบร้อย", + "room": "ห้อง", + "status": "สถานะ", + "pending": "รอดำเนินการ", + "estimate_charge": "ประเมินค่าบริการ", + "back_home": "กลับหน้าหลัก", + "faqs": "ถาม - ตอบ", + "me": "ฉัน", + "project": "โครงการ", + "message": "ข้อความ", + "submit_data": "ส่งข้อมูล", + "submit_area_from_map": "เลือกเขตจากแผนที่", + "news": "ข่าว", + "products": "สินค้า", + "service": "บริการ", + "search_proect": "ค้นหาโครงการ", + "baht_month": "บาท/เดือน", + "view_details": "ดูรายละเอียด", + "phone": "เบอร์โทรศัพท์", + "address": "ที่อยู่", + "room_detail": "รายละเอียดห้อง", + "month": "เดือน", + "detail": "รายละเอียด", + "book_room": "จองห้องพัก", + "individual": "บุคคลธรรมดา", + "corporate": "นิติบุคคล", + "profile": "ข้อมูลส่วนตัว", + "fullname": "ชื่อ - นามสกุล", + "specific_fullname": "ระบุชื่อและนามสกุล", + "email": "อีเมล", + "specific_email": "ระบุอีเมล", + "phone2": "เบอร์โทร", + "specific_phone": "ระบุเบอร์โทร", + "gender_mf": "เพศ ชาย , หญิง", + "birth_date": "วัน/เดือน/ปีเกิด", + "select_date": "เลือกวันที่", + "expect_checkin": "วันที่คาดว่าจะเข้าพัก", + "company_name": "ชื่อบริษัท", + "specific_company": "ระบุชื่อบริษัท", + "tax_id": "เลขประจำตัวผู้เสียภาษี", + "specific_tax_id": "ระบุเลข 13 หลัก", + "booking_submit": "ส่งข้อมูลการจอง", + "booking_confirm": "ยืนยันการจอง", + "booking_success": "ส่งข้อมูลการจองสำเร็จ", + "close": "ปิด", + "product_detail": "รายละเอียดสินค้า", + "request_repair_other": "แจ้งซ่อม & บริการต่างๆ", + "notification": "การแจ้งเตือน", + "suggestion": "ข้อเสนอแนะ", + "logout": "ออกจากระบบ", + "citizen_id": "เลขบัตรประชาชน", + "edit_profile": "แก้ไขข้อมูลส่วนตัว", + "accom_info": "ข้อมูลที่พัก", + "building": "อาคาร", + "room2": "ห้องพัก", + "room_no": "เลขห้อง", + "change_password": "แก้ไขรหัสผ่าน", + "new_password": "รหัสผ่านใหม่", + "enter_new_password": "ใส่รหัสผ่านใหม่", + "confirm_password": "ยืนยันรหัสผ่านใหม่", + "enter_confirm_password": "ใส่รหัสผ่านใหม่เพื่อยืนยัน", + "complete": "เสร็จสิ้น", + "noti_setting": "ตั้งค่าการแจ้งเตือน", + "news2": "ข่าวสาร", + "promotion": "โปรโมชั่น", + "parcel_list": "รายการพัสดุ", + "payment_due": "ถึงเวลาชำระยอดค่าใช้จ่าย", + "write_suggest": "เขียนข้อเสนอแนะ", + "photo": "รูปภาพ", + "logout_confirm": "คุณต้องการออกจากระบบหรือไม่ ?", + "charoensin_asset": "เจริญสิน แอสเสท", + "for_csa_customer": "สำหรับลูกค้าของบริษัท เจริญสิน แอสเสท จำกัด", + "create_account": "สมัครสมาชิกที่นี่", + "or": "หรือ", + "login": "เข้าสู่ระบบ", + "login_facebook": "เข้าสู่ระบบด้วย Facebook", + "term_condition": "ข้อตกลงและเงื่อนไข", + "not_agree": "ไมยอมรับ", + "agree": "ยอมรับ", + "register": "สมัครสมาชิก", + "next": "ถัดไป", + "not_a_member": "คุณยังไม่ได้เป็นสมาชิกใช่ไหม ?", + "gender": "เพศ ", + "male": "ชาย", + "female": "หญิง", + "citizen_id_13": "เลขบัตรประชาชน 13 หลัก", + "water_bill": "ค่าน้ำ", + "password": "รหัสผ่าน", + "confirm_password_only": "ยืนยันรหัสผ่าน", + "outstanding_balance": "ยอดค้างชำระ", + "rating": "ประเมินให้คะแนน", + "name": "ชื่อ", + "category": "ประเภท", + "individual2": "บุคคลทั่วไป", + "zone": "โซน", + "accommodation": "ที่พัก", + "connect_facebook": "เชื่อมต่อกับ Facebook", + "choose_project": "เลือกโครงการ", + "room_for_rent": "ห้องพักให้เช่า", + "scan_to_pay": "สแกนเพื่อจ่ายเงิน", + "account_name": "ชื่อบัญชี", + "account": "บัญชี", + "ref_no": "เลขที่อ้างอิง", + "total_payment": "ยอดชำระทั้งหมด", + "support_all_bank": "จ่ายได้ทุกธนาคาร", + "save": "บันทึก", + "coporate": "ข้อมูลนิติบุคคล", + "new_room": "ห้องใหม่", + "please_pay_before": "โปรดชำระก่อนวันที่", + "to_view_outstanding_balance": "เพื่อดูยอดค้างชำระ", + "no_mail_parcel": "ไม่มีจดหมายหรือพัสดุ", + "no_notification": "ไม่มีการแจ้งเตือน", + "no_product": "ไมีมีสินค้า", + "smart_meter": "Smart Meter", + "no_water_electric_bill": "ไม่มีบันทึกค่ามิเตอร์หรือค่าไฟ", + "receive_code": "รับรหัสยืนยัน", + "pay": "ชำระเงิน", + "please_sign": "กรุณาเขียนลายเซ็นของคุณ", + "redeem_reward": "แลกสินค้า", + "service_detail": "รายละเอียดบริการ", + "confirmation_code": "รหัสยืนยัน", + "consignee": "ผู้รับ", + "waiting_for_pickup": "รอรับของ", + "contact_front_desk": "ติดต่อเคาว์เตอร์", + "awaiting_payment": "รอจ่ายที่เคาน์เตอร์", + "paid": "จ่ายเรียบร้อย", + "latest_promotion": "โปรโมชั่นใหม่", + "disconnect_facebook": "ยกเลิกการเชื่อมต่อ Facebook", + "register_success": "สมัครสมาชิกสำเร็จ" +} diff --git a/src/utils/Config.js b/src/utils/Config.js new file mode 100644 index 0000000..cc9ec15 --- /dev/null +++ b/src/utils/Config.js @@ -0,0 +1,3 @@ +import Config from '../../config' + +export default Config \ No newline at end of file diff --git a/src/utils/NavigationService.js b/src/utils/NavigationService.js new file mode 100644 index 0000000..33fec63 --- /dev/null +++ b/src/utils/NavigationService.js @@ -0,0 +1,54 @@ +import { NavigationActions, StackActions } from 'react-navigation' + +let _navigator + +function setTopLevelNavigator(navigatorRef) { + _navigator = navigatorRef +} + +function navigate(routeName, params) { + _navigator.dispatch( + NavigationActions.navigate({ + routeName, + params, + }) + ) +} + +function resetWithRoute(routeName, params) { + _navigator.dispatch( + StackActions.reset({ + index: 1, + actions: [ + NavigationActions.navigate({routeName: 'BottomTab'}), + NavigationActions.navigate({routeName, params}) + ] + }) + ) +} + +function goBack() { + _navigator.dispatch(NavigationActions.back()) +} + + +function getCurrentScreenName() { + return _getCurrentScreen().routeName +} + +function _getCurrentScreen(nav) { + if (nav === undefined) + nav = _navigator.state.nav + if (nav.routes) { + return _getCurrentScreen(nav.routes[nav.index]) + } + return nav +} + +export default { + navigate, + setTopLevelNavigator, + resetWithRoute, + goBack, + getCurrentScreenName, +} \ No newline at end of file diff --git a/src/utils/animations.js b/src/utils/animations.js new file mode 100644 index 0000000..a2ffee8 --- /dev/null +++ b/src/utils/animations.js @@ -0,0 +1,180 @@ +import { getInputRangeFromIndexes } from 'react-native-snap-carousel'; + +// Photo album effect +function scrollInterpolator1 (index, carouselProps) { + const range = [3, 2, 1, 0, -1]; + const inputRange = getInputRangeFromIndexes(range, index, carouselProps); + const outputRange = range; + + return { inputRange, outputRange }; +} +function animatedStyles1 (index, animatedValue, carouselProps) { + const sizeRef = carouselProps.vertical ? carouselProps.itemHeight : carouselProps.itemWidth; + const translateProp = carouselProps.vertical ? 'translateY' : 'translateX'; + + return { + zIndex: carouselProps.data.length - index, + opacity: animatedValue.interpolate({ + inputRange: [2, 3], + outputRange: [1, 0], + extrapolate: 'clamp' + }), + transform: [{ + rotate: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2, 3], + outputRange: ['-25deg', '0deg', '-3deg', '1.8deg', '0deg'], + extrapolate: 'clamp' + }) + }, { + [translateProp]: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2, 3], + outputRange: [ + -sizeRef * 0.5, + 0, + -sizeRef, // centered + -sizeRef * 2, // centered + -sizeRef * 3 // centered + ], + extrapolate: 'clamp' + }) + }] + }; +} + +// Perspective effect +function scrollInterpolator2 (index, carouselProps) { + const range = [2, 1, 0, -1]; + const inputRange = getInputRangeFromIndexes(range, index, carouselProps); + const outputRange = range; + + return { inputRange, outputRange }; +} +function animatedStyles2 (index, animatedValue, carouselProps) { + const sizeRef = carouselProps.vertical ? carouselProps.itemHeight : carouselProps.itemWidth; + const translateProp = carouselProps.vertical ? 'translateY' : 'translateX'; + + return { + zIndex: carouselProps.data.length - index, + opacity: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: [0.75, 1, 0.6, 0.4] + }), + transform: [{ + rotate: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: ['0deg', '0deg', '5deg', '8deg'], + extrapolate: 'clamp' + }) + }, { + scale: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: [0.96, 1, 0.85, 0.7] + }) + }, { + [translateProp]: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: [ + 0, + 0, + -sizeRef + 30, + -sizeRef * 2 + 45 + ], + extrapolate: 'clamp' + }) + }] + }; +} + +// Left/right translate effect +function scrollInterpolator3 (index, carouselProps) { + const range = [2, 1, 0, -1]; + const inputRange = getInputRangeFromIndexes(range, index, carouselProps); + const outputRange = range; + + return { inputRange, outputRange }; +} +function animatedStyles3 (index, animatedValue, carouselProps) { + const sizeRef = carouselProps.vertical ? carouselProps.itemHeight : carouselProps.itemWidth; + const translateProp = carouselProps.vertical ? 'translateY' : 'translateX'; + + return { + zIndex: carouselProps.data.length - index, + opacity: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: [1, 1, 0.75, 0.5], + extrapolate: 'clamp' + }), + transform: [{ + [translateProp]: animatedValue.interpolate({ + inputRange: [-1, 0, 1, 2], + outputRange: [ + 0, + 0, + -sizeRef * 2, + -sizeRef + ], + extrapolate: 'clamp' + }) + }] + }; +} + +// From https://codeburst.io/horizontal-scroll-animations-in-react-native-18dac6e9c720 +function scrollInterpolator4 (index, carouselProps) { + const range = [1, 0, -1]; + const inputRange = getInputRangeFromIndexes(range, index, carouselProps); + const outputRange = range; + + return { inputRange, outputRange }; +} +function animatedStyles4 (index, animatedValue, carouselProps) { + return { + zIndex: carouselProps.data.length - index, + opacity: animatedValue.interpolate({ + inputRange: [-1, 0, 1], + outputRange: [0.75, 1, 0.75], + extrapolate: 'clamp' + }), + transform: [ + { + perspective: 1000 + }, + { + scale: animatedValue.interpolate({ + inputRange: [-1, 0, 1], + outputRange: [0.65, 1, 0.65], + extrapolate: 'clamp' + }) + }, + { + rotateX: animatedValue.interpolate({ + inputRange: [-1, 0, 1], + outputRange: ['30deg', '0deg', '30deg'], + extrapolate: 'clamp' + }) + }, + { + rotateY: animatedValue.interpolate({ + inputRange: [-1, 0, 1], + outputRange: ['-30deg', '0deg', '30deg'], + extrapolate: 'clamp' + }) + } + ] + }; +} + +// Exports +export const scrollInterpolators = { + scrollInterpolator1, + scrollInterpolator2, + scrollInterpolator3, + scrollInterpolator4 +}; + +export const animatedStyles = { + animatedStyles1, + animatedStyles2, + animatedStyles3, + animatedStyles4 +}; \ No newline at end of file diff --git a/src/utils/i18n.js b/src/utils/i18n.js new file mode 100644 index 0000000..9b86596 --- /dev/null +++ b/src/utils/i18n.js @@ -0,0 +1,38 @@ +import I18n from 'i18n-js' +import moment from 'moment' + +import 'moment/locale/th' +import 'moment/locale/my' +import 'moment/locale/km' + +import ReactNative from 'react-native' +// Import all locales +import en from 'src/translations/en.json' +import th from 'src/translations/th.json' +import my from 'src/translations/my.json' +import km from 'src/translations/km.json' + +I18n.defaultLocale = 'en' +I18n.fallbacks = true +I18n.translations = { th, en, my, km } +const currentLocale = I18n.currentLocale() +// // Is it a RTL language? +export const isRTL = currentLocale.indexOf('th') === 0 || currentLocale.indexOf('en-US') === 0 +// Allow RTL alignment in RTL languages +ReactNative.I18nManager.allowRTL(isRTL) + +// The method we'll use instead of a regular string +export function t (name, params = {}) { + return I18n.t(name, params) +} + +export function locale () { + return I18n.currentLocale() +} + +export const switchLanguage = (lang, component = null) => { + I18n.locale = lang + moment.locale(lang) + if (component) + component.forceUpdate() +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..23d25be --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7480 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.6.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" + integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" + integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== + dependencies: + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.9.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + +"@babel/plugin-external-helpers@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.8.3.tgz#5a94164d9af393b2820a3cdc407e28ebf237de4b" + integrity sha512-mx0WXDDiIl5DwzMtzWGRSPugXi9BxROS05GQrhLNbEamhBiicgn994ibwkyiBH+6png7bm/yA7AUsvHyCXi4Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz#4cb7c2fdeaed490b60d9bfd3dc8a20f81f9c2e7c" + integrity sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.8.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz#f1e55ce850091442af4ba9c2550106035b29d678" + integrity sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0", "@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-object-assign@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz#dc3b8dd50ef03837868a37b7df791f64f288538e" + integrity sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" + integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.0.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz#2248971416a506fc78278fc0c0ea3179224af1e9" + integrity sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.9.6" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/register@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b" + integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.8.4": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.3": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@react-native-community/cameraroll@^1.2.1": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cameraroll/-/cameraroll-1.6.2.tgz#a4dedcf8ba7bc938f805dd07dd43a275edb1f411" + integrity sha512-5R/2Tpi7APoNBDmRV23OcRIN9YiaRMJAHrXkGDpj7jVo2yQpJCCrARnZ9qhJ9dYEMybdP/XhXI1vVjuad5xqNQ== + +"@react-native-community/cli-debugger-ui@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416" + integrity sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-platform-android@^3.0.0": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-3.1.4.tgz#61f964dc311623e60b0fb29c5f3732cc8a6f076f" + integrity sha512-ClSdY20F0gzWVLTqCv7vHjnUqOcuq10jd9GgHX6lGSc2GI+Ql3/aQg3tmG4uY3KXNNwAv3U8QCoYgg1WGfwiHA== + dependencies: + "@react-native-community/cli-tools" "^3.0.0" + chalk "^2.4.2" + execa "^1.0.0" + jetifier "^1.6.2" + logkitty "^0.6.0" + slash "^3.0.0" + xmldoc "^1.1.2" + +"@react-native-community/cli-platform-ios@^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.2.0.tgz#c469444f5993c9e6737a4b16d78cf033e3702f00" + integrity sha512-pzEnx68H6+mHBq5jsMrr3UmAmkrLSMlC9BZ4yoUdfUXCQq6/R70zNYvH4hjUw8h2Al7Kgq53UzHUsM0ph8TSWQ== + dependencies: + "@react-native-community/cli-tools" "^3.0.0" + chalk "^2.4.2" + js-yaml "^3.13.1" + xcode "^2.0.0" + +"@react-native-community/cli-tools@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-3.0.0.tgz#fe48b80822ed7e49b8af051f9fe41e22a2a710b1" + integrity sha512-8IhQKZdf3E4CR8T7HhkPGgorot/cLkRDgneJFDSWk/wCYZAuUh4NEAdumQV7N0jLSMWX7xxiWUPi94lOBxVY9g== + dependencies: + chalk "^2.4.2" + lodash "^4.17.5" + mime "^2.4.1" + node-fetch "^2.5.0" + +"@react-native-community/cli-types@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-3.0.0.tgz#488d46605cb05e88537e030f38da236eeda74652" + integrity sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg== + +"@react-native-community/cli@^3.0.0": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.2.1.tgz#2a466801eb6080a1f73358c5d740c53c24ed8c6f" + integrity sha512-bZ/bfZ+9r1gQSxp6t7+00DcpC6vmbVYSvzUCFM/yo5k8bhsDdcy8aocscIaXXVGG+v9Edri/Q7hH9ks7L18/Rg== + dependencies: + "@hapi/joi" "^15.0.3" + "@react-native-community/cli-debugger-ui" "^3.0.0" + "@react-native-community/cli-tools" "^3.0.0" + "@react-native-community/cli-types" "^3.0.0" + chalk "^2.4.2" + command-exists "^1.2.8" + commander "^2.19.0" + compression "^1.7.1" + connect "^3.6.5" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + didyoumean "^1.2.1" + envinfo "^7.1.0" + errorhandler "^1.5.0" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^7.0.1" + glob "^7.1.1" + graceful-fs "^4.1.3" + inquirer "^3.0.6" + lodash "^4.17.5" + metro "^0.56.0" + metro-config "^0.56.0" + metro-core "^0.56.0" + metro-react-native-babel-transformer "^0.56.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + morgan "^1.9.0" + node-notifier "^5.2.1" + open "^6.2.0" + ora "^3.4.0" + plist "^3.0.0" + pretty-format "^25.1.0" + semver "^6.3.0" + serve-static "^1.13.1" + shell-quote "1.6.1" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + ws "^1.1.0" + +"@react-native-community/eslint-config@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@react-native-community/eslint-config/-/eslint-config-0.0.5.tgz#584f6493258202a57efc22e7be66966e43832795" + integrity sha512-jwO2tnKaTPTLX5XYXMHGEnFdf543SU7jz98/OF5mDH3b7lP+BOaCD+jVfqqHoDRkcqyPlYiR1CgwVGWpi0vMWg== + dependencies: + "@typescript-eslint/eslint-plugin" "^1.5.0" + "@typescript-eslint/parser" "^1.5.0" + babel-eslint "10.0.1" + eslint-plugin-eslint-comments "^3.1.1" + eslint-plugin-flowtype "2.50.3" + eslint-plugin-jest "22.4.1" + eslint-plugin-prettier "2.6.2" + eslint-plugin-react "7.12.4" + eslint-plugin-react-hooks "^1.5.1" + eslint-plugin-react-native "3.6.0" + prettier "1.16.4" + +"@react-navigation/core@~3.5.1": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.2.tgz#3a3d147b8419e5839e0f2ad4dea086bd2d307fe3" + integrity sha512-HgKXci1h74aETgm5CXMBoIWG8R7VZG1eUUHYb3BdxwekdiZjW1P/srjiXzsCqFGlsESnVIOIkzT4DqI9J752Bw== + dependencies: + hoist-non-react-statics "^3.3.0" + path-to-regexp "^1.7.0" + query-string "^6.4.2" + react-is "^16.8.6" + +"@react-navigation/native@~3.6.2": + version "3.6.5" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.6.5.tgz#97b0b9a48f059a0704e3527f40fb034720ef363d" + integrity sha512-ttEmnokFVf09CvrkzlPIdfA693KfYcRxTYf9OZwp0Ll6El27UYjJD4arwGc+zvlohjTErCdba6CAKV702Wv28w== + dependencies: + hoist-non-react-statics "^3.3.2" + react-native-safe-area-view "^0.14.8" + +"@types/babel__core@^7.1.0": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/hammerjs@^2.0.36": + version "2.0.36" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" + integrity sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" + integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/react-native-vector-icons@^6.4.4": + version "6.4.5" + resolved "https://registry.yarnpkg.com/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.5.tgz#74cbfc564bd8435e43ad6728572a0e5b49c335d1" + integrity sha512-JBpcjWQE4n0GlE0p6HpDDclT+uXpFC453T5k4h+B38q0utlGJhvgNr8899BoJGc1xOktA2cgqFKmFMJd0h7YaA== + dependencies: + "@types/react" "*" + "@types/react-native" "*" + +"@types/react-native@*": + version "0.62.10" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.62.10.tgz#82c481df21db4e7460755dc3fc7091e333a1d2bd" + integrity sha512-QR4PGrzZ3IvRIHlScyIPuv2GV8tD/BMICZz514KGvn3KHbh0mLphHHemtHZC1o8u4xM5LxwVpMpMYHQ+ncSfag== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.35" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" + integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" + integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^1.5.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" + integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g== + dependencies: + "@typescript-eslint/experimental-utils" "1.13.0" + eslint-utils "^1.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^2.0.1" + tsutils "^3.7.0" + +"@typescript-eslint/experimental-utils@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" + integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "1.13.0" + eslint-scope "^4.0.0" + +"@typescript-eslint/parser@^1.5.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" + integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "1.13.0" + "@typescript-eslint/typescript-estree" "1.13.0" + eslint-visitor-keys "^1.0.0" + +"@typescript-eslint/typescript-estree@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" + integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== + dependencies: + lodash.unescape "4.0.1" + semver "5.5.0" + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= + +accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +apisauce@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.1.tgz#8e1da3005d6b86c5e4b8309901e2aa1a3a124b1d" + integrity sha512-xAXMRFyv+6yjhgDIEMozAhioE2qLdxMJxIDbjwT2obttZso27WUOpVGKYK0SD2T+IjlcpNQAklYj0IG0U7YKXQ== + dependencies: + axios "^0.19.0" + ramda "^0.25.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-includes@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +art@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/art/-/art-0.10.3.tgz#b01d84a968ccce6208df55a733838c96caeeaea2" + integrity sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ== + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-eslint@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-fbjs@^3.1.2, babel-preset-fbjs@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" + integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big-integer@^1.6.44: + version "1.6.48" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blueimp-md5@^2.5.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.16.0.tgz#9018bb805e4ee05512e0e8cbdb9305eeecbdc87c" + integrity sha512-j4nzWIqEFpLSbdhUApHRGDwfXbV8ALhqOn+FY5L6XBdKPAXU9BpGgFSbDsgqogfqPPR9R2WooseWCsfhfEC6uQ== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bplist-creator@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" + integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA== + dependencies: + stream-buffers "~2.2.0" + +bplist-parser@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer@^4.5.1: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +can-promise@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/can-promise/-/can-promise-0.0.1.tgz#7a7597ad801fb14c8b22341dfec314b6bd6ad8d3" + integrity sha512-gzVrHyyrvgt0YpDm7pn04MQt8gjh0ZAhN4ZDyCRtGl6YnuuK6b4aiUTD7G52r9l4YNmxfTtEscb92vxtAlL6XQ== + dependencies: + window-or-global "^1.0.1" + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.1.tgz#509afb67066e7499f7eb3535c77445772ae2d019" + integrity sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk= + dependencies: + ansi-styles "^2.1.0" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +clamp@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634" + integrity sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ= + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" + integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.0, color@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorette@^1.0.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63" + integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.2.2, core-js@^2.4.1: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-react-class@*, create-react-class@^15.6.0, create-react-class@^15.6.3: + version "15.6.3" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" + integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-js@^3.1.9-1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== + +css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@^1.0.0-alpha.37: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.2.0: + version "2.6.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" + integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +dayjs@^1.8.15: + version "1.8.27" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.27.tgz#a8ae63ee990af28c05c430f0e160ae835a0fbbf8" + integrity sha512-Jpa2acjWIeOkg8KURUHICk0EqnEFSSF5eMEscsOgyJ92ZukXwmpmRkPSUka7KHSfbj5eKH30ieosYip+ky9emQ== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^3.1.0, deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-listview@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/deprecated-react-native-listview/-/deprecated-react-native-listview-0.0.5.tgz#fc8a6dc45b0a8ba611e6014e13b38d6d763e763f" + integrity sha512-Cy7nDdd+KU+nR3tY1BSMuoZpsYC6OVSZyAiUSTDBop2lIgzCseDx7XI57x6h+NXer/8aor2yiQDQfeFcmBMwgQ== + dependencies: + create-react-class "*" + fbjs "*" + invariant "*" + react-clone-referenced-element "*" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +didyoumean@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" + integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +dijkstrajs@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" + integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@0, dom-serializer@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" + integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== + dependencies: + domelementtype "^2.0.1" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" + integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== + dependencies: + dom-serializer "^0.2.1" + domelementtype "^2.0.1" + domhandler "^3.0.0" + +dooboolab-welcome@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dooboolab-welcome/-/dooboolab-welcome-1.2.0.tgz#295818ce85a8e97dc90c0ec0510b4008e2d722dc" + integrity sha512-XgEbjJHAsKLge/e8jtuHsv84Ovg1Gx0GvnOTOmOlVGV1643nduTAkT3fyo/mxKbzvyXBr47RHaJAY4R2toI0UA== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" + integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + +envinfo@^7.1.0: + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +errorhandler@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^6.0.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-eslint-comments@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz#4ef6c488dbe06aa1627fea107b3e5d059fc8a395" + integrity sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ== + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-flowtype@2.50.3: + version "2.50.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" + integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== + dependencies: + lodash "^4.17.10" + +eslint-plugin-jest@22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz#a5fd6f7a2a41388d16f527073b778013c5189a9c" + integrity sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg== + +eslint-plugin-prettier@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad" + integrity sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og== + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + +eslint-plugin-react-hooks@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react-native-globals@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" + integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== + +eslint-plugin-react-native@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-3.6.0.tgz#7cad3b7c6159df6d26fe3252c6c5417a17f27b4b" + integrity sha512-BEQcHZ06hZSBYWFVuNEq0xuui5VEsWpHDsZGBtfadHfCRqRMUrkYPgdDb3bpc60qShHE83kqIv59uKdinEg91Q== + dependencies: + eslint-plugin-react-native-globals "^0.1.1" + +eslint-plugin-react@7.12.4: + version "7.12.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" + integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + object.fromentries "^2.0.0" + prop-types "^15.6.2" + resolve "^1.9.0" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1, eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.3.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +events@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-diff@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbemitter@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865" + integrity sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU= + dependencies: + fbjs "^0.8.4" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs-scripts@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz#069a0c0634242d10031c6460ef1fccefcdae8b27" + integrity sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ== + dependencies: + "@babel/core" "^7.0.0" + ansi-colors "^1.0.1" + babel-preset-fbjs "^3.2.0" + core-js "^2.4.1" + cross-spawn "^5.1.0" + fancy-log "^1.3.2" + object-assign "^4.0.1" + plugin-error "^0.1.2" + semver "^5.1.0" + through2 "^2.0.0" + +fbjs@*, fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fbjs@^0.8.4, fbjs@^0.8.9: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" + integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hermes-engine@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.2.1.tgz#25c0f1ff852512a92cb5c5cc47cf967e1e722ea2" + integrity sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ== + +hoist-non-react-statics@^1.0.5: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= + +hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +htmlparser2@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +i18n-js@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.5.1.tgz#9787450894059bec1af791123231e59898eb97c1" + integrity sha512-nJgbE5Vj9qzOQfjdVd/uoMoO8ppVaB/3LB6KOmMfD8IQ1vNNh307iHyQLK8ZnLYWkAszfPvVpYmUt1Le/RuHMQ== + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.0.5: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +intl@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde" + integrity sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94= + +invariant@*, invariant@2.2.4, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.7.1, jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-react-native@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-react-native/-/jest-react-native-18.0.0.tgz#77dd909f069324599f227c58c61c2e62168726ba" + integrity sha1-d92QnwaTJFmfInxYxhwuYhaHJro= + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.4.0, jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.7.0, jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +jetifier@^1.6.2: + version "1.6.5" + resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.5.tgz#ea87324a4230bef20a9651178ecab978ee54a8cb" + integrity sha512-T7yzBSu9PR+DqjYt+I0KVO1XTb1QhAfHnXV5Nd3xpbXM6Xg4e3vP60Q4qkNU8Fh6PHC2PivPUNN3rY7G2MxcDQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsc-android@^245459.0.0: + version "245459.0.0" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9" + integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg== + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.0.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +linkify-it@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + dependencies: + uc.micro "^1.0.1" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +logkitty@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.6.1.tgz#fe29209669d261539cbd6bb998a136fc92a1a05c" + integrity sha512-cHuXN8qUZuzX/7kB6VyS7kB4xyD24e8gyHXIFNhIv+fjW3P+jEXNUhj0o/7qWJtv7UZpbnPgUqzu/AZQ8RAqxQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^12.0.5" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-register@^0.56.0, metro-babel-register@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.56.4.tgz#b0c627a1cfdd1bdd768f81af79481754e833a902" + integrity sha512-Phm6hMluOWYqfykftjJ1jsTpWvbgb49AC/1taxEctxUdRCZlFgZwBleJZAhQYxJD5J+ikFkEbHDzePEXb29KVA== + dependencies: + "@babel/core" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/register" "^7.0.0" + core-js "^2.2.2" + escape-string-regexp "^1.0.5" + +metro-babel-transformer@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.56.4.tgz#fe1d0dc600fcf90201a5bea4d42caea10b801057" + integrity sha512-IOi4ILgZvaX7GCGHBJp79paNVOq5QxhhbyqAdEJgDP8bHfl/OVHoVKSypfrsMSKSiBrqxhIjyc4XjkXsQtkx5g== + dependencies: + "@babel/core" "^7.0.0" + metro-source-map "^0.56.4" + +metro-cache@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.56.4.tgz#542f9f8a35f8fb9d5576f46fd3ab4d4f42851a7e" + integrity sha512-d1hiUSKwtRsuMxUhHVJ3tjK2BbpUlJGvTyMWohK8Wxx+0GbnWRWWFcI4vlCzlZfoK0VtZK2MJEl5t7Du1mIniQ== + dependencies: + jest-serializer "^24.4.0" + metro-core "^0.56.4" + mkdirp "^0.5.1" + rimraf "^2.5.4" + +metro-config@^0.56.0, metro-config@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.56.4.tgz#338fd8165fba59424cec427c1a881757945e57e9" + integrity sha512-O85QDHwWdMn/8ERe13y4a6vbZL0AHyO8atTvL+9BCulLEO+FQBi1iJjr3+ViLa8cf0m5dRftDsa7P47m5euk4A== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^24.7.0" + metro "^0.56.4" + metro-cache "^0.56.4" + metro-core "^0.56.4" + pretty-format "^24.7.0" + +metro-core@^0.56.0, metro-core@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.56.4.tgz#67cc41b3c0bf66e9c2306f50239a1080b1e82312" + integrity sha512-hMzkBdgPt5Zm9nr/1KtIT+A6H7TNiLVCEGG5OiAXj8gTRsA2yy7wAdQpwy0xbE+zi88t/pLOzXpd3ClG/YxyWg== + dependencies: + jest-haste-map "^24.7.1" + lodash.throttle "^4.1.1" + metro-resolver "^0.56.4" + wordwrap "^1.0.0" + +metro-inspector-proxy@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.56.4.tgz#7343ff3c5908af4fd99e96b6d646e24e99816be4" + integrity sha512-E1S3MO25mWKmcLn1UQuCDiS0hf9P2Fwq8sEAX5lBLoZbehepNH+4xJ3xXSY51JX4dozBrE8GGoKL4ll3II40LA== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + rxjs "^5.4.3" + ws "^1.1.5" + yargs "^9.0.0" + +metro-minify-uglify@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.56.4.tgz#13589dfb1d43343608aacb7f78ddfcc052daa63c" + integrity sha512-BHgj7+BKEK2pHvWHUR730bIrsZwl8DPtr49x9L0j2grPZ5/UROWXzEr8VZgIss7fl64t845uu1HXNNyuSj2EhA== + dependencies: + uglify-es "^3.1.9" + +metro-react-native-babel-preset@^0.56.0, metro-react-native-babel-preset@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8" + integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-assign" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@^0.56.0: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.4.tgz#3c6e48b605c305362ee624e45ff338656e35fc1d" + integrity sha512-ng74eutuy1nyGI9+TDzzVAVfEmNPDlapV4msTQMKPi4EFqo/fBn7Ct33ME9l5E51pQBBnxt/UwcpTvd13b29kQ== + dependencies: + "@babel/core" "^7.0.0" + babel-preset-fbjs "^3.1.2" + metro-babel-transformer "^0.56.4" + metro-react-native-babel-preset "^0.56.4" + metro-source-map "^0.56.4" + +metro-resolver@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.56.4.tgz#9876f57bca37fd1bfcffd733541e2ee4a89fad7f" + integrity sha512-Ug4ulVfpkKZ1Wu7mdYj9XLGuOqZTuWCqEhyx3siKTc/2eBwKZQXmiNo5d/IxWNvmwL/87Abeb724I6CMzMfjiQ== + dependencies: + absolute-path "^0.0.0" + +metro-source-map@^0.56.0, metro-source-map@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.56.4.tgz#868ccac3f3519fe14eca358bc186f63651b2b9bc" + integrity sha512-f1P9/rpFmG3Z0Jatiw2zvLItx1TwR7mXTSDj4qLDCWeVMB3kEXAr3R0ucumTW8c6HfpJljeRBWzYFXF33fd81g== + dependencies: + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "^0.56.4" + ob1 "^0.56.4" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.56.4.tgz#53e9d40beac9049fa75a3e620ddd47d4907ff015" + integrity sha512-8mCNNn6zV5FFKCIcRgI7736Xl+owgvYuy8qanPxZN36f7utiWRYeB+PirEBPcglBk4qQvoy2lT6oPULNXZQbbQ== + dependencies: + invariant "^2.2.4" + metro-source-map "^0.56.4" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro@^0.56.0, metro@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.56.4.tgz#be7e1380ee6ac3552c25ead8098eab261029e4d7" + integrity sha512-Kt3OQJQtQdts0JrKnyGdLpKHDjqYBgIfzvYrvfhmFCkKuZ8aqRlVnvpfjQ4/OBm0Fmm9NyyxbNRD9VIbj7WjnA== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/plugin-external-helpers" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + absolute-path "^0.0.0" + async "^2.4.0" + babel-preset-fbjs "^3.1.2" + buffer-crc32 "^0.2.13" + chalk "^2.4.1" + concat-stream "^1.6.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + eventemitter3 "^3.0.0" + fbjs "^1.0.0" + fs-extra "^1.0.0" + graceful-fs "^4.1.3" + image-size "^0.6.0" + invariant "^2.2.4" + jest-haste-map "^24.7.1" + jest-worker "^24.6.0" + json-stable-stringify "^1.0.1" + lodash.throttle "^4.1.1" + merge-stream "^1.0.1" + metro-babel-register "^0.56.4" + metro-babel-transformer "^0.56.4" + metro-cache "^0.56.4" + metro-config "^0.56.4" + metro-core "^0.56.4" + metro-inspector-proxy "^0.56.4" + metro-minify-uglify "^0.56.4" + metro-react-native-babel-preset "^0.56.4" + metro-resolver "^0.56.4" + metro-source-map "^0.56.4" + metro-symbolicate "^0.56.4" + mime-types "2.1.11" + mkdirp "^0.5.1" + node-fetch "^2.2.0" + nullthrows "^1.1.0" + resolve "^1.5.0" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + temp "0.8.3" + throat "^4.1.0" + wordwrap "^1.0.0" + write-file-atomic "^1.2.0" + ws "^1.1.5" + xpipe "^1.0.5" + yargs "^9.0.0" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-db@~1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" + integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= + +mime-types@2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" + integrity sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw= + dependencies: + mime-db "~1.23.0" + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" + integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +moment@^2.24.0: + version "2.25.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0" + integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg== + +morgan@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-base-shoutem-theme@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/native-base-shoutem-theme/-/native-base-shoutem-theme-0.3.1.tgz#f15cbd4ca74ca1c8b6a636d297b9164a5f2b3662" + integrity sha512-uwEGhg6gwDuJTHuhNXRKbHtNjni1UI9qfAsVchIqfK7mQAHSNPVU1QRs9Hw6O2K/qLZaP/aJmNoZGc2h2EGSwA== + dependencies: + hoist-non-react-statics "^1.0.5" + lodash "^4.17.14" + prop-types "^15.5.10" + +native-base@^2.13.8: + version "2.13.12" + resolved "https://registry.yarnpkg.com/native-base/-/native-base-2.13.12.tgz#06020b46019964ddaef3a646ec07e72008018efc" + integrity sha512-LdKGNXisbmQ0vDHG86McZKIFTlRyo+OQdJpqmQ05Yf7CGlMbBykJZCFe9rdiee5pLq20xiChe/jXbzFdWcysrg== + dependencies: + blueimp-md5 "^2.5.0" + clamp "^1.0.1" + color "~3.1.2" + create-react-class "^15.6.3" + eslint-config-prettier "^6.0.0" + fs-extra "^2.0.0" + jest-react-native "^18.0.0" + lodash "^4.17.14" + native-base-shoutem-theme "0.3.1" + opencollective-postinstall "^2.0.2" + print-message "^2.1.0" + prop-types "^15.5.10" + react-native-drawer "2.5.1" + react-native-easy-grid "0.2.2" + react-native-keyboard-aware-scroll-view "0.9.1" + react-native-vector-icons "^6.6.0" + react-timer-mixin "^0.13.4" + react-tween-state "^0.1.5" + tween-functions "^1.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.2.0, node-fetch@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.2.1, node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nullthrows@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +ob1@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.56.4.tgz#c4acb3baa42f4993a44b35b2da7c8ef443dcccec" + integrity sha512-URgFof9z2wotiYFsqlydXtQfGV81gvBI2ODy64xfd3vPo+AYom5PVDX4t4zn23t/O+S2IxqApSQM8uJAybmz7w== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.fromentries@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +opencollective-postinstall@^2.0.0, opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.0, pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +plist@^3.0.0, plist@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" + integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== + dependencies: + base64-js "^1.2.3" + xmlbuilder "^9.0.7" + xmldom "0.1.x" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@1.16.4: + version "1.16.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" + integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== + +pretty-format@^24.7.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.1.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +print-message@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/print-message/-/print-message-2.1.0.tgz#b5588ed08b0e1bf77ac7bcb5cb78004afaf9a891" + integrity sha1-tViO0IsOG/d6x7y1y3gASvr5qJE= + dependencies: + chalk "1.1.1" + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qr.js@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" + integrity sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8= + +qrcode@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.2.0.tgz#330d24313fbf8d429a806091af9525250239e44a" + integrity sha512-wZK0Z0eYmOUDP2tOGzmLdeBn5Npa+4wms9GdvzH7HrywvGUq/Stz0BKUhW4DfmBf1PSrm9dNfdnVDq683Zxvag== + dependencies: + can-promise "^0.0.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^8.0.2" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^6.4.2: + version "6.12.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.12.1.tgz#2ae4d272db4fba267141665374e49a1de09e8a7c" + integrity sha512-OHj+zzfRMyj3rmo/6G8a5Ifvw3AleL/EbcHMD27YA31Q+cO5lfmQxECkImuNVjcskLcvBRVHNAB3w6udMs1eAA== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +raf@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-addons-shallow-compare@15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz#198a00b91fc37623db64a28fd17b596ba362702f" + integrity sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8= + dependencies: + fbjs "^0.8.4" + object-assign "^4.1.0" + +react-clone-referenced-element@*: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.1.0.tgz#9cdda7f2aeb54fea791f3ab8c6ab96c7a77d0158" + integrity sha512-FKOsfKbBkPxYE8576EM6uAfHC4rnMpLyH6/TJUL4WcHUEB3EUn8AxPjnnV/IiwSSzsClvHYK+sDELKN/EJ0WYg== + +react-devtools-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814" + integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ== + dependencies: + shell-quote "^1.6.1" + ws "^3.3.1" + +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-native-action-sheet@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-native-action-sheet/-/react-native-action-sheet-2.2.0.tgz#309a87f53bf4e7b17fdd9d24b10b8dcbaebb7230" + integrity sha512-4lsuxH+Cn3/aUEs1VCwqvLhEFyXNqYTkT67CzgTwlifD9Ij4OPQAIs8D+HUD9zBvWc4NtT6cyG1lhArPVMQeVw== + +react-native-animatable@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/react-native-animatable/-/react-native-animatable-1.3.3.tgz#a13a4af8258e3bb14d0a9d839917e9bb9274ec8a" + integrity sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w== + dependencies: + prop-types "^15.7.2" + +react-native-appearance@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/react-native-appearance/-/react-native-appearance-0.2.4.tgz#e981f82ccc0132d095278845f3476ac985695fae" + integrity sha512-zrf77mQrFHV6zlufGOa/4/1kn5jQX2po4wnNBcZLz/nbHk9NKLDwkYJafJDAK/lR2GPUi/cahHdhSOU/+gX2gg== + dependencies: + fbemitter "^2.1.1" + invariant "^2.2.4" + use-subscription "^1.0.0" + +react-native-device-info@^5.5.7: + version "5.5.8" + resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-5.5.8.tgz#5b971db0b550b1e53eb176c5042812429cf3a16b" + integrity sha512-Y4EkBXUfdpDMP+utVaQcgWnNXoqf7B6rLCS0hwpaifzhrzC7cb51vhaPBN1p4Kqym3AfqZ6VoMjorvFJLRAjqg== + +react-native-drawer@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/react-native-drawer/-/react-native-drawer-2.5.1.tgz#08b9314184f48c724f1b467f8859797369798654" + integrity sha512-cxcQNbSWy5sbGi7anSVp6EDr6JarOBMY9lbFOeLFeVYbONiudoqRKbgEsSDgSw3/LFCLvUXK5zdjXCOedeytxQ== + dependencies: + prop-types "^15.5.8" + tween-functions "^1.0.1" + +react-native-easy-grid@0.2.2, react-native-easy-grid@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/react-native-easy-grid/-/react-native-easy-grid-0.2.2.tgz#f0be33620be1ebe2d2295918eb58b0a27e8272ab" + integrity sha512-MlYrNIldnEMKn6TVatQN1P64GoVlwGIuz+8ncdfJ0Wq/xtzUkQwlil8Uksyp7MhKfENE09MQnGNcba6Mx3oSAA== + dependencies: + lodash "^4.17.15" + +react-native-elastic-image-slider@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/react-native-elastic-image-slider/-/react-native-elastic-image-slider-1.0.0.tgz#7d4686b2ac404680a3bca6c3365aee9405e471bf" + integrity sha1-fUaGsqxARoCjvKbDNlrulAXkcb8= + +react-native-elements@^1.2.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/react-native-elements/-/react-native-elements-1.2.7.tgz#1eca2db715c41722aeb67aea62bd2a4621adb134" + integrity sha512-0S+0R1cbItl15i64qrkWnyMztwpw60d0SUsZGVDKRAMf0Jvq9Clgyh/MzxJx2sr42mbedQP1sg5Et4fZM7Fp1w== + dependencies: + "@types/react-native-vector-icons" "^6.4.4" + color "^3.1.0" + deepmerge "^3.1.0" + hoist-non-react-statics "^3.1.0" + opencollective-postinstall "^2.0.0" + prop-types "^15.7.2" + react-native-ratings "^6.3.0" + react-native-status-bar-height "^2.2.0" + +react-native-fast-image@^8.1.5: + version "8.1.5" + resolved "https://registry.yarnpkg.com/react-native-fast-image/-/react-native-fast-image-8.1.5.tgz#0a6404c988dad68c98d26f91155d0a5293ba2ea5" + integrity sha512-DoAWGLeQ2hbllummrpXH9B38OgM0TFmNYCF34F90/hdHZirqUtYHzF4QDdb/NV7ebSijHmM3mpkzct8PXtcYyg== + +react-native-fbsdk@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/react-native-fbsdk/-/react-native-fbsdk-1.1.2.tgz#4264903add869d05b84ef55ade9ff720c2957781" + integrity sha512-Sp+oja868QVsB5vpEFbwZkEcCJOSBuZgh7UGJzUhaoTCs/zwSUHA6b4QichM7GiTxtQyKfT/F31DtvLj2N/qAQ== + +react-native-firebase@^5.5.6: + version "5.6.0" + resolved "https://registry.yarnpkg.com/react-native-firebase/-/react-native-firebase-5.6.0.tgz#6f6123f53cb73477915dd55c55f3e1de91db38d2" + integrity sha512-I+o3zNLdIz4pxWTCSZH70M1BcPl+SdqKQfurOT0sWcaMSL2ecDqVy0PCTmN7ORt7/Z879Er6PLgA/psjArQlmw== + dependencies: + opencollective-postinstall "^2.0.0" + prop-types "^15.7.2" + +react-native-gesture-handler@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.6.1.tgz#678e2dce250ed66e93af409759be22cd6375dd17" + integrity sha512-gQgIKhDiYf754yzhhliagLuLupvGb6ZyBdzYzr7aus3Fyi87TLOw63ers+r4kGw0h26oAWTAdHd34JnF4NeL6Q== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^2.3.1" + invariant "^2.2.4" + prop-types "^15.7.2" + +react-native-hyperlink@^0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/react-native-hyperlink/-/react-native-hyperlink-0.0.16.tgz#3f60f6d1fb86ea883c64a2cec3e9ee2c890ae739" + integrity sha512-3W+dK0u96XTbNzmjTV0NLBCjZuF3r87Zr1FwDYeob5fjeU9grc9dss5Rind/drJFmXH5hXRyhKxX0xFs1gULFw== + dependencies: + linkify-it "^2.2.0" + mdurl "^1.0.0" + +react-native-image-crop-picker@0.25.3: + version "0.25.3" + resolved "https://registry.yarnpkg.com/react-native-image-crop-picker/-/react-native-image-crop-picker-0.25.3.tgz#46ee28b4a0a187240e388bd28a44cf8c274caec6" + integrity sha512-jQ416WXEiEQ3w057QOYU++8/mDqYb2A/AGZY/NwR5eKda/z8a4wncWKj7oF9KBAHNKE1TmPrl9Rm0GZ0Jrzp6A== + +react-native-image-slider-show@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-native-image-slider-show/-/react-native-image-slider-show-1.0.3.tgz#4df4c0ba520074f7a5513cca9a83ea48ac8868a5" + integrity sha512-9Tysqt4Q1I2OIYN1hJ+291Axy9JwsKFpr1a4uxu9uDMLGgkYsOLhbsMdgj7qVBmtLWZDQ9Kr45r+LNIRmmSvGg== + +react-native-image-slideshow@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-native-image-slideshow/-/react-native-image-slideshow-1.0.1.tgz#e0100cfeb61ade29f5a2352821069efc3acc78b4" + integrity sha512-vqFZWb3ELOF107MJ8YqMqwe+lsner9c99X3PBv6ft0GXStx8sbgon8S71JOlijEBrvlGGp1CgFSxoklWA5niQw== + dependencies: + prop-types "^15.6.2" + +react-native-image-view@^2.1.5: + version "2.1.9" + resolved "https://registry.yarnpkg.com/react-native-image-view/-/react-native-image-view-2.1.9.tgz#635306360c42ad2479f364161c47d2557f9240fd" + integrity sha512-+DA/+tLM7KHaLs41Hdd+m5UpGX2qtEdMamMZCsXCsJ5J6RwWrqBXQrGVB9Op7dIkZW2DDRVKZTP/FuSNEGtzJg== + +react-native-iphone-x-helper@^1.0.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772" + integrity sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ== + +react-native-keyboard-aware-scroll-view@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.1.tgz#9e54b565a5f19b30bed12221d48921781f7630af" + integrity sha512-tBZ8rmjELN0F6t5UBp5CW3NYmZXgVnJSzVCssv/OqG2t6kiB+OUTqxNvUP24K+HARX4H+XaW0aEJSFQkQCv6KA== + dependencies: + prop-types "^15.6.2" + react-native-iphone-x-helper "^1.0.3" + +react-native-linear-gradient@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz#96215cbc5ec7a01247a20890888aa75b834d44a0" + integrity sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg== + +react-native-modal-datetime-picker@^7.5.0: + version "7.6.1" + resolved "https://registry.yarnpkg.com/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-7.6.1.tgz#463eaece1af98aa0b2fce00dab6cd203f89b86da" + integrity sha512-Ovq0p20Tbw6uWGV0VIDcCQ5qTaHxC9gEcYmB2a4fD1ksCSwCil9RJBEhC7VirvplvAGCKOKs3bblaKFmhiOBkg== + dependencies: + prop-types "^15.7.2" + react-native-modal "^11.0.2" + +react-native-modal@^11.0.2: + version "11.5.6" + resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-11.5.6.tgz#bb25a78c35a5e24f45de060e5f64284397d38a87" + integrity sha512-APGNfbvgC4hXbJqcSADu79GLoMKIHUmgR3fDQ7rCGZNBypkStSP8imZ4PKK/OzIZZfjGU9aP49jhMgGbhY9KHA== + dependencies: + prop-types "^15.6.2" + react-native-animatable "1.3.3" + +react-native-picker-dropdown@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/react-native-picker-dropdown/-/react-native-picker-dropdown-0.1.2.tgz#26b62ff0f531a115bc83e011953c5ab78a21b2ae" + integrity sha512-kieVuaE708eK+bVYKnY95vVcBUXDBuZNxhVcXp1np9eazr/jvu/R0XgybILEjlmb51lvBvl2uZ+2jqCZL7/p/A== + +react-native-qrcode-svg@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/react-native-qrcode-svg/-/react-native-qrcode-svg-5.3.2.tgz#6d82c50f4bd264e8eecc08533b0ac2fade8178d3" + integrity sha512-qXujuIqog2PQ0jLa88emqDy8NcDBF41jRf5Rm/7DEY5wFnIiLrN3p7X+ucFDIIUqWuKB2gKdrb7HDs0eK2aryQ== + dependencies: + prop-types "^15.5.10" + qrcode "1.2.0" + +react-native-qrcode@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/react-native-qrcode/-/react-native-qrcode-0.2.7.tgz#d103166fb1a5b53643e8bf7b88c0672e689ac4f8" + integrity sha512-Xvc3T1h95zA9tbRxiMkKethDYpPwKcqDPIHe9Cxt7pM+lma9dSzd6yXGGLGeZmFU/SmHMK+4bTnDltUv1s4Jnw== + dependencies: + create-react-class "^15.6.0" + prop-types "^15.5.10" + qr.js "0.0.0" + +react-native-ratings@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/react-native-ratings/-/react-native-ratings-6.5.0.tgz#a1606ccba3c5b54eec8e6cfa4765a45cf0e4ab8d" + integrity sha512-YMcfQ7UQCmXGEc/WPlukHSHs5yvckTwjq5fTRk1FG8gaO7fZCNygEUGPuw4Dbvvp3IlsCUn0bOQd63RYsb7NDQ== + dependencies: + lodash "^4.17.4" + prop-types "^15.5.10" + +react-native-render-html@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/react-native-render-html/-/react-native-render-html-4.2.0.tgz#f355c3e564bf99292f88792ade48749b4bf2ee76" + integrity sha512-hkIy3YIdv77ttS3aNriFwNEPgEM3QJCX8efJn7fbZaV/K9lJ5CkOO+oiTe+FARLwDqqBkrf4KbTyqD4gmAfhRg== + dependencies: + buffer "^4.5.1" + events "^1.1.0" + html-entities "^1.2.0" + htmlparser2 "^4.0.0" + +react-native-safe-area-view@^0.14.8: + version "0.14.9" + resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.9.tgz#90ee8383037010d9a5055a97cf97e4c1da1f0c3d" + integrity sha512-WII/ulhpVyL/qbYb7vydq7dJAfZRBcEhg4/UWt6F6nAKpLa3gAceMOxBxI914ppwSP/TdUsandFy6lkJQE0z4A== + dependencies: + hoist-non-react-statics "^2.3.1" + +react-native-screens@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.7.0.tgz#2d3cf3c39a665e9ca1c774264fccdb90e7944047" + integrity sha512-n/23IBOkrTKCfuUd6tFeRkn3lB2QZ3cmvoubRscR0JU/Zl4/ZyKmwnFmUv1/Fr+2GH/H8UTX59kEKDYYg3dMgA== + +react-native-searchable-dropdown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-native-searchable-dropdown/-/react-native-searchable-dropdown-1.1.1.tgz#73d2cdd71b82af1299b2fe280ce4b7102797e826" + integrity sha512-A7vGyOlYGpXyMws71qwVuYwPzr7CXFDZfVFVhm44r3yxbohzpAC8PnoA644S6yUloyj9NauVNDcZTrVlcHVxcw== + +react-native-signature-canvas@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/react-native-signature-canvas/-/react-native-signature-canvas-2.4.0.tgz#383c322c4354d378e23b6385bf44e9e58a49b19e" + integrity sha512-jGCrCD9T9waRqR2a88q0pWQjMM6VEN0q/Sk1dalCRwE+Gmn8u7HpLigvfimxqhSiRysbb7EodI2/5uN0FmvAUA== + dependencies: + react-native-webview "^9.2.1" + +react-native-snap-carousel@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/react-native-snap-carousel/-/react-native-snap-carousel-3.9.0.tgz#017793ca3f5e901ccd5a3117d79bb18ec08928a3" + integrity sha512-XDCUNo0SXfHOCc/v1s96hzrf/N4lDBjXLZMNLLUeSkLsHlH2QryFyQKO48AI08fJmM5JBqGVwcJiF47aMWOmYQ== + dependencies: + prop-types "^15.6.1" + react-addons-shallow-compare "15.6.2" + +react-native-splash-screen@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.2.0.tgz#d47ec8557b1ba988ee3ea98d01463081b60fff45" + integrity sha512-Ls9qiNZzW/OLFoI25wfjjAcrf2DZ975hn2vr6U9gyuxi2nooVbzQeFoQS5vQcbCt9QX5NY8ASEEAtlLdIa6KVg== + +react-native-status-bar-height@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-native-status-bar-height/-/react-native-status-bar-height-2.5.0.tgz#bc0fb85230603850aab9667ee8111a62954de90c" + integrity sha512-sYBCPYA/NapBSHkdm/IVL4ID3LLlIuLqINi2FBDyMkc2BU9pfSGOtkz9yfxoK39mYJuTrlTOQ7mManARUsYDSA== + +react-native-svg@^9.9.3: + version "9.13.6" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.13.6.tgz#5365fba2bc460054b90851e71f2a71006a5d373f" + integrity sha512-vjjuJhEhQCwWjqsgWyGy6/C/LIBM2REDxB40FU1PMhi8T3zQUwUHnA6M15pJKlQG8vaZyA+QnLyIVhjtujRgig== + dependencies: + css-select "^2.0.2" + css-tree "^1.0.0-alpha.37" + +react-native-switch-toggle@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/react-native-switch-toggle/-/react-native-switch-toggle-1.1.4.tgz#cd565e9db584109f93adde5c6979b2587cbc8cbc" + integrity sha512-TMCcZYAt4Rw33j/ZrHqEKr5BotJp+FYaMDzml75UQYDA7vHpnovmBp04RTU/4oimD8E0teIOauRNVtJLeNer+A== + dependencies: + dooboolab-welcome "^1.1.0" + +react-native-tab-view@^1.2.0, react-native-tab-view@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz#f113cd87485808f0c991abec937f70fa380478b9" + integrity sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ== + dependencies: + prop-types "^15.6.1" + +react-native-vector-icons@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz#66cf004918eb05d90778d64bd42077c1800d481b" + integrity sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw== + dependencies: + lodash "^4.0.0" + prop-types "^15.6.2" + yargs "^13.2.2" + +react-native-view-shot@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.1.2.tgz#8c8e84c67a4bc8b603e697dbbd59dbc9b4f84825" + integrity sha512-9u9fPtp6a52UMoZ/UCPrCjKZk8tnkI9To0Eh6yYnLKFEGkRZ7Chm6DqwDJbYJHeZrheCCopaD5oEOnRqhF4L2Q== + +react-native-webview@^9.2.1, react-native-webview@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-9.4.0.tgz#108da34a6c7e1c032dcabc942b7e4947ca1d8028" + integrity sha512-BBOFUuza0p04+7fNi7TJmB0arpDJzGxHYwTCgI4vj5n/fl7u4jbm7ETp88mf7lo9lP6C6HGLo38KnEy1aXCQkg== + dependencies: + escape-string-regexp "2.0.0" + invariant "2.2.4" + +react-native@0.61.5: + version "0.61.5" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.61.5.tgz#6e21acb56cbd75a3baeb1f70201a66f42600bba8" + integrity sha512-MXqE3NoGO0T3dUKIKkIppijBhRRMpfN6ANbhMXHDuyfA+fSilRWgCwYgR/YNCC7ntECoJYikKaNTUBB0DeQy6Q== + dependencies: + "@babel/runtime" "^7.0.0" + "@react-native-community/cli" "^3.0.0" + "@react-native-community/cli-platform-android" "^3.0.0" + "@react-native-community/cli-platform-ios" "^3.0.0" + abort-controller "^3.0.0" + art "^0.10.0" + base64-js "^1.1.2" + connect "^3.6.5" + create-react-class "^15.6.3" + escape-string-regexp "^1.0.5" + event-target-shim "^5.0.1" + fbjs "^1.0.0" + fbjs-scripts "^1.1.0" + hermes-engine "^0.2.1" + invariant "^2.2.4" + jsc-android "^245459.0.0" + metro-babel-register "^0.56.0" + metro-react-native-babel-transformer "^0.56.0" + metro-source-map "^0.56.0" + nullthrows "^1.1.0" + pretty-format "^24.7.0" + promise "^7.1.1" + prop-types "^15.7.2" + react-devtools-core "^3.6.3" + react-refresh "^0.4.0" + regenerator-runtime "^0.13.2" + scheduler "0.15.0" + stacktrace-parser "^0.1.3" + whatwg-fetch "^3.0.0" + +react-navigation-drawer@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/react-navigation-drawer/-/react-navigation-drawer-1.4.0.tgz#70f3dd83e3da9cd4ea6e2739526502c823d466b9" + integrity sha512-ZyWBozcjB2aZ7vwCALv90cYA2NpDjM+WALaiYRshvPvue8l7cqynePbHK8GhlMGyJDwZqp4MxQmu8u1XAKp3Bw== + dependencies: + react-native-tab-view "^1.2.0" + +react-navigation-stack@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.5.3.tgz#cdc9f5a6dbdc55509a15f60d765722573dec1997" + integrity sha512-MQcwDVbZUYsTtDJb5cFOSm+K+e7KpUCoROaGoUOR+JHWE3uuaJ3pd/Nu+32a57J98TNBf4qq0+2TPJWl6z6IBg== + dependencies: + prop-types "^15.7.2" + +react-navigation-tabs@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-1.2.0.tgz#602c147029bb4f1c569b26479ddba534fe3ebb19" + integrity sha512-I6vq3XX4ub9KhWQzcrggznls+2Z2C6w2ro46vokDGGvJ02CBpQRar7J0ETV29Ot5AJY67HucNUmZdH3yDFckmQ== + dependencies: + hoist-non-react-statics "^2.5.0" + prop-types "^15.6.1" + react-native-tab-view "^1.4.1" + +react-navigation@^3.3.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-3.13.0.tgz#e802bb5174c1ec8b727c69f8e4409ff1351a5250" + integrity sha512-r64bTImY2aNye8wtd39ubouVB6ZMJqjVQYKxH4LFmOav4FsI59fQTDN7sZzyJa29owowYw/wVkh+NWGT+tdD1A== + dependencies: + "@react-navigation/core" "~3.5.1" + "@react-navigation/native" "~3.6.2" + react-navigation-drawer "~1.4.0" + react-navigation-stack "1.5.3" + react-navigation-tabs "~1.2.0" + +react-redux@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + +react-refresh@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334" + integrity sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ== + +react-test-renderer@16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" + integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.13.6" + +react-timer-mixin@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz#75a00c3c94c13abe29b43d63b4c65a88fc8264d3" + integrity sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q== + +react-tween-state@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/react-tween-state/-/react-tween-state-0.1.5.tgz#e98b066551efb93cb92dd1be14995c2e3deae339" + integrity sha1-6YsGZVHvuTy5LdG+FJlcLj3q4zk= + dependencies: + raf "^3.1.0" + tween-functions "^1.0.1" + +react@16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" + integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +redux-persist-transform-encrypt@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/redux-persist-transform-encrypt/-/redux-persist-transform-encrypt-2.0.1.tgz#5832ee93c3b3c3224705c5350594b8472617ea46" + integrity sha1-WDLuk8OzwyJHBcU1BZS4RyYX6kY= + dependencies: + crypto-js "^3.1.9-1" + json-stringify-safe "^5.0.1" + readable-stream "^2.2.6" + +redux-persist@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-5.10.0.tgz#5d8d802c5571e55924efc1c3a9b23575283be62b" + integrity sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg== + +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^5.4.3: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sax@^1.2.1, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e" + integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + +serve-static@^1.13.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-plist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.0.tgz#8354ab63eb3922a054c78ce96c209c532e907a23" + integrity sha512-2i5Tc0BYAqppM7jVzmNrI+aEUntPolIq4fDgji6WuNNn1D/qYdn2KwoLhZdzQkE04lu9L5tUoeJsjuJAvd+lFg== + dependencies: + bplist-creator "0.0.8" + bplist-parser "0.2.0" + plist "^3.0.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0, slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16, source-map-support@^0.5.6: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stacktrace-parser@^0.1.3: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-buffers@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0, throat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@^3.7.0: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tween-functions@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff" + integrity sha1-GuOlDnxguz3vd06scHrLynO7w/8= + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + +uc.micro@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use-subscription@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.4.1.tgz#edcbcc220f1adb2dd4fa0b2f61b6cc308e620069" + integrity sha512-7+IIwDG/4JICrWHL/Q/ZPK5yozEnvRm6vHImu0LKwQlmWGKeiF7mbAenLlK/cTNXrTtXHU/SFASQHzB6+oSJMQ== + dependencies: + object-assign "^4.1.1" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +window-or-global@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" + integrity sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4= + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^1.1.0, ws@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +xcode@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" + integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ== + dependencies: + simple-plist "^1.0.0" + uuid "^3.3.2" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlbuilder@^9.0.7: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmldoc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" + integrity sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ== + dependencies: + sax "^1.2.1" + +xmldom@0.1.x: + version "0.1.31" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== + +xpipe@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" + integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.2.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0"