{"id":"37a42e8b-1b9a-4c52-8d43-2c17e5a47c97","shortId":"zCCLrm","kind":"skill","title":"cometchat-android-v6-troubleshooting","tagline":"CometChat Android UIKit v6 troubleshooting — diagnostic table, common issues, and fixes for both Kotlin Views and Compose stacks","description":"> **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-compose-theming, cometchat-android-v6-kotlin-theming, cometchat-android-v6-push\n\n## Purpose\n\nDiagnose and fix common issues with CometChat Android UIKit v6 across both Kotlin Views and Jetpack Compose stacks.\n\n## Use this skill when\n\n- Encountering errors during SDK initialization or login\n- Components not rendering or displaying incorrectly\n- Push notifications not working\n- Call features not functioning\n- Build or dependency issues\n\n## Do not use this skill when\n\n- Setting up a new project (use `cometchat-android-v6-core`)\n- Looking for component APIs (use `cometchat-*-components`)\n\n## 1. Diagnostic Table\n\n| Symptom | Likely Cause | Fix |\n|---|---|---|\n| `Authentication null` error on init | `UIKitSettings` not configured | Ensure `setAppId()` and `setRegion()` are called on builder |\n| `APP ID null` error on init | Missing app ID | Call `setAppId(\"YOUR_APP_ID\")` on `UIKitSettingsBuilder` |\n| Login fails with auth error | Invalid authKey or UID | Verify authKey from CometChat dashboard; check UID exists |\n| Components show no data | SDK not initialized or user not logged in | Check `CometChatUIKit.isSDKInitialized()` and `getLoggedInUser()` |\n| Compose components crash | Missing `CometChatTheme {}` wrapper | Wrap all CometChat composables in `CometChatTheme {}` |\n| Views theme colors wrong | XML attrs not set | Inherit Activity theme from `CometChatTheme.DayNight` (see `-kotlin-placement`); for brand colors override `cometchat*` attrs in the Activity theme or call `CometChatTheme.setPrimaryColor(...)` |\n| `IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant)` at `MaterialCardView.<init>` (typically from `CometChatConversations.<init>`) | Activity theme parent is `Theme.AppCompat.*` or `android:Theme.*` | Switch `themes.xml` parent to `CometChatTheme.DayNight` (NOT `Theme.MaterialComponents.*.Bridge` — Bridge drops Material widget defaults and triggers the `MaterialButton` crash below) |\n| `UnsupportedOperationException: Failed to resolve attribute at index N` at `MaterialButton.<init>` (during inflate of kit-internal layout) | Activity theme is `Theme.MaterialComponents.*` (or `.Bridge`) but missing `cometchat*` attrs | Switch `themes.xml` parent to `CometChatTheme.DayNight` — the kit's own theme supplies every `cometchat*` attr its internal layouts reference |\n| Dark mode not applied (Compose) | Using `lightColorScheme()` always | Use `if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()` |\n| Dark mode not applied (Views) | Theme cache stale | Call `CometChatTheme.clearCache()` on configuration change |\n| Messages not loading | User/Group not set on component | Call `setUser(user)` or pass `user` parameter before display |\n| Push notifications not received | Missing `google-services.json` | Add file to app module root; verify Firebase project config |\n| FCM token not registered | `onNewToken()` not called | Manually request token with `FirebaseMessaging.getInstance().token` |\n| Call notifications not showing | VoIP permissions missing | Request READ_PHONE_STATE, MANAGE_OWN_CALLS, ANSWER_PHONE_CALLS |\n| Calls SDK not initialized | `enableCalling` not set | Set `setEnableCalling(true)` on `UIKitSettingsBuilder` |\n| `CometChatCalls` class not found | Missing calls SDK dependency | Add `com.cometchat:calls-sdk-android` to dependencies |\n| Build fails with duplicate classes | Conflicting annotation libs | Add `exclude(group = \"org.jetbrains\", module = \"annotations-java5\")` to configurations |\n| `compileSdk` error | SDK too low | Set `compileSdk = 36` |\n| `minSdk` error | API level too low | Set `minSdk = 28` — v6 requires Android 9.0+ |\n| Compose preview crashes | Missing preview data | Use the `preview/` package helpers for `@Preview` composables |\n| WebSocket disconnects in background | No lifecycle management | Call `CometChat.connect()` on foreground, `disconnect()` on background |\n| Recomposition issues | Unstable state in composables | Ensure state is hoisted properly; use `remember` and `derivedStateOf` |\n| BubbleFactory not applied | Wrong factory key | Verify `getCategory()` and `getType()` match the message's category and type |\n| Style not applied (Compose) | Using constructor instead of `default()` | Use `StyleClass.default(param = value)` not `StyleClass(...)` |\n\n## 2. Initialization Issues\n\n### 2.1 Verify SDK State\n\n```kotlin\n// Check initialization\nLog.d(\"CometChat\", \"SDK initialized: ${CometChatUIKit.isSDKInitialized()}\")\nLog.d(\"CometChat\", \"Calls SDK initialized: ${CometChatUIKit.isCallsSDKInitialized()}\")\nLog.d(\"CometChat\", \"Logged in user: ${CometChatUIKit.getLoggedInUser()?.uid}\")\n```\n\n### 2.2 Common Init Sequence Issues\n\n```kotlin\n// ❌ Wrong: init in every Activity\nclass ChatActivity : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        CometChatUIKit.init(this, settings, callback) // DON'T DO THIS\n    }\n}\n\n// ✅ Correct: init once in Application or splash\nclass MyApp : Application() {\n    override fun onCreate() {\n        super.onCreate()\n        CometChatUIKit.init(this, settings, callback)\n    }\n}\n```\n\n## 3. Compose-Specific Issues\n\n### 3.1 Missing Theme Wrapper\n\n```kotlin\n// ❌ Crash: CompositionLocal not provided\nsetContent {\n    CometChatConversations() // Will crash or look wrong\n}\n\n// ✅ Correct\nsetContent {\n    CometChatTheme {\n        CometChatConversations()\n    }\n}\n```\n\n### 3.2 Nested Theme Wrappers\n\n```kotlin\n// ❌ Unnecessary nesting\nCometChatTheme {\n    NavHost(...) {\n        composable(\"chat\") {\n            CometChatTheme { // Don't nest\n                CometChatMessageList(user = user)\n            }\n        }\n    }\n}\n\n// ✅ Single wrapper at top level\nCometChatTheme {\n    NavHost(...) {\n        composable(\"chat\") {\n            CometChatMessageList(user = user)\n        }\n    }\n}\n```\n\n## 4. Views-Specific Issues\n\n### 4.1 Theme Attributes Not Resolving\n\n```kotlin\n// If colors are all 0/transparent, the XML attrs aren't set\n// Fix: Set programmatically\nCometChatTheme.setPrimaryColor(Color.parseColor(\"#6851D6\"))\n// Or add attrs to your Activity's theme in styles.xml\n```\n\n### 4.2 RecyclerView Scroll Issues\n\nIf message list doesn't scroll properly, ensure the layout gives it flexible height:\n\n```xml\n<!-- ✅ Use layout_weight for flexible height -->\n<CometChatMessageList\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"0dp\"\n    android:layout_weight=\"1\" />\n```\n\n## 5. Push Notification Issues\n\n### 5.1 SDK Not Initialized in FCM Service\n\n```kotlin\n// When app is killed and FCM wakes it, SDK may not be initialized\noverride fun onMessageReceived(message: RemoteMessage) {\n    if (!CometChatUIKit.isSDKInitialized()) {\n        // Cannot handle message — show basic notification or skip\n        return\n    }\n    // Safe to proceed\n}\n```\n\n### 5.2 VoIP Permission Check\n\n```kotlin\n// All three permissions are required for VoIP\nval hasPermissions = CometChatVoIP.hasReadPhoneStatePermission(context) &&\n    CometChatVoIP.hasManageOwnCallsPermission(context) &&\n    CometChatVoIP.hasAnswerPhoneCallsPermission(context)\n```\n\n## 6. Dependency Conflicts\n\n### 6.1 Jetbrains Annotations Conflict\n\n```kotlin\n// In build.gradle.kts\nconfigurations.all {\n    exclude(group = \"org.jetbrains\", module = \"annotations-java5\")\n}\n```\n\n### 6.2 Maven Repository Missing\n\n```kotlin\n// In settings.gradle\nrepositories {\n    maven { url = uri(\"https://dl.cloudsmith.io/public/cometchat/cometchat/maven/\") }\n}\n```\n\n## 7. Release-build Issues (R8 / ProGuard)\n\n### 7.1 `ClassNotFoundException` on release builds\n\n**Symptom:** App works in debug, crashes on release with `java.lang.ClassNotFoundException: com.cometchat.uikit.compose...` (or `kotlin...` package). R8 has stripped kit classes that look unused via reflection.\n\n**Fix:** Add to `app/proguard-rules.pro`:\n\n```proguard\n# Keep all CometChat UIKit and chat-sdk classes\n-keep class com.cometchat.** { *; }\n-keepclassmembers class com.cometchat.** { *; }\n-dontwarn com.cometchat.**\n```\n\nIf you use the calls SDK, also add:\n\n```proguard\n-keep class io.dyte.** { *; }\n-dontwarn io.dyte.**\n```\n\n### 7.2 `BuildConfig` field missing in release\n\n**Symptom:** `BuildConfig.COMETCHAT_APP_ID` resolves to empty string in release. Caused by `local.properties` not being copied during CI builds.\n\n**Fix:** Provide credentials via Gradle properties from CI environment vars instead of relying on `local.properties`:\n\n```kotlin\n// app/build.gradle.kts\nandroid {\n    defaultConfig {\n        buildConfigField(\n            \"String\", \"COMETCHAT_APP_ID\",\n            \"\\\"${project.findProperty(\"cometchat.appId\") ?: System.getenv(\"COMETCHAT_APP_ID\") ?: \"\"}\\\"\"\n        )\n        // …same for region + authKey\n    }\n}\n```\n\nIn CI (e.g. GitHub Actions), set `COMETCHAT_APP_ID` etc. as repository secrets, not as files.\n\n## Hard rules\n\n- ALWAYS check `isSDKInitialized()` before making SDK calls in background services (FCM, VoIP)\n- ALWAYS wrap Compose components in `CometChatTheme {}` — this is the #1 cause of Compose rendering issues\n- Call `CometChatTheme.clearCache()` in Views when the theme changes dynamically\n- Do NOT lower `minSdk` below 28 or `compileSdk` below 36\n- When reporting bugs, include: SDK version, stack (Compose/Views), Android API level, and the full stack trace","tags":["cometchat","android","troubleshooting","skills","agent-skills","ai-agent","chat","claude-code","cursor","messaging","nextjs","react"],"capabilities":["skill","source-cometchat","skill-cometchat-android-v6-troubleshooting","topic-agent-skills","topic-ai-agent","topic-chat","topic-claude-code","topic-cometchat","topic-cursor","topic-messaging","topic-nextjs","topic-react","topic-react-native","topic-ui-kit"],"categories":["cometchat-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cometchat/cometchat-skills/cometchat-android-v6-troubleshooting","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cometchat/cometchat-skills","source_repo":"https://github.com/cometchat/cometchat-skills","install_from":"skills.sh"}},"qualityScore":"0.463","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (9,361 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:47.555Z","embedding":null,"createdAt":"2026-05-07T13:05:06.884Z","updatedAt":"2026-05-18T19:04:47.555Z","lastSeenAt":"2026-05-18T19:04:47.555Z","tsv":"'/public/cometchat/cometchat/maven/':840 '0/transparent':703 '1':121,1011 '2':560 '2.1':563 '2.2':588 '28':480,1031 '3':633 '3.1':638 '3.2':658 '36':471,1035 '4':688 '4.1':693 '4.2':726 '5':745 '5.1':749 '5.2':789 '6':809 '6.1':812 '6.2':827 '6851d6':715 '7':841 '7.1':848 '7.2':913 '9.0':484 'across':60 'action':976 'activ':214,230,256,300,598,721 'add':378,438,454,717,878,906 'also':905 'alway':335,990,1002 'android':3,7,28,34,40,46,57,111,262,443,483,955,1044 'annot':452,460,814,825 'annotations-java5':459,824 'answer':415 'api':117,474,1045 'app':144,151,156,243,381,758,854,921,960,966,979 'app/build.gradle.kts':954 'app/proguard-rules.pro':880 'appcompatact':601 'appli':331,345,530,547 'applic':619,624 'aren':707 'attr':210,227,309,323,706,718 'attribut':287,695 'auth':163 'authent':128 'authkey':166,170,971 'background':502,512,998 'basic':781 'brand':223 'bridg':271,272,305 'bubblefactori':528 'bug':1038 'build':93,446,844,852,937 'build.gradle.kts':818 'buildconfig':914 'buildconfig.cometchat':920 'buildconfigfield':957 'builder':143 'bundl':606 'cach':348 'call':89,141,153,233,350,363,394,401,414,417,418,435,441,506,577,903,996,1017 'callback':610,632 'calls-sdk-android':440 'cannot':777 'categori':542 'caus':126,929,1012 'chang':354,1024 'chat':668,684,888 'chat-sdk':887 'chatact':600 'check':174,189,568,792,991 'ci':936,945,973 'class':431,450,599,622,871,890,892,895,909 'classnotfoundexcept':849 'color':207,224,700 'color.parsecolor':714 'com.cometchat':439,893,896,898 'com.cometchat.uikit.compose':863 'cometchat':2,6,27,33,39,45,56,110,119,172,201,226,308,322,571,576,582,884,959,965,978 'cometchat-android-v6-compose-theming':32 'cometchat-android-v6-core':26,109 'cometchat-android-v6-kotlin-theming':38 'cometchat-android-v6-push':44 'cometchat-android-v6-troubleshooting':1 'cometchat.appid':963 'cometchat.connect':507 'cometchatcal':430 'cometchatconvers':255,648,657 'cometchatmessagelist':673,685 'cometchatthem':197,204,656,665,669,681,1007 'cometchattheme.clearcache':351,1018 'cometchattheme.daynight':217,268,314 'cometchattheme.setprimarycolor':234,713 'cometchatuikit.getloggedinuser':586 'cometchatuikit.init':607,629 'cometchatuikit.iscallssdkinitialized':580 'cometchatuikit.issdkinitialized':190,574,776 'cometchatvoip.hasanswerphonecallspermission':807 'cometchatvoip.hasmanageowncallspermission':805 'cometchatvoip.hasreadphonestatepermission':803 'common':13,53,589 'companion':24 'compilesdk':464,470,1033 'compon':79,116,120,177,194,240,362,1005 'compos':22,36,66,193,202,332,485,498,518,548,635,667,683,1004,1014 'compose-specif':634 'compose/views':1043 'compositionloc':644 'config':387 'configur':135,353,463 'configurations.all':819 'conflict':451,811,815 'constructor':550 'context':804,806,808 'copi':934 'core':30,113 'correct':615,654 'crash':195,281,487,643,650,858 'credenti':940 'dark':328,342 'darkcolorschem':339 'dashboard':173 'data':180,490 'debug':857 'default':276,553 'defaultconfig':956 'depend':95,437,445,810 'derivedstateof':527 'descend':250 'diagnos':50 'diagnost':11,122 'disconnect':500,510 'display':83,371 'dl.cloudsmith.io':839 'dl.cloudsmith.io/public/cometchat/cometchat/maven/':838 'doesn':733 'dontwarn':897,911 'drop':273 'duplic':449 'dynam':1025 'e.g':974 'els':340 'empti':925 'enablecal':422 'encount':72 'ensur':136,519,737 'environ':946 'error':73,130,147,164,465,473 'etc':981 'everi':321,597 'exclud':455,820 'exist':176 'factori':532 'fail':161,284,447 'fcm':388,754,762,1000 'featur':90 'field':915 'file':379,987 'firebas':385 'firebasemessaging.getinstance':399 'fix':16,52,127,710,877,938 'flexibl':742 'foreground':509 'found':433 'full':1049 'fun':603,626,771 'function':92 'getcategori':535 'getloggedinus':192 'gettyp':537 'github':975 'give':740 'google-services.json':377 'gradl':942 'group':456,821 'handl':778 'hard':988 'haspermiss':802 'height':743 'helper':495 'hoist':522 'id':145,152,157,922,961,967,980 'illegalargumentexcept':235 'includ':1039 'incorrect':84 'index':289 'inflat':294 'inherit':213 'init':132,149,590,595,616 'init/login':31 'initi':76,183,421,561,569,573,579,752,769 'instead':551,948 'intern':298,325 'invalid':165 'io.dyte':910,912 'issdkiniti':992 'issu':14,54,96,514,562,592,637,692,729,748,845,1016 'issystemindarkthem':338 'java.lang.classnotfoundexception':862 'java5':461,826 'jetbrain':813 'jetpack':65 'keep':882,891,908 'keepclassmemb':894 'key':533 'kill':760 'kit':297,316,870 'kit-intern':296 'kotlin':19,42,62,220,567,593,642,662,698,756,793,816,831,865,953 'kotlin-plac':219 'layout':299,326,739 'level':475,680,1046 'lib':453 'lifecycl':504 'lightcolorschem':334,341 'like':125 'list':732 'load':357 'local.properties':931,952 'log':187,583 'log.d':570,575,581 'login':78,160 'look':114,652,873 'low':468,477 'lower':1028 'make':994 'manag':412,505 'manual':395 'match':538 'materi':274 'materialbutton':280,292 'materialcardview':252 'maven':828,835 'may':766 'messag':355,540,731,773,779 'minsdk':472,479,1029 'miss':150,196,307,376,407,434,488,639,830,916 'mode':329,343 'modul':382,458,823 'myapp':623 'n':290 'navhost':666,682 'nest':659,664,672 'new':106 'notif':86,373,402,747,782 'null':129,146 'oncreat':604,627 'onmessagereceiv':772 'onnewtoken':392 'org.jetbrains':457,822 'overrid':225,602,625,770 'packag':494,866 'param':556 'paramet':369 'parent':258,266,312 'pass':367 'permiss':406,791,796 'phone':410,416 'placement':221 'preview':486,489,493,497 'proceed':788 'programmat':712 'proguard':847,881,907 'project':107,386 'project.findproperty':962 'proper':523,736 'properti':943 'provid':646,939 'purpos':49 'push':48,85,372,746 'r8':846,867 'read':409 'receiv':375 'recomposit':513 'recyclerview':727 'refer':327 'reflect':876 'region':970 'regist':391 'releas':843,851,860,918,928 'release-build':842 'reli':950 'rememb':525 'remotemessag':774 'render':81,1015 'report':1037 'repositori':829,834,983 'request':396,408 'requir':241,482,798 'resolv':286,697,923 'return':785 'root':383 'rule':989 'safe':786 'savedinstancest':605 'scroll':728,735 'sdk':75,181,419,436,442,466,565,572,578,750,765,889,904,995,1040 'secret':984 'see':218 'sequenc':591 'servic':755,999 'set':103,212,360,424,425,469,478,609,631,709,711,977 'setappid':137,154 'setcont':647,655 'setenablecal':426 'setregion':139 'settings.gradle':833 'setus':364 'show':178,404,780 'singl':676 'skill':25,70,101 'skill-cometchat-android-v6-troubleshooting' 'skip':784 'source-cometchat' 'specif':636,691 'splash':621 'stack':23,67,1042,1050 'stale':349 'state':411,516,520,566 'string':926,958 'strip':869 'style':237,545 'styleclass':559 'styleclass.default':555 'styles.xml':725 'super.oncreate':628 'suppli':320 'switch':264,310 'symptom':124,853,919 'system.getenv':964 'tabl':12,123 'theme':37,43,206,215,231,244,257,263,301,319,347,640,660,694,723,1023 'theme.appcompat':260 'theme.materialcomponents':247,270,303 'themes.xml':265,311 'three':795 'token':389,397,400 'top':679 'topic-agent-skills' 'topic-ai-agent' 'topic-chat' 'topic-claude-code' 'topic-cometchat' 'topic-cursor' 'topic-messaging' 'topic-nextjs' 'topic-react' 'topic-react-native' 'topic-ui-kit' 'trace':1051 'trigger':278 'troubleshoot':5,10 'true':427 'type':544 'typic':253 'uid':168,175,587 'uikit':8,58,885 'uikitset':133 'uikitsettingsbuild':159,429 'unnecessari':663 'unstabl':515 'unsupportedoperationexcept':283 'unus':874 'uri':837 'url':836 'use':68,99,108,118,333,336,491,524,549,554,901 'user':185,365,368,585,674,675,686,687 'user/group':358 'v6':4,9,29,35,41,47,59,112,481 'val':801 'valu':557 'var':947 'verifi':169,384,534,564 'version':1041 'via':875,941 'view':20,63,205,346,690,1020 'views-specif':689 'voip':405,790,800,1001 'wake':763 'websocket':499 'widget':275 'work':88,855 'wrap':199,1003 'wrapper':198,641,661,677 'wrong':208,531,594,653 'xml':209,705,744","prices":[{"id":"95000ad2-5176-42f5-a7d5-becd30e36b3a","listingId":"37a42e8b-1b9a-4c52-8d43-2c17e5a47c97","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cometchat","category":"cometchat-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:05:06.884Z"}],"sources":[{"listingId":"37a42e8b-1b9a-4c52-8d43-2c17e5a47c97","source":"github","sourceId":"cometchat/cometchat-skills/cometchat-android-v6-troubleshooting","sourceUrl":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v6-troubleshooting","isPrimary":false,"firstSeenAt":"2026-05-07T13:05:06.884Z","lastSeenAt":"2026-05-18T19:04:47.555Z"}],"details":{"listingId":"37a42e8b-1b9a-4c52-8d43-2c17e5a47c97","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cometchat","slug":"cometchat-android-v6-troubleshooting","github":{"repo":"cometchat/cometchat-skills","stars":27,"topics":["agent-skills","ai-agent","chat","claude-code","cometchat","cursor","messaging","nextjs","react","react-native","ui-kit"],"license":null,"html_url":"https://github.com/cometchat/cometchat-skills","pushed_at":"2026-05-18T05:04:24Z","description":"Add CometChat chat to any React, Next.js, React Native, Angular, Android, iOS, or Flutter project through your AI coding agent. Works with Claude Code, Cursor, Codex, VS Code Copilot, Windsurf, Cline, Kiro, and 50+ more agents.","skill_md_sha":"28c162872e18f317f87d32634c41dcf819710bdc","skill_md_path":"skills/cometchat-android-v6-troubleshooting/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v6-troubleshooting"},"layout":"multi","source":"github","category":"cometchat-skills","frontmatter":{"name":"cometchat-android-v6-troubleshooting","license":"MIT","description":"CometChat Android UIKit v6 troubleshooting — diagnostic table, common issues, and fixes for both Kotlin Views and Compose stacks","compatibility":"Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"},"skills_sh_url":"https://skills.sh/cometchat/cometchat-skills/cometchat-android-v6-troubleshooting"},"updatedAt":"2026-05-18T19:04:47.555Z"}}