[
  {
    "path": ".dependabot/config.yml",
    "content": "version: 1\nupdate_configs:\n  - package_manager: \"javascript\"\n    directory: \".\"\n    update_schedule: \"daily\"\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  extends: '@react-native-community',\n};\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: mrousavy\nko_fi: mrousavy\ncustom: [\"https://paypal.me/mrousavy\"]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---bug-report.md",
    "content": "---\nname: \"\\U0001F41B Bug report\"\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: bug\nassignees: ''\n\n---\n\n# Bug\n\n>>>>> I have read the [Troubleshooting](https://github.com/mrousavy/react-native-google-nearby-messages/blob/master/TROUBLESHOOTING.md) page: [Yes/No]\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**(Optional) Proposed solution**\nIf you have an idea on how one might fix this bug, please describe it here.\n\n# Environment\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n\n```\npaste the output of `react-native info` here\n```\n\n```json\n\"react\": PASTE_VERSION_HERE,\n\"react-native\": PASTE_VERSION_HERE,\n\"react-native-google-nearby-messages\": PASTE_VERSION_HERE\n```\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---question.md",
    "content": "---\nname: \"\\U0001F914 Question\"\nabout: You can ask questions here.\ntitle: \"[QUESTION] \"\nlabels: question\nassignees: ''\n\n---\n\n# Question\n\nPut extra details for the question here\n\n# Environment\n\n```\npaste the output of `react-native info` here\n```\n\n```json\n\"react\": PASTE_VERSION_HERE,\n\"react-native\": PASTE_VERSION_HERE,\n\"react-native-google-nearby-messages\": PASTE_VERSION_HERE\n```\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/--feature-request.md",
    "content": "---\nname: \"✨ Feature request\"\nabout: Suggest an idea for this project\ntitle: \"[FEATURE]\"\nlabels: enhancement\nassignees: ''\n\n---\n\n# Problem\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n# Solution\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n\n# Environment\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n\n```\npaste the output of `react-native info` here\n```\n\n```json\n\"react\": PASTE_VERSION_HERE,\n\"react-native\": PASTE_VERSION_HERE,\n\"react-native-google-nearby-messages\": PASTE_VERSION_HERE\n```\n"
  },
  {
    "path": ".gitignore",
    "content": "# TypeScript\ndist/\n\n# OSX\n#\n.DS_Store\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nproject.xcworkspace\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n\n# BUCK\nbuck-out/\n\\.buckd/\n*.keystore\n"
  },
  {
    "path": ".npmignore",
    "content": "img\nexample\ne2e\ntest\ncircle.yml\n.npmignore\n\n# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nproject.xcworkspace\n\n# Android/IJ\n#\n.idea\n.gradle\nlocal.properties\n*.iml\nlocal.properties\n.idea/workspace.xml\n.idea/libraries\nbuild\ncaptures\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\n\n# BUCK\nbuck-out/\n\\.buckd/\nandroid/app/libs\nandroid/keystores/debug.keystore\n"
  },
  {
    "path": ".prettierrc.js",
    "content": "module.exports = {\n  bracketSpacing: false,\n  jsxBracketSameLine: true,\n  singleQuote: true,\n  trailingComma: 'all',\n};\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Marc Rousavy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <img src=\"img/nearby-messages-icon.png\" height=\"120\" />\n  <h2 align=\"center\">react-native-google-nearby-messages</h2>\n</p>\n\nAn async **Google Nearby Messages** API Wrapper for **React Native** (Android & iOS), supporting autolinking, custom discovery modes (`broadcast`, `scan`, ..), custom discovery mediums (`bluetooth`, `audio`, ..), awaitable native invokations and React hooks!\n\n> Also, this is a good example on how to use _Swift_ in a React Native - Native Module.\n\n[![react-native-google-nearby-messages](https://badge.fury.io/js/react-native-google-nearby-messages.svg)](https://badge.fury.io/js/react-native-google-nearby-messages)\n[![GitHub stars](https://img.shields.io/github/stars/mrousavy/react-native-google-nearby-messages.svg?style=social&label=Star&maxAge=259000)](https://GitHub.com/mrousavy/react-native-google-nearby-messages/stargazers/)\n[![GitHub followers](https://img.shields.io/github/followers/mrousavy.svg?style=social&label=Follow&maxAge=259000)](https://github.com/mrousavy?tab=followers)\n\n<a href='https://ko-fi.com/F1F8CLXG' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n\n## Install\n\n> This packages uses React Native autolinking (> 0.60)\n\n```sh\nnpm i react-native-google-nearby-messages\n# for iOS\ncd ios && pod install && cd ..\n```\n\n> Note (iOS): Everytime you run `pod install` an entry called `Assets.car` is created in your **Build Phases** -> **[CP] Copy Pods Resources** which causes the build to fail. This is a known bug in the Google **NearbyMessages** pod. A workaround is to manually remove this file everytime you run `pod install`. See [#4 (comment)](https://github.com/mrousavy/react-native-google-nearby-messages/issues/4#issuecomment-649961499) for an automatic fix. Please [create a PR here](https://github.com/mrousavy/react-native-google-nearby-messages/pulls) if you found a better solution for this!\n\n## Usage\n\nSee the [example app](example/).\n\n### iOS Setup\n\n> See: https://developers.google.com/nearby/messages/ios/get-started\n\n1. Add bluetooth permissions (`NSBluetoothPeripheralUsageDescription`, `NSBluetoothAlwaysUsageDescription` for 'ble', and `NSMicrophoneUsageDescription` for 'audio') to `Info.plist`\n2. Create your API Key at [the Google Developer Console](https://console.developers.google.com/flows/enableapi?apiid=copresence&keyType=CLIENT_SIDE_IOS&reusekey=true).\n3. (Optionally): Add the [react-native-permissions](https://github.com/react-native-community/react-native-permissions) library to check if Bluetooth is available on the device (it's `'unavailable'` on iOS Simulators!) If it's `'unavailable'`, calls to subscribe or publish might crash the app (`EXC_BAD_ACCESS`) so only call if Bluetooth permission is `denied`, `granted` or `blocked`. This library will handle the permission checking for you when you call `publish()` or `subscribe()` for the first time.\n4. Pass the generated API Key as a parameter using the `connect` function\n\n### Android Setup\n\n> See: https://developers.google.com/nearby/messages/android/get-started\n\n1. Create your API Key at [the Google Developer Console](https://console.developers.google.com/flows/enableapi?apiid=copresence&keyType=CLIENT_SIDE_ANDROID&reusekey=true).\n2. Add your generated API Key and Permissions to your `AndroidManifest.xml`:\n\n    ```xml\n    <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        package=\"com.google.sample.app\" >\n        <!-- For BLE/Bluetooth -->\n        <uses-permission android:name=\"android.permission.BLUETOOTH\" />\n        <uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />\n        <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n\n        <!-- For Audio -->\n        <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />\n\n        <application ...>\n            <meta-data\n                android:name=\"com.google.android.nearby.messages.API_KEY\"\n                android:value=\"API_KEY\" />\n            <activity>\n            ...\n            </activity>\n        </application>\n    </manifest>\n    ```\n\n3. (Optionally): Call `checkBluetoothAvailability()` to ensure that Bluetooth capabilities are available on the current device.\n4. Call `connect` without any key.\n\n### Publishing\n\n```ts\nimport { connect, publish, addOnErrorListener } from 'react-native-google-nearby-messages';\n\nconst removeListener = addOnErrorListener((kind, message) => console.error(`${kind}: ${message}`));\nconst disconnect = await connect({ apiKey: GOOGLE_API_KEY });\nconst unpublish = await publish('hello !');\n\n// later, e.g. in componentWillUnmount()\nremoveListener();\nunpublish();\ndisconnect();\n```\n\n> Make sure to unpublish, disconnect and remove any listeners as they won't be removed automatically! I don't know if that's possible, if so, please create a Pull Request.\n\n### Subscribing\n\n```ts\nimport { connect, subscribe, addOnErrorListener } from 'react-native-google-nearby-messages';\n\nconst removeListener = addOnErrorListener((kind, message) => console.error(`${kind}: ${message}`));\nconst disconnect = await connect({ apiKey: GOOGLE_API_KEY });\nconst unsubscribe = await subscribe(\n  (m) => {\n    console.log(`new message found: ${m}`);\n  },\n  (m) => {\n    console.log(`message lost: ${m}`);\n  });\n\n// later, e.g. in componentWillUnmount()\nremoveListener();\nunsubscribe();\ndisconnect();\n```\n\n> Make sure to unpublish, disconnect and remove any listeners as they won't be removed automatically! I don't know if that's possible, if so, please create a Pull Request.\n\n### Bluetooth Availability\n\nCheck if the user has granted Bluetooth Permissions. This feature is experimental, and strongly differs between iOS and Android.\n\n```ts\nimport { checkBluetoothPermission } from 'react-native-google-nearby-messages';\n\nconst hasPermission = await checkBluetoothPermission();\n```\n\nCheck if bluetooth is available on this device. This feature is experimental, and strongly differs between iOS and Android. Make sure to use a library like **react-native-permissions** to check if Bluetooth is really available, otherwise your Application might crash with a `EXEC_BAD_ACCESS` error. See [troubleshooting](#troubleshooting)\n\n```ts\nimport { checkBluetoothAvailability } from 'react-native-google-nearby-messages';\n\nconst isBluetoothAvailable = await checkBluetoothAvailability();\n```\n\n### React Hooks\n\nThis library also provides react hooks for common use cases. In case you're not familiar with hooks, please read the [hooks documentation](https://reactjs.org/docs/hooks-intro.html). When the component unmounts, the hooks automatically stop publishing, subscribing, remove error listeners and disconnect for you. You can also look into the [hooks source code](https://github.com/mrousavy/react-native-google-nearby-messages/blob/master/index.ts#L140-L259) and tweak them for your use case.\n\nMake sure to memoize the `NearbyConfig` object using `useMemo`, otherwise the hooks will fall into an infinite loop of re-renders because the config object gets re-created each time and therefore _has changed_. (See: [react useEffect's deps](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects))\n\n#### useNearbyPublication\n\nPublishes a message and returns a state which describes the Nearby API status. (e.g.: `connecting`, `published`, `error`, ...)\n\n```ts\nexport default function App() {\n  const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n  const nearbyStatus = useNearbyPublication(nearbyConfig, 'Hello from Nearby!');\n  // ...\n}\n```\n\n#### useNearbySubscription\n\nSubscribe to nearby messages and return a state for all messages in an array, as well as a state describing the Nearby API Status. (e.g.: `connecting`, `published`, `error`, ...)\n\n```tsx\nexport default function App() {\n  const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n  const { nearbyMessages, nearbyStatus } = useNearbySubscription(nearbyConfig);\n  return (\n    <FlatList\n      data={nearbyMessages}\n      renderItem={({ item }) => <Text>{item}</Text>}\n      />\n  );\n}\n```\n\n#### useNearbySearch\n\nSearch for a specific message using nearby messages. The `isNearby` local specifies whether the string `iPhone 11` could be found using the Nearby API, and the `nearbyStatus` local describes the current status of the Nearby API. (e.g.: `connecting`, `published`, `error`, ...)\n\n```tsx\nexport default function App() {\n  const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n  const { isNearby, nearbyStatus } = useNearbySearch(nearbyConfig, 'iPhone 11');\n  return (\n    <Text>{isNearby ? 'iPhone 11 is nearby!' : 'iPhone 11 is far, far away.'}</Text>\n  );\n}\n```\n\n#### useNearbyErrorCallback\n\nSubscribe to any errors emitted from the Nearby API.\n\n```ts\nexport default function App() {\n  useNearbyErrorCallback((kind, message) => {\n    console.log(`Nearby API Error: ${kind}: ${message}`)\n  });\n}\n```\n\n## Troubleshooting\n\nIf you're having any trouble getting the Nearby API working, please make sure you've read [the Troubleshooting Page](./TROUBLESHOOTING.md).\n\nIf that doesn't help either, [create an issue](https://github.com/mrousavy/react-native-google-nearby-messages/issues).\n\n<a href='https://ko-fi.com/F1F8CLXG' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n\n## Resources\n\n* [This medium article](https://teabreak.e-spres-oh.com/swift-in-react-native-the-ultimate-guide-part-1-modules-9bb8d054db03)\n"
  },
  {
    "path": "TASKS.md",
    "content": "# Tasks/Todos\n\n1. Create `useBluetoothPermission()` hook\n2. Create `useBluetoothAvailability()` hook\n3. Fix Android\n"
  },
  {
    "path": "TROUBLESHOOTING.md",
    "content": "# Troubleshooting\n\nThe library is a rather low-level API, so make sure you roughly understand what each functions does since there are a lot of wrong ways to use the API.\n\n## API Usage Notes\n\n* you need to call `connect(...)` before publishing or subscribing\n* you _can_ call `checkBluetoothPermissions()` and `checkBluetoothAvailability()` before any other calls to make sure bluetooth is available. (Use [react-native-permissions](https://github.com/react-native-community/react-native-permissions) to actually request permissions)\n* you need to manually call `disconnect(...)` to stop publishing, otherwise nearby subscribers will still see you as nearby even when you e.g. close the app.\n* it is recommended to use React Hooks, since those are cleaner code and less error-prone.\n  - when you are using hooks, be aware that you can only use a single hook in the same context at a time. (With the exception of the `useNearbyError` hook) This is because the Nearby Messages API is a global/singleton instance, so when you call `connect(...)` twice (which will happen if you have multiple hooks), an error gets thrown. You can write your custom Hooks if you inted on doing more complex logic.\n* all errors are thrown as Promise rejectors, so make sure you surround your calls with a try/catch. For error events, use the `addOnErrorListener(...)` function or `useNearbyError(...)` hook.\n\n## Troubleshooting\n\nIf you're still having trouble, be aware of the following:\n\n1. The JS error codes (promise rejectors) should tell you enough information on what went wrong, check [this doc page](https://developers.google.com/android/reference/com/google/android/gms/nearby/messages/NearbyMessagesStatusCodes) on more information about each individual error code.\n2. If you are receiving seemingly random promise rejectors, it is likely that the metro bundler has caused some issues with the state cache. Try reloading the App. (pressing <kbd>r</kbd> in the metro bundler console)\n3. Make sure your device has BLE capabilities and the App has Permission to use those. Include the required Permissions in `Info.plist` and `AndroidManifest.xml`. Also try adding the `INTERNET`, `ACCESS_FINE_LOCATION` and `ACCESS_COARSE_LOCATION` permissions if nothing else works.\n4. Make sure your API Key is valid!\n5. The Nearby Messages API is available on Android devices with [Google Play services](https://developers.google.com/android/guides/overview) 7.8.0 or higher. Devices running Android 2.3 or higher that have the Google Play Store app automatically receive updates to Google Play services. To check which version of Google Play services is installed on your device, go to **Settings > Apps > Google Play services**. See: [here](https://developers.google.com/nearby/messages/android/get-started)\n6. If you're having build problems on iOS, check if your **Build Phases** -> **[CP] Copy Pods Resources** contains the `Assets.car` entry. If yes, remove it. See: [iOS Setup](#ios-setup). You can also add a fix at the top of your Podfile to do this automatically (`install! 'cocoapods', :disable_input_output_paths => true`), but this greatly increases your build time. See: [#4 (comment)](https://github.com/mrousavy/react-native-google-nearby-messages/issues/4#issuecomment-649961499) and [#8422 (CocoaPods/CodoaPods)](https://github.com/CocoaPods/CocoaPods/issues/8122)\n7. On the iOS Simulator the App may crash (`EXC_BAD_ACCESS`) when trying to use the API. This is because the Simulator does not have Bluetooth functionality, and I don't think I can generally detect this before calling connect/subscribe/publish. Make sure to check if bluetooth is available using a library like [react-native-permissions](https://github.com/react-native-community/react-native-permissions). You don't have to request permission, as the react-native-google-nearby-messages library does that for you on subscribe/publish calls. Only call this library when react-native-permissions check returns anything else than `unavailable`.\n8. If you're having the build error `duplicate symbol 'google::RemoveLogSink(google::LogSink*)'` on iOS, include a small `post_install` \"patcher\" script in your Podfile:\n    ```ruby\n    def rename_logging_functions(installer)\n      puts \"Renaming logging functions\"\n\n      root = File.dirname(installer.pods_project.path)\n      Dir.chdir(root);\n      Dir.glob(\"**/*.{h,cc,cpp,in}\") {|filename|\n        filepath = root + \"/\" + filename\n        text = File.read(filepath)\n        addText = text.gsub!(/(?<!React)AddLogSink/, \"ReactAddLogSink\")\n        if addText\n          File.chmod(0644, filepath)\n          f = File.open(filepath, \"w\")\n          f.write(addText)\n          f.close\n        end\n\n        text2 = addText ? addText : text\n        removeText = text2.gsub!(/(?<!React)RemoveLogSink/, \"ReactRemoveLogSink\")\n        if removeText\n          File.chmod(0644, filepath)\n          f = File.open(filepath, \"w\")\n          f.write(removeText)\n          f.close\n        end\n      }\n    end\n\n    # ...\n    target 'yourapp' do\n      # ...\n      # [your pods here]\n      # ...\n      post_install do |installer|\n        # flipper_post_install(installer)\n        rename_logging_functions(installer)\n      end\n    end\n    ```\n9. Try debugging your app with Xcode/Android Studio. Native Logs get printed in the Logs/Logcat windows, and you can set breakpoints in the native code as well.\n\nIf you're still having problems, [create an issue](https://github.com/mrousavy/react-native-google-nearby-messages/issues), I'm happy to help.\n"
  },
  {
    "path": "android/.classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.buildship.core.gradleclasspathcontainer\"/>\n\t<classpathentry kind=\"output\" path=\"bin/default\"/>\n</classpath>\n"
  },
  {
    "path": "android/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>android</name>\n\t<comment>Project android created by Buildship.</comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.buildship.core.gradleprojectbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\n\t\t<nature>org.eclipse.buildship.core.gradleprojectnature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": "android/.settings/org.eclipse.buildship.core.prefs",
    "content": "arguments=\nauto.sync=false\nbuild.scans.enabled=false\nconnection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)\nconnection.project.dir=\neclipse.preferences.version=1\ngradle.user.home=\njava.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home\njvm.arguments=\noffline.mode=false\noverride.workspace.settings=true\nshow.console.view=true\nshow.executions.view=true\n"
  },
  {
    "path": "android/README.md",
    "content": "README\n======\n\nIf you want to publish the lib as a maven dependency, follow these steps before publishing a new version to npm:\n\n1. Be sure to have the Android [SDK](https://developer.android.com/studio/index.html) and [NDK](https://developer.android.com/ndk/guides/index.html) installed\n2. Be sure to have a `local.properties` file in this folder that points to the Android SDK and NDK\n```\nndk.dir=/Users/{username}/Library/Android/sdk/ndk-bundle\nsdk.dir=/Users/{username}/Library/Android/sdk\n```\n3. Delete the `maven` folder\n4. Run `./gradlew installArchives`\n5. Verify that latest set of generated files is in the maven folder with the correct version number\n"
  },
  {
    "path": "android/build.gradle",
    "content": "// android/build.gradle\n\n// based on:\n//\n// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/build.gradle\n//   original location:\n//   - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/build.gradle\n//\n// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/app/build.gradle\n//   original location:\n//   - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle\n\ndef DEFAULT_COMPILE_SDK_VERSION = 28\ndef DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'\ndef DEFAULT_MIN_SDK_VERSION = 16\ndef DEFAULT_TARGET_SDK_VERSION = 28\n\ndef safeExtGet(prop, fallback) {\n    rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback\n}\n\napply plugin: 'com.android.library'\napply plugin: 'kotlin-android'\napply plugin: 'maven'\n\nbuildscript {\n    ext.kotlin_version = '1.3.72'\n    // The Android Gradle plugin is only required when opening the android folder stand-alone.\n    // This avoids unnecessary downloads and potential conflicts when the library is included as a\n    // module dependency in an application project.\n    // ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies\n    if (project == rootProject) {\n        repositories {\n            google()\n            jcenter()\n        }\n        dependencies {\n            classpath 'com.android.tools.build:gradle:3.4.1'\n        }\n    }\n    repositories {\n        mavenCentral()\n    }\n    dependencies {\n        classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\n    }\n}\n\napply plugin: 'com.android.library'\napply plugin: 'maven'\n\nandroid {\n    compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)\n    buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION)\n    defaultConfig {\n        minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)\n        targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)\n        versionCode 1\n        versionName \"1.0\"\n    }\n    lintOptions {\n        abortOnError false\n    }\n}\n\nrepositories {\n    // ref: https://www.baeldung.com/maven-local-repository\n    mavenLocal()\n    maven {\n        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n        url \"$rootDir/../node_modules/react-native/android\"\n    }\n    maven {\n        // Android JSC is installed from npm\n        url \"$rootDir/../node_modules/jsc-android/dist\"\n    }\n    google()\n    jcenter()\n}\n\ndependencies {\n    //noinspection GradleDynamicVersion\n    implementation 'com.facebook.react:react-native:+'  // From node_modules\n    implementation 'com.google.android.gms:play-services-nearby:17.0.0'\n    implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"\n}\n\ndef configureReactNativePom(def pom) {\n    def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text)\n\n    pom.project {\n        name packageJson.title\n        artifactId packageJson.name\n        version = packageJson.version\n        group = \"com.reactlibrary\"\n        description packageJson.description\n        url packageJson.repository.baseUrl\n\n        licenses {\n            license {\n                name packageJson.license\n                url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename\n                distribution 'repo'\n            }\n        }\n\n        developers {\n            developer {\n                id packageJson.author.username\n                name packageJson.author.name\n            }\n        }\n    }\n}\n\nafterEvaluate { project ->\n    // some Gradle build hooks ref:\n    // https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html\n    task androidJavadoc(type: Javadoc) {\n        source = android.sourceSets.main.java.srcDirs\n        classpath += files(android.bootClasspath)\n        classpath += files(project.getConfigurations().getByName('compile').asList())\n        include '**/*.java'\n    }\n\n    task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {\n        classifier = 'javadoc'\n        from androidJavadoc.destinationDir\n    }\n\n    task androidSourcesJar(type: Jar) {\n        classifier = 'sources'\n        from android.sourceSets.main.java.srcDirs\n        include '**/*.java'\n    }\n\n    android.libraryVariants.all { variant ->\n        def name = variant.name.capitalize()\n        def javaCompileTask = variant.javaCompileProvider.get()\n\n        task \"jar${name}\"(type: Jar, dependsOn: javaCompileTask) {\n            from javaCompileTask.destinationDir\n        }\n    }\n\n    artifacts {\n        archives androidSourcesJar\n        archives androidJavadocJar\n    }\n\n    task installArchives(type: Upload) {\n        configuration = configurations.archives\n        repositories.mavenDeployer {\n            // Deploy to react-native-event-bridge/maven, ready to publish to npm\n            repository url: \"file://${projectDir}/../android/maven\"\n            configureReactNativePom pom\n        }\n    }\n}\n"
  },
  {
    "path": "android/gradle/wrapper/gradle-wrapper.properties",
    "content": "#Tue Jun 02 19:19:02 CEST 2020\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.1.1-all.zip\n"
  },
  {
    "path": "android/gradlew",
    "content": "#!/usr/bin/env sh\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=$(save \"$@\")\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\n# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong\nif [ \"$(uname)\" = \"Darwin\" ] && [ \"$HOME\" = \"$PWD\" ]; then\n  cd \"$(dirname \"$0\")\"\nfi\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "android/gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto init\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto init\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:init\n@rem Get command-line arguments, handling Windows variants\n\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\n\n:win9xME_args\n@rem Slurp the command line arguments.\nset CMD_LINE_ARGS=\nset _SKIP=2\n\n:win9xME_args_slurp\nif \"x%~1\" == \"x\" goto execute\n\nset CMD_LINE_ARGS=%*\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "android/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n          package=\"com.mrousavy.nearby\">\n\n</manifest>\n"
  },
  {
    "path": "android/src/main/java/com/google/android/gms/nearby/messages/BetterStrategy.java",
    "content": "//\n// This is the source code of the Google Nearby Messages Strategy Java file (com.google.android.gms.nearby.messages.Strategy).\n// Apparently they forgot to add a discovery medium setter functions, so I just added that here.\n// Source code recreated from a .class file by IntelliJ IDEA\n// (powered by Fernflower decompiler)\n//\n\npackage com.google.android.gms.nearby.messages;\n\nimport com.google.android.gms.common.internal.Preconditions;\nimport com.google.android.gms.common.internal.safeparcel.SafeParcelable.Class;\n\nimport javax.annotation.concurrent.Immutable;\n\n@Immutable\n@Class(\n        creator = \"StrategyCreator\"\n)\npublic class BetterStrategy {\n    public static final int DISCOVERY_MEDIUM_DEFAULT = -1;\n    public static final int DISCOVERY_MEDIUM_BLE = 2;\n    public static final int DISCOVERY_MEDIUM_AUDIO = 4;\n\n    public static class Builder {\n        private int discoveryMode = Strategy.DISCOVERY_MODE_DEFAULT;\n        private int ttlSeconds = 300;\n        private int distanceType = Strategy.DISTANCE_TYPE_DEFAULT;\n        private int discoveryMedium = DISCOVERY_MEDIUM_DEFAULT;\n        private int zzfy = 0;\n\n        public Builder() {\n        }\n\n        public BetterStrategy.Builder setDiscoveryMode(int var1) {\n            this.discoveryMode = var1;\n            return this;\n        }\n\n        public BetterStrategy.Builder setDiscoveryMedium(int var1) {\n            this.discoveryMedium = var1;\n            return this;\n        }\n\n        public BetterStrategy.Builder setTtlSeconds(int var1) {\n            Preconditions.checkArgument(var1 == 2147483647 || var1 > 0 && var1 <= 86400, \"mTtlSeconds(%d) must either be TTL_SECONDS_INFINITE, or it must be between 1 and TTL_SECONDS_MAX(%d) inclusive\", new Object[]{var1, 86400});\n            this.ttlSeconds = var1;\n            return this;\n        }\n\n        public BetterStrategy.Builder setDistanceType(int var1) {\n            this.distanceType = var1;\n            return this;\n        }\n\n        public Strategy build() {\n            if (this.discoveryMedium == DISCOVERY_MEDIUM_BLE && this.distanceType == Strategy.DISTANCE_TYPE_EARSHOT) {\n                throw new IllegalStateException(\"Cannot set EARSHOT with BLE only mode.\");\n            } else {\n                return new Strategy(2, 0, this.ttlSeconds, this.distanceType, false, this.discoveryMedium, this.discoveryMode, 0);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "android/src/main/java/com/mrousavy/nearby/GoogleNearbyMessagesModule.kt",
    "content": "package com.mrousavy.nearby\n\nimport android.Manifest\nimport android.bluetooth.BluetoothAdapter\nimport android.content.Context\nimport android.content.pm.PackageManager\nimport android.os.Build\nimport android.util.Log\nimport androidx.core.content.ContextCompat\nimport com.facebook.react.bridge.*\nimport com.facebook.react.modules.core.DeviceEventManagerModule\nimport com.google.android.gms.common.ConnectionResult\nimport com.google.android.gms.common.GoogleApiAvailability\nimport com.google.android.gms.common.api.ApiException\nimport com.google.android.gms.nearby.Nearby\nimport com.google.android.gms.nearby.messages.*\nimport java.util.*\n\nval defaultDiscoveryModes = Strategy.DISCOVERY_MODE_BROADCAST or Strategy.DISCOVERY_MODE_SCAN\nval defaultDiscoveryMediums = BetterStrategy.DISCOVERY_MEDIUM_BLE\nval defaultPermissions = NearbyPermissions.DEFAULT\n\nclass GoogleNearbyMessagesModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext), LifecycleEventListener {\n    private enum class EventType(private val _type: String) {\n        MESSAGE_FOUND(\"MESSAGE_FOUND\"),\n        MESSAGE_LOST(\"MESSAGE_LOST\"),\n        BLUETOOTH_ERROR(\"BLUETOOTH_ERROR\"),\n        PERMISSION_ERROR(\"PERMISSION_ERROR\"), // doesn't exist on Android\n        MESSAGE_NO_DATA_ERROR(\"MESSAGE_NO_DATA_ERROR\");\n\n        override fun toString(): String {\n            return _type\n        }\n    }\n\n    private var _messagesClient: MessagesClient? = null\n    private var _publishedMessage: Message? = null\n    private var _isSubscribed = false\n    private var _listener: MessageListener? = null\n    private var _subscribeOptions: SubscribeOptions? = null\n    private var _publishOptions: PublishOptions? = null\n    private val isMinimumAndroidVersion: Boolean\n        get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH\n    private val context: Context?\n        get() = currentActivity\n\n\n    @ReactMethod\n    fun connect(discoveryModes: ReadableArray, discoveryMediums: ReadableArray, promise: Promise) {\n        Log.d(name, \"GNM_BLE: Connecting...\")\n        if (!isMinimumAndroidVersion) {\n            promise.reject(Exception(\"UNSUPPORTED_ERROR: Current Android version is too low: ${Build.VERSION.SDK_INT}\"))\n            return\n        }\n        if (!isGooglePlayServicesAvailable(true)) {\n            promise.reject(Exception(\"UNSUPPORTED_ERROR: Google Play Services are not available on this device.\"))\n            return\n        }\n        if (BluetoothAdapter.getDefaultAdapter() == null) {\n            promise.reject(Exception(\"UNSUPPORTED_ERROR: No default Bluetooth adapter could be found.\"))\n            return\n        }\n        _listener = object : MessageListener() {\n            override fun onFound(message: Message) {\n                handleOnFound(message)\n            }\n\n            override fun onLost(message: Message) {\n                handleOnLost(message)\n            }\n        }\n        val mediums = parseDiscoveryMediums(discoveryMediums)\n        val modes = parseDiscoveryModes(discoveryModes)\n        val permissions = parsePermissionOptions(discoveryMediums)\n        _messagesClient = Nearby.getMessagesClient(context!!, MessagesOptions.Builder().setPermissions(permissions).build())\n        _messagesClient!!.registerStatusCallback(object : StatusCallback() {\n            override fun onPermissionChanged(permissionGranted: Boolean) {\n                super.onPermissionChanged(permissionGranted)\n                if (!permissionGranted) emitErrorEvent(EventType.PERMISSION_ERROR, \"Bluetooth Permission denied!\")\n            }\n        })\n        _subscribeOptions = SubscribeOptions.Builder()\n                .setStrategy(BetterStrategy.Builder().setDiscoveryMedium(mediums).setDiscoveryMode(modes).setTtlSeconds(Strategy.TTL_SECONDS_INFINITE).build())\n                .setCallback(object : SubscribeCallback() {\n                    override fun onExpired() {\n                        super.onExpired()\n                        Log.i(name, \"GNM_BLE: No longer subscribing\")\n                        _isSubscribed = false\n                        emitErrorEvent(EventType.BLUETOOTH_ERROR, \"Subscribe expired!\")\n                    }\n                }).build()\n        _publishOptions = PublishOptions.Builder()\n                .setStrategy(BetterStrategy.Builder().setDiscoveryMedium(mediums).setDiscoveryMode(modes).setTtlSeconds(Strategy.TTL_SECONDS_MAX).build())\n                .setCallback(object : PublishCallback() {\n                    override fun onExpired() {\n                        super.onExpired()\n                        Log.i(name, \"GNM_BLE: No longer publishing\")\n                        _publishedMessage = null\n                        emitErrorEvent(EventType.BLUETOOTH_ERROR, \"Publish expired!\")\n                    }\n                }).build()\n        _isSubscribed = false\n        Log.d(name, \"GNM_BLE: Connected with discoveryMediums $mediums, permissions $permissions and discoveryModes $modes!\")\n        promise.resolve(null)\n    }\n\n    @ReactMethod\n    fun disconnect() {\n        if (_messagesClient != null) {\n            if (_isSubscribed) _messagesClient!!.unsubscribe(_listener!!)\n            if (_publishedMessage != null) _messagesClient!!.unpublish(_publishedMessage!!)\n        }\n        _listener = null\n        _subscribeOptions = null\n        _publishOptions = null\n        _isSubscribed = false\n        _publishedMessage = null\n        _messagesClient = null\n    }\n\n    @ReactMethod\n    fun subscribe(promise: Promise) {\n        Log.d(name, \"GNM_BLE: Subscribing...\")\n        if (_messagesClient != null) {\n            if (_isSubscribed) {\n                promise.reject(Exception(\"An existing callback is already subscribed to the Google Nearby Messages API! Please unsubscribe before subscribing again!\"))\n            } else {\n                _messagesClient!!.subscribe(_listener!!, _subscribeOptions!!).addOnCompleteListener { task ->\n                    Log.d(name, \"GNM_BLE: Subscribed! Successful: ${task.isSuccessful}\")\n                    if (task.isSuccessful) {\n                        _isSubscribed = true\n                        promise.resolve(null)\n                    } else {\n                        _isSubscribed = false\n                        val e = task.exception\n                        if (e != null) promise.reject(mapApiException(e))\n                        else promise.reject(Exception(\"The task was not successful, but no Exception was thrown.\"))\n                    }\n                }\n            }\n        } else {\n            promise.reject(Exception(\"The Messages Client was null. Call connect() before using subscribe or publish!\"))\n        }\n    }\n\n    @ReactMethod\n    fun unsubscribe(promise: Promise) {\n        Log.d(name, \"GNM_BLE: Unsubscribing...\")\n        if (_messagesClient != null) {\n            _messagesClient!!.unsubscribe(_listener!!).addOnCompleteListener { task ->\n                Log.d(name, \"GNM_BLE: Unsubscribed! Successful: ${task.isSuccessful}\")\n                if (task.isSuccessful) {\n                    _isSubscribed = false\n                    promise.resolve(null)\n                } else {\n                    val e = task.exception\n                    if (e != null) promise.reject(mapApiException(e))\n                    else promise.reject(Exception(\"The task was not successful, but no Exception was thrown.\"))\n                }\n            }\n        } else {\n            promise.reject(Exception(\"The Messages Client was null. Did the GoogleNearbyMessagesModule native constructor fail to execute?\"))\n        }\n    }\n\n    @ReactMethod\n    fun publish(message: String, promise: Promise) {\n        if (_messagesClient != null) {\n            if (_publishedMessage != null) {\n                promise.reject(Exception(\"There is an active published message! Call unpublish first!\"))\n            } else {\n                _publishedMessage = Message(message.toByteArray())\n                _messagesClient!!.publish(_publishedMessage!!, _publishOptions!!).addOnCompleteListener { task ->\n                    Log.d(name, \"GNM_BLE: Published! Successful: ${task.isSuccessful}\")\n                    if (task.isSuccessful) {\n                        promise.resolve(null)\n                    } else {\n                        _publishedMessage = null\n                        val e = task.exception\n                        if (e != null) promise.reject(mapApiException(e))\n                        else promise.reject(Exception(\"The task was not successful, but no Exception was thrown.\"))\n                    }\n                }\n            }\n        } else {\n            promise.reject(Exception(\"The Messages Client was null. Did the GoogleNearbyMessagesModule native constructor fail to execute?\"))\n        }\n    }\n\n    @ReactMethod\n    fun unpublish(promise: Promise) {\n        if (_messagesClient != null) {\n            if (_publishedMessage != null) {\n                _messagesClient!!.unpublish(_publishedMessage!!).addOnCompleteListener { task ->\n                    Log.d(name, \"GNM_BLE: Unpublished! Successful: ${task.isSuccessful}\")\n                    if (task.isSuccessful) {\n                        _publishedMessage = null\n                        promise.resolve(null)\n                    } else {\n                        val e = task.exception\n                        if (e != null) promise.reject(mapApiException(e))\n                        else promise.reject(Exception(\"The task was not successful, but no Exception was thrown.\"))\n                    }\n                }\n            }\n        } else {\n            promise.reject(Exception(\"The Messages Client was null. Did the GoogleNearbyMessagesModule native constructor fail to execute?\"))\n        }\n    }\n\n    @ReactMethod\n    fun checkBluetoothPermission(promise: Promise) {\n        val granted = ContextCompat.checkSelfPermission(reactApplicationContext, Manifest.permission.BLUETOOTH) == PackageManager.PERMISSION_GRANTED\n        val grantedAdmin = ContextCompat.checkSelfPermission(reactApplicationContext, Manifest.permission.BLUETOOTH_ADMIN) == PackageManager.PERMISSION_GRANTED\n        promise.resolve(granted && grantedAdmin)\n    }\n\n    @ReactMethod\n    fun checkBluetoothAvailability(promise: Promise) {\n        val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()\n        if (bluetoothAdapter == null) {\n            promise.resolve(false)\n        } else {\n            val isPlayServicesAvailable = isGooglePlayServicesAvailable(true)\n            promise.resolve(isPlayServicesAvailable && isMinimumAndroidVersion)\n        }\n    }\n\n    // Google Nearby Messages API Callbacks\n    fun handleOnFound(message: Message) {\n        if (message.content != null) {\n            val messageString = String(message.content)\n            Log.d(name, \"GNM_BLE: Found message: $messageString\")\n            emitMessageEvent(EventType.MESSAGE_FOUND, messageString)\n        } else {\n            emitMessageEvent(EventType.MESSAGE_NO_DATA_ERROR, \"message has no data!\")\n        }\n    }\n\n    fun handleOnLost(message: Message) {\n        if (message.content != null) {\n            val messageString = String(message.content)\n            Log.d(name, \"GNM_BLE: Lost message: $messageString\")\n            emitMessageEvent(EventType.MESSAGE_LOST, messageString)\n        } else {\n            emitMessageEvent(EventType.MESSAGE_NO_DATA_ERROR, \"message has no data!\")\n        }\n    }\n\n    private fun isGooglePlayServicesAvailable(showErrorDialog: Boolean): Boolean {\n        val googleApi = GoogleApiAvailability.getInstance()\n        val availability = googleApi.isGooglePlayServicesAvailable(context)\n        val result = availability == ConnectionResult.SUCCESS\n        if (!result &&\n                showErrorDialog &&\n                googleApi.isUserResolvableError(availability)) {\n            googleApi.getErrorDialog(currentActivity, availability, PLAY_SERVICES_RESOLUTION_REQUEST).show()\n        }\n        return result\n    }\n\n    // React Native Lifecycle Methods\n    override fun onHostResume() {\n        Log.d(name, \"GNM_BLE: onHostResume\")\n        // TODO: On Host Resume? I think the Nearby API automatically manages this using the context\n    }\n\n    override fun onHostPause() {\n        Log.d(name, \"GNM_BLE: onHostPause\")\n        // TODO: On Host Pause? I think the Nearby API automatically manages this using the context\n    }\n\n    override fun onHostDestroy() {\n        Log.d(name, \"GNM_BLE: onHostDestroy\")\n        // TODO: Does this fire twice? (Because of onCatalystInstanceDestroy, and maybe Nearby API onHostDestroy...)\n        disconnect()\n    }\n\n    override fun onCatalystInstanceDestroy() {\n        Log.d(name, \"GNM_BLE: onCatalystInstanceDestroy\")\n        disconnect()\n    }\n\n    override fun getName(): String {\n        return \"GoogleNearbyMessages\"\n    }\n\n    private fun mapApiException(e: Exception): Exception {\n        val apiException = if (e is ApiException) e else null\n        return if (apiException != null) {\n            val descriptor = errorCodeToDescriptor(apiException.statusCode)\n            Exception(apiException.statusCode.toString() + \": \" + descriptor + \". See: https://developers.google.com/android/reference/com/google/android/gms/nearby/messages/NearbyMessagesStatusCodes\")\n        } else {\n            e\n        }\n    }\n\n    /**\n     * Map API error code to descriptor - See: https://developers.google.com/android/reference/com/google/android/gms/nearby/messages/NearbyMessagesStatusCodes\n     * @param errorCode The code to map.\n     * @return A descriptor for the error code. Or null.\n     */\n    private fun errorCodeToDescriptor(errorCode: Int): String {\n        return when (errorCode) {\n            2802 -> \"APP_NOT_OPTED_IN\"\n            2804 -> \"APP_QUOTA_LIMIT_REACHED\"\n            2821 -> \"BLE_ADVERTISING_UNSUPPORTED\"\n            2822 -> \"BLE_SCANNING_UNSUPPORTED\"\n            2820 -> \"BLUETOOTH_OFF\"\n            2803 -> \"DISALLOWED_CALLING_CONTEXT\"\n            2806 -> \"FORBIDDEN\"\n            2807 -> \"MISSING_PERMISSIONS\"\n            2805 -> \"NOT_AUTHORIZED\"\n            2801 -> \"TOO_MANY_PENDING_INTENTS\"\n            else -> \"UNKNOWN_ERROR\"\n        }\n    }\n\n    private fun parseDiscoveryModes(discoveryModes: ReadableArray): Int {\n        var discoveryMode = 0\n        val list = discoveryModes.toArrayList()\n        if (list.size == 0) return defaultDiscoveryModes\n\n        for (mode in list) {\n            val modeLower = mode.toString().toLowerCase(Locale.ROOT)\n            when (modeLower) {\n                \"broadcast\" -> discoveryMode = discoveryMode or Strategy.DISCOVERY_MODE_BROADCAST\n                \"scan\" -> discoveryMode = discoveryMode or Strategy.DISCOVERY_MODE_SCAN\n            }\n        }\n        return discoveryMode\n    }\n\n    // TODO: I don't know if that's parsing the right values. There are no docs for this.\n    // TODO: Strategy.java has zze() which maps BLE-only to 2. But are the other ones correct? Ultrasound is 4, here it is 6??\n    private fun parseDiscoveryMediums(discoveryMediums: ReadableArray): Int {\n        var discoveryMedium = 0\n        val list = discoveryMediums.toArrayList()\n        if (list.size == 0) return defaultDiscoveryMediums\n\n        for (medium in list) {\n            val mediumLower = medium.toString().toLowerCase(Locale.ROOT)\n            when (mediumLower) {\n                \"ble\" -> discoveryMedium = discoveryMedium or BetterStrategy.DISCOVERY_MEDIUM_BLE\n                \"audio\" ->  discoveryMedium = discoveryMedium or BetterStrategy.DISCOVERY_MEDIUM_AUDIO\n                // only supported on android, these are not tested!!\n                \"bluetooth\" -> discoveryMedium = discoveryMedium or NearbyPermissions.BLUETOOTH\n                \"default\" ->  discoveryMedium = discoveryMedium or BetterStrategy.DISCOVERY_MEDIUM_DEFAULT\n                \"none\" ->  discoveryMedium = discoveryMedium or NearbyPermissions.NONE\n            }\n        }\n        return discoveryMedium\n    }\n\n    private fun parsePermissionOptions(discoveryMediums: ReadableArray): Int {\n        var permissions = 0\n        val list = discoveryMediums.toArrayList()\n        if (list.size == 0) return defaultPermissions\n\n        for (medium in list) {\n            val mediumLower = medium.toString().toLowerCase(Locale.ROOT)\n            when (mediumLower) {\n                \"ble\" -> permissions = permissions or NearbyPermissions.BLE\n                \"audio\" ->  permissions = permissions or NearbyPermissions.MICROPHONE\n                // only supported on android, these are not tested!!\n                \"bluetooth\" -> permissions = permissions or NearbyPermissions.BLUETOOTH\n                \"default\" ->  permissions = permissions or NearbyPermissions.DEFAULT\n                \"none\" ->  permissions = permissions or NearbyPermissions.NONE\n            }\n        }\n        return permissions\n    }\n\n    // React Native Event Emitters\n    private fun emitMessageEvent(event: EventType, message: String) {\n        val params = Arguments.createMap()\n        params.putString(\"message\", message)\n        val context = reactApplicationContext\n        context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java).emit(event.toString(), params)\n    }\n\n    private fun emitErrorEvent(event: EventType, message: String?) {\n        val params = Arguments.createMap()\n        if (message != null) {\n            params.putString(\"message\", message)\n        }\n        val context = reactApplicationContext\n        context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java).emit(event.toString(), params)\n    }\n\n    companion object {\n        private const val PLAY_SERVICES_RESOLUTION_REQUEST = 9000\n    }\n\n    init {\n        reactContext.addLifecycleEventListener(this)\n    }\n}\n"
  },
  {
    "path": "android/src/main/java/com/mrousavy/nearby/GoogleNearbyMessagesPackage.kt",
    "content": "package com.mrousavy.nearby\n\nimport com.facebook.react.ReactPackage\nimport com.facebook.react.bridge.JavaScriptModule\nimport com.facebook.react.bridge.NativeModule\nimport com.facebook.react.bridge.ReactApplicationContext\nimport com.facebook.react.uimanager.ViewManager\nimport java.util.*\n\nclass GoogleNearbyMessagesPackage : ReactPackage {\n    override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {\n        return Arrays.asList<NativeModule>(GoogleNearbyMessagesModule(reactContext))\n    }\n\n    fun createJSModules(): List<Class<out JavaScriptModule?>>? {\n        // deprecated in react native 0.47\n        return null\n    }\n\n    override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {\n        return emptyList()\n    }\n}"
  },
  {
    "path": "example/.buckconfig",
    "content": "\n[android]\n  target = Google Inc.:Google APIs:23\n\n[maven_repositories]\n  central = https://repo1.maven.org/maven2\n"
  },
  {
    "path": "example/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  extends: '@react-native-community',\n};\n"
  },
  {
    "path": "example/.flowconfig",
    "content": "[ignore]\n; We fork some components by platform\n.*/*[.]android.js\n\n; Ignore \"BUCK\" generated dirs\n<PROJECT_ROOT>/\\.buckd/\n\n; Ignore polyfills\nnode_modules/react-native/Libraries/polyfills/.*\n\n; These should not be required directly\n; require from fbjs/lib instead: require('fbjs/lib/warning')\nnode_modules/warning/.*\n\n; Flow doesn't support platforms\n.*/Libraries/Utilities/LoadingView.js\n\n[untyped]\n.*/node_modules/@react-native-community/cli/.*/.*\n\n[include]\n\n[libs]\nnode_modules/react-native/interface.js\nnode_modules/react-native/flow/\n\n[options]\nemoji=true\n\nesproposal.optional_chaining=enable\nesproposal.nullish_coalescing=enable\n\nmodule.file_ext=.js\nmodule.file_ext=.json\nmodule.file_ext=.ios.js\n\nmunge_underscores=true\n\nmodule.name_mapper='^react-native/\\(.*\\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\\1'\nmodule.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\\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'\n\nsuppress_type=$FlowIssue\nsuppress_type=$FlowFixMe\nsuppress_type=$FlowFixMeProps\nsuppress_type=$FlowFixMeState\n\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowFixMe\\\\($\\\\|[^(]\\\\|(\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native\\\\(_ios\\\\)?_\\\\(oss\\\\|fb\\\\)[a-z,_]*\\\\)?)\\\\)\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowIssue\\\\((\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native\\\\(_ios\\\\)?_\\\\(oss\\\\|fb\\\\)[a-z,_]*\\\\)?)\\\\)?:? #[0-9]+\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowExpectedError\n\n[lints]\nsketchy-null-number=warn\nsketchy-null-mixed=warn\nsketchy-number=warn\nuntyped-type-import=warn\nnonstrict-import=warn\ndeprecated-type=warn\nunsafe-getters-setters=warn\ninexact-spread=warn\nunnecessary-invariant=warn\nsignature-verification-failure=warn\ndeprecated-utility=error\n\n[strict]\ndeprecated-type\nnonstrict-import\nsketchy-null\nunclear-type\nunsafe-getters-setters\nuntyped-import\nuntyped-type-import\n\n[version]\n^0.113.0\n"
  },
  {
    "path": "example/.gitattributes",
    "content": "*.pbxproj -text\n"
  },
  {
    "path": "example/.gitignore",
    "content": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# BUCK\nbuck-out/\n\\.buckd/\n*.keystore\n!debug.keystore\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/\n\n*/fastlane/report.xml\n*/fastlane/Preview.html\n*/fastlane/screenshots\n\n# Bundle artifact\n*.jsbundle\n\n# CocoaPods\n/ios/Pods/\n"
  },
  {
    "path": "example/.prettierrc.js",
    "content": "module.exports = {\n  bracketSpacing: false,\n  jsxBracketSameLine: true,\n  singleQuote: true,\n  trailingComma: 'all',\n};\n"
  },
  {
    "path": "example/.watchmanconfig",
    "content": "{}"
  },
  {
    "path": "example/App.js",
    "content": "/**\n * Sample React Native App\n *\n * adapted from App.js generated by the following command:\n *\n * react-native init example\n *\n * https://github.com/facebook/react-native\n */\n\nimport React, {useState, useCallback, useEffect} from 'react';\nimport {StyleSheet, Text, View, Alert} from 'react-native';\nimport {\n  connect,\n  publish,\n  subscribe,\n  checkBluetoothPermission,\n  checkBluetoothAvailability,\n  useNearbyErrorCallback,\n  disconnect,\n} from 'react-native-google-nearby-messages';\nimport {getDeviceName} from 'react-native-device-info';\n\nconst API_KEY = '<yourapikey>';\n\nexport default function App() {\n  const [nearbyMessage, setNearbyMessage] = useState('');\n\n  useNearbyErrorCallback(\n    useCallback((kind, message) => {\n      Alert.alert(kind, message);\n    }, []),\n  );\n\n  const _connect = useCallback(async () => {\n    console.log('Connecting...');\n    await connect({\n      apiKey: API_KEY,\n      discoveryModes: ['broadcast', 'scan'],\n      discoveryMediums: ['ble'],\n    });\n    console.log('Connected!');\n    return () => disconnect();\n  }, []);\n  const _publish = useCallback(async () => {\n    const deviceName = await getDeviceName();\n    console.log(`Publishing \"${deviceName}\"...`);\n    await publish(deviceName);\n    console.log(`Published \"${deviceName}\"!`);\n  }, []);\n  const _subscribe = useCallback(async () => {\n    console.log('Subscribing...');\n    await subscribe(\n      (m) => {\n        setNearbyMessage(m);\n        console.log(`Found: ${JSON.stringify(m)}`);\n      },\n      (m) => {\n        setNearbyMessage('');\n        console.log(`Lost: ${JSON.stringify(m)}`);\n      },\n    );\n    console.log('Subscribed!');\n  }, []);\n  const _checkPermissions = useCallback(async () => {\n    const permission = await checkBluetoothPermission();\n    const available = await checkBluetoothAvailability();\n    Alert.alert(\n      'Bluetooth Permissions:',\n      `Granted: ${permission}, Available: ${available}`,\n    );\n  }, []);\n\n  useEffect(() => {\n    const start = async () => {\n      try {\n        await _checkPermissions();\n\n        await _connect();\n        await _subscribe();\n        await _publish();\n      } catch (e) {\n        Alert.alert(\n          'Unknown error occured while connecting!',\n          JSON.stringify(e.message ?? e),\n        );\n      }\n    };\n\n    start();\n    return () => disconnect();\n  }, [_connect, _subscribe, _publish, _checkPermissions]);\n\n  return (\n    <View style={styles.container}>\n      <Text style={styles.welcome}>☆GoogleNearbyMessages example☆</Text>\n      <Text style={styles.welcome}>Nearby Message:</Text>\n      <Text style={styles.instructions}>{nearbyMessage}</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#F5FCFF',\n  },\n  welcome: {\n    fontSize: 20,\n    textAlign: 'center',\n    margin: 10,\n  },\n  instructions: {\n    textAlign: 'center',\n    color: '#333333',\n    marginBottom: 5,\n  },\n});\n"
  },
  {
    "path": "example/__tests__/App-test.js",
    "content": "/**\n * @format\n */\n\nimport 'react-native';\nimport React from 'react';\nimport App from '../App';\n\n// Note: test renderer must be required after react-native.\nimport renderer from 'react-test-renderer';\n\nit('renders correctly', () => {\n  renderer.create(<App />);\n});\n"
  },
  {
    "path": "example/android/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>example</name>\n\t<comment>Project android created by Buildship.</comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.buildship.core.gradleprojectbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>org.eclipse.buildship.core.gradleprojectnature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": "example/android/.settings/org.eclipse.buildship.core.prefs",
    "content": "arguments=\nauto.sync=false\nbuild.scans.enabled=false\nconnection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)\nconnection.project.dir=\neclipse.preferences.version=1\ngradle.user.home=\njava.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home\njvm.arguments=\noffline.mode=false\noverride.workspace.settings=true\nshow.console.view=true\nshow.executions.view=true\n"
  },
  {
    "path": "example/android/app/.classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.buildship.core.gradleclasspathcontainer\"/>\n\t<classpathentry kind=\"output\" path=\"bin/default\"/>\n</classpath>\n"
  },
  {
    "path": "example/android/app/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>app</name>\n\t<comment>Project app created by Buildship.</comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.buildship.core.gradleprojectbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\n\t\t<nature>org.eclipse.buildship.core.gradleprojectnature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": "example/android/app/.settings/org.eclipse.buildship.core.prefs",
    "content": "arguments=\nauto.sync=false\nbuild.scans.enabled=false\nconnection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3))\nconnection.project.dir=..\neclipse.preferences.version=1\ngradle.user.home=\njava.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home\njvm.arguments=\noffline.mode=false\noverride.workspace.settings=true\nshow.console.view=true\nshow.executions.view=true\n"
  },
  {
    "path": "example/android/app/BUCK",
    "content": "# To learn about Buck see [Docs](https://buckbuild.com/).\n# To run your application with Buck:\n# - install Buck\n# - `npm start` - to start the packager\n# - `cd android`\n# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n# - `buck install -r android/app` - compile, install and run application\n#\n\nload(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n\nlib_deps = []\n\ncreate_aar_targets(glob([\"libs/*.aar\"]))\n\ncreate_jar_targets(glob([\"libs/*.jar\"]))\n\nandroid_library(\n    name = \"all-libs\",\n    exported_deps = lib_deps,\n)\n\nandroid_library(\n    name = \"app-code\",\n    srcs = glob([\n        \"src/main/java/**/*.java\",\n    ]),\n    deps = [\n        \":all-libs\",\n        \":build_config\",\n        \":res\",\n    ],\n)\n\nandroid_build_config(\n    name = \"build_config\",\n    package = \"com.example\",\n)\n\nandroid_resource(\n    name = \"res\",\n    package = \"com.example\",\n    res = \"src/main/res\",\n)\n\nandroid_binary(\n    name = \"app\",\n    keystore = \"//android/keystores:debug\",\n    manifest = \"src/main/AndroidManifest.xml\",\n    package_type = \"debug\",\n    deps = [\n        \":app-code\",\n    ],\n)\n"
  },
  {
    "path": "example/android/app/build.gradle",
    "content": "apply plugin: \"com.android.application\"\n\nimport com.android.build.OutputFile\n\n/**\n * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n * and bundleReleaseJsAndAssets).\n * These basically call `react-native bundle` with the correct arguments during the Android build\n * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n * bundle directly from the development server. Below you can see all the possible configurations\n * and their defaults. If you decide to add a configuration block, make sure to add it before the\n * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n *\n * project.ext.react = [\n *   // the name of the generated asset file containing your JS bundle\n *   bundleAssetName: \"index.android.bundle\",\n *\n *   // the entry file for bundle generation. If none specified and\n *   // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n *   // default. Can be overridden with ENTRY_FILE environment variable.\n *   entryFile: \"index.android.js\",\n *\n *   // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format\n *   bundleCommand: \"ram-bundle\",\n *\n *   // whether to bundle JS and assets in debug mode\n *   bundleInDebug: false,\n *\n *   // whether to bundle JS and assets in release mode\n *   bundleInRelease: true,\n *\n *   // whether to bundle JS and assets in another build variant (if configured).\n *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n *   // The configuration property can be in the following formats\n *   //         'bundleIn${productFlavor}${buildType}'\n *   //         'bundleIn${buildType}'\n *   // bundleInFreeDebug: true,\n *   // bundleInPaidRelease: true,\n *   // bundleInBeta: true,\n *\n *   // whether to disable dev mode in custom build variants (by default only disabled in release)\n *   // for example: to disable dev mode in the staging build type (if configured)\n *   devDisabledInStaging: true,\n *   // The configuration property can be in the following formats\n *   //         'devDisabledIn${productFlavor}${buildType}'\n *   //         'devDisabledIn${buildType}'\n *\n *   // the root of your project, i.e. where \"package.json\" lives\n *   root: \"../../\",\n *\n *   // where to put the JS bundle asset in debug mode\n *   jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n *\n *   // where to put the JS bundle asset in release mode\n *   jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in debug mode\n *   resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in release mode\n *   resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n *\n *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n *   // date; if you have any other folders that you want to ignore for performance reasons (gradle\n *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n *   // for example, you might want to remove it from here.\n *   inputExcludes: [\"android/**\", \"ios/**\"],\n *\n *   // override which node gets called and with what additional arguments\n *   nodeExecutableAndArgs: [\"node\"],\n *\n *   // supply additional arguments to the packager\n *   extraPackagerArgs: []\n * ]\n */\n\nproject.ext.react = [\n    enableHermes: false,  // clean and rebuild if changing\n]\n\napply from: \"../../node_modules/react-native/react.gradle\"\n\n/**\n * Set this to true to create two separate APKs instead of one:\n *   - An APK that only works on ARM devices\n *   - An APK that only works on x86 devices\n * The advantage is the size of the APK is reduced by about 4MB.\n * Upload all the APKs to the Play Store and people will download\n * the correct one based on the CPU architecture of their device.\n */\ndef enableSeparateBuildPerCPUArchitecture = false\n\n/**\n * Run Proguard to shrink the Java bytecode in release builds.\n */\ndef enableProguardInReleaseBuilds = false\n\n/**\n * The preferred build flavor of JavaScriptCore.\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n * give correct results when using with locales other than en-US.  Note that\n * this variant is about 6MiB larger per architecture than default.\n */\ndef jscFlavor = 'org.webkit:android-jsc:+'\n\n/**\n * Whether to enable the Hermes VM.\n *\n * This should be set on project.ext.react and mirrored here.  If it is not set\n * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n * and the benefits of using Hermes will therefore be sharply reduced.\n */\ndef enableHermes = project.ext.react.get(\"enableHermes\", false);\n\nandroid {\n    compileSdkVersion rootProject.ext.compileSdkVersion\n\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n\n    defaultConfig {\n        applicationId \"com.example\"\n        minSdkVersion rootProject.ext.minSdkVersion\n        targetSdkVersion rootProject.ext.targetSdkVersion\n        versionCode 1\n        versionName \"1.0\"\n    }\n    splits {\n        abi {\n            reset()\n            enable enableSeparateBuildPerCPUArchitecture\n            universalApk false  // If true, also generate a universal APK\n            include \"armeabi-v7a\", \"x86\", \"arm64-v8a\", \"x86_64\"\n        }\n    }\n    signingConfigs {\n        debug {\n            storeFile file('debug.keystore')\n            storePassword 'android'\n            keyAlias 'androiddebugkey'\n            keyPassword 'android'\n        }\n    }\n    buildTypes {\n        debug {\n            signingConfig signingConfigs.debug\n        }\n        release {\n            // Caution! In production, you need to generate your own keystore file.\n            // see https://facebook.github.io/react-native/docs/signed-apk-android.\n            signingConfig signingConfigs.debug\n            minifyEnabled enableProguardInReleaseBuilds\n            proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n        }\n    }\n\n    packagingOptions {\n        pickFirst \"lib/armeabi-v7a/libc++_shared.so\"\n        pickFirst \"lib/arm64-v8a/libc++_shared.so\"\n        pickFirst \"lib/x86/libc++_shared.so\"\n        pickFirst \"lib/x86_64/libc++_shared.so\"\n    }\n\n    // applicationVariants are e.g. debug, release\n    applicationVariants.all { variant ->\n        variant.outputs.each { output ->\n            // For each separate APK per architecture, set a unique version code as described here:\n            // https://developer.android.com/studio/build/configure-apk-splits.html\n            def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n            def abi = output.getFilter(OutputFile.ABI)\n            if (abi != null) {  // null for the universal-debug, universal-release variants\n                output.versionCodeOverride =\n                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n            }\n\n        }\n    }\n}\n\ndependencies {\n    implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n    //noinspection GradleDynamicVersion\n    implementation \"com.facebook.react:react-native:+\"  // From node_modules\n\n    implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n\n    if (enableHermes) {\n        def hermesPath = \"../../node_modules/hermes-engine/android/\";\n        debugImplementation files(hermesPath + \"hermes-debug.aar\")\n        releaseImplementation files(hermesPath + \"hermes-release.aar\")\n    } else {\n        implementation jscFlavor\n    }\n}\n\n// Run this once to be able to run the application with BUCK\n// puts all compile dependencies into folder libs for BUCK to use\ntask copyDownloadableDepsToLibs(type: Copy) {\n    from configurations.compile\n    into 'libs'\n}\n\napply from: file(\"../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle\"); applyNativeModulesAppBuildGradle(project)\n"
  },
  {
    "path": "example/android/app/build_defs.bzl",
    "content": "\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n\ndef create_aar_targets(aarfiles):\n    for aarfile in aarfiles:\n        name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n        lib_deps.append(\":\" + name)\n        android_prebuilt_aar(\n            name = name,\n            aar = aarfile,\n        )\n\ndef create_jar_targets(jarfiles):\n    for jarfile in jarfiles:\n        name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n        lib_deps.append(\":\" + name)\n        prebuilt_jar(\n            name = name,\n            binary_jar = jarfile,\n        )\n"
  },
  {
    "path": "example/android/app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n"
  },
  {
    "path": "example/android/app/src/debug/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\">\n\n    <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n\n    <application android:usesCleartextTraffic=\"true\" tools:targetApi=\"28\" tools:ignore=\"GoogleAppIndexingWarning\" />\n</manifest>\n"
  },
  {
    "path": "example/android/app/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n  package=\"com.example\">\n\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n    <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />\n    <uses-permission android:name=\"android.permission.BLUETOOTH\" />\n    <uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />\n    <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />\n\n    <application\n      android:name=\".MainApplication\"\n      android:label=\"@string/app_name\"\n      android:icon=\"@mipmap/ic_launcher\"\n      android:roundIcon=\"@mipmap/ic_launcher_round\"\n      android:allowBackup=\"false\"\n      android:theme=\"@style/AppTheme\">\n    <meta-data\n      android:name=\"com.google.android.nearby.messages.API_KEY\"\n      android:value=\"(yourapikey)\" />\n      <activity\n        android:name=\".MainActivity\"\n        android:label=\"@string/app_name\"\n        android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n        android:launchMode=\"singleTask\"\n        android:windowSoftInputMode=\"adjustResize\">\n        <intent-filter>\n            <action android:name=\"android.intent.action.MAIN\" />\n            <category android:name=\"android.intent.category.LAUNCHER\" />\n        </intent-filter>\n      </activity>\n      <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\" />\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "example/android/app/src/main/java/com/example/MainActivity.java",
    "content": "package com.example;\n\nimport com.facebook.react.ReactActivity;\n\npublic class MainActivity extends ReactActivity {\n\n  /**\n   * Returns the name of the main component registered from JavaScript. This is used to schedule\n   * rendering of the component.\n   */\n  @Override\n  protected String getMainComponentName() {\n    return \"example\";\n  }\n}\n"
  },
  {
    "path": "example/android/app/src/main/java/com/example/MainApplication.java",
    "content": "package com.example;\n\nimport android.app.Application;\nimport android.content.Context;\nimport com.facebook.react.PackageList;\nimport com.facebook.react.ReactApplication;\nimport com.facebook.react.ReactInstanceManager;\nimport com.facebook.react.ReactNativeHost;\nimport com.facebook.react.ReactPackage;\nimport com.facebook.soloader.SoLoader;\nimport java.lang.reflect.InvocationTargetException;\nimport java.util.List;\n\npublic class MainApplication extends Application implements ReactApplication {\n\n  private final ReactNativeHost mReactNativeHost =\n      new ReactNativeHost(this) {\n        @Override\n        public boolean getUseDeveloperSupport() {\n          return BuildConfig.DEBUG;\n        }\n\n        @Override\n        protected List<ReactPackage> getPackages() {\n          @SuppressWarnings(\"UnnecessaryLocalVariable\")\n          List<ReactPackage> packages = new PackageList(this).getPackages();\n          // Packages that cannot be autolinked yet can be added manually here, for example:\n          // packages.add(new MyReactNativePackage());\n          return packages;\n        }\n\n        @Override\n        protected String getJSMainModuleName() {\n          return \"index\";\n        }\n      };\n\n  @Override\n  public ReactNativeHost getReactNativeHost() {\n    return mReactNativeHost;\n  }\n\n  @Override\n  public void onCreate() {\n    super.onCreate();\n    SoLoader.init(this, /* native exopackage */ false);\n  }\n}\n"
  },
  {
    "path": "example/android/app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">example</string>\n</resources>\n"
  },
  {
    "path": "example/android/app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">\n        <!-- Customize your theme here. -->\n        <item name=\"android:textColor\">#000000</item>\n    </style>\n\n</resources>\n"
  },
  {
    "path": "example/android/build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    ext {\n        buildToolsVersion = \"28.0.3\"\n        minSdkVersion = 16\n        compileSdkVersion = 28\n        targetSdkVersion = 28\n    }\n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath('com.android.tools.build:gradle:4.0.0')\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        mavenLocal()\n        maven {\n            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n            url(\"$rootDir/../node_modules/react-native/android\")\n        }\n        maven {\n            // Android JSC is installed from npm\n            url(\"$rootDir/../node_modules/jsc-android/dist\")\n        }\n\n        google()\n        jcenter()\n        maven { url 'https://www.jitpack.io' }\n    }\n}\n"
  },
  {
    "path": "example/android/gradle/wrapper/gradle-wrapper.properties",
    "content": "#Fri Jun 26 13:32:42 CEST 2020\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.1.1-all.zip\n"
  },
  {
    "path": "example/android/gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\n# Default value: -Xmx10248m -XX:MaxPermSize=256m\n# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n\n# AndroidX package structure to make it clearer which packages are bundled with the\n# Android operating system, and which are packaged with your app's APK\n# https://developer.android.com/topic/libraries/support-library/androidx-rn\nandroid.useAndroidX=true\n# Automatically convert third-party libraries to use AndroidX\nandroid.enableJetifier=true\n"
  },
  {
    "path": "example/android/gradlew",
    "content": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS='\"-Xmx64m\" \"-Xms64m\"'\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin or MSYS, switch paths to Windows format before running java\nif [ \"$cygwin\" = \"true\" -o \"$msys\" = \"true\" ] ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=$(save \"$@\")\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\n# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong\nif [ \"$(uname)\" = \"Darwin\" ] && [ \"$HOME\" = \"$PWD\" ]; then\n  cd \"$(dirname \"$0\")\"\nfi\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "example/android/gradlew.bat",
    "content": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \"License\");\n@rem you may not use this file except in compliance with the License.\n@rem You may obtain a copy of the License at\n@rem\n@rem      https://www.apache.org/licenses/LICENSE-2.0\n@rem\n@rem Unless required by applicable law or agreed to in writing, software\n@rem distributed under the License is distributed on an \"AS IS\" BASIS,\n@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n@rem See the License for the specific language governing permissions and\n@rem limitations under the License.\n@rem\n\n@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\"-Xmx64m\" \"-Xms64m\"\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto init\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto init\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:init\n@rem Get command-line arguments, handling Windows variants\n\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\n\n:win9xME_args\n@rem Slurp the command line arguments.\nset CMD_LINE_ARGS=\nset _SKIP=2\n\n:win9xME_args_slurp\nif \"x%~1\" == \"x\" goto execute\n\nset CMD_LINE_ARGS=%*\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "example/android/settings.gradle",
    "content": "rootProject.name = 'example'\napply from: file(\"../node_modules/@react-native-community/cli-platform-android/native_modules.gradle\"); applyNativeModulesSettingsGradle(settings)\ninclude ':app'\n"
  },
  {
    "path": "example/app.json",
    "content": "{\n  \"name\": \"example\",\n  \"displayName\": \"example\"\n}"
  },
  {
    "path": "example/babel.config.js",
    "content": "module.exports = {\n  presets: ['module:metro-react-native-babel-preset'],\n};\n"
  },
  {
    "path": "example/index.js",
    "content": "/**\n * @format\n */\n\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './app.json';\n\nAppRegistry.registerComponent(appName, () => App);\n"
  },
  {
    "path": "example/ios/Podfile",
    "content": "platform :ios, '9.0'\nrequire_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'\n\ntarget 'example' do\n  # Pods for example\n  pod 'FBLazyVector', :path => \"../node_modules/react-native/Libraries/FBLazyVector\"\n  pod 'FBReactNativeSpec', :path => \"../node_modules/react-native/Libraries/FBReactNativeSpec\"\n  pod 'RCTRequired', :path => \"../node_modules/react-native/Libraries/RCTRequired\"\n  pod 'RCTTypeSafety', :path => \"../node_modules/react-native/Libraries/TypeSafety\"\n  pod 'React', :path => '../node_modules/react-native/'\n  pod 'React-Core', :path => '../node_modules/react-native/'\n  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'\n  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'\n  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'\n  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'\n  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'\n  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'\n  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'\n  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'\n  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'\n  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'\n  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'\n  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'\n\n  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'\n  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'\n  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'\n  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'\n  pod 'ReactCommon/callinvoker', :path => \"../node_modules/react-native/ReactCommon\"\n  pod 'ReactCommon/turbomodule/core', :path => \"../node_modules/react-native/ReactCommon\"\n  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true\n\n  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'\n  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'\n  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'\n\n  target 'exampleTests' do\n    inherit! :complete\n    # Pods for testing\n  end\n\n  use_native_modules!\nend\n\ntarget 'example-tvOS' do\n  # Pods for example-tvOS\n\n  target 'example-tvOSTests' do\n    inherit! :search_paths\n    # Pods for testing\n  end\nend\n"
  },
  {
    "path": "example/ios/example/AppDelegate.h",
    "content": "#import <React/RCTBridgeDelegate.h>\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>\n\n@property (nonatomic, strong) UIWindow *window;\n\n@end\n"
  },
  {
    "path": "example/ios/example/AppDelegate.m",
    "content": "#import \"AppDelegate.h\"\n\n#import <React/RCTBridge.h>\n#import <React/RCTBundleURLProvider.h>\n#import <React/RCTRootView.h>\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];\n  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge\n                                                   moduleName:@\"example\"\n                                            initialProperties:nil];\n\n  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];\n\n  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n  UIViewController *rootViewController = [UIViewController new];\n  rootViewController.view = rootView;\n  self.window.rootViewController = rootViewController;\n  [self.window makeKeyAndVisible];\n  return YES;\n}\n\n- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n{\n#if DEBUG\n  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n#else\n  return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n#endif\n}\n\n@end\n"
  },
  {
    "path": "example/ios/example/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Powered by React Native\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"example\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "example/ios/example/Images.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "example/ios/example/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>example</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSBluetoothAlwaysUsageDescription</key>\n\t<string>always</string>\n\t<key>NSBluetoothPeripheralUsageDescription</key>\n\t<string>peripheral</string>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string>location when in usage</string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/example/main.m",
    "content": "#import <UIKit/UIKit.h>\n\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n  @autoreleasepool {\n    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n  }\n}\n"
  },
  {
    "path": "example/ios/example-tvOS/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string></string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/example-tvOSTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/example.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };\n\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };\n\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };\n\t\t83145B14818C64F5DCE4BB55 /* libPods-example-exampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FDB34E48327DC2214491D3 /* libPods-example-exampleTests.a */; };\n\t\t8DEFC0686C9180B55CAC7D57 /* libPods-example-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A57658E4C5BA5F797506396C /* libPods-example-tvOS.a */; };\n\t\tDE811789C736F4C583D0CC02 /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C1CC64997001FE3E149AAB19 /* libPods-example.a */; };\n\t\tFA1301B0BA8E31768777727E /* libPods-example-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF1FA09EDAF601D86A70AD6 /* libPods-example-tvOSTests.a */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 13B07F861A680F5B00A75B9A;\n\t\t\tremoteInfo = example;\n\t\t};\n\t\t2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;\n\t\t\tremoteInfo = \"example-tvOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = \"<group>\"; };\n\t\t00E356EE1AD99517003FC87E /* exampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t00E356F21AD99517003FC87E /* exampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exampleTests.m; sourceTree = \"<group>\"; };\n\t\t13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = example/AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\t13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = \"<group>\"; };\n\t\t13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = \"<group>\"; };\n\t\t13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = \"<group>\"; };\n\t\t23C585B7052D8E3B7A5F95A4 /* Pods-example-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-tvOS.release.xcconfig\"; path = \"Target Support Files/Pods-example-tvOS/Pods-example-tvOS.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"example-tvOS.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"example-tvOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t30A0AFF5950781BF4C453DF0 /* Pods-example-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-tvOSTests.debug.xcconfig\"; path = \"Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t50F2F58E897B5DF7C17E8055 /* Pods-example-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-exampleTests.release.xcconfig\"; path = \"Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t607E9FFFF1E7166FFD453206 /* Pods-example-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-tvOS.debug.xcconfig\"; path = \"Target Support Files/Pods-example-tvOS/Pods-example-tvOS.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t7520FB023C3ABE06CF612657 /* Pods-example-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-tvOSTests.release.xcconfig\"; path = \"Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t7BF1FA09EDAF601D86A70AD6 /* libPods-example-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-example-tvOSTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t81FDB34E48327DC2214491D3 /* libPods-example-exampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-example-exampleTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t8AD4AD2A61DFB716A2759526 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example.release.xcconfig\"; path = \"Target Support Files/Pods-example/Pods-example.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tA57658E4C5BA5F797506396C /* libPods-example-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-example-tvOS.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC1CC64997001FE3E149AAB19 /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-example.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };\n\t\tED2971642150620600B7C4FE /* 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; };\n\t\tF3A1C63AD29058936B7AC9F5 /* Pods-example-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example-exampleTests.debug.xcconfig\"; path = \"Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tFBD4AC223C782118043878F4 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-example.debug.xcconfig\"; path = \"Target Support Files/Pods-example/Pods-example.debug.xcconfig\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t00E356EB1AD99517003FC87E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t83145B14818C64F5DCE4BB55 /* libPods-example-exampleTests.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tDE811789C736F4C583D0CC02 /* libPods-example.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t8DEFC0686C9180B55CAC7D57 /* libPods-example-tvOS.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tFA1301B0BA8E31768777727E /* libPods-example-tvOSTests.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t00E356EF1AD99517003FC87E /* exampleTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F21AD99517003FC87E /* exampleTests.m */,\n\t\t\t\t00E356F01AD99517003FC87E /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = exampleTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00E356F01AD99517003FC87E /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F11AD99517003FC87E /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t13B07FAE1A68108700A75B9A /* example */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */,\n\t\t\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */,\n\t\t\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */,\n\t\t\t\t13B07FB51A68108700A75B9A /* Images.xcassets */,\n\t\t\t\t13B07FB61A68108700A75B9A /* Info.plist */,\n\t\t\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */,\n\t\t\t\t13B07FB71A68108700A75B9A /* main.m */,\n\t\t\t);\n\t\t\tname = example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2A0C98DA8AA79993EA97AC0E /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tFBD4AC223C782118043878F4 /* Pods-example.debug.xcconfig */,\n\t\t\t\t8AD4AD2A61DFB716A2759526 /* Pods-example.release.xcconfig */,\n\t\t\t\tF3A1C63AD29058936B7AC9F5 /* Pods-example-exampleTests.debug.xcconfig */,\n\t\t\t\t50F2F58E897B5DF7C17E8055 /* Pods-example-exampleTests.release.xcconfig */,\n\t\t\t\t607E9FFFF1E7166FFD453206 /* Pods-example-tvOS.debug.xcconfig */,\n\t\t\t\t23C585B7052D8E3B7A5F95A4 /* Pods-example-tvOS.release.xcconfig */,\n\t\t\t\t30A0AFF5950781BF4C453DF0 /* Pods-example-tvOSTests.debug.xcconfig */,\n\t\t\t\t7520FB023C3ABE06CF612657 /* Pods-example-tvOSTests.release.xcconfig */,\n\t\t\t);\n\t\t\tpath = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\tED2971642150620600B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\tC1CC64997001FE3E149AAB19 /* libPods-example.a */,\n\t\t\t\t81FDB34E48327DC2214491D3 /* libPods-example-exampleTests.a */,\n\t\t\t\tA57658E4C5BA5F797506396C /* libPods-example-tvOS.a */,\n\t\t\t\t7BF1FA09EDAF601D86A70AD6 /* libPods-example-tvOSTests.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t832341AE1AAA6A7D00B99B32 /* Libraries */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Libraries;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t83CBB9F61A601CBA00E9B192 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FAE1A68108700A75B9A /* example */,\n\t\t\t\t832341AE1AAA6A7D00B99B32 /* Libraries */,\n\t\t\t\t00E356EF1AD99517003FC87E /* exampleTests */,\n\t\t\t\t83CBBA001A601CBA00E9B192 /* Products */,\n\t\t\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */,\n\t\t\t\t2A0C98DA8AA79993EA97AC0E /* Pods */,\n\t\t\t);\n\t\t\tindentWidth = 2;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 2;\n\t\t\tusesTabs = 0;\n\t\t};\n\t\t83CBBA001A601CBA00E9B192 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07F961A680F5B00A75B9A /* example.app */,\n\t\t\t\t00E356EE1AD99517003FC87E /* exampleTests.xctest */,\n\t\t\t\t2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */,\n\t\t\t\t2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t00E356ED1AD99517003FC87E /* exampleTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"exampleTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tB5ECE3C5DBF1CC50EA73077B /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t00E356EA1AD99517003FC87E /* Sources */,\n\t\t\t\t00E356EB1AD99517003FC87E /* Frameworks */,\n\t\t\t\t00E356EC1AD99517003FC87E /* Resources */,\n\t\t\t\t3B79C42599EEB3CF8653413F /* [CP] Copy Pods Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = exampleTests;\n\t\t\tproductName = exampleTests;\n\t\t\tproductReference = 00E356EE1AD99517003FC87E /* exampleTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t13B07F861A680F5B00A75B9A /* example */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"example\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t95088169E73655D79F7CF6E1 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tFD10A7F022414F080027D42C /* Start Packager */,\n\t\t\t\t13B07F871A680F5B00A75B9A /* Sources */,\n\t\t\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */,\n\t\t\t\t13B07F8E1A680F5B00A75B9A /* Resources */,\n\t\t\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,\n\t\t\t\t7B5AC7E3CA8F0E54E4E446A2 /* [CP] Copy Pods Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = example;\n\t\t\tproductName = example;\n\t\t\tproductReference = 13B07F961A680F5B00A75B9A /* example.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E47A1E0B4A5D006451C7 /* example-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"example-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t4A03753EE45F25E193210CE8 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tFD10A7F122414F3F0027D42C /* Start Packager */,\n\t\t\t\t2D02E4771E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E4791E0B4A5D006451C7 /* Resources */,\n\t\t\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"example-tvOS\";\n\t\t\tproductName = \"example-tvOS\";\n\t\t\tproductReference = 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"example-tvOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tAE4524233C639EAEE8E2B116 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t2D02E48C1E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E48E1E0B4A5D006451C7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"example-tvOSTests\";\n\t\t\tproductName = \"example-tvOSTests\";\n\t\t\tproductReference = 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t83CBB9F71A601CBA00E9B192 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 1130;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t00E356ED1AD99517003FC87E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t\tTestTargetID = 13B07F861A680F5B00A75B9A;\n\t\t\t\t\t};\n\t\t\t\t\t13B07F861A680F5B00A75B9A = {\n\t\t\t\t\t\tDevelopmentTeam = CJW62Q77E7;\n\t\t\t\t\t\tLastSwiftMigration = 1120;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E47A1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E48F1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = 2D02E47A1E0B4A5D006451C7;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"example\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 83CBB9F61A601CBA00E9B192;\n\t\t\tproductRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t13B07F861A680F5B00A75B9A /* example */,\n\t\t\t\t00E356ED1AD99517003FC87E /* exampleTests */,\n\t\t\t\t2D02E47A1E0B4A5D006451C7 /* example-tvOS */,\n\t\t\t\t2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t00E356EC1AD99517003FC87E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8E1A680F5B00A75B9A /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,\n\t\t\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4791E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48E1E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native code and images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native Code And Images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n\t\t3B79C42599EEB3CF8653413F /* [CP] Copy Pods Resources */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/GNSSharedResources.bundle\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/ic_expand_more.xcassets\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/ic_nearby_48pt.xcassets\",\n\t\t\t);\n\t\t\tname = \"[CP] Copy Pods Resources\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GNSSharedResources.bundle\",\n\t\t\t\t\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Assets.car\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t4A03753EE45F25E193210CE8 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-example-tvOS-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t7B5AC7E3CA8F0E54E4E446A2 /* [CP] Copy Pods Resources */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/GNSSharedResources.bundle\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/ic_expand_more.xcassets\",\n\t\t\t\t\"${PODS_ROOT}/NearbyMessages/Resources/resources/ic_nearby_48pt.xcassets\",\n\t\t\t);\n\t\t\tname = \"[CP] Copy Pods Resources\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GNSSharedResources.bundle\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t95088169E73655D79F7CF6E1 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tAE4524233C639EAEE8E2B116 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-example-tvOSTests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tB5ECE3C5DBF1CC50EA73077B /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-example-exampleTests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tFD10A7F022414F080027D42C /* Start Packager */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Start Packager\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tFD10A7F122414F3F0027D42C /* Start Packager */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Start Packager\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"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\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t00E356EA1AD99517003FC87E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00E356F31AD99517003FC87E /* exampleTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F871A680F5B00A75B9A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,\n\t\t\t\t13B07FC11A68108700A75B9A /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4771E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,\n\t\t\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48C1E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 13B07F861A680F5B00A75B9A /* example */;\n\t\t\ttargetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;\n\t\t};\n\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 2D02E47A1E0B4A5D006451C7 /* example-tvOS */;\n\t\t\ttargetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FB21A68108700A75B9A /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tpath = example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t00E356F61AD99517003FC87E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = F3A1C63AD29058936B7AC9F5 /* Pods-example-exampleTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = exampleTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/example.app/example\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00E356F71AD99517003FC87E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 50F2F58E897B5DF7C17E8055 /* Pods-example-exampleTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tINFOPLIST_FILE = exampleTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/example.app/example\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t13B07F941A680F5B00A75B9A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = FBD4AC223C782118043878F4 /* Pods-example.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = CJW62Q77E7;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = example/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.mrousavy.react-native-nearby-example\";\n\t\t\t\tPRODUCT_NAME = example;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t13B07F951A680F5B00A75B9A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 8AD4AD2A61DFB716A2759526 /* Pods-example.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = CJW62Q77E7;\n\t\t\t\tINFOPLIST_FILE = example/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.mrousavy.react-native-nearby-example\";\n\t\t\t\tPRODUCT_NAME = example;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4971E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 607E9FFFF1E7166FFD453206 /* Pods-example-tvOS.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"example-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.example-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E4981E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 23C585B7052D8E3B7A5F95A4 /* Pods-example-tvOS.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"example-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.example-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4991E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 30A0AFF5950781BF4C453DF0 /* Pods-example-tvOSTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"example-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.example-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E49A1E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7520FB023C3ABE06CF612657 /* Pods-example-tvOSTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"example-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.example-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t83CBBA201A601CBA00E9B192 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(inherited)\\\"\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t83CBBA211A601CBA00E9B192 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(inherited)\\\"\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"exampleTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00E356F61AD99517003FC87E /* Debug */,\n\t\t\t\t00E356F71AD99517003FC87E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t13B07F941A680F5B00A75B9A /* Debug */,\n\t\t\t\t13B07F951A680F5B00A75B9A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"example-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4971E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E4981E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"example-tvOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4991E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E49A1E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t83CBBA201A601CBA00E9B192 /* Debug */,\n\t\t\t\t83CBBA211A601CBA00E9B192 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;\n}\n"
  },
  {
    "path": "example/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1130\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n               BuildableName = \"example-tvOS.app\"\n               BlueprintName = \"example-tvOS\"\n               ReferencedContainer = \"container:example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E48F1E0B4A5D006451C7\"\n               BuildableName = \"example-tvOSTests.xctest\"\n               BlueprintName = \"example-tvOSTests\"\n               ReferencedContainer = \"container:example.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"example-tvOS.app\"\n            BlueprintName = \"example-tvOS\"\n            ReferencedContainer = \"container:example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"example-tvOS.app\"\n            BlueprintName = \"example-tvOS\"\n            ReferencedContainer = \"container:example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1130\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n               BuildableName = \"example.app\"\n               BlueprintName = \"example\"\n               ReferencedContainer = \"container:example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"00E356ED1AD99517003FC87E\"\n               BuildableName = \"exampleTests.xctest\"\n               BlueprintName = \"exampleTests\"\n               ReferencedContainer = \"container:example.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"example.app\"\n            BlueprintName = \"example\"\n            ReferencedContainer = \"container:example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"example.app\"\n            BlueprintName = \"example\"\n            ReferencedContainer = \"container:example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "example/ios/example.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:example.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Pods/Pods.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/example.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreviewsEnabled</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/exampleTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "example/ios/exampleTests/exampleTests.m",
    "content": "#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n#import <React/RCTLog.h>\n#import <React/RCTRootView.h>\n\n#define TIMEOUT_SECONDS 600\n#define TEXT_TO_LOOK_FOR @\"Welcome to React\"\n\n@interface exampleTests : XCTestCase\n\n@end\n\n@implementation exampleTests\n\n- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test\n{\n  if (test(view)) {\n    return YES;\n  }\n  for (UIView *subview in [view subviews]) {\n    if ([self findSubviewInView:subview matching:test]) {\n      return YES;\n    }\n  }\n  return NO;\n}\n\n- (void)testRendersWelcomeScreen\n{\n  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];\n  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];\n  BOOL foundElement = NO;\n\n  __block NSString *redboxError = nil;\n#ifdef DEBUG\n  RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {\n    if (level >= RCTLogLevelError) {\n      redboxError = message;\n    }\n  });\n#endif\n\n  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {\n    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n\n    foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {\n      if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {\n        return YES;\n      }\n      return NO;\n    }];\n  }\n\n#ifdef DEBUG\n  RCTSetLogFunction(RCTDefaultLogFunction);\n#endif\n\n  XCTAssertNil(redboxError, @\"RedBox error: %@\", redboxError);\n  XCTAssertTrue(foundElement, @\"Couldn't find element with text '%@' in %d seconds\", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);\n}\n\n\n@end\n"
  },
  {
    "path": "example/metro.config.js",
    "content": "// metro.config.js\n//\n// with multiple workarounds for this issue with symlinks:\n// https://github.com/facebook/metro/issues/1\n//\n// with thanks to @johnryan (<https://github.com/johnryan>)\n// for the pointers to multiple workaround solutions here:\n// https://github.com/facebook/metro/issues/1#issuecomment-541642857\n//\n// see also this discussion:\n// https://github.com/brodybits/create-react-native-module/issues/232\n\nconst path = require('path')\n\nmodule.exports = {\n  // workaround for an issue with symlinks encountered starting with\n  // metro@0.55 / React Native 0.61\n  // (not needed with React Native 0.60 / metro@0.54)\n  resolver: {\n    extraNodeModules: new Proxy(\n      {},\n      { get: (_, name) => path.resolve('.', 'node_modules', name) }\n    )\n  },\n\n  // quick workaround for another issue with symlinks\n  watchFolders: ['.', '..']\n}\n"
  },
  {
    "path": "example/package.json",
    "content": "{\n  \"name\": \"example\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"android\": \"react-native run-android\",\n    \"ios\": \"react-native run-ios\",\n    \"start\": \"react-native start\",\n    \"test\": \"jest\",\n    \"lint\": \"eslint .\"\n  },\n  \"dependencies\": {\n    \"react\": \"16.11.0\",\n    \"react-native\": \"0.62.2\",\n    \"react-native-device-info\": \"^5.6.1\",\n    \"react-native-google-nearby-messages\": \"link:../\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.10.2\",\n    \"@babel/runtime\": \"^7.10.2\",\n    \"@react-native-community/eslint-config\": \"^1.1.0\",\n    \"babel-jest\": \"^26.0.1\",\n    \"eslint\": \"^7.1.0\",\n    \"jest\": \"^26.0.1\",\n    \"metro-react-native-babel-preset\": \"^0.59.0\",\n    \"react-test-renderer\": \"16.11.0\"\n  },\n  \"jest\": {\n    \"preset\": \"react-native\"\n  }\n}\n"
  },
  {
    "path": "index.ts",
    "content": "import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport { useEffect, useState, useCallback, useReducer } from 'react';\n\n\nconst { GoogleNearbyMessages } = NativeModules;\nconst nearbyEventEmitter = new NativeEventEmitter(GoogleNearbyMessages);\n\n/**\n * The error descriptor used to distinguish between error events\n */\nexport type ErrorType = 'BLUETOOTH_ERROR' | 'PERMISSION_ERROR' | 'MESSAGE_NO_DATA_ERROR';\n/**\n * Used to distinguish any event emitted by the library.\n */\nexport type EventType = 'MESSAGE_FOUND' | 'MESSAGE_LOST' | ErrorType;\n/**\n * Discovery Modes for the publish and subscribe API.\n *\n *\n * `'broadcast'`: To discover which devices are nearby, broadcast a pairing code for others to scan.\n *\n *\n * `'scan'`: To discover which devices are nearby, scan for other devices' pairing codes.\n *\n *\n * Use both (`['broadcast', 'scan']`) to combine broadcasting and scanning.\n */\nexport type DiscoveryMode = 'broadcast' | 'scan';\n/**\n * Discovery Mediums for the publish and subscribe API.\n *\n *\n * `'ble'`: Use Bluetooth Low Energy as a publish/subscribe medium.\n *\n *\n * `'audio'`: Use Microphone and Speakers as a publish/subscribe medium.\n *\n *\n * Use both (`['ble', 'audio']`) to combine bluetooth and audio.\n *\n * Note that on Android the values `'bluetooth'`, `'none'` and `'default'` are also accepted, but aren't guaranteed to work.\n */\nexport type DiscoveryMedium = 'ble' | 'audio';\n\n/**\n * The config used for the Nearby API connect function.\n */\nexport interface NearbyConfig {\n  /**\n   * The Google API key to use (only required on iOS) - @see https://console.developers.google.com/flows/enableapi?apiid=copresence&keyType=CLIENT_SIDE_IOS&reusekey=true\n   */\n  apiKey?: string;\n  /**\n   * _(optional)_ The modes used for discovering nearby devices (e.g.: Bluetooth Pairing codes). When `undefined`, the default discovery modes are used.\n   *\n   * @default ['broadcast', 'scan']\n   */\n  discoveryModes?: DiscoveryMode[];\n  /**\n   * _(optional)_ The mediums used for publishing and subscribing. When `undefined`, the default discovery mediums are used.\n   *\n   * Note that on Android the values `'bluetooth'`, `'none'` and `'default'` are also accepted, but aren't guaranteed to work.\n   *\n   * @default ['ble']\n   */\n  discoveryMediums?: DiscoveryMedium[];\n}\n\ninterface BridgeMessageEvent {\n  message?: string;\n}\ninterface BridgeErrorEvent {\n  message?: string;\n}\n\n/**\n * Initialize and connect the Google Nearby Messages API\n * @param config The Nearby API configuration object to use. Default: `{ discoveryModes: ['broadcast', 'scan'], discoveryMediums: ['ble'] }`\n * @returns An unsubscriber function to disconnect the Google Nearby Messages API\n * @example\n * const disconnect = await connect(API_KEY, ['broadcast', 'scan'], ['ble', 'audio']);\n * // ...\n * disconnect();\n */\nexport async function connect(config: NearbyConfig): Promise<() => void> {\n  let { apiKey, discoveryMediums, discoveryModes } = config;\n  if (discoveryModes == null || discoveryModes.length === 0) {\n    discoveryModes = ['broadcast', 'scan'];\n  }\n  if (discoveryMediums == null || discoveryMediums.length === 0) {\n    discoveryMediums = ['ble'];\n  }\n  if (Platform.OS === 'ios') {\n    if (apiKey == null) throw new Error('API Key is required on iOS!');\n    await GoogleNearbyMessages.connect(apiKey, discoveryModes, discoveryMediums);\n  } else {\n    await GoogleNearbyMessages.connect(discoveryModes, discoveryMediums);\n  }\n  return () => GoogleNearbyMessages.disconnect();\n}\n\n/**\n * Disconnect the Google Nearby Messages API. Also removes any existing subscriptions or publications.\n */\nexport function disconnect(): void {\n  GoogleNearbyMessages.disconnect();\n}\n\n/**\n * Subscribe to nearby message events. Use onMessageFound and onMessageLost to receive callbacks for found and lost messages. Always call unsubscribe() to stop publishing.\n  * @param onMessageFound (Optional) A function to call when a new message has been found\n  * @param onMessageLost  (Optional) A function to call when an existing message has been lost\n *  @returns A function to unsubscribe the subscription and remove the event emitters if supplied.\n *  @example\n *  const unsubscribe = await subscribe(\n *      (m) => console.log(`found: ${m}`),\n *      (m) => console.log(`lost: ${m}`)\n *  );\n *  // ...\n *  unsubscribe();\n */\nexport async function subscribe(onMessageFound?: (message?: string) => void, onMessageLost?: (message?: string) => void): Promise<() => void> {\n  await GoogleNearbyMessages.subscribe();\n  const onMessageFoundUnsubscribe = onMessageFound ? onEvent('MESSAGE_FOUND', onMessageFound) : undefined;\n  const onMessageLostUnsubscribe = onMessageLost ? onEvent('MESSAGE_LOST', onMessageLost) : undefined;\n  return () => {\n    if (onMessageFoundUnsubscribe) onMessageFoundUnsubscribe();\n    if (onMessageLostUnsubscribe) onMessageLostUnsubscribe();\n    unsubscribe();\n  };\n}\n\n/**\n * Unsubscribe the current subscription. Also removes all event listeners for `MESSAGE_FOUND` and `MESSAGE_LOST`.\n */\nexport function unsubscribe(): void {\n  GoogleNearbyMessages.unsubscribe();\n  removeAllListeners('MESSAGE_FOUND');\n  removeAllListeners('MESSAGE_LOST');\n}\n\n/**\n * Publish/Broadcast a new message. Always call unpublish() to stop publishing.\n * @param message The message to broadcast.\n * @returns An unsubscriber function to unpublish the currently published message.\n * @example\n * const unpublish = await publish('test');\n * // ...\n * await unpublish();\n */\nexport async function publish(message: string): Promise<() => Promise<void>> {\n  await GoogleNearbyMessages.publish(message);\n  return () => unpublish();\n}\n\n/**\n * Stop publishing the last message. Can only call after @see publish has been called.\n */\nexport function unpublish(): Promise<void> {\n  return GoogleNearbyMessages.unpublish();\n}\n\n/**\n * Checks if the app is allowed to use the Bluetooth API.\n *\n * **On Android**, this function checks if both `BLUETOOTH` and `BLUETOOTH_ADMIN` permissions are granted in the ContextCompat.\n *\n * **On iOS**, this function checks if the User has given Bluetooth Permission using the CoreBluetooth API (`CBManager.authorization`). If not yet asked, a \"grant permission?\" dialog will pop up.\n */\nexport function checkBluetoothPermission(): Promise<boolean> {\n  return GoogleNearbyMessages.checkBluetoothPermission();\n}\n\n/**\n * Checks if the device supports the Bluetooth operations required by Google Nearby Messages (BLE Publishing and Subscribing)\n *\n * **On Android**, this function checks if a `BluetoothAdapter` can be found, and if the Google Play Services are available (required for Google Nearby API).\n *\n * **On iOS**, this function powers on the `CBCentralManager` and returns `true` if it was successfully turned on. If no callback was sent within `10` seconds, a timeout error will be thrown.\n */\nexport function checkBluetoothAvailability(): Promise<boolean> {\n  return GoogleNearbyMessages.checkBluetoothAvailability();\n}\n\n/**\n * Subscribe to any errors.\n * @param callback The function to call when an error occurs. `kind` is the Error Type. e.g.: User turns Bluetooth off, callback gets called with ('BLUETOOTH_ERROR', \"Bluetooth is powered off/unavailable!\").\n */\nexport function addOnErrorListener(callback: (kind: ErrorType, message?: string) => void): () => void {\n  const listeners = [\n    onErrorEvent('BLUETOOTH_ERROR', (m) => callback('BLUETOOTH_ERROR', m)),\n    onErrorEvent('PERMISSION_ERROR', (m) => callback('PERMISSION_ERROR', m)),\n    onErrorEvent('MESSAGE_NO_DATA_ERROR', (m) => callback('MESSAGE_NO_DATA_ERROR', m)),\n  ];\n  return () => {\n    listeners.map(l => l());\n  };\n}\n\nfunction onEvent(event: EventType, callback: (message?: string) => void): () => void {\n  const subscription = nearbyEventEmitter.addListener(event, (data: BridgeMessageEvent) => callback(data.message));\n  return () => subscription.remove();\n}\n\nfunction onErrorEvent(event: ErrorType, callback: (message?: string) => void): () => void {\n  const subscription = nearbyEventEmitter.addListener(event, (data: BridgeErrorEvent) => callback(data.message));\n  return () => subscription.remove();\n}\n\nfunction removeAllListeners(event: EventType): void {\n  nearbyEventEmitter.removeAllListeners(event);\n}\n\n\n\n\n\n\n\n\n// MARK: React Hooks\n/**\n * The current status of the Google Nearby API (used in hooks)\n */\nexport type NearbyStatus = 'disconnected' | 'connecting' | 'published' | 'subscribed' | 'error' | 'denied' | 'unavailable';\n/**\n * The state of a current Subscription. (used in hooks)\n */\nexport interface SubscriptionState {\n  nearbyMessages: string[];\n  nearbyStatus: NearbyStatus;\n}\n/**\n * The state of a current Subscription-Search. (used in hooks)\n */\nexport interface SearchState {\n  isNearby: boolean;\n  nearbyStatus: NearbyStatus;\n}\n\n/**\n * Publish a simple message and return the current status of the nearby API.\n *\n * Also calls `checkBluetoothAvailability()` and `checkBluetoothPermission()`.\n * @param config The Nearby API configuration object to use. **Warning: Use `useMemo(..)` for the Object, otherwise you get an infinite loop of re-renders!**\n * @param message The message to publish\n * @returns The current status of the Nearby API\n * @example\n * export default function App() {\n *   const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n *   const nearbyStatus = useNearbyPublication(nearbyConfig, 'Hello from Nearby!');\n *   // ...\n * }\n */\nexport function useNearbyPublication(config: NearbyConfig, message: string): NearbyStatus {\n  const [nearbyStatus, setNearbyStatus] = useState<NearbyStatus>('connecting');\n\n  useEffect(() => {\n    const start = async () => {\n      try {\n        const available = await checkBluetoothAvailability();\n        if (!available) {\n          setNearbyStatus('unavailable');\n          return;\n        }\n        const permission = await checkBluetoothPermission();\n        if (!permission) {\n          setNearbyStatus('denied');\n          return;\n        }\n\n        await connect(config);\n        await publish(message);\n        setNearbyStatus('published');\n      } catch (e) {\n        setNearbyStatus('error');\n      }\n    };\n\n    start();\n    const removeListener = addOnErrorListener((kind, message) => {\n      console.log(`[NEARBY] Error: ${kind}: ${message}`);\n      setNearbyStatus('error');\n    });\n    return () => {\n      removeListener();\n      unpublish();\n      disconnect();\n      setNearbyStatus('disconnected');\n    };\n  }, [setNearbyStatus, config, message, setNearbyStatus]);\n\n  return nearbyStatus;\n}\n\ninterface ReducerPayload {\n\taddMessages?: string[];\n\tremoveMessages?: string[];\n}\n\nfunction reducer(messages: string[], payload: ReducerPayload): string[] {\n\tconst removeIndices = payload.removeMessages?.map((removeMessage) => messages.findIndex((message) => removeMessage === message));\n\tremoveIndices?.forEach((i) => {\n\t\tif (i > -1) messages.splice(i, 1);\n\t});\n\tpayload.addMessages?.forEach((u) => {\n\t\tif (messages.indexOf(u) === -1) messages.push(u);\n\t});\n\treturn [...messages];\n}\n\n/**\n * Subscribe to nearby messages and return an instance of the `SubscriptionState` object.\n *\n * Also calls `checkBluetoothAvailability()` and `checkBluetoothPermission()`.\n * @param config The Nearby API configuration object to use. **Warning: Use `useMemo(..)` for the Object, otherwise you get an infinite loop of re-renders!**\n * @returns A state of all nearby messages\n * @example\n * export default function App() {\n *   const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n *   const { nearbyMessages, nearbyStatus } = useNearbySubscription(nearbyConfig);\n *   return (\n *     <FlatList\n *       data={nearbyMessages}\n *       renderItem={({ item }) => <Text>{item}</Text>}\n *       />\n *   );\n * }\n */\nexport function useNearbySubscription(config: NearbyConfig): SubscriptionState {\n  const [nearbyMessages, dispatch] = useReducer(reducer, []);\n  const [nearbyStatus, setNearbyStatus] = useState<NearbyStatus>('connecting');\n\n  const messageFound = useCallback((message) => {\n    dispatch({ addMessages: [message] });\n  }, [dispatch]);\n  const messageLost = useCallback((message) => {\n    dispatch({ removeMessages: [message] });\n  }, [dispatch]);\n\n  useEffect(() => {\n    const start = async () => {\n      try {\n        const available = await checkBluetoothAvailability();\n        if (!available) {\n          setNearbyStatus('unavailable');\n          return;\n        }\n        const permission = await checkBluetoothPermission();\n        if (!permission) {\n          setNearbyStatus('denied');\n          return;\n        }\n\n        await connect(config);\n        await subscribe(messageFound, messageLost);\n        setNearbyStatus('subscribed');\n      } catch (e) {\n        setNearbyStatus('error');\n      }\n    };\n\n    start();\n    const removeListener = addOnErrorListener((kind, message) => {\n      console.log(`[NEARBY] Error: ${kind}: ${message}`);\n      setNearbyStatus('error');\n    });\n    return () => {\n      removeListener();\n      unpublish();\n      disconnect();\n      setNearbyStatus('disconnected');\n    };\n  }, [config, messageFound, messageLost, setNearbyStatus]);\n\n  return { nearbyMessages, nearbyStatus };\n}\n\n/**\n * Search for a specific message using the nearby messages API. Returns an instance of the `SearchState` interface.\n *\n * Also calls `checkBluetoothAvailability()` and `checkBluetoothPermission()`.\n * @param config The Nearby API configuration object to use. **Warning: Use `useMemo(..)` for the Object, otherwise you get an infinite loop of re-renders!**\n * @param searchFor The string to perform the nearby search for\n * @returns A state whether the message has been found or not.\n * @example\n * export default function App() {\n *   const nearbyConfig = useMemo<NearbyConfig>(() => ({ apiKey: GOOGLE_API_KEY }), []);\n *   const { isNearby, nearbyStatus } = useNearbySearch(nearbyConfig, 'iPhone 11');\n *   return (\n *     <Text>{isNearby ? 'iPhone 11 is nearby!' : 'iPhone 11 is far, far away.'}</Text>\n *   );\n * }\n */\nexport function useNearbySearch(config: NearbyConfig, searchFor: string): SearchState {\n  const [isNearby, setIsNearby] = useState(false);\n  const [nearbyStatus, setNearbyStatus] = useState<NearbyStatus>('connecting');\n\n  const messageFound = useCallback((message) => {\n    if (message === searchFor) setIsNearby(true);\n  }, [searchFor, setIsNearby]);\n  const messageLost = useCallback((message) => {\n    if (message === searchFor) setIsNearby(false);\n  }, [searchFor, setIsNearby]);\n\n  useEffect(() => {\n    const start = async () => {\n      try {\n        const available = await checkBluetoothAvailability();\n        if (!available) {\n          setNearbyStatus('unavailable');\n          return;\n        }\n        const permission = await checkBluetoothPermission();\n        if (!permission) {\n          setNearbyStatus('denied');\n          return;\n        }\n\n        await connect(config);\n        await subscribe(messageFound, messageLost);\n        setNearbyStatus('subscribed');\n      } catch (e) {\n        setNearbyStatus('error');\n      }\n    };\n\n    start();\n    const removeListener = addOnErrorListener((kind, message) => {\n      console.log(`[NEARBY] Error: ${kind}: ${message}`);\n      setNearbyStatus('error');\n    });\n    return () => {\n      removeListener();\n      unsubscribe();\n      disconnect();\n      setNearbyStatus('disconnected');\n    };\n  }, [config, messageFound, messageLost, setNearbyStatus]);\n\n  return { isNearby, nearbyStatus };\n}\n\n/**\n * Add an error listener which automatically disposes when the component unmounts.\n * @param callback The function to call when an error occurs.\n */\nexport function useNearbyErrorCallback(callback: (kind: ErrorType, message?: string) => void) {\n  useEffect(() => addOnErrorListener(callback), [callback])\n}\n"
  },
  {
    "path": "ios/GoogleNearbyMessages.swift",
    "content": "//\n//  GoogleNearbyMessages.swift\n//  GoogleNearbyMessages\n//\n//  Created by Marc Rousavy on 02.06.20.\n//  Copyright © 2020 Facebook. All rights reserved.\n//\n\nimport Foundation\nimport CoreBluetooth\n\nlet defaultDiscoveryModes: GNSDiscoveryMode = [.broadcast, .scan]\nlet defaultDiscoveryMediums: GNSDiscoveryMediums = .BLE\n\n@objc(NearbyMessages)\nclass NearbyMessages: RCTEventEmitter {\n\tenum EventType: String, CaseIterable {\n\t\tcase MESSAGE_FOUND\n\t\tcase MESSAGE_LOST\n\t\tcase BLUETOOTH_ERROR\n\t\tcase PERMISSION_ERROR\n\t\tcase MESSAGE_NO_DATA_ERROR\n\t}\n\tenum GoogleNearbyMessagesError: Error, LocalizedError {\n\t\tcase permissionError(permissionName: String)\n\t\tcase runtimeError(message: String)\n\n\t\tpublic var errorDescription: String? {\n\t\t\tswitch self {\n\t\t\tcase .permissionError(permissionName: let permissionName):\n\t\t\t\treturn \"Permission has been denied! Denied Permission: \\(permissionName). Make sure to include NSBluetoothPeripheralUsageDescription in your Info.plist!\"\n\t\t\tcase .runtimeError(message: let message):\n\t\t\t\treturn message\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprivate var messageManager: GNSMessageManager? = nil\n\tprivate var currentPublication: GNSPublication? = nil\n\tprivate var currentSubscription: GNSSubscription? = nil\n\tprivate var discoveryModes: GNSDiscoveryMode? = nil\n\tprivate var discoveryMediums: GNSDiscoveryMediums? = nil\n\t// workaround objects for checkBluetoothAvailability\n\tprivate var tempBluetoothManager: CBCentralManager? = nil\n\tprivate var tempBluetoothManagerDelegate: CBCentralManagerDelegate? = nil\n\tprivate var didCallback = false\n\n\t@objc(connect:discoveryModes:discoveryMediums:resolver:rejecter:)\n\tfunc connect(_ apiKey: String, discoveryModes: Array<NSString>, discoveryMediums: Array<NSString>, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {\n\t\tprint(\"GNM_BLE: Connecting...\")\n\t\t//GNSMessageManager.setDebugLoggingEnabled(true)\n\t\tself.discoveryMediums = parseDiscoveryMediums(discoveryMediums)\n\t\tself.discoveryModes = parseDiscoveryModes(discoveryModes)\n\t\tself.messageManager = GNSMessageManager(apiKey: apiKey,\n\t\t\t\t\t\t\t\t\t\t\t\tparamsBlock: { (params: GNSMessageManagerParams?) in\n\t\t\t\t\t\t\t\t\t\t\t\t\tguard let params = params else { return }\n\t\t\t\t\t\t\t\t\t\t\t\t\tparams.microphonePermissionErrorHandler = { (hasError: Bool) in\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (hasError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tself.sendEvent(withName: EventType.PERMISSION_ERROR.rawValue, body: [ \"message\": \"Microphone Permission denied!\" ])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tparams.bluetoothPowerErrorHandler = { (hasError: Bool) in\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (hasError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tself.sendEvent(withName: EventType.BLUETOOTH_ERROR.rawValue, body: [ \"message\": \"Bluetooth is powered off/unavailable!\" ])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tparams.bluetoothPermissionErrorHandler = { (hasError: Bool) in\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (hasError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tself.sendEvent(withName: EventType.PERMISSION_ERROR.rawValue, body: [ \"message\": \"Bluetooth Permission denied!\" ])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\n\t\t})\n\t\tresolve(nil)\n\t}\n\n\t@objc\n\tfunc disconnect() -> Void {\n\t\tprint(\"GNM_BLE: Disconnecting...\")\n\t\t// TODO: is setting nil enough garbage collection? no need for CFRetain, CFRelease, or CFAutorelease?\n\t\tself.currentSubscription = nil\n\t\tself.currentPublication = nil\n\t\tself.messageManager = nil\n\t}\n\n\t@objc(publish:resolver:rejecter:)\n\tfunc publish(_ message: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {\n\t\tprint(\"GNM_BLE: Publishing...\")\n\t\tdo {\n\t\t\tif (self.messageManager == nil) {\n\t\t\t\tthrow GoogleNearbyMessagesError.runtimeError(message: \"Google Nearby Messages is not connected! Call connect() before any other calls.\")\n\t\t\t}\n\t\t\tself.currentPublication = self.messageManager!.publication(with: GNSMessage(content: message.data(using: .utf8)),\n\t\t\t\tparamsBlock: { (params: GNSPublicationParams?) in\n\t\t\t\t\tguard let params = params else { return }\n\t\t\t\t\tparams.strategy = GNSStrategy(paramsBlock: { (params: GNSStrategyParams?) in\n\t\t\t\t\t\tguard let params = params else { return }\n\t\t\t\t\t\tparams.discoveryMediums = self.discoveryMediums ?? defaultDiscoveryMediums\n\t\t\t\t\t\tparams.discoveryMode = self.discoveryModes ?? defaultDiscoveryModes\n\t\t\t\t\t})\n\t\t\t})\n\t\t\tresolve(nil)\n\t\t} catch {\n\t\t\treject(\"GOOGLE_NEARBY_MESSAGES_ERROR_PUBLISH\", error.localizedDescription, error)\n\t\t}\n\t}\n\n\t@objc(subscribe:rejecter:)\n\tfunc unpublish(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {\n\t\tprint(\"GNM_BLE: Unpublishing...\")\n\t\tself.currentPublication = nil\n\t\tresolve(nil)\n\t}\n\n\t@objc(subscribe:rejecter:)\n\tfunc subscribe(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {\n\t\tprint(\"GNM_BLE: Subscribing...\")\n\t\tdo {\n\t\t\tif (self.messageManager == nil) {\n\t\t\t\tthrow GoogleNearbyMessagesError.runtimeError(message: \"Google Nearby Messages is not connected! Call connect() before any other calls.\")\n\t\t\t}\n\t\t\tself.currentSubscription = self.messageManager!.subscription(\n\t\t\t\tmessageFoundHandler: { (message: GNSMessage?) in\n\t\t\t\t\tguard let data = message?.content else {\n\t\t\t\t\t\tself.sendEvent(withName: EventType.MESSAGE_NO_DATA_ERROR.rawValue, body: [ \"message\": \"Message does not have any Data!\" ] )\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tprint(\"GNM_BLE: Found message!\")\n\t\t\t\t\tself.sendEvent(withName: EventType.MESSAGE_FOUND.rawValue, body: [ \"message\": String(data: data, encoding: .utf8) ]);\n\t\t\t\t},\n\t\t\t\tmessageLostHandler: { (message: GNSMessage?) in\n\t\t\t\t\tguard let data = message?.content else {\n\t\t\t\t\t\tself.sendEvent(withName: EventType.MESSAGE_NO_DATA_ERROR.rawValue, body: [ \"message\": \"Message does not have any Data!\" ] )\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tprint(\"GNM_BLE: Lost message!\")\n\t\t\t\t\tself.sendEvent(withName: EventType.MESSAGE_LOST.rawValue, body: [ \"message\": String(data: data, encoding: .utf8) ]);\n\t\t\t\t},\n\t\t\t\tparamsBlock: { (params: GNSSubscriptionParams?) in\n\t\t\t\t  guard let params = params else { return }\n\t\t\t\t  params.strategy = GNSStrategy(paramsBlock: { (params: GNSStrategyParams?) in\n\t\t\t\t\tguard let params = params else { return }\n\t\t\t\t\tparams.discoveryMediums = self.discoveryMediums ?? defaultDiscoveryMediums\n\t\t\t\t\tparams.discoveryMode = self.discoveryModes ?? defaultDiscoveryModes\n\t\t\t\t  })\n\t\t\t\t})\n\t\t\tresolve(nil)\n\t\t} catch {\n\t\t\treject(\"GOOGLE_NEARBY_MESSAGES_ERROR_SUBSCRIBE\", error.localizedDescription, error)\n\t\t}\n\t}\n\n\t@objc\n\tfunc unsubscribe() -> Void {\n\t\tprint(\"GNM_BLE: Unsubscribing...\")\n\t\tself.currentSubscription = nil\n\t}\n\n\t@objc(checkBluetoothPermission:rejecter:)\n\tfunc checkBluetoothPermission(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {\n\t\tprint(\"GNM_BLE: Checking Bluetooth Permissions...\")\n\t\tlet hasBluetoothPermission = self.hasBluetoothPermission()\n\t\tresolve(hasBluetoothPermission)\n\t}\n\n\t@objc(checkBluetoothAvailability:rejecter:)\n\tfunc checkBluetoothAvailability(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {\n\t\tif (self.tempBluetoothManager != nil || self.tempBluetoothManagerDelegate != nil) {\n\t\t\tlet error = GoogleNearbyMessagesError.runtimeError(message: \"Another Bluetooth availability check is already in progress!\")\n\t\t\treject(\"GOOGLE_NEARBY_MESSAGES_CHECKBLUETOOTH_ERROR\", error.localizedDescription, error)\n\t\t\treturn\n\t\t}\n\t\tself.didCallback = false\n\t\tclass BluetoothManagerDelegate : NSObject, CBCentralManagerDelegate {\n\t\t\tprivate var promiseResolver: RCTPromiseResolveBlock\n\t\t\tprivate weak var parentReference: NearbyMessages?\n\t\t\tinit(resolver: @escaping RCTPromiseResolveBlock, parentReference: NearbyMessages) {\n\t\t\t\tself.promiseResolver = resolver\n\t\t\t\tself.parentReference = parentReference\n\t\t\t}\n\n\t\t\tfunc centralManagerDidUpdateState(_ central: CBCentralManager) {\n\t\t\t\tguard let parent = parentReference else {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (!parent.didCallback) {\n\t\t\t\t\tparent.didCallback = true\n\t\t\t\t\tprint(\"GNM_BLE: CBCentralManager did update state with \\(central.state.rawValue)\")\n\t\t\t\t\tself.promiseResolver(central.state == .poweredOn)\n\t\t\t\t\tparent.tempBluetoothManager = nil\n\t\t\t\t\tparent.tempBluetoothManagerDelegate = nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttempBluetoothManagerDelegate = BluetoothManagerDelegate(resolver: resolve, parentReference: self)\n\t\ttempBluetoothManager = CBCentralManager(delegate: tempBluetoothManagerDelegate, queue: nil)\n\n\t\tDispatchQueue.main.asyncAfter(deadline: .now() + .seconds(10)) {\n\t\t\tif (!self.didCallback) {\n\t\t\t\tself.didCallback = true\n\t\t\t\tlet error = GoogleNearbyMessagesError.runtimeError(message: \"The CBCentralManager (Bluetooth) did not power on after 10 seconds. Cancelled execution.\")\n\t\t\t\treject(\"GOOGLE_NEARBY_MESSAGES_CHECKBLUETOOTH_TIMEOUT\", error.localizedDescription, error)\n\t\t\t\tself.tempBluetoothManager = nil\n\t\t\t\tself.tempBluetoothManagerDelegate = nil\n\t\t\t}\n\t\t}\n\t}\n\n\tfunc hasBluetoothPermission() -> Bool {\n\t\tif #available(iOS 13.1, *) {\n\t\t\treturn CBCentralManager.authorization == .allowedAlways\n\t\t} else if #available(iOS 13.0, *) {\n\t\t\treturn CBCentralManager().authorization == .allowedAlways\n\t\t}\n\t\t// Before iOS 13, Bluetooth permissions are not required\n\t\treturn true\n\t}\n\n\toverride func supportedEvents() -> [String]! {\n\t\treturn EventType.allCases.map { (event: EventType) -> String in\n\t\t\treturn event.rawValue\n\t\t}\n\t}\n\n\t@objc\n\toverride static func requiresMainQueueSetup() -> Bool {\n\t\t// init on main thread, audio doesn't work on background thread.\n\t\treturn true\n\t}\n\n\t// Called when the UIView gets destroyed (e.g. App reload)\n\t@objc\n\toverride func invalidate() {\n\t\tprint(\"GNM_BLE: invalidate\")\n\t\tdisconnect()\n\t}\n\n\tfunc parseDiscoveryMediums(_ discoveryMediums: Array<NSString>) -> GNSDiscoveryMediums {\n\t\tvar mediums = GNSDiscoveryMediums()\n\t\tfor medium in discoveryMediums {\n\t\t\tlet mediumLower = medium.lowercased\n\t\t\tswitch (mediumLower) {\n\t\t\tcase \"ble\":\n\t\t\t\tmediums.insert(.BLE)\n\t\t\t\tbreak\n\t\t\tcase \"audio\":\n\t\t\t\tmediums.insert(.audio)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn mediums.isEmpty ? defaultDiscoveryMediums : mediums\n\t}\n\n\n\tfunc parseDiscoveryModes(_ discoveryModes: Array<NSString>) -> GNSDiscoveryMode {\n\t\tvar modes = GNSDiscoveryMode()\n\t\tfor mode in discoveryModes {\n\t\t\tlet modeLower = mode.lowercased\n\t\t\tswitch (modeLower) {\n\t\t\tcase \"broadcast\":\n\t\t\t\tmodes.insert(.broadcast)\n\t\t\t\tbreak\n\t\t\tcase \"scan\":\n\t\t\t\tmodes.insert(.scan)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn modes.isEmpty ? defaultDiscoveryModes : modes\n\t}\n}\n"
  },
  {
    "path": "ios/GoogleNearbyMessages.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tB89424862486AF5900F22052 /* GoogleNearbyMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B89424852486AF5900F22052 /* GoogleNearbyMessages.swift */; };\n\t\tB89426132486B5E200F22052 /* GoogleNearbyMessagesBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B89426122486B5E200F22052 /* GoogleNearbyMessagesBridge.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t58B511D91A9E6C8500147676 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"include/$(PRODUCT_NAME)\";\n\t\t\tdstSubfolderSpec = 16;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t134814201AA4EA6300B7C361 /* libGoogleNearbyMessages.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGoogleNearbyMessages.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tB89424842486AF5800F22052 /* GoogleNearbyMessagesBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoogleNearbyMessagesBridge.h; sourceTree = \"<group>\"; };\n\t\tB89424852486AF5900F22052 /* GoogleNearbyMessages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoogleNearbyMessages.swift; sourceTree = \"<group>\"; };\n\t\tB894248A2486B0CC00F22052 /* RCTImageLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageLoader.h; sourceTree = \"<group>\"; };\n\t\tB894248B2486B0CC00F22052 /* RCTImageStoreManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageStoreManager.h; sourceTree = \"<group>\"; };\n\t\tB894248C2486B0CC00F22052 /* RCTPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPlatform.h; sourceTree = \"<group>\"; };\n\t\tB894248D2486B0CC00F22052 /* RCTImageEditingManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTImageEditingManager.m; sourceTree = \"<group>\"; };\n\t\tB894248E2486B0CC00F22052 /* CoreModulesPlugins.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreModulesPlugins.h; sourceTree = \"<group>\"; };\n\t\tB894248F2486B0CC00F22052 /* BUCK */ = {isa = PBXFileReference; lastKnownFileType = text; path = BUCK; sourceTree = \"<group>\"; };\n\t\tB89424902486B0CC00F22052 /* RCTExceptionsManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTExceptionsManager.h; sourceTree = \"<group>\"; };\n\t\tB89424912486B0CC00F22052 /* RCTPlatform.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTPlatform.mm; sourceTree = \"<group>\"; };\n\t\tB89424922486B0CC00F22052 /* RCTImageEditingManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageEditingManager.h; sourceTree = \"<group>\"; };\n\t\tB89424932486B0CC00F22052 /* RCTExceptionsManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTExceptionsManager.mm; sourceTree = \"<group>\"; };\n\t\tB89424942486B0CC00F22052 /* RCTImageLoader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTImageLoader.mm; sourceTree = \"<group>\"; };\n\t\tB89424952486B0CC00F22052 /* RCTImageStoreManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTImageStoreManager.m; sourceTree = \"<group>\"; };\n\t\tB89424962486B0CC00F22052 /* CoreModulesPlugins.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CoreModulesPlugins.mm; sourceTree = \"<group>\"; };\n\t\tB89424972486B0CC00F22052 /* React-CoreModules.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"React-CoreModules.podspec\"; sourceTree = \"<group>\"; };\n\t\tB89424992486B0CC00F22052 /* RCTUIUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTUIUtils.m; sourceTree = \"<group>\"; };\n\t\tB894249A2486B0CC00F22052 /* RCTUIUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUIUtils.h; sourceTree = \"<group>\"; };\n\t\tB894249C2486B0CC00F22052 /* RCTNativeModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTNativeModule.mm; sourceTree = \"<group>\"; };\n\t\tB894249D2486B0CC00F22052 /* RCTCxxUtils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTCxxUtils.mm; sourceTree = \"<group>\"; };\n\t\tB894249E2486B0CC00F22052 /* RCTNativeModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTNativeModule.h; sourceTree = \"<group>\"; };\n\t\tB894249F2486B0CC00F22052 /* RCTCxxMethod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCxxMethod.h; sourceTree = \"<group>\"; };\n\t\tB89424A02486B0CC00F22052 /* RCTCxxModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTCxxModule.mm; sourceTree = \"<group>\"; };\n\t\tB89424A12486B0CC00F22052 /* DispatchMessageQueueThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DispatchMessageQueueThread.h; sourceTree = \"<group>\"; };\n\t\tB89424A22486B0CC00F22052 /* RCTCxxUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCxxUtils.h; sourceTree = \"<group>\"; };\n\t\tB89424A32486B0CC00F22052 /* RCTCxxMethod.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTCxxMethod.mm; sourceTree = \"<group>\"; };\n\t\tB89424A42486B0CC00F22052 /* RCTCxxModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCxxModule.h; sourceTree = \"<group>\"; };\n\t\tB89424A62486B0CC00F22052 /* RCTObjcExecutor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTObjcExecutor.h; sourceTree = \"<group>\"; };\n\t\tB89424A72486B0CC00F22052 /* NSDataBigString.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = NSDataBigString.mm; sourceTree = \"<group>\"; };\n\t\tB89424A82486B0CC00F22052 /* RCTCxxBridge.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTCxxBridge.mm; sourceTree = \"<group>\"; };\n\t\tB89424A92486B0CC00F22052 /* JSCExecutorFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSCExecutorFactory.h; sourceTree = \"<group>\"; };\n\t\tB89424AA2486B0CC00F22052 /* NSDataBigString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSDataBigString.h; sourceTree = \"<group>\"; };\n\t\tB89424AB2486B0CC00F22052 /* RCTMessageThread.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTMessageThread.mm; sourceTree = \"<group>\"; };\n\t\tB89424AC2486B0CC00F22052 /* RCTMessageThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMessageThread.h; sourceTree = \"<group>\"; };\n\t\tB89424AD2486B0CC00F22052 /* RCTCxxBridgeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCxxBridgeDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89424AE2486B0CC00F22052 /* JSCExecutorFactory.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = JSCExecutorFactory.mm; sourceTree = \"<group>\"; };\n\t\tB89424AF2486B0CC00F22052 /* RCTObjcExecutor.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTObjcExecutor.mm; sourceTree = \"<group>\"; };\n\t\tB89424B02486B0CC00F22052 /* third-party.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"third-party.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tB89424B22486B0CC00F22052 /* RCTInspector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTInspector.h; sourceTree = \"<group>\"; };\n\t\tB89424B32486B0CC00F22052 /* RCTInspector.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTInspector.mm; sourceTree = \"<group>\"; };\n\t\tB89424B42486B0CC00F22052 /* RCTInspectorPackagerConnection.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTInspectorPackagerConnection.m; sourceTree = \"<group>\"; };\n\t\tB89424B52486B0CC00F22052 /* RCTInspectorPackagerConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTInspectorPackagerConnection.h; sourceTree = \"<group>\"; };\n\t\tB89424B72486B0CC00F22052 /* RCTPackagerClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPackagerClient.h; sourceTree = \"<group>\"; };\n\t\tB89424B82486B0CC00F22052 /* RCTPackagerConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPackagerConnection.h; sourceTree = \"<group>\"; };\n\t\tB89424B92486B0CC00F22052 /* RCTInspectorDevServerHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTInspectorDevServerHelper.h; sourceTree = \"<group>\"; };\n\t\tB89424BA2486B0CC00F22052 /* RCTDevLoadingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDevLoadingView.m; sourceTree = \"<group>\"; };\n\t\tB89424BB2486B0CC00F22052 /* RCTDevMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDevMenu.m; sourceTree = \"<group>\"; };\n\t\tB89424BC2486B0CC00F22052 /* RCTInspectorDevServerHelper.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTInspectorDevServerHelper.mm; sourceTree = \"<group>\"; };\n\t\tB89424BD2486B0CC00F22052 /* RCTPackagerClient.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPackagerClient.m; sourceTree = \"<group>\"; };\n\t\tB89424BE2486B0CC00F22052 /* RCTPackagerConnection.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTPackagerConnection.mm; sourceTree = \"<group>\"; };\n\t\tB89424BF2486B0CC00F22052 /* RCTDevLoadingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDevLoadingView.h; sourceTree = \"<group>\"; };\n\t\tB89424C02486B0CC00F22052 /* RCTDevMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDevMenu.h; sourceTree = \"<group>\"; };\n\t\tB89424C12486B0CC00F22052 /* React-RCTFabric.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"React-RCTFabric.podspec\"; sourceTree = \"<group>\"; };\n\t\tB89424C32486B0CC00F22052 /* RCTImageResponseObserverProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageResponseObserverProxy.h; sourceTree = \"<group>\"; };\n\t\tB89424C42486B0CC00F22052 /* RCTSurfaceRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRegistry.h; sourceTree = \"<group>\"; };\n\t\tB89424C62486B0CC00F22052 /* UIView+ComponentViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIView+ComponentViewProtocol.h\"; sourceTree = \"<group>\"; };\n\t\tB89424C72486B0CC00F22052 /* RCTMountingManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMountingManager.h; sourceTree = \"<group>\"; };\n\t\tB89424C82486B0CC00F22052 /* RCTMountingManagerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMountingManagerDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89424C92486B0CC00F22052 /* RCTComponentViewFactory.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTComponentViewFactory.mm; sourceTree = \"<group>\"; };\n\t\tB89424CA2486B0CC00F22052 /* RCTComponentViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewProtocol.h; sourceTree = \"<group>\"; };\n\t\tB89424CB2486B0CC00F22052 /* RCTMountingManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTMountingManager.mm; sourceTree = \"<group>\"; };\n\t\tB89424CE2486B0CC00F22052 /* RCTPullToRefreshViewComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPullToRefreshViewComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424CF2486B0CC00F22052 /* RCTEnhancedScrollView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTEnhancedScrollView.mm; sourceTree = \"<group>\"; };\n\t\tB89424D02486B0CC00F22052 /* RCTPullToRefreshViewComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTPullToRefreshViewComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424D12486B0CC00F22052 /* RCTEnhancedScrollView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTEnhancedScrollView.h; sourceTree = \"<group>\"; };\n\t\tB89424D22486B0CC00F22052 /* RCTScrollViewComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTScrollViewComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424D32486B0CC00F22052 /* RCTScrollViewComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424D52486B0CC00F22052 /* RCTSliderComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSliderComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424D62486B0CC00F22052 /* RCTSliderComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSliderComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424D82486B0CC00F22052 /* RCTImageComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTImageComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424D92486B0CC00F22052 /* RCTImageComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424DB2486B0CC00F22052 /* RCTActivityIndicatorViewComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorViewComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424DC2486B0CC00F22052 /* RCTActivityIndicatorViewComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTActivityIndicatorViewComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424DE2486B0CC00F22052 /* RCTUnimplementedNativeComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTUnimplementedNativeComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424DF2486B0CC00F22052 /* RCTUnimplementedNativeComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUnimplementedNativeComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424E12486B0CC00F22052 /* RCTViewComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTViewComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424E22486B0CC00F22052 /* RCTViewComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTViewComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424E42486B0CC00F22052 /* RCTSwitchComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSwitchComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424E52486B0CC00F22052 /* RCTSwitchComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSwitchComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424E72486B0CC00F22052 /* RCTRootComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424E82486B0CC00F22052 /* RCTRootComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTRootComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424EA2486B0CC00F22052 /* RCTParagraphComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTParagraphComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424EB2486B0CC00F22052 /* RCTParagraphComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTParagraphComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424ED2486B0CC00F22052 /* RCTFabricModalHostViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFabricModalHostViewController.mm; sourceTree = \"<group>\"; };\n\t\tB89424EE2486B0CC00F22052 /* RCTModalHostViewComponentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewComponentView.h; sourceTree = \"<group>\"; };\n\t\tB89424EF2486B0CC00F22052 /* RCTModalHostViewComponentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTModalHostViewComponentView.mm; sourceTree = \"<group>\"; };\n\t\tB89424F02486B0CC00F22052 /* RCTFabricModalHostViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFabricModalHostViewController.h; sourceTree = \"<group>\"; };\n\t\tB89424F12486B0CC00F22052 /* RCTComponentViewRegistry.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTComponentViewRegistry.mm; sourceTree = \"<group>\"; };\n\t\tB89424F22486B0CC00F22052 /* UIView+ComponentViewProtocol.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = \"UIView+ComponentViewProtocol.mm\"; sourceTree = \"<group>\"; };\n\t\tB89424F32486B0CC00F22052 /* RCTComponentViewFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewFactory.h; sourceTree = \"<group>\"; };\n\t\tB89424F42486B0CC00F22052 /* RCTComponentViewRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewRegistry.h; sourceTree = \"<group>\"; };\n\t\tB89424F52486B0CC00F22052 /* RCTPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPrimitives.h; sourceTree = \"<group>\"; };\n\t\tB89424F62486B0CC00F22052 /* RCTSurfacePresenter.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfacePresenter.mm; sourceTree = \"<group>\"; };\n\t\tB89424F82486B0CC00F22052 /* RCTFabricSurfaceHostingProxyRootView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFabricSurfaceHostingProxyRootView.mm; sourceTree = \"<group>\"; };\n\t\tB89424F92486B0CC00F22052 /* RCTFabricSurface.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFabricSurface.mm; sourceTree = \"<group>\"; };\n\t\tB89424FA2486B0CC00F22052 /* RCTFabricSurfaceHostingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFabricSurfaceHostingView.h; sourceTree = \"<group>\"; };\n\t\tB89424FB2486B0CC00F22052 /* RCTFabricSurface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFabricSurface.h; sourceTree = \"<group>\"; };\n\t\tB89424FC2486B0CC00F22052 /* RCTFabricSurfaceHostingProxyRootView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFabricSurfaceHostingProxyRootView.h; sourceTree = \"<group>\"; };\n\t\tB89424FD2486B0CC00F22052 /* RCTFabricSurfaceHostingView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFabricSurfaceHostingView.mm; sourceTree = \"<group>\"; };\n\t\tB89424FF2486B0CC00F22052 /* RuntimeEventBeat.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RuntimeEventBeat.mm; sourceTree = \"<group>\"; };\n\t\tB89425002486B0CC00F22052 /* MainRunLoopEventBeat.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MainRunLoopEventBeat.mm; sourceTree = \"<group>\"; };\n\t\tB89425012486B0CC00F22052 /* RuntimeEventBeat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RuntimeEventBeat.h; sourceTree = \"<group>\"; };\n\t\tB89425022486B0CC00F22052 /* MainRunLoopEventBeat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainRunLoopEventBeat.h; sourceTree = \"<group>\"; };\n\t\tB89425032486B0CC00F22052 /* RCTGenericDelegateSplitter.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTGenericDelegateSplitter.mm; sourceTree = \"<group>\"; };\n\t\tB89425042486B0CC00F22052 /* RCTGenericDelegateSplitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTGenericDelegateSplitter.h; sourceTree = \"<group>\"; };\n\t\tB89425052486B0CC00F22052 /* RCTImageResponseDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageResponseDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425062486B0CD00F22052 /* RCTTouchableComponentViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTouchableComponentViewProtocol.h; sourceTree = \"<group>\"; };\n\t\tB89425072486B0CD00F22052 /* RCTConversions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTConversions.h; sourceTree = \"<group>\"; };\n\t\tB89425082486B0CD00F22052 /* RCTSurfacePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfacePresenter.h; sourceTree = \"<group>\"; };\n\t\tB89425092486B0CD00F22052 /* RCTImageResponseObserverProxy.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTImageResponseObserverProxy.mm; sourceTree = \"<group>\"; };\n\t\tB894250A2486B0CD00F22052 /* RCTSurfaceRegistry.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceRegistry.mm; sourceTree = \"<group>\"; };\n\t\tB894250B2486B0CD00F22052 /* RCTScheduler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScheduler.h; sourceTree = \"<group>\"; };\n\t\tB894250C2486B0CD00F22052 /* RCTSurfaceTouchHandler.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceTouchHandler.mm; sourceTree = \"<group>\"; };\n\t\tB894250D2486B0CD00F22052 /* RCTSurfaceTouchHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceTouchHandler.h; sourceTree = \"<group>\"; };\n\t\tB894250E2486B0CD00F22052 /* RCTScheduler.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTScheduler.mm; sourceTree = \"<group>\"; };\n\t\tB89425102486B0CD00F22052 /* RCTFPSGraph.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTFPSGraph.m; sourceTree = \"<group>\"; };\n\t\tB89425112486B0CD00F22052 /* RCTProfileTrampoline-arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = \"RCTProfileTrampoline-arm.S\"; sourceTree = \"<group>\"; };\n\t\tB89425122486B0CD00F22052 /* RCTProfileTrampoline-i386.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = \"RCTProfileTrampoline-i386.S\"; sourceTree = \"<group>\"; };\n\t\tB89425132486B0CD00F22052 /* RCTProfile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTProfile.m; sourceTree = \"<group>\"; };\n\t\tB89425142486B0CD00F22052 /* RCTProfileTrampoline-arm64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = \"RCTProfileTrampoline-arm64.S\"; sourceTree = \"<group>\"; };\n\t\tB89425152486B0CD00F22052 /* RCTProfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTProfile.h; sourceTree = \"<group>\"; };\n\t\tB89425162486B0CD00F22052 /* RCTFPSGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFPSGraph.h; sourceTree = \"<group>\"; };\n\t\tB89425172486B0CD00F22052 /* RCTMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMacros.h; sourceTree = \"<group>\"; };\n\t\tB89425182486B0CD00F22052 /* RCTPerfMonitor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPerfMonitor.m; sourceTree = \"<group>\"; };\n\t\tB89425192486B0CD00F22052 /* RCTProfileTrampoline-x86_64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = \"RCTProfileTrampoline-x86_64.S\"; sourceTree = \"<group>\"; };\n\t\tB894251B2486B0CD00F22052 /* RCTFollyConvert.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFollyConvert.mm; sourceTree = \"<group>\"; };\n\t\tB894251C2486B0CD00F22052 /* RCTFollyConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFollyConvert.h; sourceTree = \"<group>\"; };\n\t\tB894251E2486B0CD00F22052 /* RCTDevSettings.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTDevSettings.mm; sourceTree = \"<group>\"; };\n\t\tB894251F2486B0CD00F22052 /* RCTStatusBarManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTStatusBarManager.m; sourceTree = \"<group>\"; };\n\t\tB89425202486B0CD00F22052 /* RCTLayoutAnimationGroup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimationGroup.h; sourceTree = \"<group>\"; };\n\t\tB89425212486B0CD00F22052 /* RCTKeyboardObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTKeyboardObserver.m; sourceTree = \"<group>\"; };\n\t\tB89425222486B0CD00F22052 /* RCTSurfacePresenterStub.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSurfacePresenterStub.m; sourceTree = \"<group>\"; };\n\t\tB89425232486B0CD00F22052 /* RCTTVNavigationEventEmitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTVNavigationEventEmitter.h; sourceTree = \"<group>\"; };\n\t\tB89425242486B0CD00F22052 /* RCTAsyncLocalStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTAsyncLocalStorage.m; sourceTree = \"<group>\"; };\n\t\tB89425252486B0CD00F22052 /* RCTSourceCode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSourceCode.m; sourceTree = \"<group>\"; };\n\t\tB89425262486B0CD00F22052 /* RCTUIManagerUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerUtils.m; sourceTree = \"<group>\"; };\n\t\tB89425272486B0CD00F22052 /* RCTAccessibilityManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTAccessibilityManager.m; sourceTree = \"<group>\"; };\n\t\tB89425282486B0CD00F22052 /* RCTClipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTClipboard.h; sourceTree = \"<group>\"; };\n\t\tB89425292486B0CD00F22052 /* RCTUIManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUIManager.h; sourceTree = \"<group>\"; };\n\t\tB894252A2486B0CD00F22052 /* RCTRedBox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRedBox.m; sourceTree = \"<group>\"; };\n\t\tB894252B2486B0CD00F22052 /* RCTAlertManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTAlertManager.m; sourceTree = \"<group>\"; };\n\t\tB894252C2486B0CD00F22052 /* RCTI18nUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTI18nUtil.m; sourceTree = \"<group>\"; };\n\t\tB894252D2486B0CD00F22052 /* RCTTiming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTiming.h; sourceTree = \"<group>\"; };\n\t\tB894252E2486B0CD00F22052 /* RCTI18nManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTI18nManager.m; sourceTree = \"<group>\"; };\n\t\tB894252F2486B0CD00F22052 /* RCTEventEmitter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTEventEmitter.m; sourceTree = \"<group>\"; };\n\t\tB89425302486B0CD00F22052 /* RCTAppState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTAppState.m; sourceTree = \"<group>\"; };\n\t\tB89425312486B0CD00F22052 /* RCTRedBoxExtraDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRedBoxExtraDataViewController.m; sourceTree = \"<group>\"; };\n\t\tB89425322486B0CD00F22052 /* RCTDevSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDevSettings.h; sourceTree = \"<group>\"; };\n\t\tB89425332486B0CD00F22052 /* RCTLayoutAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimation.h; sourceTree = \"<group>\"; };\n\t\tB89425342486B0CD00F22052 /* RCTDeviceInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDeviceInfo.m; sourceTree = \"<group>\"; };\n\t\tB89425352486B0CD00F22052 /* RCTSurfacePresenterStub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfacePresenterStub.h; sourceTree = \"<group>\"; };\n\t\tB89425362486B0CD00F22052 /* RCTLayoutAnimationGroup.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimationGroup.m; sourceTree = \"<group>\"; };\n\t\tB89425372486B0CD00F22052 /* RCTKeyboardObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTKeyboardObserver.h; sourceTree = \"<group>\"; };\n\t\tB89425382486B0CD00F22052 /* RCTStatusBarManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTStatusBarManager.h; sourceTree = \"<group>\"; };\n\t\tB89425392486B0CD00F22052 /* RCTClipboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTClipboard.m; sourceTree = \"<group>\"; };\n\t\tB894253A2486B0CD00F22052 /* RCTUIManagerUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerUtils.h; sourceTree = \"<group>\"; };\n\t\tB894253B2486B0CD00F22052 /* RCTAccessibilityManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAccessibilityManager.h; sourceTree = \"<group>\"; };\n\t\tB894253C2486B0CD00F22052 /* RCTUIManagerObserverCoordinator.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTUIManagerObserverCoordinator.mm; sourceTree = \"<group>\"; };\n\t\tB894253D2486B0CD00F22052 /* RCTSourceCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSourceCode.h; sourceTree = \"<group>\"; };\n\t\tB894253E2486B0CD00F22052 /* RCTAsyncLocalStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAsyncLocalStorage.h; sourceTree = \"<group>\"; };\n\t\tB894253F2486B0CD00F22052 /* RCTTVNavigationEventEmitter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTVNavigationEventEmitter.m; sourceTree = \"<group>\"; };\n\t\tB89425402486B0CD00F22052 /* RCTI18nManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTI18nManager.h; sourceTree = \"<group>\"; };\n\t\tB89425412486B0CD00F22052 /* RCTTiming.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTiming.m; sourceTree = \"<group>\"; };\n\t\tB89425422486B0CD00F22052 /* RCTAlertManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAlertManager.h; sourceTree = \"<group>\"; };\n\t\tB89425432486B0CD00F22052 /* RCTRedBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRedBox.h; sourceTree = \"<group>\"; };\n\t\tB89425442486B0CD00F22052 /* RCTI18nUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTI18nUtil.h; sourceTree = \"<group>\"; };\n\t\tB89425452486B0CD00F22052 /* RCTUIManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTUIManager.m; sourceTree = \"<group>\"; };\n\t\tB89425462486B0CD00F22052 /* RCTDeviceInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDeviceInfo.h; sourceTree = \"<group>\"; };\n\t\tB89425472486B0CD00F22052 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = \"<group>\"; };\n\t\tB89425482486B0CD00F22052 /* RCTLayoutAnimation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimation.m; sourceTree = \"<group>\"; };\n\t\tB89425492486B0CD00F22052 /* RCTRedBoxExtraDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRedBoxExtraDataViewController.h; sourceTree = \"<group>\"; };\n\t\tB894254A2486B0CD00F22052 /* RCTAppState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAppState.h; sourceTree = \"<group>\"; };\n\t\tB894254B2486B0CD00F22052 /* RCTEventEmitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTEventEmitter.h; sourceTree = \"<group>\"; };\n\t\tB894254D2486B0CD00F22052 /* RCTViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTViewManager.h; sourceTree = \"<group>\"; };\n\t\tB894254E2486B0CD00F22052 /* RCTShadowView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTShadowView.h; sourceTree = \"<group>\"; };\n\t\tB89425502486B0CD00F22052 /* RCTSafeAreaShadowView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaShadowView.m; sourceTree = \"<group>\"; };\n\t\tB89425512486B0CD00F22052 /* RCTSafeAreaView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaView.h; sourceTree = \"<group>\"; };\n\t\tB89425522486B0CD00F22052 /* RCTSafeAreaViewLocalData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewLocalData.h; sourceTree = \"<group>\"; };\n\t\tB89425532486B0CD00F22052 /* RCTSafeAreaViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewManager.m; sourceTree = \"<group>\"; };\n\t\tB89425542486B0CD00F22052 /* RCTSafeAreaView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaView.m; sourceTree = \"<group>\"; };\n\t\tB89425552486B0CD00F22052 /* RCTSafeAreaShadowView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaShadowView.h; sourceTree = \"<group>\"; };\n\t\tB89425562486B0CD00F22052 /* RCTSafeAreaViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewManager.h; sourceTree = \"<group>\"; };\n\t\tB89425572486B0CD00F22052 /* RCTSafeAreaViewLocalData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewLocalData.m; sourceTree = \"<group>\"; };\n\t\tB89425582486B0CD00F22052 /* UIView+React.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIView+React.m\"; sourceTree = \"<group>\"; };\n\t\tB89425592486B0CD00F22052 /* RCTView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTView.m; sourceTree = \"<group>\"; };\n\t\tB894255B2486B0CD00F22052 /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = \"<group>\"; };\n\t\tB894255C2486B0CD00F22052 /* RCTScrollContentViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentViewManager.m; sourceTree = \"<group>\"; };\n\t\tB894255D2486B0CD00F22052 /* RCTScrollView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTScrollView.m; sourceTree = \"<group>\"; };\n\t\tB894255E2486B0CD00F22052 /* RCTScrollContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentView.m; sourceTree = \"<group>\"; };\n\t\tB894255F2486B0CD00F22052 /* RCTScrollViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTScrollViewManager.m; sourceTree = \"<group>\"; };\n\t\tB89425602486B0CD00F22052 /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = \"<group>\"; };\n\t\tB89425612486B0CD00F22052 /* RCTScrollView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollView.h; sourceTree = \"<group>\"; };\n\t\tB89425622486B0CD00F22052 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = \"<group>\"; };\n\t\tB89425632486B0CD00F22052 /* RCTScrollViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewManager.h; sourceTree = \"<group>\"; };\n\t\tB89425642486B0CD00F22052 /* RCTScrollableProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollableProtocol.h; sourceTree = \"<group>\"; };\n\t\tB89425652486B0CD00F22052 /* RCTScrollContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentView.h; sourceTree = \"<group>\"; };\n\t\tB89425662486B0CD00F22052 /* RCTShadowView+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTShadowView+Internal.h\"; sourceTree = \"<group>\"; };\n\t\tB89425672486B0CD00F22052 /* RCTSlider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSlider.m; sourceTree = \"<group>\"; };\n\t\tB89425682486B0CD00F22052 /* RCTSegmentedControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControl.m; sourceTree = \"<group>\"; };\n\t\tB89425692486B0CD00F22052 /* RCTLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTLayout.m; sourceTree = \"<group>\"; };\n\t\tB894256A2486B0CD00F22052 /* RCTSliderManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSliderManager.m; sourceTree = \"<group>\"; };\n\t\tB894256B2486B0CD00F22052 /* RCTProgressViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTProgressViewManager.m; sourceTree = \"<group>\"; };\n\t\tB894256C2486B0CD00F22052 /* RCTConvert+Transform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTConvert+Transform.h\"; sourceTree = \"<group>\"; };\n\t\tB894256D2486B0CD00F22052 /* RCTComponentData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTComponentData.m; sourceTree = \"<group>\"; };\n\t\tB894256E2486B0CD00F22052 /* RCTMaskedViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTMaskedViewManager.m; sourceTree = \"<group>\"; };\n\t\tB894256F2486B0CD00F22052 /* RCTModalManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModalManager.h; sourceTree = \"<group>\"; };\n\t\tB89425702486B0CD00F22052 /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"RCTShadowView+Layout.m\"; sourceTree = \"<group>\"; };\n\t\tB89425712486B0CD00F22052 /* RCTFont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFont.h; sourceTree = \"<group>\"; };\n\t\tB89425722486B0CD00F22052 /* RCTRefreshControlManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControlManager.h; sourceTree = \"<group>\"; };\n\t\tB89425732486B0CD00F22052 /* RCTModalHostView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostView.m; sourceTree = \"<group>\"; };\n\t\tB89425742486B0CD00F22052 /* RCTBorderDrawing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTBorderDrawing.m; sourceTree = \"<group>\"; };\n\t\tB89425752486B0CD00F22052 /* RCTWrapperViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTWrapperViewController.m; sourceTree = \"<group>\"; };\n\t\tB89425762486B0CD00F22052 /* RCTModalHostViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewController.m; sourceTree = \"<group>\"; };\n\t\tB89425772486B0CD00F22052 /* RCTRefreshControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControl.h; sourceTree = \"<group>\"; };\n\t\tB89425782486B0CD00F22052 /* RCTSwitch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSwitch.m; sourceTree = \"<group>\"; };\n\t\tB89425792486B0CD00F22052 /* RCTConvert+CoreLocation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTConvert+CoreLocation.h\"; sourceTree = \"<group>\"; };\n\t\tB894257A2486B0CD00F22052 /* RCTDatePicker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDatePicker.h; sourceTree = \"<group>\"; };\n\t\tB894257B2486B0CD00F22052 /* RCTMaskedView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTMaskedView.m; sourceTree = \"<group>\"; };\n\t\tB894257C2486B0CD00F22052 /* RCTDatePickerManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDatePickerManager.m; sourceTree = \"<group>\"; };\n\t\tB894257D2486B0CD00F22052 /* RCTComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponent.h; sourceTree = \"<group>\"; };\n\t\tB894257E2486B0CD00F22052 /* RCTSwitchManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSwitchManager.h; sourceTree = \"<group>\"; };\n\t\tB894257F2486B0CD00F22052 /* RCTModalHostViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewManager.h; sourceTree = \"<group>\"; };\n\t\tB89425802486B0CD00F22052 /* RCTPickerManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPickerManager.h; sourceTree = \"<group>\"; };\n\t\tB89425812486B0CD00F22052 /* RCTTVView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTVView.h; sourceTree = \"<group>\"; };\n\t\tB89425822486B0CD00F22052 /* RCTPicker.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPicker.m; sourceTree = \"<group>\"; };\n\t\tB89425832486B0CD00F22052 /* RCTSegmentedControlManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControlManager.m; sourceTree = \"<group>\"; };\n\t\tB89425842486B0CD00F22052 /* RCTAnimationType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAnimationType.h; sourceTree = \"<group>\"; };\n\t\tB89425852486B0CD00F22052 /* RCTActivityIndicatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorView.m; sourceTree = \"<group>\"; };\n\t\tB89425862486B0CD00F22052 /* RCTActivityIndicatorViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorViewManager.m; sourceTree = \"<group>\"; };\n\t\tB89425872486B0CD00F22052 /* RCTRootShadowView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootShadowView.h; sourceTree = \"<group>\"; };\n\t\tB89425882486B0CD00F22052 /* RCTPointerEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPointerEvents.h; sourceTree = \"<group>\"; };\n\t\tB89425892486B0CD00F22052 /* RCTConvert+Transform.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"RCTConvert+Transform.m\"; sourceTree = \"<group>\"; };\n\t\tB894258A2486B0CD00F22052 /* RCTProgressViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTProgressViewManager.h; sourceTree = \"<group>\"; };\n\t\tB894258B2486B0CD00F22052 /* RCTSliderManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSliderManager.h; sourceTree = \"<group>\"; };\n\t\tB894258C2486B0CD00F22052 /* RCTSegmentedControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControl.h; sourceTree = \"<group>\"; };\n\t\tB894258D2486B0CD00F22052 /* RCTLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTLayout.h; sourceTree = \"<group>\"; };\n\t\tB894258E2486B0CD00F22052 /* RCTSlider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSlider.h; sourceTree = \"<group>\"; };\n\t\tB894258F2486B0CD00F22052 /* RCTShadowView+Internal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"RCTShadowView+Internal.m\"; sourceTree = \"<group>\"; };\n\t\tB89425902486B0CD00F22052 /* RCTView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTView.h; sourceTree = \"<group>\"; };\n\t\tB89425912486B0CD00F22052 /* RCTBorderStyle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBorderStyle.h; sourceTree = \"<group>\"; };\n\t\tB89425922486B0CD00F22052 /* UIView+React.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIView+React.h\"; sourceTree = \"<group>\"; };\n\t\tB89425932486B0CD00F22052 /* RCTShadowView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = \"<group>\"; };\n\t\tB89425942486B0CD00F22052 /* RCTViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTViewManager.m; sourceTree = \"<group>\"; };\n\t\tB89425952486B0CD00F22052 /* RCTWrapperViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTWrapperViewController.h; sourceTree = \"<group>\"; };\n\t\tB89425962486B0CD00F22052 /* RCTModalHostViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewController.h; sourceTree = \"<group>\"; };\n\t\tB89425972486B0CD00F22052 /* RCTRefreshControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControl.m; sourceTree = \"<group>\"; };\n\t\tB89425982486B0CD00F22052 /* RCTBorderDrawing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBorderDrawing.h; sourceTree = \"<group>\"; };\n\t\tB89425992486B0CD00F22052 /* RCTModalHostView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModalHostView.h; sourceTree = \"<group>\"; };\n\t\tB894259A2486B0CD00F22052 /* RCTRefreshControlManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControlManager.m; sourceTree = \"<group>\"; };\n\t\tB894259B2486B0CD00F22052 /* RCTModalManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTModalManager.m; sourceTree = \"<group>\"; };\n\t\tB894259C2486B0CD00F22052 /* RCTShadowView+Layout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTShadowView+Layout.h\"; sourceTree = \"<group>\"; };\n\t\tB894259D2486B0CD00F22052 /* RCTMaskedViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMaskedViewManager.h; sourceTree = \"<group>\"; };\n\t\tB894259E2486B0CD00F22052 /* RCTComponentData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponentData.h; sourceTree = \"<group>\"; };\n\t\tB894259F2486B0CD00F22052 /* RCTFont.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFont.mm; sourceTree = \"<group>\"; };\n\t\tB89425A02486B0CD00F22052 /* RCTDatePickerManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDatePickerManager.h; sourceTree = \"<group>\"; };\n\t\tB89425A12486B0CD00F22052 /* RCTDatePicker.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDatePicker.m; sourceTree = \"<group>\"; };\n\t\tB89425A22486B0CD00F22052 /* RCTMaskedView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMaskedView.h; sourceTree = \"<group>\"; };\n\t\tB89425A32486B0CD00F22052 /* RCTAutoInsetsProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAutoInsetsProtocol.h; sourceTree = \"<group>\"; };\n\t\tB89425A42486B0CD00F22052 /* RCTConvert+CoreLocation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"RCTConvert+CoreLocation.m\"; sourceTree = \"<group>\"; };\n\t\tB89425A52486B0CD00F22052 /* RCTSwitch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSwitch.h; sourceTree = \"<group>\"; };\n\t\tB89425A62486B0CD00F22052 /* UIView+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIView+Private.h\"; sourceTree = \"<group>\"; };\n\t\tB89425A72486B0CD00F22052 /* RCTRootShadowView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRootShadowView.m; sourceTree = \"<group>\"; };\n\t\tB89425A82486B0CD00F22052 /* RCTActivityIndicatorViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorViewManager.h; sourceTree = \"<group>\"; };\n\t\tB89425A92486B0CD00F22052 /* RCTActivityIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorView.h; sourceTree = \"<group>\"; };\n\t\tB89425AA2486B0CD00F22052 /* RCTSegmentedControlManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControlManager.h; sourceTree = \"<group>\"; };\n\t\tB89425AB2486B0CD00F22052 /* RCTPicker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPicker.h; sourceTree = \"<group>\"; };\n\t\tB89425AC2486B0CD00F22052 /* RCTTVView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTVView.m; sourceTree = \"<group>\"; };\n\t\tB89425AD2486B0CD00F22052 /* RCTPickerManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPickerManager.m; sourceTree = \"<group>\"; };\n\t\tB89425AE2486B0CD00F22052 /* RCTModalHostViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewManager.m; sourceTree = \"<group>\"; };\n\t\tB89425AF2486B0CD00F22052 /* RCTSwitchManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSwitchManager.m; sourceTree = \"<group>\"; };\n\t\tB89425B02486B0CD00F22052 /* RCTTextDecorationLineType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTextDecorationLineType.h; sourceTree = \"<group>\"; };\n\t\tB89425B22486B0CD00F22052 /* RCTURLRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestHandler.h; sourceTree = \"<group>\"; };\n\t\tB89425B32486B0CD00F22052 /* RCTTouchHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTouchHandler.m; sourceTree = \"<group>\"; };\n\t\tB89425B42486B0CD00F22052 /* RCTReloadCommand.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTReloadCommand.m; sourceTree = \"<group>\"; };\n\t\tB89425B52486B0CD00F22052 /* RCTCxxConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCxxConvert.h; sourceTree = \"<group>\"; };\n\t\tB89425B62486B0CD00F22052 /* RCTUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTUtils.h; sourceTree = \"<group>\"; };\n\t\tB89425B72486B0CD00F22052 /* RCTErrorInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTErrorInfo.h; sourceTree = \"<group>\"; };\n\t\tB89425B82486B0CD00F22052 /* RCTComponentEvent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTComponentEvent.m; sourceTree = \"<group>\"; };\n\t\tB89425B92486B0CD00F22052 /* RCTVersion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTVersion.m; sourceTree = \"<group>\"; };\n\t\tB89425BA2486B0CD00F22052 /* RCTWeakProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTWeakProxy.h; sourceTree = \"<group>\"; };\n\t\tB89425BB2486B0CD00F22052 /* RCTBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBridge.h; sourceTree = \"<group>\"; };\n\t\tB89425BC2486B0CD00F22052 /* RCTManagedPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTManagedPointer.h; sourceTree = \"<group>\"; };\n\t\tB89425BD2486B0CD00F22052 /* RCTBridgeModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBridgeModule.h; sourceTree = \"<group>\"; };\n\t\tB89425BE2486B0CD00F22052 /* RCTModuleData.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTModuleData.mm; sourceTree = \"<group>\"; };\n\t\tB89425BF2486B0CD00F22052 /* RCTJavaScriptExecutor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptExecutor.h; sourceTree = \"<group>\"; };\n\t\tB89425C02486B0CD00F22052 /* RCTFrameUpdate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTFrameUpdate.m; sourceTree = \"<group>\"; };\n\t\tB89425C12486B0CD00F22052 /* RCTMultipartDataTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMultipartDataTask.h; sourceTree = \"<group>\"; };\n\t\tB89425C22486B0CD00F22052 /* RCTPerformanceLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPerformanceLogger.h; sourceTree = \"<group>\"; };\n\t\tB89425C32486B0CD00F22052 /* RCTJSStackFrame.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTJSStackFrame.m; sourceTree = \"<group>\"; };\n\t\tB89425C42486B0CD00F22052 /* RCTRootContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = \"<group>\"; };\n\t\tB89425C52486B0CD00F22052 /* RCTMultipartStreamReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTMultipartStreamReader.h; sourceTree = \"<group>\"; };\n\t\tB89425C62486B0CD00F22052 /* RCTJavaScriptLoader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTJavaScriptLoader.mm; sourceTree = \"<group>\"; };\n\t\tB89425C72486B0CD00F22052 /* RCTTouchEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTouchEvent.h; sourceTree = \"<group>\"; };\n\t\tB89425C82486B0CD00F22052 /* RCTDisplayLink.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTDisplayLink.m; sourceTree = \"<group>\"; };\n\t\tB89425C92486B0CD00F22052 /* RCTRootViewInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootViewInternal.h; sourceTree = \"<group>\"; };\n\t\tB89425CA2486B0CD00F22052 /* RCTTVRemoteHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTVRemoteHandler.h; sourceTree = \"<group>\"; };\n\t\tB89425CB2486B0CD00F22052 /* RCTParserUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTParserUtils.h; sourceTree = \"<group>\"; };\n\t\tB89425CC2486B0CD00F22052 /* RCTRootViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootViewDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425CD2486B0CD00F22052 /* RCTModuleMethod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModuleMethod.h; sourceTree = \"<group>\"; };\n\t\tB89425CE2486B0CD00F22052 /* RCTRootView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRootView.m; sourceTree = \"<group>\"; };\n\t\tB89425CF2486B0CD00F22052 /* RCTBundleURLProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBundleURLProvider.h; sourceTree = \"<group>\"; };\n\t\tB89425D02486B0CD00F22052 /* RCTImageSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTImageSource.m; sourceTree = \"<group>\"; };\n\t\tB89425D12486B0CD00F22052 /* RCTBridgeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBridgeDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425D22486B0CD00F22052 /* RCTURLRequestDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425D32486B0CD00F22052 /* RCTKeyCommands.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTKeyCommands.m; sourceTree = \"<group>\"; };\n\t\tB89425D52486B0CD00F22052 /* RCTSurfaceRootView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootView.h; sourceTree = \"<group>\"; };\n\t\tB89425D62486B0CD00F22052 /* RCTSurfaceStage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceStage.m; sourceTree = \"<group>\"; };\n\t\tB89425D72486B0CD00F22052 /* RCTSurfaceView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceView.mm; sourceTree = \"<group>\"; };\n\t\tB89425D82486B0CD00F22052 /* RCTSurfaceRootShadowView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceRootShadowView.m; sourceTree = \"<group>\"; };\n\t\tB89425D92486B0CD00F22052 /* RCTSurfaceDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425DB2486B0CD00F22052 /* RCTSurfaceSizeMeasureMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceSizeMeasureMode.h; sourceTree = \"<group>\"; };\n\t\tB89425DC2486B0CD00F22052 /* RCTSurfaceSizeMeasureMode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceSizeMeasureMode.mm; sourceTree = \"<group>\"; };\n\t\tB89425DD2486B0CD00F22052 /* RCTSurfaceHostingProxyRootView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceHostingProxyRootView.mm; sourceTree = \"<group>\"; };\n\t\tB89425DE2486B0CD00F22052 /* RCTSurfaceHostingView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceHostingView.mm; sourceTree = \"<group>\"; };\n\t\tB89425DF2486B0CD00F22052 /* RCTSurfaceHostingProxyRootView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingProxyRootView.h; sourceTree = \"<group>\"; };\n\t\tB89425E02486B0CD00F22052 /* RCTSurfaceHostingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingView.h; sourceTree = \"<group>\"; };\n\t\tB89425E12486B0CD00F22052 /* RCTSurface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurface.h; sourceTree = \"<group>\"; };\n\t\tB89425E22486B0CD00F22052 /* RCTSurfaceRootView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurfaceRootView.mm; sourceTree = \"<group>\"; };\n\t\tB89425E32486B0CD00F22052 /* RCTSurfaceView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceView.h; sourceTree = \"<group>\"; };\n\t\tB89425E42486B0CD00F22052 /* RCTSurfaceRootShadowViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowViewDelegate.h; sourceTree = \"<group>\"; };\n\t\tB89425E52486B0CD00F22052 /* RCTSurfaceRootShadowView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowView.h; sourceTree = \"<group>\"; };\n\t\tB89425E62486B0CD00F22052 /* RCTSurfaceStage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceStage.h; sourceTree = \"<group>\"; };\n\t\tB89425E72486B0CD00F22052 /* RCTSurfaceView+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTSurfaceView+Internal.h\"; sourceTree = \"<group>\"; };\n\t\tB89425E82486B0CD00F22052 /* RCTSurface.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTSurface.mm; sourceTree = \"<group>\"; };\n\t\tB89425E92486B0CD00F22052 /* RCTEventDispatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTEventDispatcher.h; sourceTree = \"<group>\"; };\n\t\tB89425EA2486B0CD00F22052 /* RCTJavaScriptLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptLoader.h; sourceTree = \"<group>\"; };\n\t\tB89425EB2486B0CD00F22052 /* RCTModuleData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTModuleData.h; sourceTree = \"<group>\"; };\n\t\tB89425EC2486B0CD00F22052 /* RCTConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTConvert.h; sourceTree = \"<group>\"; };\n\t\tB89425ED2486B0CD00F22052 /* RCTModuleMethod.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTModuleMethod.mm; sourceTree = \"<group>\"; };\n\t\tB89425EE2486B0CD00F22052 /* RCTAssert.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTAssert.m; sourceTree = \"<group>\"; };\n\t\tB89425EF2486B0CD00F22052 /* RCTLog.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTLog.mm; sourceTree = \"<group>\"; };\n\t\tB89425F02486B0CD00F22052 /* RCTNullability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTNullability.h; sourceTree = \"<group>\"; };\n\t\tB89425F12486B0CD00F22052 /* RCTVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTVersion.h; sourceTree = \"<group>\"; };\n\t\tB89425F22486B0CD00F22052 /* RCTWeakProxy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTWeakProxy.m; sourceTree = \"<group>\"; };\n\t\tB89425F32486B0CD00F22052 /* RCTComponentEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTComponentEvent.h; sourceTree = \"<group>\"; };\n\t\tB89425F42486B0CD00F22052 /* RCTErrorInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTErrorInfo.m; sourceTree = \"<group>\"; };\n\t\tB89425F52486B0CD00F22052 /* RCTUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTUtils.m; sourceTree = \"<group>\"; };\n\t\tB89425F62486B0CD00F22052 /* RCTCxxConvert.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTCxxConvert.m; sourceTree = \"<group>\"; };\n\t\tB89425F72486B0CD00F22052 /* RCTInvalidating.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTInvalidating.h; sourceTree = \"<group>\"; };\n\t\tB89425F82486B0CD00F22052 /* RCTReloadCommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTReloadCommand.h; sourceTree = \"<group>\"; };\n\t\tB89425F92486B0CD00F22052 /* RCTTouchHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTouchHandler.h; sourceTree = \"<group>\"; };\n\t\tB89425FA2486B0CD00F22052 /* RCTTouchEvent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTouchEvent.m; sourceTree = \"<group>\"; };\n\t\tB89425FB2486B0CD00F22052 /* RCTDisplayLink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDisplayLink.h; sourceTree = \"<group>\"; };\n\t\tB89425FC2486B0CD00F22052 /* RCTBridgeMethod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTBridgeMethod.h; sourceTree = \"<group>\"; };\n\t\tB89425FD2486B0CD00F22052 /* RCTMultipartStreamReader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartStreamReader.m; sourceTree = \"<group>\"; };\n\t\tB89425FE2486B0CD00F22052 /* RCTRootContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = \"<group>\"; };\n\t\tB89425FF2486B0CD00F22052 /* RCTPerformanceLogger.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPerformanceLogger.m; sourceTree = \"<group>\"; };\n\t\tB89426002486B0CD00F22052 /* RCTJSStackFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTJSStackFrame.h; sourceTree = \"<group>\"; };\n\t\tB89426012486B0CD00F22052 /* RCTMultipartDataTask.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartDataTask.m; sourceTree = \"<group>\"; };\n\t\tB89426022486B0CD00F22052 /* RCTFrameUpdate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTFrameUpdate.h; sourceTree = \"<group>\"; };\n\t\tB89426032486B0CD00F22052 /* RCTBridge+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RCTBridge+Private.h\"; sourceTree = \"<group>\"; };\n\t\tB89426042486B0CD00F22052 /* RCTBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTBridge.m; sourceTree = \"<group>\"; };\n\t\tB89426052486B0CD00F22052 /* RCTBundleURLProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTBundleURLProvider.m; sourceTree = \"<group>\"; };\n\t\tB89426062486B0CD00F22052 /* RCTRootView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRootView.h; sourceTree = \"<group>\"; };\n\t\tB89426072486B0CD00F22052 /* RCTErrorCustomizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTErrorCustomizer.h; sourceTree = \"<group>\"; };\n\t\tB89426082486B0CD00F22052 /* RCTParserUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTParserUtils.m; sourceTree = \"<group>\"; };\n\t\tB89426092486B0CD00F22052 /* RCTLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTLog.h; sourceTree = \"<group>\"; };\n\t\tB894260A2486B0CD00F22052 /* RCTTVRemoteHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTTVRemoteHandler.m; sourceTree = \"<group>\"; };\n\t\tB894260B2486B0CD00F22052 /* RCTManagedPointer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTManagedPointer.mm; sourceTree = \"<group>\"; };\n\t\tB894260C2486B0CD00F22052 /* RCTDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTDefines.h; sourceTree = \"<group>\"; };\n\t\tB894260D2486B0CD00F22052 /* RCTAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTAssert.h; sourceTree = \"<group>\"; };\n\t\tB894260E2486B0CD00F22052 /* RCTConvert.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTConvert.m; sourceTree = \"<group>\"; };\n\t\tB894260F2486B0CD00F22052 /* RCTEventDispatcher.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcher.m; sourceTree = \"<group>\"; };\n\t\tB89426102486B0CD00F22052 /* RCTKeyCommands.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTKeyCommands.h; sourceTree = \"<group>\"; };\n\t\tB89426112486B0CD00F22052 /* RCTImageSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageSource.h; sourceTree = \"<group>\"; };\n\t\tB89426122486B5E200F22052 /* GoogleNearbyMessagesBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GoogleNearbyMessagesBridge.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t58B511D81A9E6C8500147676 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t134814211AA4EA7D00B7C361 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t134814201AA4EA6300B7C361 /* libGoogleNearbyMessages.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t58B511D21A9E6C8500147676 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89426122486B5E200F22052 /* GoogleNearbyMessagesBridge.m */,\n\t\t\t\tB89424852486AF5900F22052 /* GoogleNearbyMessages.swift */,\n\t\t\t\t134814211AA4EA7D00B7C361 /* Products */,\n\t\t\t\tB89424842486AF5800F22052 /* GoogleNearbyMessagesBridge.h */,\n\t\t\t\tB89424872486B0CC00F22052 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424872486B0CC00F22052 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424882486B0CC00F22052 /* React */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424882486B0CC00F22052 /* React */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424892486B0CC00F22052 /* CoreModules */,\n\t\t\t\tB89424982486B0CC00F22052 /* UIUtils */,\n\t\t\t\tB894249B2486B0CC00F22052 /* CxxModule */,\n\t\t\t\tB89424A52486B0CC00F22052 /* CxxBridge */,\n\t\t\t\tB89424B02486B0CC00F22052 /* third-party.xcconfig */,\n\t\t\t\tB89424B12486B0CC00F22052 /* Inspector */,\n\t\t\t\tB89424B62486B0CC00F22052 /* DevSupport */,\n\t\t\t\tB89424C12486B0CC00F22052 /* React-RCTFabric.podspec */,\n\t\t\t\tB89424C22486B0CC00F22052 /* Fabric */,\n\t\t\t\tB894250F2486B0CD00F22052 /* Profiler */,\n\t\t\t\tB894251A2486B0CD00F22052 /* CxxUtils */,\n\t\t\t\tB894251D2486B0CD00F22052 /* Modules */,\n\t\t\t\tB894254C2486B0CD00F22052 /* Views */,\n\t\t\t\tB89425B12486B0CD00F22052 /* Base */,\n\t\t\t);\n\t\t\tname = React;\n\t\t\tpath = \"../node_modules/react-native/React\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424892486B0CC00F22052 /* CoreModules */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894248A2486B0CC00F22052 /* RCTImageLoader.h */,\n\t\t\t\tB894248B2486B0CC00F22052 /* RCTImageStoreManager.h */,\n\t\t\t\tB894248C2486B0CC00F22052 /* RCTPlatform.h */,\n\t\t\t\tB894248D2486B0CC00F22052 /* RCTImageEditingManager.m */,\n\t\t\t\tB894248E2486B0CC00F22052 /* CoreModulesPlugins.h */,\n\t\t\t\tB894248F2486B0CC00F22052 /* BUCK */,\n\t\t\t\tB89424902486B0CC00F22052 /* RCTExceptionsManager.h */,\n\t\t\t\tB89424912486B0CC00F22052 /* RCTPlatform.mm */,\n\t\t\t\tB89424922486B0CC00F22052 /* RCTImageEditingManager.h */,\n\t\t\t\tB89424932486B0CC00F22052 /* RCTExceptionsManager.mm */,\n\t\t\t\tB89424942486B0CC00F22052 /* RCTImageLoader.mm */,\n\t\t\t\tB89424952486B0CC00F22052 /* RCTImageStoreManager.m */,\n\t\t\t\tB89424962486B0CC00F22052 /* CoreModulesPlugins.mm */,\n\t\t\t\tB89424972486B0CC00F22052 /* React-CoreModules.podspec */,\n\t\t\t);\n\t\t\tpath = CoreModules;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424982486B0CC00F22052 /* UIUtils */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424992486B0CC00F22052 /* RCTUIUtils.m */,\n\t\t\t\tB894249A2486B0CC00F22052 /* RCTUIUtils.h */,\n\t\t\t);\n\t\t\tpath = UIUtils;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894249B2486B0CC00F22052 /* CxxModule */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894249C2486B0CC00F22052 /* RCTNativeModule.mm */,\n\t\t\t\tB894249D2486B0CC00F22052 /* RCTCxxUtils.mm */,\n\t\t\t\tB894249E2486B0CC00F22052 /* RCTNativeModule.h */,\n\t\t\t\tB894249F2486B0CC00F22052 /* RCTCxxMethod.h */,\n\t\t\t\tB89424A02486B0CC00F22052 /* RCTCxxModule.mm */,\n\t\t\t\tB89424A12486B0CC00F22052 /* DispatchMessageQueueThread.h */,\n\t\t\t\tB89424A22486B0CC00F22052 /* RCTCxxUtils.h */,\n\t\t\t\tB89424A32486B0CC00F22052 /* RCTCxxMethod.mm */,\n\t\t\t\tB89424A42486B0CC00F22052 /* RCTCxxModule.h */,\n\t\t\t);\n\t\t\tpath = CxxModule;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424A52486B0CC00F22052 /* CxxBridge */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424A62486B0CC00F22052 /* RCTObjcExecutor.h */,\n\t\t\t\tB89424A72486B0CC00F22052 /* NSDataBigString.mm */,\n\t\t\t\tB89424A82486B0CC00F22052 /* RCTCxxBridge.mm */,\n\t\t\t\tB89424A92486B0CC00F22052 /* JSCExecutorFactory.h */,\n\t\t\t\tB89424AA2486B0CC00F22052 /* NSDataBigString.h */,\n\t\t\t\tB89424AB2486B0CC00F22052 /* RCTMessageThread.mm */,\n\t\t\t\tB89424AC2486B0CC00F22052 /* RCTMessageThread.h */,\n\t\t\t\tB89424AD2486B0CC00F22052 /* RCTCxxBridgeDelegate.h */,\n\t\t\t\tB89424AE2486B0CC00F22052 /* JSCExecutorFactory.mm */,\n\t\t\t\tB89424AF2486B0CC00F22052 /* RCTObjcExecutor.mm */,\n\t\t\t);\n\t\t\tpath = CxxBridge;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424B12486B0CC00F22052 /* Inspector */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424B22486B0CC00F22052 /* RCTInspector.h */,\n\t\t\t\tB89424B32486B0CC00F22052 /* RCTInspector.mm */,\n\t\t\t\tB89424B42486B0CC00F22052 /* RCTInspectorPackagerConnection.m */,\n\t\t\t\tB89424B52486B0CC00F22052 /* RCTInspectorPackagerConnection.h */,\n\t\t\t);\n\t\t\tpath = Inspector;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424B62486B0CC00F22052 /* DevSupport */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424B72486B0CC00F22052 /* RCTPackagerClient.h */,\n\t\t\t\tB89424B82486B0CC00F22052 /* RCTPackagerConnection.h */,\n\t\t\t\tB89424B92486B0CC00F22052 /* RCTInspectorDevServerHelper.h */,\n\t\t\t\tB89424BA2486B0CC00F22052 /* RCTDevLoadingView.m */,\n\t\t\t\tB89424BB2486B0CC00F22052 /* RCTDevMenu.m */,\n\t\t\t\tB89424BC2486B0CC00F22052 /* RCTInspectorDevServerHelper.mm */,\n\t\t\t\tB89424BD2486B0CC00F22052 /* RCTPackagerClient.m */,\n\t\t\t\tB89424BE2486B0CC00F22052 /* RCTPackagerConnection.mm */,\n\t\t\t\tB89424BF2486B0CC00F22052 /* RCTDevLoadingView.h */,\n\t\t\t\tB89424C02486B0CC00F22052 /* RCTDevMenu.h */,\n\t\t\t);\n\t\t\tpath = DevSupport;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424C22486B0CC00F22052 /* Fabric */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424C32486B0CC00F22052 /* RCTImageResponseObserverProxy.h */,\n\t\t\t\tB89424C42486B0CC00F22052 /* RCTSurfaceRegistry.h */,\n\t\t\t\tB89424C52486B0CC00F22052 /* Mounting */,\n\t\t\t\tB89424F52486B0CC00F22052 /* RCTPrimitives.h */,\n\t\t\t\tB89424F62486B0CC00F22052 /* RCTSurfacePresenter.mm */,\n\t\t\t\tB89424F72486B0CC00F22052 /* Surface */,\n\t\t\t\tB89424FE2486B0CC00F22052 /* Utils */,\n\t\t\t\tB89425052486B0CC00F22052 /* RCTImageResponseDelegate.h */,\n\t\t\t\tB89425062486B0CD00F22052 /* RCTTouchableComponentViewProtocol.h */,\n\t\t\t\tB89425072486B0CD00F22052 /* RCTConversions.h */,\n\t\t\t\tB89425082486B0CD00F22052 /* RCTSurfacePresenter.h */,\n\t\t\t\tB89425092486B0CD00F22052 /* RCTImageResponseObserverProxy.mm */,\n\t\t\t\tB894250A2486B0CD00F22052 /* RCTSurfaceRegistry.mm */,\n\t\t\t\tB894250B2486B0CD00F22052 /* RCTScheduler.h */,\n\t\t\t\tB894250C2486B0CD00F22052 /* RCTSurfaceTouchHandler.mm */,\n\t\t\t\tB894250D2486B0CD00F22052 /* RCTSurfaceTouchHandler.h */,\n\t\t\t\tB894250E2486B0CD00F22052 /* RCTScheduler.mm */,\n\t\t\t);\n\t\t\tpath = Fabric;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424C52486B0CC00F22052 /* Mounting */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424C62486B0CC00F22052 /* UIView+ComponentViewProtocol.h */,\n\t\t\t\tB89424C72486B0CC00F22052 /* RCTMountingManager.h */,\n\t\t\t\tB89424C82486B0CC00F22052 /* RCTMountingManagerDelegate.h */,\n\t\t\t\tB89424C92486B0CC00F22052 /* RCTComponentViewFactory.mm */,\n\t\t\t\tB89424CA2486B0CC00F22052 /* RCTComponentViewProtocol.h */,\n\t\t\t\tB89424CB2486B0CC00F22052 /* RCTMountingManager.mm */,\n\t\t\t\tB89424CC2486B0CC00F22052 /* ComponentViews */,\n\t\t\t\tB89424F12486B0CC00F22052 /* RCTComponentViewRegistry.mm */,\n\t\t\t\tB89424F22486B0CC00F22052 /* UIView+ComponentViewProtocol.mm */,\n\t\t\t\tB89424F32486B0CC00F22052 /* RCTComponentViewFactory.h */,\n\t\t\t\tB89424F42486B0CC00F22052 /* RCTComponentViewRegistry.h */,\n\t\t\t);\n\t\t\tpath = Mounting;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424CC2486B0CC00F22052 /* ComponentViews */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424CD2486B0CC00F22052 /* ScrollView */,\n\t\t\t\tB89424D42486B0CC00F22052 /* Slider */,\n\t\t\t\tB89424D72486B0CC00F22052 /* Image */,\n\t\t\t\tB89424DA2486B0CC00F22052 /* ActivityIndicator */,\n\t\t\t\tB89424DD2486B0CC00F22052 /* UnimplementedComponent */,\n\t\t\t\tB89424E02486B0CC00F22052 /* View */,\n\t\t\t\tB89424E32486B0CC00F22052 /* Switch */,\n\t\t\t\tB89424E62486B0CC00F22052 /* Root */,\n\t\t\t\tB89424E92486B0CC00F22052 /* Text */,\n\t\t\t\tB89424EC2486B0CC00F22052 /* Modal */,\n\t\t\t);\n\t\t\tpath = ComponentViews;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424CD2486B0CC00F22052 /* ScrollView */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424CE2486B0CC00F22052 /* RCTPullToRefreshViewComponentView.h */,\n\t\t\t\tB89424CF2486B0CC00F22052 /* RCTEnhancedScrollView.mm */,\n\t\t\t\tB89424D02486B0CC00F22052 /* RCTPullToRefreshViewComponentView.mm */,\n\t\t\t\tB89424D12486B0CC00F22052 /* RCTEnhancedScrollView.h */,\n\t\t\t\tB89424D22486B0CC00F22052 /* RCTScrollViewComponentView.mm */,\n\t\t\t\tB89424D32486B0CC00F22052 /* RCTScrollViewComponentView.h */,\n\t\t\t);\n\t\t\tpath = ScrollView;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424D42486B0CC00F22052 /* Slider */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424D52486B0CC00F22052 /* RCTSliderComponentView.h */,\n\t\t\t\tB89424D62486B0CC00F22052 /* RCTSliderComponentView.mm */,\n\t\t\t);\n\t\t\tpath = Slider;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424D72486B0CC00F22052 /* Image */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424D82486B0CC00F22052 /* RCTImageComponentView.mm */,\n\t\t\t\tB89424D92486B0CC00F22052 /* RCTImageComponentView.h */,\n\t\t\t);\n\t\t\tpath = Image;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424DA2486B0CC00F22052 /* ActivityIndicator */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424DB2486B0CC00F22052 /* RCTActivityIndicatorViewComponentView.h */,\n\t\t\t\tB89424DC2486B0CC00F22052 /* RCTActivityIndicatorViewComponentView.mm */,\n\t\t\t);\n\t\t\tpath = ActivityIndicator;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424DD2486B0CC00F22052 /* UnimplementedComponent */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424DE2486B0CC00F22052 /* RCTUnimplementedNativeComponentView.mm */,\n\t\t\t\tB89424DF2486B0CC00F22052 /* RCTUnimplementedNativeComponentView.h */,\n\t\t\t);\n\t\t\tpath = UnimplementedComponent;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424E02486B0CC00F22052 /* View */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424E12486B0CC00F22052 /* RCTViewComponentView.h */,\n\t\t\t\tB89424E22486B0CC00F22052 /* RCTViewComponentView.mm */,\n\t\t\t);\n\t\t\tpath = View;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424E32486B0CC00F22052 /* Switch */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424E42486B0CC00F22052 /* RCTSwitchComponentView.mm */,\n\t\t\t\tB89424E52486B0CC00F22052 /* RCTSwitchComponentView.h */,\n\t\t\t);\n\t\t\tpath = Switch;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424E62486B0CC00F22052 /* Root */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424E72486B0CC00F22052 /* RCTRootComponentView.h */,\n\t\t\t\tB89424E82486B0CC00F22052 /* RCTRootComponentView.mm */,\n\t\t\t);\n\t\t\tpath = Root;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424E92486B0CC00F22052 /* Text */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424EA2486B0CC00F22052 /* RCTParagraphComponentView.mm */,\n\t\t\t\tB89424EB2486B0CC00F22052 /* RCTParagraphComponentView.h */,\n\t\t\t);\n\t\t\tpath = Text;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424EC2486B0CC00F22052 /* Modal */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424ED2486B0CC00F22052 /* RCTFabricModalHostViewController.mm */,\n\t\t\t\tB89424EE2486B0CC00F22052 /* RCTModalHostViewComponentView.h */,\n\t\t\t\tB89424EF2486B0CC00F22052 /* RCTModalHostViewComponentView.mm */,\n\t\t\t\tB89424F02486B0CC00F22052 /* RCTFabricModalHostViewController.h */,\n\t\t\t);\n\t\t\tpath = Modal;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424F72486B0CC00F22052 /* Surface */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424F82486B0CC00F22052 /* RCTFabricSurfaceHostingProxyRootView.mm */,\n\t\t\t\tB89424F92486B0CC00F22052 /* RCTFabricSurface.mm */,\n\t\t\t\tB89424FA2486B0CC00F22052 /* RCTFabricSurfaceHostingView.h */,\n\t\t\t\tB89424FB2486B0CC00F22052 /* RCTFabricSurface.h */,\n\t\t\t\tB89424FC2486B0CC00F22052 /* RCTFabricSurfaceHostingProxyRootView.h */,\n\t\t\t\tB89424FD2486B0CC00F22052 /* RCTFabricSurfaceHostingView.mm */,\n\t\t\t);\n\t\t\tpath = Surface;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89424FE2486B0CC00F22052 /* Utils */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89424FF2486B0CC00F22052 /* RuntimeEventBeat.mm */,\n\t\t\t\tB89425002486B0CC00F22052 /* MainRunLoopEventBeat.mm */,\n\t\t\t\tB89425012486B0CC00F22052 /* RuntimeEventBeat.h */,\n\t\t\t\tB89425022486B0CC00F22052 /* MainRunLoopEventBeat.h */,\n\t\t\t\tB89425032486B0CC00F22052 /* RCTGenericDelegateSplitter.mm */,\n\t\t\t\tB89425042486B0CC00F22052 /* RCTGenericDelegateSplitter.h */,\n\t\t\t);\n\t\t\tpath = Utils;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894250F2486B0CD00F22052 /* Profiler */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89425102486B0CD00F22052 /* RCTFPSGraph.m */,\n\t\t\t\tB89425112486B0CD00F22052 /* RCTProfileTrampoline-arm.S */,\n\t\t\t\tB89425122486B0CD00F22052 /* RCTProfileTrampoline-i386.S */,\n\t\t\t\tB89425132486B0CD00F22052 /* RCTProfile.m */,\n\t\t\t\tB89425142486B0CD00F22052 /* RCTProfileTrampoline-arm64.S */,\n\t\t\t\tB89425152486B0CD00F22052 /* RCTProfile.h */,\n\t\t\t\tB89425162486B0CD00F22052 /* RCTFPSGraph.h */,\n\t\t\t\tB89425172486B0CD00F22052 /* RCTMacros.h */,\n\t\t\t\tB89425182486B0CD00F22052 /* RCTPerfMonitor.m */,\n\t\t\t\tB89425192486B0CD00F22052 /* RCTProfileTrampoline-x86_64.S */,\n\t\t\t);\n\t\t\tpath = Profiler;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894251A2486B0CD00F22052 /* CxxUtils */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894251B2486B0CD00F22052 /* RCTFollyConvert.mm */,\n\t\t\t\tB894251C2486B0CD00F22052 /* RCTFollyConvert.h */,\n\t\t\t);\n\t\t\tpath = CxxUtils;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894251D2486B0CD00F22052 /* Modules */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894251E2486B0CD00F22052 /* RCTDevSettings.mm */,\n\t\t\t\tB894251F2486B0CD00F22052 /* RCTStatusBarManager.m */,\n\t\t\t\tB89425202486B0CD00F22052 /* RCTLayoutAnimationGroup.h */,\n\t\t\t\tB89425212486B0CD00F22052 /* RCTKeyboardObserver.m */,\n\t\t\t\tB89425222486B0CD00F22052 /* RCTSurfacePresenterStub.m */,\n\t\t\t\tB89425232486B0CD00F22052 /* RCTTVNavigationEventEmitter.h */,\n\t\t\t\tB89425242486B0CD00F22052 /* RCTAsyncLocalStorage.m */,\n\t\t\t\tB89425252486B0CD00F22052 /* RCTSourceCode.m */,\n\t\t\t\tB89425262486B0CD00F22052 /* RCTUIManagerUtils.m */,\n\t\t\t\tB89425272486B0CD00F22052 /* RCTAccessibilityManager.m */,\n\t\t\t\tB89425282486B0CD00F22052 /* RCTClipboard.h */,\n\t\t\t\tB89425292486B0CD00F22052 /* RCTUIManager.h */,\n\t\t\t\tB894252A2486B0CD00F22052 /* RCTRedBox.m */,\n\t\t\t\tB894252B2486B0CD00F22052 /* RCTAlertManager.m */,\n\t\t\t\tB894252C2486B0CD00F22052 /* RCTI18nUtil.m */,\n\t\t\t\tB894252D2486B0CD00F22052 /* RCTTiming.h */,\n\t\t\t\tB894252E2486B0CD00F22052 /* RCTI18nManager.m */,\n\t\t\t\tB894252F2486B0CD00F22052 /* RCTEventEmitter.m */,\n\t\t\t\tB89425302486B0CD00F22052 /* RCTAppState.m */,\n\t\t\t\tB89425312486B0CD00F22052 /* RCTRedBoxExtraDataViewController.m */,\n\t\t\t\tB89425322486B0CD00F22052 /* RCTDevSettings.h */,\n\t\t\t\tB89425332486B0CD00F22052 /* RCTLayoutAnimation.h */,\n\t\t\t\tB89425342486B0CD00F22052 /* RCTDeviceInfo.m */,\n\t\t\t\tB89425352486B0CD00F22052 /* RCTSurfacePresenterStub.h */,\n\t\t\t\tB89425362486B0CD00F22052 /* RCTLayoutAnimationGroup.m */,\n\t\t\t\tB89425372486B0CD00F22052 /* RCTKeyboardObserver.h */,\n\t\t\t\tB89425382486B0CD00F22052 /* RCTStatusBarManager.h */,\n\t\t\t\tB89425392486B0CD00F22052 /* RCTClipboard.m */,\n\t\t\t\tB894253A2486B0CD00F22052 /* RCTUIManagerUtils.h */,\n\t\t\t\tB894253B2486B0CD00F22052 /* RCTAccessibilityManager.h */,\n\t\t\t\tB894253C2486B0CD00F22052 /* RCTUIManagerObserverCoordinator.mm */,\n\t\t\t\tB894253D2486B0CD00F22052 /* RCTSourceCode.h */,\n\t\t\t\tB894253E2486B0CD00F22052 /* RCTAsyncLocalStorage.h */,\n\t\t\t\tB894253F2486B0CD00F22052 /* RCTTVNavigationEventEmitter.m */,\n\t\t\t\tB89425402486B0CD00F22052 /* RCTI18nManager.h */,\n\t\t\t\tB89425412486B0CD00F22052 /* RCTTiming.m */,\n\t\t\t\tB89425422486B0CD00F22052 /* RCTAlertManager.h */,\n\t\t\t\tB89425432486B0CD00F22052 /* RCTRedBox.h */,\n\t\t\t\tB89425442486B0CD00F22052 /* RCTI18nUtil.h */,\n\t\t\t\tB89425452486B0CD00F22052 /* RCTUIManager.m */,\n\t\t\t\tB89425462486B0CD00F22052 /* RCTDeviceInfo.h */,\n\t\t\t\tB89425472486B0CD00F22052 /* RCTUIManagerObserverCoordinator.h */,\n\t\t\t\tB89425482486B0CD00F22052 /* RCTLayoutAnimation.m */,\n\t\t\t\tB89425492486B0CD00F22052 /* RCTRedBoxExtraDataViewController.h */,\n\t\t\t\tB894254A2486B0CD00F22052 /* RCTAppState.h */,\n\t\t\t\tB894254B2486B0CD00F22052 /* RCTEventEmitter.h */,\n\t\t\t);\n\t\t\tpath = Modules;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894254C2486B0CD00F22052 /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894254D2486B0CD00F22052 /* RCTViewManager.h */,\n\t\t\t\tB894254E2486B0CD00F22052 /* RCTShadowView.h */,\n\t\t\t\tB894254F2486B0CD00F22052 /* SafeAreaView */,\n\t\t\t\tB89425582486B0CD00F22052 /* UIView+React.m */,\n\t\t\t\tB89425592486B0CD00F22052 /* RCTView.m */,\n\t\t\t\tB894255A2486B0CD00F22052 /* ScrollView */,\n\t\t\t\tB89425662486B0CD00F22052 /* RCTShadowView+Internal.h */,\n\t\t\t\tB89425672486B0CD00F22052 /* RCTSlider.m */,\n\t\t\t\tB89425682486B0CD00F22052 /* RCTSegmentedControl.m */,\n\t\t\t\tB89425692486B0CD00F22052 /* RCTLayout.m */,\n\t\t\t\tB894256A2486B0CD00F22052 /* RCTSliderManager.m */,\n\t\t\t\tB894256B2486B0CD00F22052 /* RCTProgressViewManager.m */,\n\t\t\t\tB894256C2486B0CD00F22052 /* RCTConvert+Transform.h */,\n\t\t\t\tB894256D2486B0CD00F22052 /* RCTComponentData.m */,\n\t\t\t\tB894256E2486B0CD00F22052 /* RCTMaskedViewManager.m */,\n\t\t\t\tB894256F2486B0CD00F22052 /* RCTModalManager.h */,\n\t\t\t\tB89425702486B0CD00F22052 /* RCTShadowView+Layout.m */,\n\t\t\t\tB89425712486B0CD00F22052 /* RCTFont.h */,\n\t\t\t\tB89425722486B0CD00F22052 /* RCTRefreshControlManager.h */,\n\t\t\t\tB89425732486B0CD00F22052 /* RCTModalHostView.m */,\n\t\t\t\tB89425742486B0CD00F22052 /* RCTBorderDrawing.m */,\n\t\t\t\tB89425752486B0CD00F22052 /* RCTWrapperViewController.m */,\n\t\t\t\tB89425762486B0CD00F22052 /* RCTModalHostViewController.m */,\n\t\t\t\tB89425772486B0CD00F22052 /* RCTRefreshControl.h */,\n\t\t\t\tB89425782486B0CD00F22052 /* RCTSwitch.m */,\n\t\t\t\tB89425792486B0CD00F22052 /* RCTConvert+CoreLocation.h */,\n\t\t\t\tB894257A2486B0CD00F22052 /* RCTDatePicker.h */,\n\t\t\t\tB894257B2486B0CD00F22052 /* RCTMaskedView.m */,\n\t\t\t\tB894257C2486B0CD00F22052 /* RCTDatePickerManager.m */,\n\t\t\t\tB894257D2486B0CD00F22052 /* RCTComponent.h */,\n\t\t\t\tB894257E2486B0CD00F22052 /* RCTSwitchManager.h */,\n\t\t\t\tB894257F2486B0CD00F22052 /* RCTModalHostViewManager.h */,\n\t\t\t\tB89425802486B0CD00F22052 /* RCTPickerManager.h */,\n\t\t\t\tB89425812486B0CD00F22052 /* RCTTVView.h */,\n\t\t\t\tB89425822486B0CD00F22052 /* RCTPicker.m */,\n\t\t\t\tB89425832486B0CD00F22052 /* RCTSegmentedControlManager.m */,\n\t\t\t\tB89425842486B0CD00F22052 /* RCTAnimationType.h */,\n\t\t\t\tB89425852486B0CD00F22052 /* RCTActivityIndicatorView.m */,\n\t\t\t\tB89425862486B0CD00F22052 /* RCTActivityIndicatorViewManager.m */,\n\t\t\t\tB89425872486B0CD00F22052 /* RCTRootShadowView.h */,\n\t\t\t\tB89425882486B0CD00F22052 /* RCTPointerEvents.h */,\n\t\t\t\tB89425892486B0CD00F22052 /* RCTConvert+Transform.m */,\n\t\t\t\tB894258A2486B0CD00F22052 /* RCTProgressViewManager.h */,\n\t\t\t\tB894258B2486B0CD00F22052 /* RCTSliderManager.h */,\n\t\t\t\tB894258C2486B0CD00F22052 /* RCTSegmentedControl.h */,\n\t\t\t\tB894258D2486B0CD00F22052 /* RCTLayout.h */,\n\t\t\t\tB894258E2486B0CD00F22052 /* RCTSlider.h */,\n\t\t\t\tB894258F2486B0CD00F22052 /* RCTShadowView+Internal.m */,\n\t\t\t\tB89425902486B0CD00F22052 /* RCTView.h */,\n\t\t\t\tB89425912486B0CD00F22052 /* RCTBorderStyle.h */,\n\t\t\t\tB89425922486B0CD00F22052 /* UIView+React.h */,\n\t\t\t\tB89425932486B0CD00F22052 /* RCTShadowView.m */,\n\t\t\t\tB89425942486B0CD00F22052 /* RCTViewManager.m */,\n\t\t\t\tB89425952486B0CD00F22052 /* RCTWrapperViewController.h */,\n\t\t\t\tB89425962486B0CD00F22052 /* RCTModalHostViewController.h */,\n\t\t\t\tB89425972486B0CD00F22052 /* RCTRefreshControl.m */,\n\t\t\t\tB89425982486B0CD00F22052 /* RCTBorderDrawing.h */,\n\t\t\t\tB89425992486B0CD00F22052 /* RCTModalHostView.h */,\n\t\t\t\tB894259A2486B0CD00F22052 /* RCTRefreshControlManager.m */,\n\t\t\t\tB894259B2486B0CD00F22052 /* RCTModalManager.m */,\n\t\t\t\tB894259C2486B0CD00F22052 /* RCTShadowView+Layout.h */,\n\t\t\t\tB894259D2486B0CD00F22052 /* RCTMaskedViewManager.h */,\n\t\t\t\tB894259E2486B0CD00F22052 /* RCTComponentData.h */,\n\t\t\t\tB894259F2486B0CD00F22052 /* RCTFont.mm */,\n\t\t\t\tB89425A02486B0CD00F22052 /* RCTDatePickerManager.h */,\n\t\t\t\tB89425A12486B0CD00F22052 /* RCTDatePicker.m */,\n\t\t\t\tB89425A22486B0CD00F22052 /* RCTMaskedView.h */,\n\t\t\t\tB89425A32486B0CD00F22052 /* RCTAutoInsetsProtocol.h */,\n\t\t\t\tB89425A42486B0CD00F22052 /* RCTConvert+CoreLocation.m */,\n\t\t\t\tB89425A52486B0CD00F22052 /* RCTSwitch.h */,\n\t\t\t\tB89425A62486B0CD00F22052 /* UIView+Private.h */,\n\t\t\t\tB89425A72486B0CD00F22052 /* RCTRootShadowView.m */,\n\t\t\t\tB89425A82486B0CD00F22052 /* RCTActivityIndicatorViewManager.h */,\n\t\t\t\tB89425A92486B0CD00F22052 /* RCTActivityIndicatorView.h */,\n\t\t\t\tB89425AA2486B0CD00F22052 /* RCTSegmentedControlManager.h */,\n\t\t\t\tB89425AB2486B0CD00F22052 /* RCTPicker.h */,\n\t\t\t\tB89425AC2486B0CD00F22052 /* RCTTVView.m */,\n\t\t\t\tB89425AD2486B0CD00F22052 /* RCTPickerManager.m */,\n\t\t\t\tB89425AE2486B0CD00F22052 /* RCTModalHostViewManager.m */,\n\t\t\t\tB89425AF2486B0CD00F22052 /* RCTSwitchManager.m */,\n\t\t\t\tB89425B02486B0CD00F22052 /* RCTTextDecorationLineType.h */,\n\t\t\t);\n\t\t\tpath = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894254F2486B0CD00F22052 /* SafeAreaView */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89425502486B0CD00F22052 /* RCTSafeAreaShadowView.m */,\n\t\t\t\tB89425512486B0CD00F22052 /* RCTSafeAreaView.h */,\n\t\t\t\tB89425522486B0CD00F22052 /* RCTSafeAreaViewLocalData.h */,\n\t\t\t\tB89425532486B0CD00F22052 /* RCTSafeAreaViewManager.m */,\n\t\t\t\tB89425542486B0CD00F22052 /* RCTSafeAreaView.m */,\n\t\t\t\tB89425552486B0CD00F22052 /* RCTSafeAreaShadowView.h */,\n\t\t\t\tB89425562486B0CD00F22052 /* RCTSafeAreaViewManager.h */,\n\t\t\t\tB89425572486B0CD00F22052 /* RCTSafeAreaViewLocalData.m */,\n\t\t\t);\n\t\t\tpath = SafeAreaView;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB894255A2486B0CD00F22052 /* ScrollView */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB894255B2486B0CD00F22052 /* RCTScrollContentShadowView.h */,\n\t\t\t\tB894255C2486B0CD00F22052 /* RCTScrollContentViewManager.m */,\n\t\t\t\tB894255D2486B0CD00F22052 /* RCTScrollView.m */,\n\t\t\t\tB894255E2486B0CD00F22052 /* RCTScrollContentView.m */,\n\t\t\t\tB894255F2486B0CD00F22052 /* RCTScrollViewManager.m */,\n\t\t\t\tB89425602486B0CD00F22052 /* RCTScrollContentShadowView.m */,\n\t\t\t\tB89425612486B0CD00F22052 /* RCTScrollView.h */,\n\t\t\t\tB89425622486B0CD00F22052 /* RCTScrollContentViewManager.h */,\n\t\t\t\tB89425632486B0CD00F22052 /* RCTScrollViewManager.h */,\n\t\t\t\tB89425642486B0CD00F22052 /* RCTScrollableProtocol.h */,\n\t\t\t\tB89425652486B0CD00F22052 /* RCTScrollContentView.h */,\n\t\t\t);\n\t\t\tpath = ScrollView;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89425B12486B0CD00F22052 /* Base */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89425B22486B0CD00F22052 /* RCTURLRequestHandler.h */,\n\t\t\t\tB89425B32486B0CD00F22052 /* RCTTouchHandler.m */,\n\t\t\t\tB89425B42486B0CD00F22052 /* RCTReloadCommand.m */,\n\t\t\t\tB89425B52486B0CD00F22052 /* RCTCxxConvert.h */,\n\t\t\t\tB89425B62486B0CD00F22052 /* RCTUtils.h */,\n\t\t\t\tB89425B72486B0CD00F22052 /* RCTErrorInfo.h */,\n\t\t\t\tB89425B82486B0CD00F22052 /* RCTComponentEvent.m */,\n\t\t\t\tB89425B92486B0CD00F22052 /* RCTVersion.m */,\n\t\t\t\tB89425BA2486B0CD00F22052 /* RCTWeakProxy.h */,\n\t\t\t\tB89425BB2486B0CD00F22052 /* RCTBridge.h */,\n\t\t\t\tB89425BC2486B0CD00F22052 /* RCTManagedPointer.h */,\n\t\t\t\tB89425BD2486B0CD00F22052 /* RCTBridgeModule.h */,\n\t\t\t\tB89425BE2486B0CD00F22052 /* RCTModuleData.mm */,\n\t\t\t\tB89425BF2486B0CD00F22052 /* RCTJavaScriptExecutor.h */,\n\t\t\t\tB89425C02486B0CD00F22052 /* RCTFrameUpdate.m */,\n\t\t\t\tB89425C12486B0CD00F22052 /* RCTMultipartDataTask.h */,\n\t\t\t\tB89425C22486B0CD00F22052 /* RCTPerformanceLogger.h */,\n\t\t\t\tB89425C32486B0CD00F22052 /* RCTJSStackFrame.m */,\n\t\t\t\tB89425C42486B0CD00F22052 /* RCTRootContentView.m */,\n\t\t\t\tB89425C52486B0CD00F22052 /* RCTMultipartStreamReader.h */,\n\t\t\t\tB89425C62486B0CD00F22052 /* RCTJavaScriptLoader.mm */,\n\t\t\t\tB89425C72486B0CD00F22052 /* RCTTouchEvent.h */,\n\t\t\t\tB89425C82486B0CD00F22052 /* RCTDisplayLink.m */,\n\t\t\t\tB89425C92486B0CD00F22052 /* RCTRootViewInternal.h */,\n\t\t\t\tB89425CA2486B0CD00F22052 /* RCTTVRemoteHandler.h */,\n\t\t\t\tB89425CB2486B0CD00F22052 /* RCTParserUtils.h */,\n\t\t\t\tB89425CC2486B0CD00F22052 /* RCTRootViewDelegate.h */,\n\t\t\t\tB89425CD2486B0CD00F22052 /* RCTModuleMethod.h */,\n\t\t\t\tB89425CE2486B0CD00F22052 /* RCTRootView.m */,\n\t\t\t\tB89425CF2486B0CD00F22052 /* RCTBundleURLProvider.h */,\n\t\t\t\tB89425D02486B0CD00F22052 /* RCTImageSource.m */,\n\t\t\t\tB89425D12486B0CD00F22052 /* RCTBridgeDelegate.h */,\n\t\t\t\tB89425D22486B0CD00F22052 /* RCTURLRequestDelegate.h */,\n\t\t\t\tB89425D32486B0CD00F22052 /* RCTKeyCommands.m */,\n\t\t\t\tB89425D42486B0CD00F22052 /* Surface */,\n\t\t\t\tB89425E92486B0CD00F22052 /* RCTEventDispatcher.h */,\n\t\t\t\tB89425EA2486B0CD00F22052 /* RCTJavaScriptLoader.h */,\n\t\t\t\tB89425EB2486B0CD00F22052 /* RCTModuleData.h */,\n\t\t\t\tB89425EC2486B0CD00F22052 /* RCTConvert.h */,\n\t\t\t\tB89425ED2486B0CD00F22052 /* RCTModuleMethod.mm */,\n\t\t\t\tB89425EE2486B0CD00F22052 /* RCTAssert.m */,\n\t\t\t\tB89425EF2486B0CD00F22052 /* RCTLog.mm */,\n\t\t\t\tB89425F02486B0CD00F22052 /* RCTNullability.h */,\n\t\t\t\tB89425F12486B0CD00F22052 /* RCTVersion.h */,\n\t\t\t\tB89425F22486B0CD00F22052 /* RCTWeakProxy.m */,\n\t\t\t\tB89425F32486B0CD00F22052 /* RCTComponentEvent.h */,\n\t\t\t\tB89425F42486B0CD00F22052 /* RCTErrorInfo.m */,\n\t\t\t\tB89425F52486B0CD00F22052 /* RCTUtils.m */,\n\t\t\t\tB89425F62486B0CD00F22052 /* RCTCxxConvert.m */,\n\t\t\t\tB89425F72486B0CD00F22052 /* RCTInvalidating.h */,\n\t\t\t\tB89425F82486B0CD00F22052 /* RCTReloadCommand.h */,\n\t\t\t\tB89425F92486B0CD00F22052 /* RCTTouchHandler.h */,\n\t\t\t\tB89425FA2486B0CD00F22052 /* RCTTouchEvent.m */,\n\t\t\t\tB89425FB2486B0CD00F22052 /* RCTDisplayLink.h */,\n\t\t\t\tB89425FC2486B0CD00F22052 /* RCTBridgeMethod.h */,\n\t\t\t\tB89425FD2486B0CD00F22052 /* RCTMultipartStreamReader.m */,\n\t\t\t\tB89425FE2486B0CD00F22052 /* RCTRootContentView.h */,\n\t\t\t\tB89425FF2486B0CD00F22052 /* RCTPerformanceLogger.m */,\n\t\t\t\tB89426002486B0CD00F22052 /* RCTJSStackFrame.h */,\n\t\t\t\tB89426012486B0CD00F22052 /* RCTMultipartDataTask.m */,\n\t\t\t\tB89426022486B0CD00F22052 /* RCTFrameUpdate.h */,\n\t\t\t\tB89426032486B0CD00F22052 /* RCTBridge+Private.h */,\n\t\t\t\tB89426042486B0CD00F22052 /* RCTBridge.m */,\n\t\t\t\tB89426052486B0CD00F22052 /* RCTBundleURLProvider.m */,\n\t\t\t\tB89426062486B0CD00F22052 /* RCTRootView.h */,\n\t\t\t\tB89426072486B0CD00F22052 /* RCTErrorCustomizer.h */,\n\t\t\t\tB89426082486B0CD00F22052 /* RCTParserUtils.m */,\n\t\t\t\tB89426092486B0CD00F22052 /* RCTLog.h */,\n\t\t\t\tB894260A2486B0CD00F22052 /* RCTTVRemoteHandler.m */,\n\t\t\t\tB894260B2486B0CD00F22052 /* RCTManagedPointer.mm */,\n\t\t\t\tB894260C2486B0CD00F22052 /* RCTDefines.h */,\n\t\t\t\tB894260D2486B0CD00F22052 /* RCTAssert.h */,\n\t\t\t\tB894260E2486B0CD00F22052 /* RCTConvert.m */,\n\t\t\t\tB894260F2486B0CD00F22052 /* RCTEventDispatcher.m */,\n\t\t\t\tB89426102486B0CD00F22052 /* RCTKeyCommands.h */,\n\t\t\t\tB89426112486B0CD00F22052 /* RCTImageSource.h */,\n\t\t\t);\n\t\t\tpath = Base;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89425D42486B0CD00F22052 /* Surface */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89425D52486B0CD00F22052 /* RCTSurfaceRootView.h */,\n\t\t\t\tB89425D62486B0CD00F22052 /* RCTSurfaceStage.m */,\n\t\t\t\tB89425D72486B0CD00F22052 /* RCTSurfaceView.mm */,\n\t\t\t\tB89425D82486B0CD00F22052 /* RCTSurfaceRootShadowView.m */,\n\t\t\t\tB89425D92486B0CD00F22052 /* RCTSurfaceDelegate.h */,\n\t\t\t\tB89425DA2486B0CD00F22052 /* SurfaceHostingView */,\n\t\t\t\tB89425E12486B0CD00F22052 /* RCTSurface.h */,\n\t\t\t\tB89425E22486B0CD00F22052 /* RCTSurfaceRootView.mm */,\n\t\t\t\tB89425E32486B0CD00F22052 /* RCTSurfaceView.h */,\n\t\t\t\tB89425E42486B0CD00F22052 /* RCTSurfaceRootShadowViewDelegate.h */,\n\t\t\t\tB89425E52486B0CD00F22052 /* RCTSurfaceRootShadowView.h */,\n\t\t\t\tB89425E62486B0CD00F22052 /* RCTSurfaceStage.h */,\n\t\t\t\tB89425E72486B0CD00F22052 /* RCTSurfaceView+Internal.h */,\n\t\t\t\tB89425E82486B0CD00F22052 /* RCTSurface.mm */,\n\t\t\t);\n\t\t\tpath = Surface;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB89425DA2486B0CD00F22052 /* SurfaceHostingView */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB89425DB2486B0CD00F22052 /* RCTSurfaceSizeMeasureMode.h */,\n\t\t\t\tB89425DC2486B0CD00F22052 /* RCTSurfaceSizeMeasureMode.mm */,\n\t\t\t\tB89425DD2486B0CD00F22052 /* RCTSurfaceHostingProxyRootView.mm */,\n\t\t\t\tB89425DE2486B0CD00F22052 /* RCTSurfaceHostingView.mm */,\n\t\t\t\tB89425DF2486B0CD00F22052 /* RCTSurfaceHostingProxyRootView.h */,\n\t\t\t\tB89425E02486B0CD00F22052 /* RCTSurfaceHostingView.h */,\n\t\t\t);\n\t\t\tpath = SurfaceHostingView;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t58B511DA1A9E6C8500147676 /* GoogleNearbyMessages */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget \"GoogleNearbyMessages\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t58B511D71A9E6C8500147676 /* Sources */,\n\t\t\t\t58B511D81A9E6C8500147676 /* Frameworks */,\n\t\t\t\t58B511D91A9E6C8500147676 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = GoogleNearbyMessages;\n\t\t\tproductName = RCTDataManager;\n\t\t\tproductReference = 134814201AA4EA6300B7C361 /* libGoogleNearbyMessages.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t58B511D31A9E6C8500147676 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0920;\n\t\t\t\tORGANIZATIONNAME = Facebook;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t58B511DA1A9E6C8500147676 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.1.1;\n\t\t\t\t\t\tLastSwiftMigration = 1150;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject \"GoogleNearbyMessages\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 58B511D21A9E6C8500147676;\n\t\t\tproductRefGroup = 58B511D21A9E6C8500147676;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t58B511DA1A9E6C8500147676 /* GoogleNearbyMessages */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t58B511D71A9E6C8500147676 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tB89426132486B5E200F22052 /* GoogleNearbyMessagesBridge.m in Sources */,\n\t\t\t\tB89424862486AF5900F22052 /* GoogleNearbyMessages.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t58B511ED1A9E6C8500147676 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(inherited)\\\"\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t58B511EE1A9E6C8500147676 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(inherited)\\\"\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t58B511F01A9E6C8500147676 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,\n\t\t\t\t);\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = GoogleNearbyMessages;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = GoogleNearbyMessagesBridge.h;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tSYSTEM_HEADER_SEARCH_PATHS = \"$(SRCROOT)/../node_modules/react-native/** $(SRCROOT)/../example/ios/Pods/Headers/Public/**\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t58B511F11A9E6C8500147676 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,\n\t\t\t\t);\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = GoogleNearbyMessages;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = GoogleNearbyMessagesBridge.h;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tSYSTEM_HEADER_SEARCH_PATHS = \"$(SRCROOT)/../node_modules/react-native/** $(SRCROOT)/../example/ios/Pods/Headers/Public/**\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t58B511D61A9E6C8500147676 /* Build configuration list for PBXProject \"GoogleNearbyMessages\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t58B511ED1A9E6C8500147676 /* Debug */,\n\t\t\t\t58B511EE1A9E6C8500147676 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget \"GoogleNearbyMessages\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t58B511F01A9E6C8500147676 /* Debug */,\n\t\t\t\t58B511F11A9E6C8500147676 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 58B511D31A9E6C8500147676 /* Project object */;\n}\n"
  },
  {
    "path": "ios/GoogleNearbyMessages.xcodeproj/xcshareddata/xcschemes/GoogleNearbyMessages.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1150\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"NO\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"58B511DA1A9E6C8500147676\"\n               BuildableName = \"libGoogleNearbyMessages.a\"\n               BlueprintName = \"GoogleNearbyMessages\"\n               ReferencedContainer = \"container:GoogleNearbyMessages.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"58B511DA1A9E6C8500147676\"\n            BuildableName = \"libGoogleNearbyMessages.a\"\n            BlueprintName = \"GoogleNearbyMessages\"\n            ReferencedContainer = \"container:GoogleNearbyMessages.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "ios/GoogleNearbyMessages.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:GoogleNearbyMessages.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ios/GoogleNearbyMessages.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/GoogleNearbyMessagesBridge.h",
    "content": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n\n#import <Foundation/Foundation.h>\n#import \"RCTBridgeModule.h\"\n#import \"RCTEventEmitter.h\"\n#import \"GNSMessages.h\"\n\n@interface GoogleNearbyMessagesBridge: NSObject\n@end\n"
  },
  {
    "path": "ios/GoogleNearbyMessagesBridge.m",
    "content": "//\n//  GoogleNearbyMessagesBridge.m\n//  GoogleNearbyMessages\n//\n//  Created by Marc Rousavy on 02.06.20.\n//  Copyright © 2020 Facebook. All rights reserved.\n//\n\n#import \"GoogleNearbyMessagesBridge.h\"\n#import \"RCTBridgeModule.h\"\n#import \"RCTEventEmitter.h\"\n\n@interface RCT_EXTERN_REMAP_MODULE(GoogleNearbyMessages, NearbyMessages, NSObject)\n\nRCT_EXTERN_METHOD(connect:(NSString)apiKey discoveryModes:(NSArray)discoveryModes discoveryMediums:(NSArray)discoveryMediums resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\nRCT_EXTERN_METHOD(disconnect);\nRCT_EXTERN_METHOD(publish:(NSString)message resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\nRCT_EXTERN_METHOD(unpublish:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\nRCT_EXTERN_METHOD(subscribe:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\nRCT_EXTERN_METHOD(unsubscribe);\nRCT_EXTERN_METHOD(checkBluetoothPermission:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\nRCT_EXTERN_METHOD(checkBluetoothAvailability:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);\n\n@end\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"react-native-google-nearby-messages\",\n  \"title\": \"React Native Google Nearby Messages\",\n  \"version\": \"1.0.22\",\n  \"description\": \"An async Google Nearby Messages API Wrapper for React Native (Android & iOS)\",\n  \"main\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"files\": [\n    \"README.md\",\n    \"android/src\",\n    \"android/build.gradle\",\n    \"ios/GoogleNearbyMessages.xcodeproj/project.pbxproj\",\n    \"ios/GoogleNearbyMessages.swift\",\n    \"ios/GoogleNearbyMessagesBridge.h\",\n    \"ios/GoogleNearbyMessagesBridge.m\",\n    \"dist\",\n    \"react-native-google-nearby-messages.podspec\"\n  ],\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mrousavy/react-native-google-nearby-messages.git\",\n    \"baseUrl\": \"https://github.com/mrousavy/react-native-google-nearby-messages\"\n  },\n  \"keywords\": [\n    \"react-native\",\n    \"google\",\n    \"nearby\",\n    \"messages\",\n    \"android\",\n    \"ios\",\n    \"native-module\",\n    \"nearby-messages\",\n    \"google-nearby\",\n    \"swift\",\n    \"java\",\n    \"kotlin\",\n    \"bluetooth\",\n    \"ble\",\n    \"wifi\",\n    \"broadcast\",\n    \"audio\",\n    \"microphone\"\n  ],\n  \"author\": {\n    \"name\": \"Marc Rousavy\",\n    \"email\": \"marcrousavy@email.com\"\n  },\n  \"license\": \"MIT\",\n  \"licenseFilename\": \"LICENSE\",\n  \"readmeFilename\": \"README.md\",\n  \"peerDependencies\": {\n    \"react\": \"^16.8.1\",\n    \"react-native\": \">=0.60.0-rc.0 <1.0.x\"\n  },\n  \"devDependencies\": {\n    \"@types/react-native\": \"^0.62.12\",\n    \"eslint\": \"^7.1.0\",\n    \"react\": \"^16.9.0\",\n    \"react-native\": \"^0.62.2\",\n    \"typescript\": \"^3.9.3\"\n  }\n}\n"
  },
  {
    "path": "react-native-google-nearby-messages.podspec",
    "content": "require \"json\"\n\npackage = JSON.parse(File.read(File.join(__dir__, \"package.json\")))\n\nPod::Spec.new do |s|\n  s.name         = \"react-native-google-nearby-messages\"\n  s.version      = package[\"version\"]\n  s.summary      = package[\"description\"]\n  s.description  = <<-DESC\n                  react-native-google-nearby-messages\n                   DESC\n  s.homepage     = \"https://github.com/github_account/react-native-google-nearby-messages\"\n  # brief license entry:\n  s.license      = \"MIT\"\n  # optional - use expanded license entry instead:\n  # s.license    = { :type => \"MIT\", :file => \"LICENSE\" }\n  s.authors      = { \"Marc Rousavy\" => \"marcrousavy@email.com\" }\n  s.platforms    = { :ios => \"9.0\" }\n  s.source       = { :git => \"https://github.com/github_account/react-native-google-nearby-messages.git\", :tag => \"#{s.version}\" }\n\n  s.source_files = \"ios/**/*.{h,c,m,swift}\"\n  s.requires_arc = true\n\n  s.dependency \"React-Core\"\n  s.dependency \"NearbyMessages\"\nend\n\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    /* Basic Options */\n    \"target\": \"esnext\" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,\n    \"module\": \"commonjs\" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,\n    \"lib\": [\n      \"es6\",\n      \"DOM\"\n    ] /* Specify library files to be included in the compilation. */,\n    \"allowJs\": true /* Allow javascript files to be compiled. */,\n    // \"checkJs\": true,                       /* Report errors in .js files. */\n    \"jsx\": \"react-native\" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */,\n    \"declaration\": true /* Generates corresponding '.d.ts' file. */,\n    // \"sourceMap\": true,                     /* Generates corresponding '.map' file. */\n    // \"outFile\": \"./\",                       /* Concatenate and emit output to single file. */\n    \"outDir\": \"./dist\" /* Redirect output structure to the directory. */,\n    // \"rootDir\": \"./\",                       /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */\n    // \"removeComments\": true,                /* Do not emit comments to output. */\n    \"noEmit\": true /* Do not emit outputs. */,\n    // \"incremental\": true,                   /* Enable incremental compilation */\n    // \"importHelpers\": true,                 /* Import emit helpers from 'tslib'. */\n    // \"downlevelIteration\": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */\n    \"isolatedModules\": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */,\n    /* Strict Type-Checking Options */\n    \"strict\": true /* Enable all strict type-checking options. */,\n    \"noImplicitAny\": true /* Raise error on expressions and declarations with an implied 'any' type. */,\n    // \"strictNullChecks\": true,              /* Enable strict null checks. */\n    // \"strictFunctionTypes\": true,           /* Enable strict checking of function types. */\n    // \"strictPropertyInitialization\": true,  /* Enable strict checking of property initialization in classes. */\n    // \"noImplicitThis\": true,                /* Raise error on 'this' expressions with an implied 'any' type. */\n    // \"alwaysStrict\": true,                  /* Parse in strict mode and emit \"use strict\" for each source file. */\n    /* Additional Checks */\n    // \"noUnusedLocals\": true,                /* Report errors on unused locals. */\n    // \"noUnusedParameters\": true,            /* Report errors on unused parameters. */\n    // \"noImplicitReturns\": true,             /* Report error when not all code paths in function return a value. */\n    // \"noFallthroughCasesInSwitch\": true,    /* Report errors for fallthrough cases in switch statement. */\n    /* Module Resolution Options */\n    \"moduleResolution\": \"node\" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,\n    \"baseUrl\": \"./\" /* Base directory to resolve non-absolute module names. */,\n    // \"paths\": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */\n    // \"rootDirs\": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */\n    // \"typeRoots\": [],                       /* List of folders to include type definitions from. */\n    // \"types\": [],                           /* Type declaration files to be included in compilation. */\n    \"allowSyntheticDefaultImports\": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */,\n    \"esModuleInterop\": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */\n    // \"preserveSymlinks\": true,              /* Do not resolve the real path of symlinks. */\n    /* Source Map Options */\n    // \"sourceRoot\": \"./\",                    /* Specify the location where debugger should locate TypeScript files instead of source locations. */\n    // \"mapRoot\": \"./\",                       /* Specify the location where debugger should locate map files instead of generated locations. */\n    // \"inlineSourceMap\": true,               /* Emit a single file with source maps instead of having a separate file. */\n    // \"inlineSources\": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */\n    /* Experimental Options */\n    // \"experimentalDecorators\": true,        /* Enables experimental support for ES7 decorators. */\n    // \"emitDecoratorMetadata\": true,         /* Enables experimental support for emitting type metadata for decorators. */\n  },\n  \"files\": [\n    \"index.ts\"\n  ],\n  \"include\": [\n    \"index.ts\"\n  ],\n}\n"
  }
]