<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">{"version":3,"file":"gamepush-unity.js","mappings":"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","sources":["webpack://gamepush_unity/./src/GamePushUnity.js","webpack://gamepush_unity/./src/index.js"],"sourcesContent":["export default class GamePushUnity {\n    constructor(gp) {\n        this.gp = gp;\n\n        this.gp.player.on('change', () =&gt; this.trigger('CallPlayerChange'));\n        this.gp.player.on('sync', (success) =&gt; {\n            this.trigger(success ? 'CallPlayerSyncComplete' : 'CallPlayerSyncError');\n        });\n        this.gp.player.on('load', (success) =&gt; {\n            this.trigger(success ? 'CallPlayerLoadComplete' : 'CallPlayerLoadError');\n        });\n        this.gp.player.on('login', (success) =&gt; {\n            this.trigger(success ? 'CallPlayerLoginComplete' : 'CallPlayerLoginError');\n        });\n\n        this.gp.on('event:connect', () =&gt; this.trigger('CallPlayerConnect'))\n\n        this.gp.player.on('fetchFields', (success) =&gt; {\n            if (success) {\n                this.trigger('CallPlayerFetchFieldsComplete', JSON.stringify(this.gp.player.fields.map((field) =&gt; ({ ...field, defaultValue: field.default }))));\n            } else {\n                this.trigger('CallPlayerFetchFieldsError');\n            }\n        });\n\n        // leaderboard\n        this.gp.leaderboard.on('open', () =&gt; this.trigger('CallLeaderboardOpen'));\n        this.gp.leaderboard.on('close', () =&gt; this.trigger('CallLeaderboardClose'));\n\n        // achievements\n        this.gp.achievements.on('open', () =&gt; this.trigger('CallAchievementsOpen'));\n        this.gp.achievements.on('close', () =&gt; {\n            this.trigger('CallAchievementsClose');\n            window.focus();\n        });\n\n        this.gp.achievements.on('unlock', () =&gt; this.trigger('CallAchievementsUnlock'));\n        this.gp.achievements.on('error:unlock', () =&gt; this.trigger('CallAchievementsUnlockError'));\n\n        // games collections\n        this.gp.gamesCollections.on('open', () =&gt; this.trigger('CallGamesCollectionsOpen'));\n        this.gp.gamesCollections.on('close', () =&gt; {\n            this.trigger('CallGamesCollectionsClose');\n            window.focus();\n        });\n\n        // fullscreen\n        this.gp.fullscreen.on('open', () =&gt; this.trigger('CallFullscreenOpen'));\n        this.gp.fullscreen.on('close', () =&gt; this.trigger('CallFullscreenClose'));\n        this.gp.fullscreen.on('change', () =&gt; this.trigger('CallFullscreenChange'));\n\n        // ads\n        this.gp.ads.on('start', () =&gt; this.trigger('CallAdsStart'));\n        this.gp.ads.on('close', (success) =&gt; {\n            this.trigger('CallAdsClose', success);\n            window.focus();\n        });\n\n        this.gp.ads.on('fullscreen:start', () =&gt; this.trigger('CallAdsFullscreenStart'));\n        this.gp.ads.on('fullscreen:close', (success) =&gt; this.trigger('CallAdsFullscreenClose', success));\n\n        this.gp.ads.on('preloader:start', () =&gt; this.trigger('CallAdsPreloaderStart'));\n        this.gp.ads.on('preloader:close', (success) =&gt; this.trigger('CallAdsPreloaderClose', success));\n\n        this.gp.ads.on('rewarded:start', () =&gt; this.trigger('CallAdsRewardedStart'));\n        this.gp.ads.on('rewarded:close', (success) =&gt; this.trigger('CallAdsRewardedClose', (success)));\n        this.gp.ads.on('rewarded:reward', () =&gt; this.trigger('CallAdsRewardedReward', this.lastRewardedTag));\n\n        this.gp.ads.on('sticky:start', () =&gt; this.trigger('CallAdsStickyStart'));\n        this.gp.ads.on('sticky:close', () =&gt; this.trigger('CallAdsStickyClose'));\n        this.gp.ads.on('sticky:refresh', () =&gt; this.trigger('CallAdsStickyRefresh'));\n        this.gp.ads.on('sticky:render', () =&gt; this.trigger('CallAdsStickyRender'));\n\n        // socials\n        this.gp.socials.on('share', (success) =&gt; {\n            this.trigger('CallSocialsShare', success);\n            window.focus();\n        });\n        this.gp.socials.on('post', (success) =&gt; {\n            this.trigger('CallSocialsPost', success);\n            window.focus();\n        });\n        this.gp.socials.on('invite', (success) =&gt; {\n            this.trigger('CallSocialsInvite', success);\n            window.focus();\n        });\n        this.gp.socials.on('joinCommunity', (success) =&gt; {\n            this.trigger('CallSocialsJoinCommunity', success);\n            window.focus();\n        });\n\n        // gp\n        this.gp.on('change:language', (lang) =&gt; this.trigger('CallChangeLanguage', lang));\n        this.gp.on('change:avatarGenerator', (ag) =&gt; this.trigger('CallChangeAvatarGenerator', ag));\n        this.gp.on('pause', () =&gt; this.trigger('CallOnPause'));\n        this.gp.on('resume', () =&gt; this.trigger('CallOnResume'));\n        \n        //device\n        this.gp.on('change:orientation', () =&gt; this.trigger('CallChangeOrientation'));\n        \n        // app\n        //this.gp.app.on('requestReview', (result) =&gt; this.trigger('CallReviewResult', result));\n        //this.gp.app.on('addShortcut', (success) =&gt; this.trigger('CallAddShortcut', success));\n\n        //documents\n        this.gp.documents.on('open', () =&gt; this.trigger('CallOnDocumentsOpen'));\n        this.gp.documents.on('close', () =&gt; {\n            this.trigger('CallOnDocumentsClose');\n            window.focus();\n        });\n\n        this.gp.documents.on('fetch', (document) =&gt; this.trigger('CallOnDocumentsFetchSuccess', document.content));\n        this.gp.documents.on('error:fetch', () =&gt; this.trigger('CallOnDocumentsFetchError'));\n\n\n        // channels\n        this.gp.channels.on('createChannel', (channel) =&gt; {\n            this.trigger('CallOnCreateChannel', JSON.stringify(mapChannel(channel)));\n        });\n        this.gp.channels.on('error:createChannel', (err) =&gt; this.trigger('CallOnCreateChannelError'));\n\n        this.gp.channels.on('updateChannel', (channel) =&gt; {\n            this.trigger('CallOnUpdateChannel', JSON.stringify(mapChannel(channel)));\n        });\n        this.gp.channels.on('error:updateChannel', (err) =&gt; this.trigger('CallOnUpdateChannelError'));\n\n        this.gp.channels.on('deleteChannel', () =&gt; this.trigger('CallOnDeleteChannelSuccess'));\n        this.gp.channels.on('event:deleteChannel', (channel) =&gt; { this.trigger('CallOnDeleteChannelEvent', channel.id); });\n        this.gp.channels.on('error:deleteChannel', (err) =&gt; this.trigger('CallOnDeleteChannelError'));\n\n        this.gp.channels.on('fetchChannel', (channel) =&gt; {\n            this.trigger('CallOnFetchChannel', JSON.stringify(mapChannel(channel)));\n        });\n        this.gp.channels.on('error:fetchChannel', (err) =&gt; this.trigger('CallOnFetchChannelError'));\n\n        this.gp.channels.on('fetchChannels', (result) =&gt; {\n            this.trigger('CallOnFetchChannelsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchChannels', JSON.stringify(result.items.map(mapChannel)));\n        });\n        this.gp.channels.on('error:fetchChannels', (err) =&gt; this.trigger('CallOnFetchChannelsError'));\n\n        this.gp.channels.on('fetchMoreChannels', (result) =&gt; {\n            this.trigger('CallOnFetchMoreChannelsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreChannels', JSON.stringify(result.items.map(mapChannel)));\n        });\n        this.gp.channels.on('error:fetchMoreChannels', (err) =&gt; this.trigger('CallOnFetchMoreChannelsError'));\n\n        gp.channels.on('openChat', () =&gt; this.trigger('CallOnOpenChat'));\n        gp.channels.on('closeChat', () =&gt; this.trigger('CallOnCloseChat'));\n        gp.channels.on('error:openChat', (err) =&gt; this.trigger('CallOnOpenChatError'));\n\n        this.gp.channels.on('join', () =&gt; this.trigger('CallOnJoinSuccess'));\n        this.gp.channels.on('event:join', (member) =&gt; { this.trigger('CallOnJoinEvent', JSON.stringify(member)); });\n        this.gp.channels.on('error:join', (err) =&gt; this.trigger('CallOnJoinError'));\n\n\n        this.gp.channels.on('event:joinRequest', (joinRequest) =&gt; { this.trigger('CallOnJoinRequest', JSON.stringify(joinRequest)); });\n\n        this.gp.channels.on('cancelJoin', () =&gt; this.trigger('CallOnCancelJoinSuccess'));\n        this.gp.channels.on('event:cancelJoin', (joinRequest) =&gt; { this.trigger('CallOnCancelJoinEvent', JSON.stringify(joinRequest)); });\n        this.gp.channels.on('error:cancelJoin', (err) =&gt; this.trigger('CallOnCancelJoinError'));\n\n        this.gp.channels.on('leave', () =&gt; this.trigger('CallOnLeaveSuccess'));\n        this.gp.channels.on('event:leave', (memberLeave) =&gt; { this.trigger('CallOnLeaveEvent', JSON.stringify(memberLeave)); });\n        this.gp.channels.on('error:leave', (err) =&gt; this.trigger('CallOnLeaveError'));\n\n        this.gp.channels.on('kick', () =&gt; this.trigger('CallOnKick'));\n        this.gp.channels.on('error:kick', (err) =&gt; this.trigger('CallOnKickError'));\n\n        this.gp.channels.on('fetchMembers', (result) =&gt; {\n            this.trigger('CallOnFetchMembersCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMembers', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchMembers', (err) =&gt; this.trigger('CallOnFetchMembersError'));\n\n        this.gp.channels.on('fetchMoreMembers', (result) =&gt; {\n            this.trigger('CallOnFetchMoreMembersCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreMembers', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchMoreMembers', (err) =&gt; this.trigger('CallOnFetchMoreMembersError'));\n\n        this.gp.channels.on('mute', () =&gt; this.trigger('CallOnMuteSuccess'));\n        this.gp.channels.on('event:mute', (mute) =&gt; { this.trigger('CallOnMuteEvent', JSON.stringify(mute)); });\n        this.gp.channels.on('error:mute', (err) =&gt; this.trigger('CallOnMuteError'));\n\n        this.gp.channels.on('unmute', () =&gt; this.trigger('CallOnUnmuteSuccess'));\n        this.gp.channels.on('event:unmute', (mute) =&gt; { this.trigger('CallOnUnmuteEvent', JSON.stringify(mute)); });\n        this.gp.channels.on('error:unmute', (err) =&gt; this.trigger('CallOnUnmuteError'));\n\n        this.gp.channels.on('sendInvite', () =&gt; this.trigger('CallOnSendInvite'));\n        this.gp.channels.on('error:sendInvite', (err) =&gt; this.trigger('CallOnSendInviteError'));\n\n        this.gp.channels.on('event:invite', (invite) =&gt; { this.trigger('CallOnInvite', JSON.stringify(invite)); });\n\n        this.gp.channels.on('cancelInvite', () =&gt; this.trigger('CallOnCancelInviteSuccess'));\n        this.gp.channels.on('event:cancelInvite', (invite) =&gt; {\n            this.trigger('CallOnCancelInviteEvent', JSON.stringify(invite));\n        });\n        this.gp.channels.on('error:cancelInvite', (err) =&gt; this.trigger('CallOnCancelInviteError'));\n\n        this.gp.channels.on('acceptInvite', () =&gt; this.trigger('CallOnAcceptInvite'));\n        this.gp.channels.on('error:acceptInvite', (err) =&gt; this.trigger('CallOnAcceptInviteError'));\n\n\n        this.gp.channels.on('rejectInvite', () =&gt; this.trigger('CallOnRejectInviteSuccess'));\n        this.gp.channels.on('event:rejectInvite', (invite) =&gt; { this.trigger('CallOnRejectInviteEvent', JSON.stringify(invite)); });\n        this.gp.channels.on('error:rejectInvite', (err) =&gt; this.trigger('CallOnRejectInviteError'));\n\n        this.gp.channels.on('fetchInvites', (result) =&gt; {\n            this.trigger('CallOnFetchInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchInvites', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchInvites', (err) =&gt; this.trigger('CallOnFetchInvitesError'));\n\n\n        this.gp.channels.on('fetchMoreInvites', (result) =&gt; {\n            this.trigger('CallOnFetchMoreInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreInvites', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchMoreInvites', (err) =&gt; this.trigger('CallOnFetchMoreInvitesError'));\n\n\n        this.gp.channels.on('fetchChannelInvites', (result) =&gt; {\n            this.trigger('CallOnFetchChannelInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchChannelInvites', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchChannelInvites', (err) =&gt; this.trigger('CallOnFetchChannelInvitesError'));\n\n\n        this.gp.channels.on('fetchMoreChannelInvites', (result) =&gt; {\n            this.trigger('CallOnFetchMoreChannelInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreChannelInvites', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchMoreChannelInvites', (err) =&gt; this.trigger('CallOnFetchMoreChannelInvitesError'));\n\n\n        this.gp.channels.on('fetchSentInvites', (result) =&gt; {\n            this.trigger('CallOnFetchSentInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchSentInvites', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchSentInvites', (err) =&gt; this.trigger('CallOnFetchSentInvitesError'));\n\n\n        this.gp.channels.on('fetchMoreSentInvites', (result) =&gt; {\n            this.trigger('CallOnFetchMoreSentInvitesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreSentInvites', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchMoreSentInvites', (err) =&gt; this.trigger('CallOnFetchMoreSentInvitesError'));\n\n\n        this.gp.channels.on('acceptJoinRequest', () =&gt; this.trigger('CallOnAcceptJoinRequest'));\n        this.gp.channels.on('error:acceptJoinRequest', (err) =&gt; this.trigger('CallOnAcceptJoinRequestError'));\n\n\n        this.gp.channels.on('rejectJoinRequest', () =&gt; this.trigger('CallOnRejectJoinRequestSuccess'));\n        this.gp.channels.on('event:rejectJoinRequest', (joinRequest) =&gt; {\n            this.trigger('CallOnRejectJoinRequestEvent', JSON.stringify(joinRequest));\n        });\n        this.gp.channels.on('error:rejectJoinRequest', (err) =&gt; this.trigger('CallOnRejectJoinRequestError'));\n\n\n        this.gp.channels.on('fetchJoinRequests', (result) =&gt; {\n            this.trigger('CallOnFetchJoinRequestsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchJoinRequests', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchJoinRequests', (err) =&gt; this.trigger('CallOnFetchJoinRequestsError'));\n\n\n\n        this.gp.channels.on('fetchMoreJoinRequests', (result) =&gt; {\n            this.trigger('CallOnFetchMoreJoinRequestsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreJoinRequests', JSON.stringify(result.items));\n        });\n        this.gp.channels.on('error:fetchMoreJoinRequests', (err) =&gt; this.trigger('CallOnFetchMoreJoinRequestsError'));\n\n\n\n        this.gp.channels.on('fetchSentJoinRequests', (result) =&gt; {\n            this.trigger('CallOnFetchSentJoinRequestsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchSentJoinRequests', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchSentJoinRequests', (err) =&gt; this.trigger('CallOnFetchSentJoinRequestsError'));\n\n\n        this.gp.channels.on('fetchMoreSentJoinRequests', (result) =&gt; {\n            this.trigger('CallOnFetchMoreSentJoinRequestsCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreSentJoinRequests', JSON.stringify(result.items.map(mapItemWithChannel)));\n        });\n        this.gp.channels.on('error:fetchMoreSentJoinRequests', (err) =&gt; this.trigger('CallOnFetchMoreSentJoinRequestsError'));\n\n        this.gp.channels.on('sendMessage', (message) =&gt; { this.trigger('CallOnSendMessage', JSON.stringify(message)); });\n        this.gp.channels.on('error:sendMessage', (err) =&gt; this.trigger('CallOnSendMessageError'));\n\n        this.gp.channels.on('event:message', (message) =&gt; { this.trigger('CallOnMessage', JSON.stringify(message)); });\n\n        this.gp.channels.on('editMessage', (message) =&gt; { this.trigger('CallOnEditMessageSuccess', JSON.stringify(message)); });\n        this.gp.channels.on('event:editMessage', (message) =&gt; { this.trigger('CallOnEditMessageEvent', JSON.stringify(message)); });\n        this.gp.channels.on('error:editMessage', (err) =&gt; this.trigger('CallOnEditMessageError'));\n\n\n        this.gp.channels.on('deleteMessage', () =&gt; this.trigger('CallOnDeleteMessageSuccess'));\n        this.gp.channels.on('event:deleteMessage', (message) =&gt; { this.trigger('CallOnDeleteMessageEvent', JSON.stringify(message)); });\n        this.gp.channels.on('error:deleteMessage', (err) =&gt; this.trigger('CallOnDeleteMessageError'));\n    }\n\n    trigger(eventName, value) {\n        if (window.unityInstance !== null) {\n            window.unityInstance.SendMessage('GamePushSDK', eventName, this.toUnity(value));\n        }\n    }\n\n    toUnity(value) {\n        switch (typeof (value)) {\n            case 'boolean': {\n                return String(value);\n            }\n            case 'number': {\n                return value;\n            }\n            case 'string': {\n                return value;\n            }\n            case 'object': {\n                return JSON.stringify(value);\n            }\n        }\n        return value;\n    }\n\n    mapItemsWithChannel(items = {}) {\n        return {\n            ...items,\n            ch_private: items.private\n        };\n    }\n\n    Language() {\n        return this.gp.language;\n    }\n    AvatarGenerator() {\n        return this.gp.avatarGenerator;\n    }\n    PlatformType() {\n        return this.gp.platform.type;\n    }\n    PlatformHasIntegratedAuth() {\n        return this.toUnity(this.gp.platform.hasIntegratedAuth);\n    }\n    PlatformIsExternalLinksAllowed() {\n        return this.toUnity(this.gp.platform.isExternalLinksAllowed);\n    }\n\n    AppTitle() {\n        return this.gp.app.title;\n    }\n    AppDescription() {\n        return this.gp.app.description;\n    }\n    AppImage() {\n        return this.gp.app.image;\n    }\n    AppUrl() {\n        return this.gp.app.url;\n    }\n    AppRequestReview(){\n        return this.gp.app\n        .requestReview()\n        .then((result) =&gt; {\n            if(result.success){\n                this.trigger('CallReviewResult', result.rating);\n            }\n            else{\n                this.trigger('CallReviewClose', result.error);\n            }\n            \n        });\n    }\n\n    AppCanRequestReview(){\n        return this.toUnity(this.gp.app.canRequestReview); \n    }\n\n    AppIsAlreadyReviewed(){\n        return this.toUnity(this.gp.app.isAlreadyReviewed); \n    }\n\n    AppAddShortcut(){\n        return this.gp.app\n        .addShortcut()\n        .then((success) =&gt; this.trigger('CallAddShortcut', success));\n    }\n\n    AppCanAddShortcut(){\n        return this.toUnity(this.gp.app.canAddShortcut); \n    }\n\n\n    // PLAYER \n\n    PlayerGetID() {\n        return this.gp.player.id;\n    }\n\n    PlayerGetScore() {\n        return this.gp.player.score;\n    }\n    PlayerSetScore(score) {\n        this.gp.player.score = Number(score);\n    }\n    PlayerAddScore(score) {\n        this.gp.player.score += Number(score);\n    }\n\n    PlayerGetName() {\n        return this.gp.player.name;\n    }\n    PlayerSetName(name) {\n        this.gp.player.name = name;\n    }\n\n    PlayerGetAvatar() {\n        return this.gp.player.avatar;\n    }\n    PlayerSetAvatar(src) {\n        this.gp.player.avatar = src;\n    }\n\n    PlayerGet(key) {\n        return this.toUnity(this.gp.player.get(key));\n    }\n\n    PlayerSetString(key, value) {\n        this.gp.player.set(key, value);\n    }\n    PlayerSetNumber(key, value) {\n        this.gp.player.set(key, value);\n    }\n    PlayerSetBool(key, value) {\n        if (value == \"True\")\n            value = true;\n        else if (value == \"False\")\n            value = false;\n        this.gp.player.set(key, value);\n    }\n    PlayerAdd(key, value) {\n        this.gp.player.add(key, Number(value));\n    }\n\n    PlayerHas(key) {\n        return this.toUnity(this.gp.player.has(key));\n    }\n\n    PlayerSetFlag(key, value) {\n        this.gp.player.set(key, !Boolean(value));\n    }\n    PlayerToggle(key) {\n        this.gp.player.toggle(key);\n    }\n\n    PlayerGetFieldName(key) {\n        return this.gp.player.getFieldName(key);\n    }\n    PlayerGetFieldVariantName(key, value) {\n        return this.gp.player.getFieldVariantName(key, value);\n    }\n    PlayerGetFieldVariantAt(key, index) {\n        const variant = this.gp.player.getField(key).variants[index];\n        return variant ? variant.value : '';\n    }\n    PlayerGetFieldVariantIndex(key, value) {\n        return this.gp.player.getField(key).variants.findIndex((v) =&gt; v.value === value);\n    }\n\n    PlayerReset() {\n        this.gp.player.reset();\n    }\n    PlayerRemove() {\n        this.gp.player.remove();\n    }\n    PlayerSync(override = false) {\n        return this.gp.player.sync({ override: Boolean(override) });\n    }\n    PlayerLoad() {\n        return this.gp.player.load();\n    }\n    PlayerLogin() {\n        return this.gp.player.login();\n    }\n    PlayerFetchFields() {\n        this.gp.player.fetchFields();\n    }\n\n    PlayerIsLoggedIn() {\n        return this.toUnity(this.gp.player.isLoggedIn);\n    }\n\n    PlayerHasAnyCredentials(key) {\n        return this.toUnity(this.gp.player.hasAnyCredentials);\n    }\n\n    PlayerIsStub(key) {\n        return this.toUnity(this.gp.player.isStub);\n    }\n\n    PlayerGetActiveDays() {\n        return this.toUnity(this.gp.player.stats.activeDays);\n    }\n\n    PlayerGetActiveDaysConsecutive() {\n        return this.toUnity(this.gp.player.stats.activeDaysConsecutive);\n    }\n\n    PlayerGetPlaytimeToday() {\n        return this.toUnity(this.gp.player.stats.playtimeToday);\n    }\n\n    PlayerGetPlaytimeAll() {\n        return this.toUnity(this.gp.player.stats.playtimeAll);\n    }\n\n\n    // LEADERBOARD \n\n    LeaderboardOpen(orderBy, order, limit, showNearest, withMe, includeFields, displayFields) {\n        return this.gp.leaderboard\n            .open({\n                id: this.gp.player.id,\n                orderBy: orderBy\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                order: order,\n                limit: limit,\n                includeFields: includeFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                displayFields: displayFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                withMe: withMe,\n                showNearest: showNearest,\n            })\n            .catch(console.warn);\n    }\n\n    LeaderboardFetch(tag, orderBy, order, limit, showNearest, withMe, includeFields) {\n        return this.gp.leaderboard\n            .fetch({\n                id: this.gp.player.id,\n                orderBy: orderBy\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                order: order,\n                limit: limit,\n                includeFields: includeFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                withMe: withMe,\n                showNearest: showNearest,\n            })\n            .then((leaderboardInfo) =&gt; {\n                this.trigger('CallLeaderboardFetchTag', tag);\n                this.trigger('CallLeaderboardFetch', JSON.stringify(leaderboardInfo.players));\n                this.trigger('CallLeaderboardFetchTop', JSON.stringify(leaderboardInfo.topPlayers));\n                this.trigger('CallLeaderboardFetchAbove', JSON.stringify(leaderboardInfo.abovePlayers));\n                this.trigger('CallLeaderboardFetchBelow', JSON.stringify(leaderboardInfo.belowPlayers));\n                this.trigger('CallLeaderboardFetchOnlyPlayer', JSON.stringify(leaderboardInfo.player));\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallLeaderboardFetchError');\n            });\n    }\n\n    LeaderboardFetchPlayerRating(tag, orderBy, order) {\n        return this.gp.leaderboard\n            .fetchPlayerRating({\n                id: this.gp.player.id,\n                orderBy: orderBy\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                order,\n            })\n            .then((result) =&gt; {\n                this.trigger('CallLeaderboardFetchPlayerTag', tag);\n                this.trigger('CallLeaderboardFetchPlayerRating', result.player.position);\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallLeaderboardFetchPlayerError');\n            });\n    }\n\n\n\n\n    // LEADERBOARD SCOPED \n\n    LeaderboardScopedOpen(idOrTag, variant, order, limit, showNearest, includeFields, displayFields, withMe) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.leaderboard\n            .openScoped({\n                ...query,\n                variant,\n                order,\n                limit: limit,\n                includeFields: includeFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                displayFields: displayFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                withMe: withMe,\n                showNearest: showNearest,\n            })\n            .catch(console.warn);\n    }\n\n    LeaderboardScopedFetch(idOrTag, variant, order, limit, showNearest, includeFields, withMe) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.leaderboard\n            .fetchScoped({\n                ...query,\n                variant: variant,\n                order: order,\n                limit: limit,\n                includeFields: includeFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n                withMe,\n                showNearest: showNearest,\n            })\n            .then((leaderboardScopedInfo) =&gt; {\n                this.trigger('CallLeaderboardScopedFetchTag', idOrTag);\n                this.trigger('CallLeaderboardScopedFetchVariant', variant);\n                this.trigger('CallLeaderboardScopedFetch', JSON.stringify(leaderboardScopedInfo.players));\n                this.trigger('CallLeaderboardScopedFetchTop', JSON.stringify(leaderboardScopedInfo.topPlayers));\n                this.trigger('CallLeaderboardScopedFetchAbove', JSON.stringify(leaderboardScopedInfo.abovePlayers));\n                this.trigger('CallLeaderboardScopedFetchBelow', JSON.stringify(leaderboardScopedInfo.belowPlayers));\n                this.trigger('CallLeaderboardScopedFetchOnlyPlayer', JSON.stringify(leaderboardScopedInfo.player));\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallLeaderboardScopedFetchError');\n            });\n    }\n\n    LeaderboardScopedPublishRecord(idOrTag, variant, override, key1, value1, key2, value2, key3, value3) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.leaderboard\n            .publishRecord({\n                ...query,\n                variant,\n                override: Boolean(override),\n                record: {\n                    [key1]: value1,\n                    [key2]: value2,\n                    [key3]: value3,\n                },\n            })\n            .then(() =&gt; {\n                this.trigger('CallLeaderboardScopedPublishRecordComplete');\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallLeaderboardScopedPublishRecordError');\n            });\n    }\n\n    LeaderboardScopedFetchPlayerRating(idOrTag, variant, includeFields) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.leaderboard\n            .fetchPlayerRatingScoped({\n                ...query,\n                variant,\n                includeFields: includeFields\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n            })\n            .then((result) =&gt; {\n                this.trigger('CallLeaderboardScopedFetchPlayerTag', idOrTag);\n                this.trigger('CallLeaderboardScopedFetchPlayerVariant', variant);\n                this.trigger('CallLeaderboardScopedFetchPlayerRating', result.player.position);\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallLeaderboardFetchPlayerError');\n            });\n    }\n\n\n    // ACHIEVEMENTS\n    AchievementsOpen() {\n        return this.gp.achievements.open().catch(console.warn);\n    }\n    AchievementsFetch() {\n        return this.gp.achievements\n            .fetch()\n            .then((result) =&gt; {\n                this.trigger('CallAchievementsFetch', JSON.stringify(result.achievements));\n                this.trigger('CallAchievementsFetchGroups', JSON.stringify(result.achievementsGroups));\n                this.trigger('CallPlayerAchievementsFetch', JSON.stringify(result.playerAchievements));\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallAchievementsFetchError');\n            });\n    }\n    AchievementsUnlock(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.achievements\n            .unlock(query)\n            .then((result) =&gt; {\n                if (result.success) {\n                    this.trigger('CallAchievementsUnlock', idOrTag);\n                    return;\n                }\n\n                this.trigger('CallAchievementsUnlockError');\n            })\n\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallAchievementsUnlockError');\n            });\n    }\n\n    AchievementsSetProgress(idOrTag, progress) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n\n        return this.gp.achievements\n            .setProgress({ ...query, progress })\n\n            .then((result) =&gt; {\n                if (result.success) {\n                    this.trigger('CallAchievementsProgress', idOrTag);\n                    return;\n                }\n                this.trigger('CallAchievementsProgressError');\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallAchievementsProgressError');\n            });\n    }\n\n    AchievementsHas(idOrTag) {\n        return this.toUnity(this.gp.achievements.has(idOrTag));\n    }\n    AchievementsGetProgress(idOrTag) {\n        return this.gp.achievements.getProgress(idOrTag);\n    }\n\n\n\n    // PAYMENTS \n    PaymentsFetchProducts() {\n        return this.gp.payments\n            .fetchProducts()\n            .then((result) =&gt; {\n                this.trigger('CallPaymentsFetchProducts', JSON.stringify(result.products));\n                this.trigger('CallPaymentsFetchPlayerPurcahses', JSON.stringify(result.playerPurchases));\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPaymentsFetchProductsError');\n            });\n    }\n    PaymentsPurchase(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.payments\n            .purchase(query)\n            .then((result) =&gt; {\n\n                if (result.success) {\n                    this.trigger('CallPaymentsPurchase', idOrTag);\n                    window.focus();\n                    return;\n                }\n\n                this.trigger('CallPaymentsPurchaseError');\n\n                window.focus();\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPaymentsPurchaseError');\n                window.focus();\n            });\n    }\n    PaymentsConsume(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.payments\n            .consume(query)\n            .then((result) =&gt; {\n                if (result.success) {\n                    this.trigger('CallPaymentsConsume', idOrTag);\n                    window.focus();\n                    return;\n                }\n\n                this.trigger('CallPaymentsConsumeError');\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPaymentsConsumeError');\n            });\n    }\n    PaymentsIsAvailable() {\n        return this.toUnity(this.gp.payments.isAvailable);\n    }\n\n\n    // Subscriptions\n    PaymentsIsSubscriptionsAvailable() {\n        return this.toUnity(this.gp.payments.isSubscriptionsAvailable);\n    }\n\n    PaymentsSubscribe(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.payments.subscribe(query)\n            .then((result) =&gt; {\n                if (result.success) {\n                    this.trigger('CallPaymentsSubscribeSuccess', idOrTag);\n                } else {\n                    this.trigger('CallPaymentsSubscribeError');\n                }\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPaymentsSubscribeError');\n            });\n    }\n\n\n    PaymentsUnsubscribe(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.payments.unsubscribe(query)\n            .then((result) =&gt; {\n                if (result.success) {\n                    this.trigger('CallPaymentsUnsubscribeSuccess', idOrTag);\n                } else {\n                    this.trigger('CallPaymentsUnsubscribeError');\n                }\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPaymentsUnsubscribeError');\n            });\n    }\n\n\n    FullscreenOpen() {\n        return this.gp.fullscreen.open();\n    }\n    FullscreenClose() {\n        return this.gp.fullscreen.close();\n    }\n    FullscreenToggle() {\n        return this.gp.fullscreen.toggle();\n    }\n\n\n    // ADS \n    AdsShowFullscreen() {\n        return this.gp.ads.showFullscreen();\n    }\n    AdsShowRewarded(idOrTag) {\n        this.lastRewardedTag = idOrTag;\n        return this.gp.ads.showRewardedVideo();\n    }\n    AdsShowPreloader() {\n        return this.gp.ads.showPreloader();\n    }\n    AdsShowSticky() {\n        return this.gp.ads.showSticky();\n    }\n    AdsCloseSticky() {\n        return this.gp.ads.closeSticky();\n    }\n    AdsRefreshSticky() {\n        return this.gp.ads.refreshSticky();\n    }\n\n\n    AdsIsAdblockEnabled() {\n        return this.toUnity(this.gp.ads.isAdblockEnabled);\n    }\n\n    AdsIsStickyAvailable() {\n        return this.toUnity(this.gp.ads.isStickyAvailable);\n    }\n    AdsIsFullscreenAvailable() {\n        return this.toUnity(this.gp.ads.isFullscreenAvailable);\n    }\n    AdsIsRewardedAvailable() {\n        return this.toUnity(this.gp.ads.isRewardedAvailable);\n    }\n    AdsIsPreloaderAvailable() {\n        return this.toUnity(this.gp.ads.isPreloaderAvailable);\n    }\n\n\n    AdsIsStickyPlaying() {\n        return this.toUnity(this.gp.ads.isStickyPlaying);\n    }\n    AdsIsFullscreenPlaying() {\n        return this.toUnity(this.gp.ads.isFullscreenPlaying);\n    }\n    AdsIsRewardedPlaying() {\n        return this.toUnity(this.gp.ads.isRewardedPlaying);\n    }\n    AdsIsPreloaderPlaying() {\n        return this.toUnity(this.gp.ads.isPreloaderPlaying);\n    }\n\n    AdsIsCountdownOverlayEnabled() {\n        return this.toUnity(this.gp.ads.isCountdownOverlayEnabled);\n    }\n\n    AdsIsRewardedFailedOverlayEnabled() {\n        return this.toUnity(this.gp.ads.isRewardedFailedOverlayEnabled);\n    }\n\n    AdsCanShowFullscreenBeforeGamePlay() {\n        return this.toUnity(this.gp.ads.canShowFullscreenBeforeGamePlay);\n    }\n\n\n\n    // ANALYTICS \n    AnalyticsHit(url) {\n        return this.gp.analytics.hit(url);\n    }\n    AnalyticsGoal(event, value) {\n        return this.gp.analytics.goal(event, value);\n    }\n\n\n    /* SOCIAL */\n    SocialsShare(text, url, image) {\n        return this.gp.socials.share({ text, url, image });\n    }\n    SocialsPost(text, url, image) {\n        return this.gp.socials.post({ text, url, image });\n    }\n    SocialsInvite(text, url, image) {\n        return this.gp.socials.invite({ text, url, image });\n    }\n    SocialsJoinCommunity() {\n        return this.gp.socials.joinCommunity();\n    }\n    SocialsCommunityLink() {\n        return this.toUnity(this.gp.socials.communityLink);\n    }\n\n    SocialsIsSupportsShare() {\n        return this.toUnity(this.gp.socials.isSupportsShare);\n    }\n    SocialsIsSupportsNativeShare() {\n        return this.toUnity(this.gp.socials.isSupportsNativeShare);\n    }\n    SocialsIsSupportsNativePosts() {\n        return this.toUnity(this.gp.socials.isSupportsNativePosts);\n    }\n    SocialsIsSupportsNativeInvite() {\n        return this.toUnity(this.gp.socials.isSupportsNativeInvite);\n    }\n    SocialsCanJoinCommunity() {\n        return this.toUnity(this.gp.socials.canJoinCommunity);\n    }\n    SocialsIsSupportsNativeCommunityJoin() {\n        return this.toUnity(this.gp.socials.isSupportsNativeCommunityJoin);\n    }\n    \n    SocialsMakeShareLink(shareContent){\n        return this.toUnity(this.gp.socials.makeShareUrl({\n            fromId: this.gp.player.id,\n            content: shareContent,\n        }));\n    }\n    SocialsGetSharePlayerID(){\n        return this.toUnity(this.gp.socials.getShareParam('fromId'));\n    }\n    SocialsGetShareContent(){\n        return this.toUnity(this.gp.socials.getShareParam('content'));\n    }\n    \n\n\n    /* GAMES COLLECTIONS */\n    GamesCollectionsOpen(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag || 'ANY' };\n        return this.gp.gamesCollections.open(query);\n    }\n    GamesCollectionsFetch(idOrTag) {\n        const id = parseInt(idOrTag, 10) || 0;\n        const query = id &gt; 0 ? { id } : { tag: idOrTag };\n        return this.gp.gamesCollections\n            .fetch(query)\n            .then((result) =&gt; {\n                this.trigger('CallGamesCollectionsFetchTag', idOrTag);\n                this.trigger('CallGamesCollectionsFetch', JSON.stringify(result));\n\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallGamesCollectionsFetchError');\n            });\n    }\n\n    ChangeLanguage(language) {\n        return this.gp.changeLanguage(language);\n    }\n    ChangeLanguageByCode(language = '') {\n        return this.gp.changeLanguage(language.toLowerCase());\n    }\n    ChangeAvatarGenerator(generator) {\n        return this.gp.changeAvatarGenerator(generator);\n    }\n    LoadOverlay() {\n        return this.gp.loadOverlay();\n    }\n\n    // GAME\n    IsPaused() {\n        return this.toUnity(this.gp.isPaused);\n    }\n\n    Pause() {\n        return this.gp.pause();\n    }\n    Resume() {\n        return this.gp.resume();\n    }\n\n    GameReady(){\n        return this.gp.gameStart();\n    }\n\n    GameplayStart() {\n        return this.gp.gameplayStart();\n    }\n    GameplayStop() {\n        return this.gp.gameplayStop();\n    }\n    \n    HappyTime(){\n        if(this.gp.platform.type == \"CRAZY_GAMES\")\n            this.gp.platform.getNativeSDK().game.happytime();  \n    }\n\n\n    // GAME\n\n\n    //Device\n    IsMobile() {\n        return this.toUnity(this.gp.isMobile);\n    }\n    IsPortrait() {\n        return this.toUnity(this.gp.isPortrait);\n    }\n    //Device\n\n\n    // Server\n    ServerTime() {\n        return this.toUnity(this.gp.serverTime);\n    }\n    // Server\n\n\n\n    // System\n    IsDev() {\n        return this.toUnity(this.gp.isDev);\n    }\n\n    IsAllowedOrigin() {\n        return this.toUnity(this.gp.isAllowedOrigin);\n    }\n    // System\n\n    // Variables\n    VariablesFetch() {\n        return this.gp.variables\n            .fetch()\n            .then((result) =&gt; {\n                this.trigger('CallVariablesFetchSuccess', JSON.stringify(result));\n            })\n            .catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallVariablesFetchError');\n            });\n    }\n\n    VariablesHas(key) {\n        return this.toUnity(this.gp.variables.has(key));\n    }\n\n    VariablesGet(key) {\n        return this.toUnity(this.gp.variables.get(key));\n    }\n    // Variables\n\n\n\n    // Players\n    PlayersFetch(key) {\n        var obj = JSON.parse(key);\n        let ids = [];\n\n        if (parseInt(obj, 10) &gt; 0) {\n            ids = [parseInt(obj, 10)];\n        } else {\n            ids = (obj.idsList || obj.idsArray).map(Number).filter(Boolean)\n        }\n\n        this.gp.players.fetch({ ids })\n            .then((result) =&gt; {\n                this.trigger('CallPlayersFetchSuccess', JSON.stringify(result.players));\n            }).catch((err) =&gt; {\n                console.warn(err);\n                this.trigger('CallPlayersFetchError');\n            });\n    }\n    //Players\n\n\n    // Documents\n    DocumentsOpen() {\n        this.gp.documents.open({ type: 'PLAYER_PRIVACY_POLICY' });\n    }\n\n    DocumentsFetch() {\n        this.gp.documents.fetch({\n            type: 'PLAYER_PRIVACY_POLICY',\n            format: 'TXT'\n        });\n    }\n    // Documents\n\n\n\n\n\n    // Files\n    FilesUpload(tags) {\n        this.gp.files\n            .upload({\n                tags: tags\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n            })\n            .then((result) =&gt; {\n                this.trigger('CallFilesUploadSuccess', JSON.stringify(result));\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesUploadError');\n            });\n    }\n\n    FilesUploadUrl(url, filename, tags) {\n        this.gp.files\n            .uploadUrl({\n                url,\n                filename,\n                tags: tags\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n            })\n            .then((result) =&gt; {\n                this.trigger('CallFilesUploadUrlSuccess', JSON.stringify(result));\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesUploadUrlError');\n            });\n    }\n\n    FilesUploadContent(content, filename, tags) {\n        this.gp.files\n            .uploadContent({\n                content,\n                filename,\n                tags: tags\n                    .split(',')\n                    .map((o) =&gt; o.trim())\n                    .filter((f) =&gt; f),\n            })\n            .then((result) =&gt; {\n                this.trigger('CallFilesUploadContentSuccess', JSON.stringify(result));\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesUploadContentError');\n            });\n    }\n\n    FilesLoadContent(url) {\n        this.gp.files\n            .loadContent(url)\n            .then((result) =&gt; {\n                this.trigger('CallFilesLoadContentSuccess', result);\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesLoadContentError');\n            });\n    }\n\n    FilesChooseFile(type) {\n        this.gp.files\n            .chooseFile(type)\n            .then((result) =&gt; {\n                this.trigger('CallFilesChooseFile', result.tempUrl);\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesChooseFileError');\n            });\n    }\n\n    FilesFetch(filter) {\n        const query = JSON.parse(filter);\n        this.gp.files.fetch(query)\n            .then((result) =&gt; {\n                this.trigger('CallFilesFetchCanLoadMore', result.canLoadMore);\n                this.trigger('CallFilesFetchSuccess', JSON.stringify(result.items));\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesFetchError');\n            });\n    }\n\n    FilesFetchMore(filter) {\n        const query = JSON.parse(filter);\n        this.gp.files.fetchMore(query)\n            .then((result) =&gt; {\n                this.trigger('CallFilesFetchMoreCanLoadMore', result.canLoadMore);\n                this.trigger('CallFilesFetchMoreSuccess', JSON.stringify(result.items));\n            })\n            .catch((err) =&gt; {\n                this.trigger('CallFilesFetchMoreError');\n            });\n    }\n\n    // Files\n\n\n    // Channels\n\n    Channels_Open_Chat(channel_ID) {\n        if (channel_ID == -10) {\n            this.gp.channels.openChat();\n        }\n        else {\n            this.gp.channels.openChat({ channel_ID });\n        }\n    }\n    Channels_IsMainChatEnabled() {\n        return this.toUnity(this.gp.channels.isMainChatEnabled);\n    }\n\n    Channels_MainChatId() {\n        return this.gp.channels.mainChatId;\n    }\n\n    Channels_Join(channelId, password) {\n        this.gp.channels.join({ channelId, password, });\n    }\n\n    Channels_CancelJoin(channelId) {\n        this.gp.channels.cancelJoin({ channelId, });\n    }\n\n    Channels_Leave(channelId) {\n        this.gp.channels.leave({ channelId, });\n    }\n\n    Channels_Kick(channelId, playerId) {\n        this.gp.channels.kick({ channelId, playerId, });\n    }\n\n    Channels_Mute_UnmuteAt(channelId, playerId, unmuteAt) {\n        this.gp.channels.mute({ channelId, playerId, unmuteAt, });\n    }\n\n    Channels_Mute_Seconds(channelId, playerId, seconds) {\n        this.gp.channels.mute({ channelId, playerId, seconds: Number(seconds), });\n    }\n\n    Channels_UnMute(channelId, playerId) {\n        this.gp.channels.unmute({ channelId, playerId, });\n    }\n\n    Channels_SendInvite(channelId, playerId) {\n        this.gp.channels.sendInvite({ channelId, playerId, });\n    }\n\n    Channels_CancelInvite(channelId, playerId) {\n        this.gp.channels.cancelInvite({ channelId, playerId, });\n    }\n\n    Channels_AcceptInvite(channelId) {\n        this.gp.channels.acceptInvite({ channelId, });\n    }\n\n    Channels_RejectInvite(channelId) {\n        this.gp.channels.rejectInvite({ channelId });\n    }\n\n    Channels_FetchInvites(limit, offset) {\n        this.gp.channels.fetchInvites({ limit, offset, });\n    }\n\n    Channels_FetchMoreInvites(limit) {\n        this.gp.channels.fetchMoreInvites({ limit, });\n    }\n\n    Channels_FetchChannelInvites(channelId, limit, offset) {\n        this.gp.channels.fetchChannelInvites({ channelId, limit, offset, });\n    }\n\n    Channels_FetchMoreChannelInvites(channelId, limit) {\n        this.gp.channels.fetchMoreChannelInvites({ channelId, limit, });\n    }\n\n    Channels_FetchSentInvites(channelId, limit, offset) {\n        this.gp.channels.fetchSentInvites({ channelId, limit, offset, });\n    }\n\n    Channels_FetchMoreSentInvites(channelId, limit) {\n        this.gp.channels.fetchMoreSentInvites({ channelId, limit, });\n    }\n\n    Channels_AcceptJoinRequest(channelId, playerId) {\n        this.gp.channels.acceptJoinRequest({ channelId, playerId, });\n    }\n\n    Channels_RejectJoinRequest(channelId, playerId) {\n        this.gp.channels.rejectJoinRequest({ channelId, playerId, });\n    }\n\n    Channels_FetchJoinRequests(channelId, limit, offset) {\n        this.gp.channels.fetchJoinRequests({ channelId, limit, offset });\n    }\n\n    Channels_FetchMoreJoinRequests(channelId, limit) {\n        this.gp.channels.fetchMoreJoinRequests({ channelId, limit, });\n    }\n\n    Channels_FetchSentJoinRequests(channelId, limit, offset) {\n        this.gp.channels.fetchSentJoinRequests({ channelId, limit, offset, });\n    }\n\n    Channels_FetchMoreSentJoinRequests(channelId, limit) {\n        this.gp.channels.fetchMoreSentJoinRequests({ channelId, limit, });\n    }\n\n    Channels_SendMessage(channelId, text, tags) {\n        this.gp.channels.sendMessage({\n            channelId,\n            text,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n        });\n    }\n\n    Channels_SendPersonalMessage(playerId, text, tags) {\n        this.gp.channels.sendPersonalMessage({\n            playerId,\n            text,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n        });\n    }\n\n    Channels_SendFeedMessage(playerId, text, tags) {\n        this.gp.channels.sendFeedMessage({\n            playerId,\n            text,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n        });\n    }\n\n    Channels_EditMessage(messageId, text) {\n        this.gp.channels.editMessage({ messageId, text, });\n    }\n\n    Channels_DeleteMessage(messageId) {\n        this.gp.channels.deleteMessage({ messageId });\n    }\n\n    Channels_FetchMessages(channelId, tags, limit, offset) {\n        this.gp.channels.fetchMessages({\n            channelId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n            offset,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchMessagesCanLoadMore', JSON.stringify(result.canLoadMore));\n            this.trigger('CallOnFetchMessages', JSON.stringify(result.items));\n\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchMessagesError');\n        });\n    }\n\n    Channels_FetchPersonalMessages(playerId, tags, limit, offset) {\n        this.gp.channels.fetchPersonalMessages({\n            playerId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n            offset,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchPersonalMessagesCanLoadMore', JSON.stringify(result.canLoadMore));\n            this.trigger('CallOnFetchPersonalMessages', JSON.stringify(result.items));\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchPersonalMessagesError');\n        });\n    }\n\n    Channels_FetchFeedMessages(playerId, tags, limit, offset) {\n        this.gp.channels.fetchFeedMessages({\n            playerId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n            offset,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchFeedMessagesCanLoadMore', JSON.stringify(result.canLoadMore));\n            this.trigger('CallOnFetchFeedMessages', JSON.stringify(result.items));\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchFeedMessagesError');\n        });\n    }\n\n    Channels_FetchMoreMessages(channelId, tags, limit) {\n        this.gp.channels.fetchMoreMessages({\n            channelId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchMoreMessagesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreMessages', JSON.stringify(result.items));\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchMoreMessagesError');\n        });\n    }\n\n    Channels_FetchMorePersonalMessages(playerId, tags, limit) {\n        this.gp.channels.fetchMorePersonalMessages({\n            playerId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchMorePersonalMessagesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMorePersonalMessages', JSON.stringify(result.items));\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchMorePersonalMessagesError');\n        });\n    }\n\n    Channels_FetchMoreFeedMessages(playerId, tags, limit) {\n        this.gp.channels.fetchMoreFeedMessages({\n            playerId,\n            tags: tags\n                .split(',')\n                .map((o) =&gt; o.trim())\n                .filter((f) =&gt; f),\n            limit,\n        }).then((result) =&gt; {\n            this.trigger('CallOnFetchMoreFeedMessagesCanLoadMore', result.canLoadMore);\n            this.trigger('CallOnFetchMoreFeedMessages', JSON.stringify(result.items));\n        }).catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallOnFetchMoreFeedMessagesError');\n        });\n    }\n\n    Channels_DeleteChannel(channelId) {\n        this.gp.channels.deleteChannel({ channelId, });\n    }\n\n    Channels_FetchChannel(channelId) {\n        this.gp.channels.fetchChannel({ channelId, });\n    }\n\n    Channels_CreateChannel(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.createChannel({ ...query, private: query.ch_private });\n    }\n\n    Channels_UpdateChannel(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.updateChannel({ ...query, private: query.ch_private });\n    }\n\n    Channels_FetchChannels(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.fetchChannels(query);\n    }\n\n    Channels_FetchMoreChannels(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.fetchMoreChannels(query);\n    }\n\n    Channels_FetchMembers(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.fetchMembers(query);\n    }\n\n    Channels_FetchMoreMembers(filter) {\n        const query = JSON.parse(filter);\n        this.gp.channels.fetchMoreMembers(query);\n    }\n\n    // Channels\n\n    //Custom\n    CustomCall(name, args) {\n        let callFunc = \"GamePush.\" + name;\n\n        if(args == null)\n            window.executeFunctionByName(callFunc, window);\n        else{\n            let argArray = args.replace(/\\s/g, '').split(',');\n\n            window.executeFunctionByName(callFunc, window, ...argArray);\n        }\n    }\n\n    CustomReturn(name, args) {\n        let callFunc = \"GamePush.\" + name;\n\n        let value; \n        if(args == null)\n            value = window.executeFunctionByName(callFunc, window);\n        else{\n            args = args.replace(/\\s/g, '');\n            let argArray = args.split(',');\n\n            value = window.executeFunctionByName(callFunc, window, ...argArray);\n        }\n       \n        return formatCustomValue(value);\n    }\n\n    CustomGetValue(name){ \n        let valueName = \"GamePush.\" + name;\n        let value = window.returnValueByName(valueName, window);\n\n        return formatCustomValue(value);\n    }\n\n    CustomAsyncReturn(name, args) {\n        let callFunc = \"GamePush.\" + name;\n\n        if(args != null) args = args.replace(/\\s/g, '').split(',');\n\n        try {\n        window.executeFunctionByName(callFunc, window, ...args)\n        .then((result) =&gt; {\n            this.trigger('CallCustomAsyncReturn', formatCustomValue(result));\n        })\n        .catch((err) =&gt; {\n            console.warn(err);\n            this.trigger('CallCustomAsyncError', err);\n        });\n        } catch (error) {\n            console.warn(error);\n        }\n        \n    }\n    //Custom\n}\n\nfunction formatCustomValue(value){\n    switch (typeof (value)) {\n        case 'boolean':{\n            return String(value);\n        }\n        case 'number': {\n            return String(value);\n        }\n        case 'object': {\n            return JSON.stringify(value);\n        }\n        case 'undefined':{\n            return \"undefined\";\n        }\n        case 'function':{\n            return \"value is a function\";\n        }\n    }\n    return value;\n}\n\nfunction mapChannel(channel = {}) {\n    return {\n        ...channel,\n        ch_private: channel.private\n    };\n}\n\nfunction mapItemWithChannel(item = {}) {\n    return {\n        ...item,\n        channel: mapChannel(item.channel)\n    };\n}\n\n\nwindow.executeFunctionByName = function(functionName, context /*, args*/) {\n    var args = Array.prototype.slice.call(arguments, 2);\n    args = args.map(element =&gt; {\n        try{\n            //console.log(\"try parse \" + element);\n            return JSON.parse(element);\n        }\n        catch(error){\n            //console.log(\"catch \" + error);\n            return element\n        }\n    });\n    //console.log(args);\n    var namespaces = functionName.split(\".\");\n    var func = namespaces.pop();\n\n    for(var i = 0; i &lt; namespaces.length; i++) {\n      context = context[namespaces[i]];\n    }\n    try {\n        var execute = context[func].apply(context, args);\n    } catch (error) {\n        console.warn(error);\n        return null;\n    }\n\n    return execute;\n}\n\nwindow.returnValueByName = function(functionName, context) {\n    var namespaces = functionName.split(\".\");\n    var func = namespaces.pop();\n    for(var i = 0; i &lt; namespaces.length; i++) {\n      context = context[namespaces[i]];\n    }\n\n    try {\n        var value = context[func];\n    } catch (error) {\n        console.warn(error);\n        return error;\n    }\n    console.log(value);\n    return value;\n}\n\nwindow.GamePushUnity = GamePushUnity;\n","import GamePushUnity from './GamePushUnity'\n\nwindow.GamePushUnity = GamePushUnity;\n"],"names":["GamePushUnity","constructor","gp","this","player","on","trigger","success","JSON","stringify","fields","map","field","defaultValue","default","leaderboard","achievements","window","focus","gamesCollections","fullscreen","ads","lastRewardedTag","socials","lang","ag","documents","document","content","channels","channel","mapChannel","err","id","result","canLoadMore","items","member","joinRequest","memberLeave","mute","invite","mapItemWithChannel","message","eventName","value","unityInstance","SendMessage","toUnity","String","mapItemsWithChannel","ch_private","private","Language","language","AvatarGenerator","avatarGenerator","PlatformType","platform","type","PlatformHasIntegratedAuth","hasIntegratedAuth","PlatformIsExternalLinksAllowed","isExternalLinksAllowed","AppTitle","app","title","AppDescription","description","AppImage","image","AppUrl","url","AppRequestReview","requestReview","then","rating","error","AppCanRequestReview","canRequestReview","AppIsAlreadyReviewed","isAlreadyReviewed","AppAddShortcut","addShortcut","AppCanAddShortcut","canAddShortcut","PlayerGetID","PlayerGetScore","score","PlayerSetScore","Number","PlayerAddScore","PlayerGetName","name","PlayerSetName","PlayerGetAvatar","avatar","PlayerSetAvatar","src","PlayerGet","key","get","PlayerSetString","set","PlayerSetNumber","PlayerSetBool","PlayerAdd","add","PlayerHas","has","PlayerSetFlag","Boolean","PlayerToggle","toggle","PlayerGetFieldName","getFieldName","PlayerGetFieldVariantName","getFieldVariantName","PlayerGetFieldVariantAt","index","variant","getField","variants","PlayerGetFieldVariantIndex","findIndex","v","PlayerReset","reset","PlayerRemove","remove","PlayerSync","override","sync","PlayerLoad","load","PlayerLogin","login","PlayerFetchFields","fetchFields","PlayerIsLoggedIn","isLoggedIn","PlayerHasAnyCredentials","hasAnyCredentials","PlayerIsStub","isStub","PlayerGetActiveDays","stats","activeDays","PlayerGetActiveDaysConsecutive","activeDaysConsecutive","PlayerGetPlaytimeToday","playtimeToday","PlayerGetPlaytimeAll","playtimeAll","LeaderboardOpen","orderBy","order","limit","showNearest","withMe","includeFields","displayFields","open","split","o","trim","filter","f","catch","console","warn","LeaderboardFetch","tag","fetch","leaderboardInfo","players","topPlayers","abovePlayers","belowPlayers","LeaderboardFetchPlayerRating","fetchPlayerRating","position","LeaderboardScopedOpen","idOrTag","parseInt","query","openScoped","LeaderboardScopedFetch","fetchScoped","leaderboardScopedInfo","LeaderboardScopedPublishRecord","key1","value1","key2","value2","key3","value3","publishRecord","record","LeaderboardScopedFetchPlayerRating","fetchPlayerRatingScoped","AchievementsOpen","AchievementsFetch","achievementsGroups","playerAchievements","AchievementsUnlock","unlock","AchievementsSetProgress","progress","setProgress","AchievementsHas","AchievementsGetProgress","getProgress","PaymentsFetchProducts","payments","fetchProducts","products","playerPurchases","PaymentsPurchase","purchase","PaymentsConsume","consume","PaymentsIsAvailable","isAvailable","PaymentsIsSubscriptionsAvailable","isSubscriptionsAvailable","PaymentsSubscribe","subscribe","PaymentsUnsubscribe","unsubscribe","FullscreenOpen","FullscreenClose","close","FullscreenToggle","AdsShowFullscreen","showFullscreen","AdsShowRewarded","showRewardedVideo","AdsShowPreloader","showPreloader","AdsShowSticky","showSticky","AdsCloseSticky","closeSticky","AdsRefreshSticky","refreshSticky","AdsIsAdblockEnabled","isAdblockEnabled","AdsIsStickyAvailable","isStickyAvailable","AdsIsFullscreenAvailable","isFullscreenAvailable","AdsIsRewardedAvailable","isRewardedAvailable","AdsIsPreloaderAvailable","isPreloaderAvailable","AdsIsStickyPlaying","isStickyPlaying","AdsIsFullscreenPlaying","isFullscreenPlaying","AdsIsRewardedPlaying","isRewardedPlaying","AdsIsPreloaderPlaying","isPreloaderPlaying","AdsIsCountdownOverlayEnabled","isCountdownOverlayEnabled","AdsIsRewardedFailedOverlayEnabled","isRewardedFailedOverlayEnabled","AdsCanShowFullscreenBeforeGamePlay","canShowFullscreenBeforeGamePlay","AnalyticsHit","analytics","hit","AnalyticsGoal","event","goal","SocialsShare","text","share","SocialsPost","post","SocialsInvite","SocialsJoinCommunity","joinCommunity","SocialsCommunityLink","communityLink","SocialsIsSupportsShare","isSupportsShare","SocialsIsSupportsNativeShare","isSupportsNativeShare","SocialsIsSupportsNativePosts","isSupportsNativePosts","SocialsIsSupportsNativeInvite","isSupportsNativeInvite","SocialsCanJoinCommunity","canJoinCommunity","SocialsIsSupportsNativeCommunityJoin","isSupportsNativeCommunityJoin","SocialsMakeShareLink","shareContent","makeShareUrl","fromId","SocialsGetSharePlayerID","getShareParam","SocialsGetShareContent","GamesCollectionsOpen","GamesCollectionsFetch","ChangeLanguage","changeLanguage","ChangeLanguageByCode","toLowerCase","ChangeAvatarGenerator","generator","changeAvatarGenerator","LoadOverlay","loadOverlay","IsPaused","isPaused","Pause","pause","Resume","resume","GameReady","gameStart","GameplayStart","gameplayStart","GameplayStop","gameplayStop","HappyTime","getNativeSDK","game","happytime","IsMobile","isMobile","IsPortrait","isPortrait","ServerTime","serverTime","IsDev","isDev","IsAllowedOrigin","isAllowedOrigin","VariablesFetch","variables","VariablesHas","VariablesGet","PlayersFetch","obj","parse","ids","idsList","idsArray","DocumentsOpen","DocumentsFetch","format","FilesUpload","tags","files","upload","FilesUploadUrl","filename","uploadUrl","FilesUploadContent","uploadContent","FilesLoadContent","loadContent","FilesChooseFile","chooseFile","tempUrl","FilesFetch","FilesFetchMore","fetchMore","Channels_Open_Chat","channel_ID","openChat","Channels_IsMainChatEnabled","isMainChatEnabled","Channels_MainChatId","mainChatId","Channels_Join","channelId","password","join","Channels_CancelJoin","cancelJoin","Channels_Leave","leave","Channels_Kick","playerId","kick","Channels_Mute_UnmuteAt","unmuteAt","Channels_Mute_Seconds","seconds","Channels_UnMute","unmute","Channels_SendInvite","sendInvite","Channels_CancelInvite","cancelInvite","Channels_AcceptInvite","acceptInvite","Channels_RejectInvite","rejectInvite","Channels_FetchInvites","offset","fetchInvites","Channels_FetchMoreInvites","fetchMoreInvites","Channels_FetchChannelInvites","fetchChannelInvites","Channels_FetchMoreChannelInvites","fetchMoreChannelInvites","Channels_FetchSentInvites","fetchSentInvites","Channels_FetchMoreSentInvites","fetchMoreSentInvites","Channels_AcceptJoinRequest","acceptJoinRequest","Channels_RejectJoinRequest","rejectJoinRequest","Channels_FetchJoinRequests","fetchJoinRequests","Channels_FetchMoreJoinRequests","fetchMoreJoinRequests","Channels_FetchSentJoinRequests","fetchSentJoinRequests","Channels_FetchMoreSentJoinRequests","fetchMoreSentJoinRequests","Channels_SendMessage","sendMessage","Channels_SendPersonalMessage","sendPersonalMessage","Channels_SendFeedMessage","sendFeedMessage","Channels_EditMessage","messageId","editMessage","Channels_DeleteMessage","deleteMessage","Channels_FetchMessages","fetchMessages","Channels_FetchPersonalMessages","fetchPersonalMessages","Channels_FetchFeedMessages","fetchFeedMessages","Channels_FetchMoreMessages","fetchMoreMessages","Channels_FetchMorePersonalMessages","fetchMorePersonalMessages","Channels_FetchMoreFeedMessages","fetchMoreFeedMessages","Channels_DeleteChannel","deleteChannel","Channels_FetchChannel","fetchChannel","Channels_CreateChannel","createChannel","Channels_UpdateChannel","updateChannel","Channels_FetchChannels","fetchChannels","Channels_FetchMoreChannels","fetchMoreChannels","Channels_FetchMembers","fetchMembers","Channels_FetchMoreMembers","fetchMoreMembers","CustomCall","args","callFunc","executeFunctionByName","argArray","replace","CustomReturn","formatCustomValue","CustomGetValue","valueName","returnValueByName","CustomAsyncReturn","item","functionName","context","Array","prototype","slice","call","arguments","element","namespaces","func","pop","i","length","execute","apply","log"],"sourceRoot":""}</pre></body></html>