@100mslive/react-native-hms 0.9.8 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +2 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +26 -14
- package/ios/HMSManager.m +1 -1
- package/ios/HMSManager.swift +2 -2
- package/ios/HMSRNSDK.swift +32 -23
- package/lib/commonjs/classes/HMSLogger.js +2 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +81 -38
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSLogger.js +2 -2
- package/lib/module/classes/HMSLogger.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +81 -32
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/typescript/classes/HMSLogger.d.ts +1 -1
- package/lib/typescript/classes/HMSSDK.d.ts +3 -3
- package/package.json +1 -19
- package/src/classes/HMSLogger.ts +2 -2
- package/src/classes/HMSSDK.tsx +85 -31
|
@@ -202,10 +202,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
@ReactMethod
|
|
205
|
-
fun remoteMuteAllAudio(data: ReadableMap) {
|
|
205
|
+
fun remoteMuteAllAudio(data: ReadableMap, callback: Promise?) {
|
|
206
206
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
207
207
|
|
|
208
|
-
hms?.remoteMuteAllAudio()
|
|
208
|
+
hms?.remoteMuteAllAudio(callback)
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
@ReactMethod
|
|
@@ -31,6 +31,7 @@ class HMSRNSDK(
|
|
|
31
31
|
private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
|
|
32
32
|
private var context: ReactApplicationContext = reactApplicationContext
|
|
33
33
|
private var previewInProgress: Boolean = false
|
|
34
|
+
private var reconnectingStage: Boolean = false
|
|
34
35
|
private var id: String = sdkId
|
|
35
36
|
private var self = this
|
|
36
37
|
|
|
@@ -181,6 +182,7 @@ class HMSRNSDK(
|
|
|
181
182
|
arrayOf(Pair("username", "String"), Pair("authToken", "String"))
|
|
182
183
|
)
|
|
183
184
|
if (requiredKeys === null) {
|
|
185
|
+
reconnectingStage = false
|
|
184
186
|
val config = HMSHelper.getHmsConfig(credentials)
|
|
185
187
|
|
|
186
188
|
HMSCoroutineScope.launch {
|
|
@@ -312,6 +314,7 @@ class HMSRNSDK(
|
|
|
312
314
|
}
|
|
313
315
|
|
|
314
316
|
override fun onReconnected() {
|
|
317
|
+
reconnectingStage = false
|
|
315
318
|
val data: WritableMap = Arguments.createMap()
|
|
316
319
|
data.putString("event", "RECONNECTED")
|
|
317
320
|
data.putString("id", id)
|
|
@@ -319,7 +322,9 @@ class HMSRNSDK(
|
|
|
319
322
|
}
|
|
320
323
|
|
|
321
324
|
override fun onReconnecting(error: HMSException) {
|
|
325
|
+
reconnectingStage = true
|
|
322
326
|
val data: WritableMap = Arguments.createMap()
|
|
327
|
+
data.putMap("error", HMSDecoder.getError(error))
|
|
323
328
|
data.putString("event", "RECONNECTING")
|
|
324
329
|
data.putString("id", id)
|
|
325
330
|
delegate.emitEvent("RECONNECTING", data)
|
|
@@ -380,19 +385,23 @@ class HMSRNSDK(
|
|
|
380
385
|
}
|
|
381
386
|
|
|
382
387
|
fun leave(callback: Promise?) {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
388
|
+
if (reconnectingStage) {
|
|
389
|
+
callback?.reject("101", "Still in reconnecting stage")
|
|
390
|
+
} else {
|
|
391
|
+
hmsSDK?.leave(
|
|
392
|
+
object : HMSActionResultListener {
|
|
393
|
+
override fun onSuccess() {
|
|
394
|
+
screenshareCallback = null
|
|
395
|
+
callback?.resolve(emitHMSSuccess())
|
|
396
|
+
}
|
|
389
397
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
398
|
+
override fun onError(error: HMSException) {
|
|
399
|
+
callback?.reject(error.code.toString(), error.message)
|
|
400
|
+
self.emitHMSError(error)
|
|
401
|
+
}
|
|
393
402
|
}
|
|
394
|
-
|
|
395
|
-
|
|
403
|
+
)
|
|
404
|
+
}
|
|
396
405
|
}
|
|
397
406
|
|
|
398
407
|
fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
|
|
@@ -709,7 +718,7 @@ class HMSRNSDK(
|
|
|
709
718
|
}
|
|
710
719
|
}
|
|
711
720
|
|
|
712
|
-
fun remoteMuteAllAudio() {
|
|
721
|
+
fun remoteMuteAllAudio(callback: Promise?) {
|
|
713
722
|
val allAudioTracks = hmsSDK?.getRoom()?.let { HmsUtilities.getAllAudioTracks(it) }
|
|
714
723
|
if (allAudioTracks != null) {
|
|
715
724
|
var customError: HMSException? = null
|
|
@@ -725,10 +734,13 @@ class HMSRNSDK(
|
|
|
725
734
|
}
|
|
726
735
|
)
|
|
727
736
|
}
|
|
728
|
-
if (customError
|
|
729
|
-
|
|
737
|
+
if (customError === null) {
|
|
738
|
+
callback?.resolve(emitHMSSuccess())
|
|
739
|
+
} else {
|
|
740
|
+
rejectCallback(callback, customError!!.message)
|
|
730
741
|
}
|
|
731
742
|
}
|
|
743
|
+
rejectCallback(callback, "Audio tracks not found")
|
|
732
744
|
}
|
|
733
745
|
|
|
734
746
|
fun setPlaybackForAllAudio(data: ReadableMap) {
|
package/ios/HMSManager.m
CHANGED
|
@@ -26,7 +26,7 @@ RCT_EXTERN_METHOD(setVolume: (NSDictionary) data)
|
|
|
26
26
|
RCT_EXTERN_METHOD(build : (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
27
27
|
RCT_EXTERN_METHOD(leave: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
28
28
|
RCT_EXTERN_METHOD(setPlaybackForAllAudio: (NSDictionary) mute)
|
|
29
|
-
RCT_EXTERN_METHOD(remoteMuteAllAudio: (NSDictionary) data)
|
|
29
|
+
RCT_EXTERN_METHOD(remoteMuteAllAudio: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
30
30
|
RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
31
31
|
RCT_EXTERN_METHOD(changeMetadata: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
32
32
|
RCT_EXTERN_METHOD(startRTMPOrRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
package/ios/HMSManager.swift
CHANGED
|
@@ -225,10 +225,10 @@ class HMSManager: RCTEventEmitter {
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
@objc
|
|
228
|
-
func remoteMuteAllAudio(_ data: NSDictionary) {
|
|
228
|
+
func remoteMuteAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
229
229
|
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
230
230
|
|
|
231
|
-
hms?.remoteMuteAllAudio()
|
|
231
|
+
hms?.remoteMuteAllAudio(resolve, reject)
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
@objc
|
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -17,6 +17,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
17
17
|
var id: String = "12345"
|
|
18
18
|
var rtcStatsAttached = false
|
|
19
19
|
var recentPreviewTracks: [HMSTrack]? = []
|
|
20
|
+
private var reconnectingStage: Bool = false
|
|
20
21
|
|
|
21
22
|
let ON_PREVIEW = "ON_PREVIEW"
|
|
22
23
|
let ON_JOIN = "ON_JOIN"
|
|
@@ -139,7 +140,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
139
140
|
emitRequiredKeysError(errorMessage)
|
|
140
141
|
return
|
|
141
142
|
}
|
|
142
|
-
|
|
143
|
+
reconnectingStage = false
|
|
143
144
|
let metadata = credentials.value(forKey: "metadata") as? String
|
|
144
145
|
let captureNetworkQualityInPreview = credentials.value(forKey: "captureNetworkQualityInPreview") as? Bool ?? false
|
|
145
146
|
|
|
@@ -192,18 +193,22 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
self
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
196
|
+
if(reconnectingStage) {
|
|
197
|
+
reject?("101", "Still in reconnecting stage", nil)
|
|
198
|
+
} else {
|
|
199
|
+
DispatchQueue.main.async { [weak self] in
|
|
200
|
+
guard let strongSelf = self else { return }
|
|
201
|
+
self?.config = nil
|
|
202
|
+
self?.recentRoleChangeRequest = nil
|
|
203
|
+
self?.hms?.leave({ success, error in
|
|
204
|
+
if success {
|
|
205
|
+
resolve?(["success": success])
|
|
206
|
+
} else {
|
|
207
|
+
strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
|
|
208
|
+
reject?(nil, "error in leave", nil)
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
}
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
|
|
@@ -298,7 +303,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
298
303
|
|
|
299
304
|
self?.hms?.accept(changeRole: request, completion: { success, error in
|
|
300
305
|
if success {
|
|
301
|
-
resolve?(["success":
|
|
306
|
+
resolve?(["success": success])
|
|
302
307
|
} else {
|
|
303
308
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
304
309
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -329,7 +334,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
329
334
|
|
|
330
335
|
self?.hms?.changeRole(for: peer, to: role, force: force, completion: { success, error in
|
|
331
336
|
if success {
|
|
332
|
-
resolve?(["success":
|
|
337
|
+
resolve?(["success": success])
|
|
333
338
|
} else {
|
|
334
339
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
335
340
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -360,7 +365,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
360
365
|
|
|
361
366
|
self?.hms?.changeTrackState(for: track, mute: mute, completion: { success, error in
|
|
362
367
|
if success {
|
|
363
|
-
resolve?(["success":
|
|
368
|
+
resolve?(["success": success])
|
|
364
369
|
} else {
|
|
365
370
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
366
371
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -395,7 +400,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
395
400
|
let encodedTargetedRoles = HMSHelper.getRolesFromRoleNames(targetedRoles, roles: self?.hms?.roles)
|
|
396
401
|
self?.hms?.changeTrackState(mute: mute, for: decodeType, source: source, roles: encodedTargetedRoles, completion: { success, error in
|
|
397
402
|
if success {
|
|
398
|
-
resolve?(["success":
|
|
403
|
+
resolve?(["success": success])
|
|
399
404
|
} else {
|
|
400
405
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
401
406
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -458,7 +463,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
458
463
|
|
|
459
464
|
self?.hms?.removePeer(peer, reason: reason ?? "Removed from room", completion: { success, error in
|
|
460
465
|
if success {
|
|
461
|
-
resolve?(["success":
|
|
466
|
+
resolve?(["success": success])
|
|
462
467
|
} else {
|
|
463
468
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
464
469
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -481,7 +486,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
481
486
|
DispatchQueue.main.async { [weak self] in
|
|
482
487
|
self?.hms?.endRoom(lock: lock, reason: reason, completion: { success, error in
|
|
483
488
|
if success {
|
|
484
|
-
resolve?(["success":
|
|
489
|
+
resolve?(["success": success])
|
|
485
490
|
} else {
|
|
486
491
|
self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
487
492
|
reject?(error?.message, error?.localizedDescription, nil)
|
|
@@ -729,7 +734,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
729
734
|
}
|
|
730
735
|
}
|
|
731
736
|
|
|
732
|
-
func remoteMuteAllAudio() {
|
|
737
|
+
func remoteMuteAllAudio(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
733
738
|
let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
|
|
734
739
|
var customError: HMSError? = nil
|
|
735
740
|
for audioTrack in allAudioTracks {
|
|
@@ -740,8 +745,10 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
740
745
|
}
|
|
741
746
|
})
|
|
742
747
|
}
|
|
743
|
-
if (customError
|
|
744
|
-
|
|
748
|
+
if (customError === nil) {
|
|
749
|
+
resolve?(["success": true])
|
|
750
|
+
} else {
|
|
751
|
+
reject?(customError?.message, customError?.localizedDescription, nil)
|
|
745
752
|
}
|
|
746
753
|
}
|
|
747
754
|
|
|
@@ -875,10 +882,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
875
882
|
}
|
|
876
883
|
|
|
877
884
|
func onReconnecting() {
|
|
878
|
-
|
|
885
|
+
reconnectingStage = true
|
|
886
|
+
self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "error": ["code": HMSErrorCode.websocketConnectionLost, "description": "Software caused connection abort", "localizedDescription": "Network connection lost ", "debugDescription": "Network connection lost ", "message": "Network connection lost ", "name": "WebSocketConnectionLost", "action": "NONE", "id": 101], "id": self.id ])
|
|
879
887
|
}
|
|
880
888
|
|
|
881
889
|
func onReconnected() {
|
|
890
|
+
reconnectingStage = false
|
|
882
891
|
self.delegate?.emitEvent(RECONNECTED, ["event": RECONNECTED, "id": self.id ])
|
|
883
892
|
}
|
|
884
893
|
|
|
@@ -18,9 +18,9 @@ const getLogger = () => {
|
|
|
18
18
|
|
|
19
19
|
exports.getLogger = getLogger;
|
|
20
20
|
|
|
21
|
-
const setLogger = (
|
|
21
|
+
const setLogger = (id, hmsLogger) => {
|
|
22
22
|
exports.logger = logger = hmsLogger;
|
|
23
|
-
hmsLogger.verbose('#Function setLogger', {
|
|
23
|
+
hmsLogger === null || hmsLogger === void 0 ? void 0 : hmsLogger.verbose('#Function setLogger', {
|
|
24
24
|
id
|
|
25
25
|
});
|
|
26
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["logger","getLogger","setLogger","
|
|
1
|
+
{"version":3,"names":["logger","getLogger","setLogger","id","hmsLogger","verbose","HMSLogger","constructor","params","_verbose","_warning","warning","_error","error","message","data","console","log","onLog","logs","push","type","warn","getLogs","setLogListener","callback","updateLogLevel","level","value","HMSLogLevel","VERBOSE","WARNING","ERROR"],"sources":["HMSLogger.ts"],"sourcesContent":["import { HMSLogLevel } from './HMSLogLevel';\n\nexport let logger: HMSLogger | undefined;\n\nexport const getLogger = () => {\n return logger;\n};\n\nexport const setLogger = (id: string, hmsLogger?: HMSLogger) => {\n logger = hmsLogger;\n hmsLogger?.verbose('#Function setLogger', { id });\n};\n\nexport class HMSLogger {\n private _verbose: boolean = false;\n private _warning: boolean = false;\n private _error: boolean = false;\n private logs: {\n type: 'verbose' | 'warn' | 'error';\n message: string;\n data: any;\n id: string;\n }[] = [];\n private onLog?: Function;\n\n constructor(params?: { verbose: boolean; warning: boolean; error: boolean }) {\n if (params) {\n this._verbose = params.verbose;\n this._warning = params.warning;\n this._error = params.error;\n }\n }\n\n verbose(message: string, data: any) {\n if (this._verbose) {\n console.log(message, data);\n if (this.onLog) {\n this?.onLog({ message, data });\n }\n this.logs.push({ type: 'verbose', message, data, id: data?.id });\n }\n }\n\n warn(message: string, data: any) {\n if (this._warning) {\n console.warn(message, data);\n if (this.onLog) {\n this?.onLog({ message, data });\n }\n this.logs.push({ type: 'warn', message, data, id: data?.id });\n }\n }\n\n error(message: string, data: any) {\n if (this._error) {\n console.error(message, data);\n if (this.onLog) {\n this?.onLog({ message, data });\n }\n this.logs.push({ type: 'error', message, data, id: data?.id });\n }\n }\n\n getLogs() {\n return this.logs;\n }\n\n setLogListener(callback: Function) {\n this.onLog = callback;\n }\n\n updateLogLevel(level: HMSLogLevel, value: boolean) {\n switch (level) {\n case HMSLogLevel.VERBOSE: {\n this._verbose = value;\n return;\n }\n case HMSLogLevel.WARNING: {\n this._warning = value;\n return;\n }\n case HMSLogLevel.ERROR: {\n this._error = value;\n return;\n }\n default: {\n return;\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA;;;;AAEO,IAAIA,MAAJ;;;AAEA,MAAMC,SAAS,GAAG,MAAM;EAC7B,OAAOD,MAAP;AACD,CAFM;;;;AAIA,MAAME,SAAS,GAAG,CAACC,EAAD,EAAaC,SAAb,KAAuC;EAC9D,iBAAAJ,MAAM,GAAGI,SAAT;EACAA,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEC,OAAX,CAAmB,qBAAnB,EAA0C;IAAEF;EAAF,CAA1C;AACD,CAHM;;;;AAKA,MAAMG,SAAN,CAAgB;EAYrBC,WAAW,CAACC,MAAD,EAAkE;IAAA,kCAXjD,KAWiD;;IAAA,kCAVjD,KAUiD;;IAAA,gCATnD,KASmD;;IAAA,8BAHvE,EAGuE;;IAAA;;IAC3E,IAAIA,MAAJ,EAAY;MACV,KAAKC,QAAL,GAAgBD,MAAM,CAACH,OAAvB;MACA,KAAKK,QAAL,GAAgBF,MAAM,CAACG,OAAvB;MACA,KAAKC,MAAL,GAAcJ,MAAM,CAACK,KAArB;IACD;EACF;;EAEDR,OAAO,CAACS,OAAD,EAAkBC,IAAlB,EAA6B;IAClC,IAAI,KAAKN,QAAT,EAAmB;MACjBO,OAAO,CAACC,GAAR,CAAYH,OAAZ,EAAqBC,IAArB;;MACA,IAAI,KAAKG,KAAT,EAAgB;QACd,iDAAMA,KAAN,CAAY;UAAEJ,OAAF;UAAWC;QAAX,CAAZ;MACD;;MACD,KAAKI,IAAL,CAAUC,IAAV,CAAe;QAAEC,IAAI,EAAE,SAAR;QAAmBP,OAAnB;QAA4BC,IAA5B;QAAkCZ,EAAE,EAAEY,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEZ;MAA5C,CAAf;IACD;EACF;;EAEDmB,IAAI,CAACR,OAAD,EAAkBC,IAAlB,EAA6B;IAC/B,IAAI,KAAKL,QAAT,EAAmB;MACjBM,OAAO,CAACM,IAAR,CAAaR,OAAb,EAAsBC,IAAtB;;MACA,IAAI,KAAKG,KAAT,EAAgB;QACd,iDAAMA,KAAN,CAAY;UAAEJ,OAAF;UAAWC;QAAX,CAAZ;MACD;;MACD,KAAKI,IAAL,CAAUC,IAAV,CAAe;QAAEC,IAAI,EAAE,MAAR;QAAgBP,OAAhB;QAAyBC,IAAzB;QAA+BZ,EAAE,EAAEY,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEZ;MAAzC,CAAf;IACD;EACF;;EAEDU,KAAK,CAACC,OAAD,EAAkBC,IAAlB,EAA6B;IAChC,IAAI,KAAKH,MAAT,EAAiB;MACfI,OAAO,CAACH,KAAR,CAAcC,OAAd,EAAuBC,IAAvB;;MACA,IAAI,KAAKG,KAAT,EAAgB;QACd,iDAAMA,KAAN,CAAY;UAAEJ,OAAF;UAAWC;QAAX,CAAZ;MACD;;MACD,KAAKI,IAAL,CAAUC,IAAV,CAAe;QAAEC,IAAI,EAAE,OAAR;QAAiBP,OAAjB;QAA0BC,IAA1B;QAAgCZ,EAAE,EAAEY,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEZ;MAA1C,CAAf;IACD;EACF;;EAEDoB,OAAO,GAAG;IACR,OAAO,KAAKJ,IAAZ;EACD;;EAEDK,cAAc,CAACC,QAAD,EAAqB;IACjC,KAAKP,KAAL,GAAaO,QAAb;EACD;;EAEDC,cAAc,CAACC,KAAD,EAAqBC,KAArB,EAAqC;IACjD,QAAQD,KAAR;MACE,KAAKE,wBAAA,CAAYC,OAAjB;QAA0B;UACxB,KAAKrB,QAAL,GAAgBmB,KAAhB;UACA;QACD;;MACD,KAAKC,wBAAA,CAAYE,OAAjB;QAA0B;UACxB,KAAKrB,QAAL,GAAgBkB,KAAhB;UACA;QACD;;MACD,KAAKC,wBAAA,CAAYG,KAAjB;QAAwB;UACtB,KAAKpB,MAAL,GAAcgB,KAAd;UACA;QACD;;MACD;QAAS;UACP;QACD;IAfH;EAiBD;;AA5EoB"}
|