(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/guildskill/guildskill_controller.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, 'ec5e4GZ/kJJUZqoa4DyVHTD', 'guildskill_controller'); // Scripts/mod/guildskill/guildskill_controller.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-01-19 17:37:33 // -------------------------------------------------------------------- var BackpackConst = require("backpack_const"); var GuildskillConst = require("guildskill_const"); var RoleController = require("role_controller"); var GuildskillController = cc.Class({ "extends": BaseController, ctor: function ctor() {}, // 初始化配置数据 initConfig: function initConfig() { var GuildskillModel = require("guildskill_model"); this.model = new GuildskillModel(); this.model.initConfig(); }, // 返回当前的model getModel: function getModel() { return this.model; }, // 注册监听事件 registerEvents: function registerEvents() { //背包初始化之后,再请求公会信息,因为要判断是否可以升级技能的 if (this.backpack_init_event == null) { this.backpack_init_event = gcore.GlobalEvent.bind(EventId.GET_ALL_DATA, function (bag_code) { if (bag_code != BackpackConst.Bag_Code.BACKPACK) return; this.role_vo = RoleController.getInstance().getRoleVo(); if (this.role_vo == null) { if (this.init_role_event == null) { this.init_role_event = gcore.GlobalEvent.bind(EventId.EVT_ROLE_CREATE_SUCCESS, function () { gcore.GlobalEvent.unbind(this.init_role_event); this.role_vo = RoleController.getInstance().getRoleVo(); if (this.role_vo) this.registerRoleEvent(); }.bind(this)); } } else { this.registerRoleEvent(); } }.bind(this)); if (this.re_link_game_event == null) { this.login_event_success = gcore.GlobalEvent.bind(EventId.EVT_RE_LINK_GAME, function () { var GuideController = require("guide_controller"); if (!GuideController.getInstance().isInGuide()) this.openGuildSkillMainWindow(false); this.model.clearGuildCareerSkill(); this.requestInitProtocal(); }.bind(this)); } } }, registerRoleEvent: function registerRoleEvent() { this.requestInitProtocal(true); if (this.role_assets_event == null) { this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) { if (key == "gid") this.requestInitProtocal();else if (key == "guild") this.model.checkGuildSkillRedStatus(); }, this); } }, //请求技能状态,用于初始化红点 requestInitProtocal: function requestInitProtocal() { if (this.role_vo != null) { if (this.role_vo.gid != 0) { this.SendProtocal(23703, {}); } else { this.openGuildSkillMainWindow(false); this.model.clearGuildCareerSkill(); } } }, // 注册协议接受事件 registerProtocals: function registerProtocals() { // this.RegisterProtocal(1110, this.on1110); this.RegisterProtocal(23700, this.handle23700); // 获取指定职业技能信息 this.RegisterProtocal(23701, this.handle23701); // 激活技能 this.RegisterProtocal(23702, this.handle23702); // 更新当前分组技能 this.RegisterProtocal(23703, this.handle23703); // 可学习技能状态 }, //打开公会技能的主界面 openGuildSkillMainWindow: function openGuildSkillMainWindow(status) { if (status == false) { if (this.main_window != null) { this.main_window.close(); this.main_window = null; } } else { if (this.main_window == null) this.main_window = Utils.createClass("guildskill_main_window"); this.main_window.open(); } }, //请求指定职业的技能信息 requestCareerSkillInfo: function requestCareerSkillInfo(career) { career = career || GuildskillConst.index.physics; var protocal = {}; protocal.career = career; this.SendProtocal(23700, protocal); }, handle23700: function handle23700(data) { this.model.initGuildCareerSkill(data); }, //请求激活技能 requestActivitySkill: function requestActivitySkill(skill_id) { var protocal = {}; protocal.skill_id = skill_id; this.SendProtocal(23701, protocal); }, handle23701: function handle23701(data) { message(data.msg); if (data.code == 1) this.model.updateGuildCareerSkill(data.career, data.skill_id); }, //更新指定职业的分组技能信息,这个时候是主要升级 handle23702: function handle23702(data) { this.model.upgradeGuildCareerSkill(data.career, data.group_id); }, //可学习技能状态 handle23703: function handle23703(data) { this.model.initGuildSkillStatus(data); } }); module.exports = GuildskillController; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZHNraWxsXFxndWlsZHNraWxsX2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQmFja3BhY2tDb25zdCIsInJlcXVpcmUiLCJHdWlsZHNraWxsQ29uc3QiLCJSb2xlQ29udHJvbGxlciIsIkd1aWxkc2tpbGxDb250cm9sbGVyIiwiY2MiLCJDbGFzcyIsIkJhc2VDb250cm9sbGVyIiwiY3RvciIsImluaXRDb25maWciLCJHdWlsZHNraWxsTW9kZWwiLCJtb2RlbCIsImdldE1vZGVsIiwicmVnaXN0ZXJFdmVudHMiLCJiYWNrcGFja19pbml0X2V2ZW50IiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsImJpbmQiLCJFdmVudElkIiwiR0VUX0FMTF9EQVRBIiwiYmFnX2NvZGUiLCJCYWdfQ29kZSIsIkJBQ0tQQUNLIiwicm9sZV92byIsImdldEluc3RhbmNlIiwiZ2V0Um9sZVZvIiwiaW5pdF9yb2xlX2V2ZW50IiwiRVZUX1JPTEVfQ1JFQVRFX1NVQ0NFU1MiLCJ1bmJpbmQiLCJyZWdpc3RlclJvbGVFdmVudCIsInJlX2xpbmtfZ2FtZV9ldmVudCIsImxvZ2luX2V2ZW50X3N1Y2Nlc3MiLCJFVlRfUkVfTElOS19HQU1FIiwiR3VpZGVDb250cm9sbGVyIiwiaXNJbkd1aWRlIiwib3Blbkd1aWxkU2tpbGxNYWluV2luZG93IiwiY2xlYXJHdWlsZENhcmVlclNraWxsIiwicmVxdWVzdEluaXRQcm90b2NhbCIsInJvbGVfYXNzZXRzX2V2ZW50IiwiVVBEQVRFX1JPTEVfQVRUUklCVVRFIiwia2V5IiwidmFsdWUiLCJjaGVja0d1aWxkU2tpbGxSZWRTdGF0dXMiLCJnaWQiLCJTZW5kUHJvdG9jYWwiLCJyZWdpc3RlclByb3RvY2FscyIsIlJlZ2lzdGVyUHJvdG9jYWwiLCJoYW5kbGUyMzcwMCIsImhhbmRsZTIzNzAxIiwiaGFuZGxlMjM3MDIiLCJoYW5kbGUyMzcwMyIsInN0YXR1cyIsIm1haW5fd2luZG93IiwiY2xvc2UiLCJVdGlscyIsImNyZWF0ZUNsYXNzIiwib3BlbiIsInJlcXVlc3RDYXJlZXJTa2lsbEluZm8iLCJjYXJlZXIiLCJpbmRleCIsInBoeXNpY3MiLCJwcm90b2NhbCIsImRhdGEiLCJpbml0R3VpbGRDYXJlZXJTa2lsbCIsInJlcXVlc3RBY3Rpdml0eVNraWxsIiwic2tpbGxfaWQiLCJtZXNzYWdlIiwibXNnIiwiY29kZSIsInVwZGF0ZUd1aWxkQ2FyZWVyU2tpbGwiLCJ1cGdyYWRlR3VpbGRDYXJlZXJTa2lsbCIsImdyb3VwX2lkIiwiaW5pdEd1aWxkU2tpbGxTdGF0dXMiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLGFBQWEsR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQTNCOztBQUNBLElBQUlDLGVBQWUsR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQTdCOztBQUNBLElBQUlFLGNBQWMsR0FBR0YsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUVBLElBQUlHLG9CQUFvQixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNoQyxhQUFTQyxjQUR1QjtBQUVoQ0MsRUFBQUEsSUFBSSxFQUFFLGdCQUFZLENBQ2pCLENBSCtCO0FBS2hDO0FBQ0FDLEVBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixRQUFJQyxlQUFlLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFFQSxTQUFLVSxLQUFMLEdBQWEsSUFBSUQsZUFBSixFQUFiO0FBQ0EsU0FBS0MsS0FBTCxDQUFXRixVQUFYO0FBQ0gsR0FYK0I7QUFhaEM7QUFDQUcsRUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFdBQU8sS0FBS0QsS0FBWjtBQUNILEdBaEIrQjtBQWtCaEM7QUFDQUUsRUFBQUEsY0FBYyxFQUFFLDBCQUFZO0FBQ3hCO0FBQ0EsUUFBSSxLQUFLQyxtQkFBTCxJQUE0QixJQUFoQyxFQUFzQztBQUNsQyxXQUFLQSxtQkFB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Q3RDLFFBQUlKLFFBQVEsR0FBRyxFQUFmO0FBQ0FBLElBQUFBLFFBQVEsQ0FBQ0ksUUFBVCxHQUFvQkEsUUFBcEI7QUFDQSxTQUFLckIsWUFBTCxDQUFrQixLQUFsQixFQUF5QmlCLFFBQXpCO0FBQ0gsR0FwSCtCO0FBc0hoQ2IsRUFBQUEsV0FBVyxFQUFFLHFCQUFVYyxJQUFWLEVBQWdCO0FBQ3pCSSxJQUFBQSxPQUFPLENBQUNKLElBQUksQ0FBQ0ssR0FBTixDQUFQO0FBQ0EsUUFBSUwsSUFBSSxDQUFDTSxJQUFMLElBQWEsQ0FBakIsRUFDSSxLQUFLekQsS0FBTCxDQUFXMEQsc0JBQVgsQ0FBa0NQLElBQUksQ0FBQ0osTUFBdkMsRUFBK0NJLElBQUksQ0FBQ0csUUFBcEQ7QUFDUCxHQTFIK0I7QUE0SGhDO0FBQ0FoQixFQUFBQSxXQUFXLEVBQUUscUJBQVVhLElBQVYsRUFBZ0I7QUFDekIsU0FBS25ELEtBQUwsQ0FBVzJELHVCQUFYLENBQW1DUixJQUFJLENBQUNKLE1BQXhDLEVBQWdESSxJQUFJLENBQUNTLFFBQXJEO0FBQ0gsR0EvSCtCO0FBaUloQztBQUNBckIsRUFBQUEsV0FBVyxFQUFFLHFCQUFVWSxJQUFWLEVBQWdCO0FBQ3pCLFNBQUtuRCxLQUFMLENBQVc2RCxvQkFBWCxDQUFnQ1YsSUFBaEM7QUFDSDtBQXBJK0IsQ0FBVCxDQUEzQjtBQXVJQVcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdEUsb0JBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAgIOi/memHjOWhq+WGmeivpue7huivtOaYjizkuLvopoHloavlhpnor6XmqKHlnZfnmoTlip/og73nroDopoFcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTAxLTE5IDE3OjM3OjMzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIEJhY2twYWNrQ29uc3QgPSByZXF1aXJlKFwiYmFja3BhY2tfY29uc3RcIik7XG52YXIgR3VpbGRza2lsbENvbnN0ID0gcmVxdWlyZShcImd1aWxkc2tpbGxfY29uc3RcIik7XG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xuXG52YXIgR3VpbGRza2lsbENvbnRyb2xsZXIgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNvbnRyb2xsZXIsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbphY3nva7mlbDmja5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBHdWlsZHNraWxsTW9kZWwgPSByZXF1aXJlKFwiZ3VpbGRza2lsbF9tb2RlbFwiKTtcblxuICAgICAgICB0aGlzLm1vZGVsID0gbmV3IEd1aWxkc2tpbGxNb2RlbCgpO1xuICAgICAgICB0aGlzLm1vZGVsLmluaXRDb25maWcoKTtcbiAgICB9LFxuXG4gICAgLy8g6L+U5Zue5b2T5YmN55qEbW9kZWxcbiAgICBnZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM55uR5ZCs5LqL5Lu2XG4gICAgcmVnaXN0ZXJFdmVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy/og4zljIXliJ3lp4vljJbkuYvlkI4s5YaN6K+35rGC5YWs5Lya5L+h5oGvLOWboOS4uuimgeWIpOaWreaYr+WQpuWPr+S7peWNh+e6p+aKgOiDveeahFxuICAgICAgICBpZiAodGhpcy5iYWNrcGFja19pbml0X2V2ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuYmFja3BhY2tfaW5pdF9ldmVudCA9IGdjb3JlLkdsb2JhbEV2ZW50LmJpbmQoRXZlbnRJZC5HRVRfQUxMX0RBVEEsIGZ1bmN0aW9uIChiYWdfY29kZSkge1xuICAgICAgICAgICAgICAgIGlmIChiYWdfY29kZSAhPSBCYWNrcGFja0NvbnN0LkJhZ19Db2RlLkJBQ0tQQUNLKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB0aGlzLnJvbGVfdm8gPSBSb2xlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFJvbGVWbygpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfdm8gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0X3JvbGVfZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0X3JvbGVfZXZlbnQgPSBnY29yZS5HbG9iYWxFdmVudC5iaW5kKEV2ZW50SWQuRVZUX1JPTEVfQ1JFQVRFX1NVQ0NFU1MsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC51bmJpbmQodGhpcy5pbml0X3JvbGVfZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucm9sZV92bylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJvbGVFdmVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJvbGVFdmVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcblxuICAgICAgICAgICAgaWYgKHRoaXMucmVfbGlua19nYW1lX2V2ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luX2V2ZW50X3N1Y2Nlc3MgPSBnY29yZS5HbG9iYWxFdmVudC5iaW5kKEV2ZW50SWQuRVZUX1JFX0xJTktfR0FNRSwgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIEd1aWRlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJndWlkZV9jb250cm9sbGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUd1aWRlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmlzSW5HdWlkZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuR3VpbGRTa2lsbE1haW5XaW5kb3coZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmNsZWFyR3VpbGRDYXJlZXJTa2lsbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RJbml0UHJvdG9jYWwoKTtcbiAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHJlZ2lzdGVyUm9sZUV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdEluaXRQcm90b2NhbCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucm9sZV9hc3NldHNfZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yb2xlX2Fzc2V0c19ldmVudCA9IHRoaXMucm9sZV92by5iaW5kKEV2ZW50SWQuVVBEQVRFX1JPTEVfQVRUUklCVVRFLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gXCJnaWRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0SW5pdFByb3RvY2FsKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09IFwiZ3VpbGRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5jaGVja0d1aWxkU2tpbGxSZWRTdGF0dXMoKTtcbiAgICAgICAgICAgIH0sIHRoaXMpXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/or7fmsYLmioDog73nirbmgIHvvIznlKjkuo7liJ3lp4vljJbnuqLngrlcbiAgICByZXF1ZXN0SW5pdFByb3RvY2FsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnJvbGVfdm8gIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucm9sZV92by5naWQgIT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAzLCB7fSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbkd1aWxkU2tpbGxNYWluV2luZG93KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmNsZWFyR3VpbGRDYXJlZXJTa2lsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOazqOWGjOWNj+iuruaOpeWPl+S6i+S7tlxuICAgIHJlZ2lzdGVyUHJvdG9jYWxzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgxMTEwLCB0aGlzLm9uMTExMCk7XG4gICAgICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgyMzcwMCwgdGhpcy5oYW5kbGUyMzcwMCkgICAgICAgICAvLyDojrflj5bmjIflrprogYzkuJrmioDog73kv6Hmga9cbiAgICAgICAgdGhpcy5SZWdpc3RlclByb3RvY2FsKDIzNzAxLCB0aGlzLmhhbmRsZTIzNzAxKSAgICAgICAgIC8vIOa/gOa0u+aKgOiDvVxuICAgICAgICB0aGlzLlJlZ2lzdGVyUHJvdG9jYWwoMjM3MDIsIHRoaXMuaGFuZGxlMjM3MDIpICAgICAgICAgLy8g5pu05paw5b2T5YmN5YiG57uE5oqA6IO9XG4gICAgICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgyMzcwMywgdGhpcy5oYW5kbGUyMzcwMykgICAgICAgICAvLyDlj6/lrabkuaDmioDog73nirbmgIFcbiAgICB9LFxuXG4gICAgLy/miZPlvIDlhazkvJrmioDog73nmoTkuLvnlYzpnaJcbiAgICBvcGVuR3VpbGRTa2lsbE1haW5XaW5kb3c6IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWFpbl93aW5kb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbl93aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5fd2luZG93ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1haW5fd2luZG93ID09IG51bGwpXG4gICAgICAgICAgICAgICAgdGhpcy5tYWluX3dpbmRvdyA9IFV0aWxzLmNyZWF0ZUNsYXNzKFwiZ3VpbGRza2lsbF9tYWluX3dpbmRvd1wiKTtcbiAgICAgICAgICAgIHRoaXMubWFpbl93aW5kb3cub3BlbigpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8v6K+35rGC5oyH5a6a6IGM5Lia55qE5oqA6IO95L+h5oGvXG4gICAgcmVxdWVzdENhcmVlclNraWxsSW5mbzogZnVuY3Rpb24gKGNhcmVlcikge1xuICAgICAgICBjYXJlZXIgPSBjYXJlZXIgfHwgR3VpbGRza2lsbENvbnN0LmluZGV4LnBoeXNpY3M7XG4gICAgICAgIHZhciBwcm90b2NhbCA9IHt9O1xuICAgICAgICBwcm90b2NhbC5jYXJlZXIgPSBjYXJlZXI7XG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAwLCBwcm90b2NhbCk7XG4gICAgfSxcblxuICAgIGhhbmRsZTIzNzAwOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB0aGlzLm1vZGVsLmluaXRHdWlsZENhcmVlclNraWxsKGRhdGEpO1xuICAgIH0sXG5cbiAgICAvL+ivt+axgua/gOa0u+aKgOiDvVxuICAgIHJlcXVlc3RBY3Rpdml0eVNraWxsOiBmdW5jdGlvbiAoc2tpbGxfaWQpIHtcbiAgICAgICAgdmFyIHByb3RvY2FsID0ge307XG4gICAgICAgIHByb3RvY2FsLnNraWxsX2lkID0gc2tpbGxfaWQ7XG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAxLCBwcm90b2NhbCk7XG4gICAgfSxcblxuICAgIGhhbmRsZTIzNzAxOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBtZXNzYWdlKGRhdGEubXNnKTtcbiAgICAgICAgaWYgKGRhdGEuY29kZSA9PSAxKVxuICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVHdWlsZENhcmVlclNraWxsKGRhdGEuY2FyZWVyLCBkYXRhLnNraWxsX2lkKTtcbiAgICB9LFxuXG4gICAgLy/mm7TmlrDmjIflrprogYzkuJrnmoTliIbnu4TmioDog73kv6Hmga/vvIzov5nkuKrml7blgJnmmK/kuLvopoHljYfnuqdcbiAgICBoYW5kbGUyMzcwMjogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdGhpcy5tb2RlbC51cGdyYWRlR3VpbGRDYXJlZXJTa2lsbChkYXRhLmNhcmVlciwgZGF0YS5ncm91cF9pZCk7XG4gICAgfSxcblxuICAgIC8v5Y+v5a2m5Lmg5oqA6IO954q25oCBXG4gICAgaGFuZGxlMjM3MDM6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMubW9kZWwuaW5pdEd1aWxkU2tpbGxTdGF0dXMoZGF0YSk7XG4gICAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gR3VpbGRza2lsbENvbnRyb2xsZXI7Il19