123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/plat/PlatformXXGame.js';
- var __require = nodeEnv ? function (request) {
- return cc.require(request);
- } : function (request) {
- return __quick_compile_project__.require(request, __filename);
- };
- function __define (exports, require, module) {
- if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
- cc._RF.push(module, '0dc11sHo3ZOypB31FsAXedt', 'PlatformXXGame');
- // script/plat/PlatformXXGame.ts
- "use strict";
- /**
- 闲闲游戏 SDK
- */
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- Object.defineProperty(exports, "__esModule", { value: true });
- var gameCfg_1 = require("../common/gameCfg");
- var gameMethod_1 = require("../common/gameMethod");
- var Xyc_1 = require("../common/Xyc");
- var Config_1 = require("../Config");
- var EventConst_1 = require("../data/const/EventConst");
- var TypeConst_1 = require("../data/const/TypeConst");
- var GameDataCenter_1 = require("../data/GameDataCenter");
- var GameController_1 = require("../GameController");
- var EventMng_1 = require("../manager/EventMng");
- var NativeManager_1 = require("../utils/NativeManager");
- var PlatformBase_1 = require("./PlatformBase");
- var PlatformXXGame = /** @class */ (function (_super) {
- __extends(PlatformXXGame, _super);
- function PlatformXXGame() {
- var _this = _super.call(this) || this;
- window["NativeNotify"] = {
- //native平台回调
- OnNativeNotify: function (eventType, eventDataString) {
- try {
- console.log("NativeNotify OnNativeNotify eventType:" + eventType + ",eventDataString:" + eventDataString);
- var dataDict = JSON.parse(eventDataString);
- if (eventType == "XXGameLogin") { //登录
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login");
- var params_1 = {
- pid: Config_1.default.pid,
- param: [dataDict.uid, dataDict.token]
- };
- // if (dataDict.status != 0) {
- // GameDataCenter.plat.showErrDialog(GameErrCode.errPlatLogin)
- // return
- // }
- setTimeout(function () {
- GameController_1.default.network.send(Xyc_1.PlayerLogin.url, params_1, function (result) {
- console.log("后段验证返回", JSON.stringify(result));
- if (result.type != 1) {
- if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) {
- GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin);
- }
- return;
- }
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 1, "login");
- if (result.type == 1 && result.platBack) {
- GameDataCenter_1.default.plat.instance.openId = result.platBack.openid;
- GameDataCenter_1.default.plat.instance.loginParams = [result.platBack.token];
- console.log("后端验证成功", GameDataCenter_1.default.plat.instance.openId);
- // // 加载广告组件
- //GameDataCenter.plat.instance.initRewardedVideoAd(AD_VIDEO_KEY.welChest)
- // 获取邀请者uuid
- var inviter = "";
- GameDataCenter_1.default.plat.instance.login(inviter);
- }
- else {
- console.log("PlayerLogin.url 返回数据异常");
- if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) {
- GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin);
- }
- }
- });
- }, 1000);
- }
- else if (eventType == "XXGamePay") { //支付
- if (dataDict.status == 0) {
- //充值成功
- if (Config_1.default.paySuccAdokId != null) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- Config_1.default.paySuccAdokIndex = 0;
- Config_1.default.paySuccAdokId = setInterval(function () {
- Config_1.default.paySuccAdokIndex++;
- if (Config_1.default.paySuccAdokIndex >= 5) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- GameDataCenter_1.default.time.sendAdok();
- }, 1000);
- }
- else if (dataDict.status == 1) {
- //充值失败
- }
- else {
- //待审核中
- }
- }
- else if (eventType == "XXGameLogout") {
- //退出登录
- GameDataCenter_1.default.plat.instance.restart();
- }
- else if (eventType == "getClipboardText") {
- //EventMng.emit(duihuanEvent.GetText, dataDict.msg);
- }
- else {
- console.log("NativeNotify OnNativeNotify not find eventType: " + eventType);
- }
- }
- catch (error) {
- console.log("NativeNotify OnNativeNotify error: " + error.stack);
- }
- },
- };
- return _this;
- }
- PlatformXXGame.prototype.showLoginView = function () {
- console.log("平台sdk初始化...");
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.25, "login");
- var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid);
- NativeManager_1.default.CallToNative("OnXXGameInit", {}, "");
- };
- // 上报用户信息
- PlatformXXGame.prototype.reportUserInfo = function (res) {
- console.log("上报用户信息", res);
- };
- // 上报角色数据
- PlatformXXGame.prototype.reportRole = function (event) {
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
- if (GameDataCenter_1.default.sevBack == null) {
- return;
- }
- if (GameDataCenter_1.default.sevBack.userInfo == null) {
- return;
- }
- console.log("上报角色数据:", event);
- var gameServerId = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.userInfo) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.sid;
- var serverName = GameDataCenter_1.default.user.getServerNameBySid(GameDataCenter_1.default.sevBack.userInfo.a.sid) || GameDataCenter_1.default.sevBack.userInfo.a.sid;
- var roleId = (_f = (_e = (_d = GameDataCenter_1.default.sevBack) === null || _d === void 0 ? void 0 : _d.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid;
- var level = (_k = (_j = (_h = (_g = GameDataCenter_1.default.sevBack) === null || _g === void 0 ? void 0 : _g.userInfo) === null || _h === void 0 ? void 0 : _h.a) === null || _j === void 0 ? void 0 : _j.level) !== null && _k !== void 0 ? _k : 1;
- var roleName = (_o = (_m = (_l = GameDataCenter_1.default.sevBack) === null || _l === void 0 ? void 0 : _l.userInfo) === null || _m === void 0 ? void 0 : _m.a) === null || _o === void 0 ? void 0 : _o.name;
- var argList = [];
- argList.push({ "Name": "gameServerId", "Value": gameServerId });
- argList.push({ "Name": "gameServerName", "Value": serverName });
- argList.push({ "Name": "roleId", "Value": roleId });
- argList.push({ "Name": "roleLevel", "Value": level.toString() });
- argList.push({ "Name": "roleName", "Value": roleName });
- if (event == TypeConst_1.ReportRoleType.create) {
- NativeManager_1.default.CallToNative("OnXXGamedCreateRole", argList, "");
- }
- else if (event == TypeConst_1.ReportRoleType.levelup) {
- NativeManager_1.default.CallToNative("OnXXGamedReportRole", argList, "");
- }
- else if (event == TypeConst_1.ReportRoleType.online) {
- NativeManager_1.default.CallToNative("OnXXGamedEnterGame", argList, "");
- }
- };
- PlatformXXGame.prototype.pay = function (orderId, order10cs, param) {
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
- var gameServerId = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.userInfo) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.sid;
- var serverName = GameDataCenter_1.default.user.getServerNameBySid(GameDataCenter_1.default.sevBack.userInfo.a.sid) || GameDataCenter_1.default.sevBack.userInfo.a.sid;
- var roleId = (_f = (_e = (_d = GameDataCenter_1.default.sevBack) === null || _d === void 0 ? void 0 : _d.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid;
- var level = (_k = (_j = (_h = (_g = GameDataCenter_1.default.sevBack) === null || _g === void 0 ? void 0 : _g.userInfo) === null || _h === void 0 ? void 0 : _h.a) === null || _j === void 0 ? void 0 : _j.level) !== null && _k !== void 0 ? _k : 1;
- var roleName = (_o = (_m = (_l = GameDataCenter_1.default.sevBack) === null || _l === void 0 ? void 0 : _l.userInfo) === null || _m === void 0 ? void 0 : _m.a) === null || _o === void 0 ? void 0 : _o.name;
- var argList = [];
- argList.push({ "Name": "gameServerId", "Value": gameServerId });
- argList.push({ "Name": "gameServerName", "Value": serverName });
- argList.push({ "Name": "itemName", "Value": param.productName });
- argList.push({ "Name": "itemId", "Value": param.productId });
- argList.push({ "Name": "roleId", "Value": roleId });
- argList.push({ "Name": "roleLevel", "Value": level.toString() });
- argList.push({ "Name": "roleName", "Value": roleName });
- argList.push({ "Name": "orderId", "Value": orderId });
- argList.push({ "Name": "price", "Value": param.price.toString() });
- NativeManager_1.default.CallToNative("OnXXGamePay", argList, "");
- };
- //打开浏览器打开链接
- PlatformXXGame.prototype.openUrl = function (url) {
- NativeManager_1.default.CallToNative("OnOpenBrowser", [{ "Name": "url", "Value": url }], "");
- };
- PlatformXXGame.prototype.getClipboardText = function () {
- NativeManager_1.default.CallToNative("getClipboardText", {}, "");
- };
- PlatformXXGame.prototype.reShowLogInView = function () {
- NativeManager_1.default.CallToNative("OnXXGameLogin", {}, "");
- };
- return PlatformXXGame;
- }(PlatformBase_1.default));
- exports.default = PlatformXXGame;
- cc._RF.pop();
- }
- if (nodeEnv) {
- __define(__module.exports, __require, __module);
- }
- else {
- __quick_compile_project__.registerModuleFunc(__filename, function () {
- __define(__module.exports, __require, __module);
- });
- }
- })();
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybVhYR2FtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7QUFFSCw2Q0FBd0M7QUFDeEMsbURBQWtEO0FBQ2xELHFDQUE2RDtBQUU3RCxvQ0FBK0I7QUFDL0IsdURBQTJFO0FBQzNFLHFEQUFnSDtBQUNoSCx5REFBb0Q7QUFDcEQsb0RBQStDO0FBRS9DLGdEQUEyQztBQUMzQyx3REFBbUQ7QUFDbkQsK0NBQTBDO0FBQzFDO0lBQTRDLGtDQUFZO0lBR3BEO1FBQUEsWUFDSSxpQkFBTyxTQXFGVjtRQXBGRyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUc7WUFDckIsWUFBWTtZQUNaLGNBQWMsRUFBRSxVQUFVLFNBQVMsRUFBRSxlQUFlO2dCQUNoRCxJQUFJO29CQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsU0FBUyxHQUFHLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxDQUFDO29CQUMxRyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLFNBQVMsSUFBSSxhQUFhLEVBQUUsRUFBRSxJQUFJO3dCQUNsQyxrQkFBUSxDQUFDLElBQUksQ0FBQyxzQkFBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7d0JBQ3JELElBQUksUUFBTSxHQUFvQjs0QkFDMUIsR0FBRyxFQUFFLGdCQUFNLENBQUMsR0FBRzs0QkFDZixLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7eUJBQ3hDLENBQUE7d0JBQ0QsOEJBQThCO3dCQUM5QixrRUFBa0U7d0JBQ2xFLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixVQUFVLENBQUM7NEJBQ1Asd0JBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFXLENBQUMsR0FB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YSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBQ0QsV0FBVztJQUNYLGdDQUFPLEdBQVAsVUFBUSxHQUFXO1FBQ2YsdUJBQWEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFDRCx5Q0FBZ0IsR0FBaEI7UUFDSSx1QkFBYSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELHdDQUFlLEdBQWY7UUFDSSx1QkFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTCxxQkFBQztBQUFELENBM0pBLEFBMkpDLENBM0oyQyxzQkFBWSxHQTJKdkQiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbumXsumXsua4uOaIjyBTREtcblxuICovXG5cbmltcG9ydCBHYW1lY2ZnIGZyb20gXCIuLi9jb21tb24vZ2FtZUNmZ1wiO1xuaW1wb3J0IHsgZ2FtZU1ldGhvZCB9IGZyb20gXCIuLi9jb21tb24vZ2FtZU1ldGhvZFwiO1xuaW1wb3J0IHsgUGxheWVyTG9naW4sIFBsYXllckxvZ2luUHJhbSB9IGZyb20gXCIuLi9jb21tb24vWHljXCI7XG5pbXBvcnQgeyBTZXZCYWNrIH0gZnJvbSBcIi4uL2NvbW1vbi9YeXNcIjtcbmltcG9ydCBDb25maWcgZnJvbSBcIi4uL0NvbmZpZ1wiO1xuaW1wb3J0IHsgR2FtZUV2ZW50LCBMb2FkRXZlbnQsIFBsYXRFdmVudCB9IGZyb20gXCIuLi9kYXRhL2NvbnN0L0V2ZW50Q29uc3RcIjtcbmltcG9ydCB7IEFEX1ZJREVPX0tFWSwgQ29uc3RJdGVtLCBHYW1lRXJyQ29kZSwgUGF5UHJvZHVjdFBhcmFtLCBSZXBvcnRSb2xlVHlwZSB9IGZyb20gXCIuLi9kYXRhL2NvbnN0L1R5cGVDb25zdFwiO1xuaW1wb3J0IEdhbWVEYXRhQ2VudGVyIGZyb20gXCIuLi9kYXRhL0dhbWVEYXRhQ2VudGVyXCI7XG5pbXBvcnQgR2FtZUNvbnRyb2xsZXIgZnJvbSBcIi4uL0dhbWVDb250cm9sbGVyXCI7XG5pbXBvcnQgVUlIZWxwIGZyb20gXCIuLi9sb2dpYy91aS9VSUhlbHBcIjtcbmltcG9ydCBFdmVudE1uZyBmcm9tIFwiLi4vbWFuYWdlci9FdmVudE1uZ1wiO1xuaW1wb3J0IE5hdGl2ZU1hbmFnZXIgZnJvbSBcIi4uL3V0aWxzL05hdGl2ZU1hbmFnZXJcIjtcbmltcG9ydCBQbGF0Zm9ybUJhc2UgZnJvbSBcIi4vUGxhdGZvcm1CYXNlXCI7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGF0Zm9ybVhYR2FtZSBleHRlbmRzIFBsYXRmb3JtQmFzZSB7XG4gICAgcmV3YXJkVmlkZW86IGFueVxuICAgIGFkSWQ6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB3aW5kb3dbXCJOYXRpdmVOb3RpZnlcIl0gPSB7XG4gICAgICAgICAgICAvL25hdGl2ZeW5s+WPsOWbnuiwg1xuICAgICAgICAgICAgT25OYXRpdmVOb3RpZnk6IGZ1bmN0aW9uIChldmVudFR5cGUsIGV2ZW50RGF0YVN0cmluZykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmF0aXZlTm90aWZ5IE9uTmF0aXZlTm90aWZ5IGV2ZW50VHlwZTpcIiArIGV2ZW50VHlwZSArIFwiLGV2ZW50RGF0YVN0cmluZzpcIiArIGV2ZW50RGF0YVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhRGljdCA9IEpTT04ucGFyc2UoZXZlbnREYXRhU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZUxvZ2luXCIpIHsgLy/nmbvlvZVcbiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDAuNzUsIFwibG9naW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXM6IFBsYXllckxvZ2luUHJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQ6IENvbmZpZy5waWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW06IFtkYXRhRGljdC51aWQsIGRhdGFEaWN0LnRva2VuXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRhdGFEaWN0LnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyclBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVDb250cm9sbGVyLm5ldHdvcmsuc2VuZChQbGF5ZXJMb2dpbi51cmwsIHBhcmFtcywgKHJlc3VsdDogU2V2QmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWQjuautemqjOivgei/lOWbnlwiLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luKSB8fCBnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0Lndpbi5tc2dPdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAxLCBcImxvZ2luXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSAxICYmIHJlc3VsdC5wbGF0QmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5vcGVuSWQgPSByZXN1bHQucGxhdEJhY2sub3BlbmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmxvZ2luUGFyYW1zID0gW3Jlc3VsdC5wbGF0QmFjay50b2tlbl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO56uv6aqM6K+B5oiQ5YqfXCIsIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2Uub3BlbklkKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAvLyDliqDovb3lub/lkYrnu4Tku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5pbml0UmV3YXJkZWRWaWRlb0FkKEFEX1ZJREVPX0tFWS53ZWxDaGVzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPlumCgOivt+iAhXV1aWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnZpdGVyID0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5sb2dpbihpbnZpdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQbGF5ZXJMb2dpbi51cmwg6L+U5Zue5pWw5o2u5byC5bi4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZVBheVwiKSB7ICAvL+aUr+S7mFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFEaWN0LnN0YXR1cyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lhYXlgLzmiJDlip9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhRGljdC5zdGF0dXMgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5YWF5YC85aSx6LSlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lvoXlrqHmoLjkuK1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZUxvZ291dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL+mAgOWHuueZu+W9lVxuICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IFwiZ2V0Q2xpcGJvYXJkVGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL0V2ZW50TW5nLmVtaXQoZHVpaHVhbkV2ZW50LkdldFRleHQsIGRhdGFEaWN0Lm1zZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIk5hdGl2ZU5vdGlmeSBPbk5hdGl2ZU5vdGlmeSBub3QgZmluZCBldmVudFR5cGU6IFwiICsgZXZlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOYXRpdmVOb3RpZnkgT25OYXRpdmVOb3RpZnkgZXJyb3I6IFwiICsgZXJyb3Iuc3RhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93TG9naW5WaWV3KCk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZyhcIuW5s+WPsHNka+WIneWni+WMli4uLlwiKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIGxldCBwYWNrYWdlSW5mbyA9IEdhbWVjZmcucGFja2FnZUluZm8uZ2V0SXRlbShDb25maWcucGlkKVxuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lSW5pdFwiLCB7fSwgXCJcIilcbiAgICB9XG4gICAgLy8g5LiK5oql55So5oi35L+h5oGvXG4gICAgcmVwb3J0VXNlckluZm8ocmVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql55So5oi35L+h5oGvXCIsIHJlcylcbiAgICB9XG4gICAgLy8g5LiK5oql6KeS6Imy5pWw5o2uXG4gICAgcmVwb3J0Um9sZShldmVudDogUmVwb3J0Um9sZVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sgPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbyA9PSBudWxsKSB7IHJldHVybiB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql6KeS6Imy5pWw5o2uOlwiLCBldmVudClcbiAgICAgICAgXG4gICAgICAgIGxldCBnYW1lU2VydmVySWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8uc2lkO1xuICAgICAgICBsZXQgc2VydmVyTmFtZSA9IEdhbWVEYXRhQ2VudGVyLnVzZXIuZ2V0U2VydmVyTmFtZUJ5U2lkKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQpIHx8IEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQ7XG4gICAgICAgIGxldCByb2xlSWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8udXVpZDsgXG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgcm9sZU5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8ubmFtZTtcbiAgICAgICAgbGV0IGFyZ0xpc3QgPSBbXTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwiZ2FtZVNlcnZlcklkXCIsIFwiVmFsdWVcIjogZ2FtZVNlcnZlcklkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJnYW1lU2VydmVyTmFtZVwiLCBcIlZhbHVlXCI6IHNlcnZlck5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcInJvbGVJZFwiLCBcIlZhbHVlXCI6IHJvbGVJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZUxldmVsXCIsIFwiVmFsdWVcIjogbGV2ZWwudG9TdHJpbmcoKSB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZU5hbWVcIiwgXCJWYWx1ZVwiOiByb2xlTmFtZSB9KTtcbiAgICAgICAgaWYgKGV2ZW50ID09IFJlcG9ydFJvbGVUeXBlLmNyZWF0ZSkge1xuICAgICAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPblhYR2FtZWRDcmVhdGVSb2xlXCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gUmVwb3J0Um9sZVR5cGUubGV2ZWx1cCkge1xuICAgICAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPblhYR2FtZWRSZXBvcnRSb2xlXCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gUmVwb3J0Um9sZVR5cGUub25saW5lKSB7XG4gICAgICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lZEVudGVyR2FtZVwiLCBhcmdMaXN0LCBcIlwiKVxuICAgICAgICB9XG4gICAgfVxuICAgIHBheShvcmRlcklkOiBzdHJpbmcsIG9yZGVyMTBjczogc3RyaW5nLCBwYXJhbTogUGF5UHJvZHVjdFBhcmFtKTogdm9pZCB7XG4gICAgICAgIGxldCBnYW1lU2VydmVySWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8uc2lkO1xuICAgICAgICBsZXQgc2VydmVyTmFtZSA9IEdhbWVEYXRhQ2VudGVyLnVzZXIuZ2V0U2VydmVyTmFtZUJ5U2lkKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQpIHx8IEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQ7XG4gICAgICAgIGxldCByb2xlSWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8udXVpZDsgXG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgcm9sZU5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8ubmFtZTtcbiAgICAgICAgbGV0IGFyZ0xpc3QgPSBbXTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwiZ2FtZVNlcnZlcklkXCIsIFwiVmFsdWVcIjogZ2FtZVNlcnZlcklkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJnYW1lU2VydmVyTmFtZVwiLCBcIlZhbHVlXCI6IHNlcnZlck5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcIml0ZW1OYW1lXCIsIFwiVmFsdWVcIjogcGFyYW0ucHJvZHVjdE5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcIml0ZW1JZFwiLCBcIlZhbHVlXCI6IHBhcmFtLnByb2R1Y3RJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZUlkXCIsIFwiVmFsdWVcIjogcm9sZUlkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJyb2xlTGV2ZWxcIiwgXCJWYWx1ZVwiOiBsZXZlbC50b1N0cmluZygpIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJyb2xlTmFtZVwiLCBcIlZhbHVlXCI6IHJvbGVOYW1lIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJvcmRlcklkXCIsIFwiVmFsdWVcIjogb3JkZXJJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicHJpY2VcIiwgXCJWYWx1ZVwiOiBwYXJhbS5wcmljZS50b1N0cmluZygpIH0pO1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lUGF5XCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgfVxuICAgIC8v5omT5byA5rWP6KeI5Zmo5omT5byA6ZO+5o6lXG4gICAgb3BlblVybCh1cmw6IHN0cmluZykge1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uT3BlbkJyb3dzZXJcIiwgW3sgXCJOYW1lXCI6IFwidXJsXCIsIFwiVmFsdWVcIjogdXJsIH1dLCBcIlwiKVxuICAgIH1cbiAgICBnZXRDbGlwYm9hcmRUZXh0KCk6IHZvaWQge1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcImdldENsaXBib2FyZFRleHRcIiwge30sIFwiXCIpO1xuICAgIH1cbiAgICByZVNob3dMb2dJblZpZXcoKTogdm9pZCB7XG4gICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT25YWEdhbWVMb2dpblwiLCB7fSwgXCJcIik7XG4gICAgfVxuXG59Il19
|