|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/recruithero/view/recruit_hero_window.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, '15c822qJFxNwbARbTTePDh2', 'recruit_hero_window');
|
// Scripts/mod/recruithero/view/recruit_hero_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 限时招募
|
// <br/>Create: 2019-07-02 17:07:38
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var ActionController = require("action_controller");
|
|
var HeroController = require("hero_controller");
|
|
var JumpController = require("jump_controller");
|
|
var RecruitHeroEvent = require("recruithero_event");
|
|
var Recruit_heroWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("recruithero", "recruit_hero_window");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Big; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.ctrl = arguments[0];
|
this.model = this.ctrl.getModel();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
this.player_item = [];
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
this.background = this.root_wnd.getChildByName("background");
|
this.background.scale = FIT_SCALE;
|
this.main_container = this.root_wnd.getChildByName("main_container");
|
this.load_bg = this.main_container.getChildByName("load_bg").getComponent(cc.Sprite);
|
var res = PathTool.getBigBg("action_bigbg_3", null, "action");
|
this.loadRes(res, function (resObject) {
|
this.load_bg.spriteFrame = resObject;
|
}.bind(this));
|
var Text_1 = this.main_container.getChildByName("Text_1").getComponent(cc.Label);
|
Text_1.string = Utils.TI18N("活动时间:");
|
var Text_3 = this.main_container.getChildByName("Text_3").getComponent(cc.Label);
|
Text_3.string = Utils.TI18N("完成上方任务即可免费领取5星英雄斯芬克斯");
|
this.remain_time = this.main_container.getChildByName("remain_time").getComponent(cc.Label);
|
this.remain_time.string = "";
|
this.all_get = this.main_container.getChildByName("all_get");
|
this.all_get.active = false;
|
var all_get_lab = this.all_get.getChildByName("label").getComponent(cc.Label);
|
all_get_lab.string = Utils.TI18N("领取");
|
this.all_goto = this.main_container.getChildByName("all_goto");
|
this.all_goto.active = false;
|
var all_goto_lab = this.all_goto.getChildByName("label").getComponent(cc.Label);
|
all_goto_lab.string = Utils.TI18N("未完成");
|
this.btn_paint = this.main_container.getChildByName("btn_paint");
|
var Text_2 = this.btn_paint.getChildByName("Text_2").getComponent(cc.Label);
|
Text_2.string = Utils.TI18N("战斗预览");
|
this.finish_text = this.main_container.getChildByName("finish_text").getComponent(cc.Label);
|
this.finish_text.string = "";
|
this.setPlayerItem();
|
this.btn_close = this.main_container.getChildByName("btn_close");
|
},
|
setPlayerItem: function setPlayerItem() {
|
var pos_x = 100;
|
var pos_y = 114;
|
var bid = [29905, 26900, 26903];
|
|
for (var i = 0; i < 3; i++) {
|
var tab = {};
|
var item = this.main_container.getChildByName("item_" + (parseInt(i) + 1));
|
tab.btn_goto = item.getChildByName("btn_goto");
|
tab.btn_goto.active = false;
|
var tab_goto_lab = tab.btn_goto.getChildByName("label").getComponent(cc.Label);
|
tab_goto_lab.string = Utils.TI18N("前往完成");
|
tab.btn_get = item.getChildByName("btn_get");
|
tab.btn_get.active = false;
|
tab.btn_get_label = tab.btn_get.getChildByName("label").getComponent(cc.Label);
|
tab.btn_get_label.string = Utils.TI18N("前往领取");
|
tab.has = item.getChildByName("has");
|
tab.has.active = false;
|
tab.title_label = item.getChildByName("title").getComponent(cc.Label);
|
this.player_item[i] = ItemsPool.getInstance().getItem("backpack_item");
|
this.player_item[i].setParent(item);
|
this.player_item[i].initConfig(false, 0.8);
|
this.player_item[i].setPosition(pos_x - item.width / 2, pos_y - item.height / 2);
|
this.player_item[i].setData({
|
bid: bid[i],
|
num: 50
|
});
|
this.player_item[i].show();
|
this.player_item[i].setDefaultTip();
|
this.player_item[i] = tab;
|
}
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.addGlobalEvent(RecruitHeroEvent.RecruitHeroBaseInfo, function (data) {
|
var ctr = ActionController.getInstance();
|
var time = data.end_time - gcore.SmartSocket.getTime();
|
ctr.getModel().setCountDownTime(this.remain_time, time);
|
this.showBtnStatus(data);
|
}.bind(this));
|
Utils.onTouchEnd(this.btn_close, function () {
|
this.ctrl.openRecruitHeroWindow(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openRecruitHeroWindow(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.all_get, function () {
|
this.ctrl.sender25101(0);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.btn_paint, function () {
|
// this.ctrl.openRecruitHeroWindow(false);
|
this.ctrl.sender25102(); // HeroController.getInstance().openHeroInfoWindowByBidStar(30508, 10);
|
}.bind(this), 1);
|
|
for (var i in this.player_item) {
|
Utils.onTouchEnd(this.player_item[i].btn_goto, function (i) {
|
var status = this.model.getRecruitEndTime();
|
|
if (status) {
|
if (i != 1) {
|
this.ctrl.openRecruitHeroWindow(false);
|
}
|
|
this.jumpGotoTeskView(i);
|
} else {
|
message(Utils.TI18N("活动已结束"));
|
}
|
}.bind(this, i), 1);
|
Utils.onTouchEnd(this.player_item[i].btn_get, function (i) {
|
this.jumpGetTeskView(i);
|
}.bind(this, i), 1);
|
}
|
},
|
// 任务
|
showBtnStatus: function showBtnStatus(data) {
|
if (!data) return;
|
var title = [Utils.TI18N("通关%d/%d关"), Utils.TI18N("次日登录"), Utils.TI18N("激活至尊月卡")];
|
var tesk_dun = Config.welfare_data.data_welfare_const.dun_max_id;
|
var finish_num = 0;
|
var pos = [2, 1, 3];
|
|
for (var i = 0; i < 3; i++) {
|
var base_data = this.model.getRecruitBaseData(pos[i]);
|
|
if (base_data) {
|
if (i == 0) {
|
this.player_item[i].title_label.string = cc.js.formatStr(title[i], base_data.val, tesk_dun.val);
|
} else {
|
this.player_item[i].title_label.string = title[i];
|
} // 特殊处理
|
|
|
if (i == 2 && base_data.status == 1) {
|
this.player_item[i].btn_get_label.string = Utils.TI18N("领取");
|
}
|
|
this.player_item[i].btn_goto.active = base_data.status == 0;
|
this.player_item[i].btn_get.active = base_data.status == 1;
|
this.player_item[i].has.active = base_data.status == 2;
|
|
if (base_data.status == 1 || base_data.status == 2) {
|
finish_num = finish_num + 1;
|
}
|
}
|
}
|
|
var str = cc.js.formatStr(Utils.TI18N("完成进度: %d/3"), finish_num);
|
this.finish_text.string = str;
|
|
if (data.state != null) {
|
this.all_goto.active = data.state == 0;
|
this.all_get.active = data.state == 1 || data.state == 1;
|
}
|
},
|
// 前往的跳转
|
jumpGotoTeskView: function jumpGotoTeskView(num) {
|
if (num == null) return;
|
|
if (num == 0) {
|
JumpController.getInstance().jumpViewByEvtData([5]);
|
} else if (num == 1) {
|
ActionController.getInstance().openSevenLoginWin(true);
|
} else if (num == 2) {
|
JumpController.getInstance().jumpViewByEvtData([44]);
|
}
|
},
|
// 领取的跳转
|
jumpGetTeskView: function jumpGetTeskView(num) {
|
if (num == null) return;
|
|
if (num == 0) {
|
JumpController.getInstance().jumpViewByEvtData([46]);
|
} else if (num == 1) {
|
ActionController.getInstance().openSevenLoginWin(true);
|
} else if (num == 2) {
|
this.ctrl.sender25101(parseInt(num) + 1);
|
}
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd() {
|
this.ctrl.sender25100();
|
this.model.setDayFirstLogin(false);
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.player_item && Utils.next(this.player_item || []) != null) {
|
for (var i in this.player_item) {
|
if (this.player_item[i] && this.player_item[i].deleteMe) {
|
this.player_item[i].deleteMe();
|
}
|
}
|
}
|
|
this.player_item = [];
|
|
if (this.remain_time && this.remain_time.node) {
|
this.remain_time.node.stopAllActions();
|
}
|
|
this.ctrl.openRecruitHeroWindow(false);
|
}
|
});
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxyZWNydWl0aGVyb1xcdmlld1xccmVjcnVpdF9oZXJvX3dpbmRvdy5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJBY3Rpb25Db250cm9sbGVyIiwiSGVyb0NvbnRyb2xsZXIiLCJKdW1wQ29udHJvbGxlciIsIlJlY3J1aXRIZXJvRXZlbnQiLCJSZWNydWl0X2hlcm9XaW5kb3ciLCJjYyIsIkNsYXNzIiwiQmFzZVZpZXciLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJ2aWV3VGFnIiwiU0NFTkVfVEFHIiwiZGlhbG9ndWUiLCJ3aW5fdHlwZSIsIldpblR5cGUiLCJCaWciLCJjdHJsIiwiYXJndW1lbnRzIiwibW9kZWwiLCJnZXRNb2RlbCIsImluaXRDb25maWciLCJwbGF5ZXJfaXRlbSIsIm9wZW5DYWxsQmFjayIsImJhY2tncm91bmQiLCJyb290X3duZCIsImdldENoaWxkQnlOYW1lIiwic2NhbGUiLCJGSVRfU0NBTEUiLCJtYWluX2NvbnRhaW5lciIsImxvYWRfYmciLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJyZXMiLCJnZXRCaWdCZyIsImxvYWRSZXMiLCJyZXNPYmplY3QiLCJzcHJpdGVGcmFtZSIsImJpbmQiLCJUZXh0XzEiLCJMYWJlbCIsInN0cmluZyIsIlV0aWxzIiwiVEkxOE4iLCJUZXh0XzMiLCJyZW1haW5fdGltZSIsImFsbF9nZXQiLCJhY3RpdmUiLCJhbGxfZ2V0X2xhYiIsImFsbF9nb3RvIiwiYWxsX2dvdG9fbGFiIiwiYnRuX3BhaW50IiwiVGV4dF8yIiwiZmluaXNoX3RleHQiLCJzZXRQbGF5ZXJJdGVtIiwiYnRuX2Nsb3NlIiwicG9zX3giLCJwb3NfeSIsImJpZCIsImkiLCJ0YWIiLCJpdGVtIiwicGFyc2VJbnQiLCJidG5fZ290byIsInRhYl9nb3RvX2xhYiIsImJ0bl9nZXQiLCJidG5fZ2V0X2xhYmVsIiwiaGFzIiwidGl0bGVfbGFiZWwiLCJJdGVtc1Bvb2wiLCJnZXRJbnN0YW5jZSIsImdldEl0ZW0iLCJzZXRQYXJlbnQiLCJzZXRQb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0RGF0YSIsIm51bSIsInNob3ciLCJzZXREZWZhdWx0VGlwIiwicmVnaXN0ZXJFdmVudCIsImFkZEdsb2JhbEV2ZW50IiwiUmVjcnVpdEhlcm9CYXNlSW5mbyIsImRhdGEiLCJjdHIiLCJ0aW1lIiwiZW5kX3RpbWUiLCJnY29yZSIsIlNtYXJ0U29ja2V0IiwiZ2V0VGltZSIsInNldENvdW50RG93blRpbWUiLCJzaG93QnRuU3RhdHVzIiwib25Ub3VjaEVuZCIsIm9wZW5SZWNydWl0SGVyb1dpbmRvdyIsInNlbmRlcjI1MTAxIiwic2VuZGVyMjUxMDIiLCJzdGF0dXMiLCJnZXRSZWNydWl0RW5kVGltZSIsImp1bXBHb3RvVGVza1ZpZXciLCJtZXNzYWdlIiwianVtcEdldFRlc2tWaWV3IiwidGl0bGUiLCJ0ZXNrX2R1biIsIkNvbmZpZyIsIndlbGZhcmVfZGF0YSIsImRhdGFfd2VsZmFyZV9jb25zdCIsImR1bl9tYXhfaWQiLCJmaW5pc2hfbnVtIiwicG9zIiwiYmFzZV9kYXRhIiwiZ2V0UmVjcnVpdEJhc2VEYXRhIiwianMiLCJmb3JtYXRTdHIiLCJ2YWwiLCJzdHIiLCJzdGF0ZSIsImp1bXBWaWV3QnlFdnREYXRhIiwib3BlblNldmVuTG9naW5XaW4iLCJvcGVuUm9vdFduZCIsInNlbmRlcjI1MTAwIiwic2V0RGF5Rmlyc3RMb2dpbiIsImNsb3NlQ2FsbEJhY2siLCJuZXh0IiwiZGVsZXRlTWUiLCJub2RlIiwic3RvcEFsbEFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBR0QsT0FBTyxDQUFDLG1CQUFELENBQTlCOztBQUNBLElBQUlFLGNBQWMsR0FBR0YsT0FBTyxDQUFD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LEVBQWdFO0FBQzVELFdBQUksSUFBSXFDLENBQVIsSUFBYSxLQUFLckMsV0FBbEIsRUFBOEI7QUFDMUIsWUFBRyxLQUFLQSxXQUFMLENBQWlCcUMsQ0FBakIsS0FBdUIsS0FBS3JDLFdBQUwsQ0FBaUJxQyxDQUFqQixFQUFvQmdFLFFBQTlDLEVBQXVEO0FBQ25ELGVBQUtyRyxXQUFMLENBQWlCcUMsQ0FBakIsRUFBb0JnRSxRQUFwQjtBQUNIO0FBQ0o7QUFDSjs7QUFDRCxTQUFLckcsV0FBTCxHQUFtQixFQUFuQjs7QUFFQSxRQUFHLEtBQUt1QixXQUFMLElBQW9CLEtBQUtBLFdBQUwsQ0FBaUIrRSxJQUF4QyxFQUE2QztBQUN6QyxXQUFLL0UsV0FBTCxDQUFpQitFLElBQWpCLENBQXNCQyxjQUF0QjtBQUNIOztBQUVELFNBQUs1RyxJQUFMLENBQVU0RSxxQkFBVixDQUFnQyxLQUFoQztBQUNIO0FBM042QixDQUFULENBQXpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg6ZmQ5pe25oub5YufXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNy0wMiAxNzowNzozOFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBBY3Rpb25Db250cm9sbGVyID0gcmVxdWlyZShcImFjdGlvbl9jb250cm9sbGVyXCIpO1xudmFyIEhlcm9Db250cm9sbGVyID0gcmVxdWlyZShcImhlcm9fY29udHJvbGxlclwiKTtcbnZhciBKdW1wQ29udHJvbGxlciA9IHJlcXVpcmUoXCJqdW1wX2NvbnRyb2xsZXJcIik7XG52YXIgUmVjcnVpdEhlcm9FdmVudCA9IHJlcXVpcmUoXCJyZWNydWl0aGVyb19ldmVudFwiKTtcblxudmFyIFJlY3J1aXRfaGVyb1dpbmRvdyA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlVmlldyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJyZWNydWl0aGVyb1wiLCBcInJlY3J1aXRfaGVyb193aW5kb3dcIik7XG4gICAgICAgIHRoaXMudmlld1RhZyA9IFNDRU5FX1RBRy5kaWFsb2d1ZTsgICAgICAgICAgICAgICAgLy/or6XnqpfkvZPmiYDlsZ51aeWxgue6pyzlhajlsY91aemcgOimgeWcqHVp5bGCLOmdnuWFqOWxj3Vp5ZyoZGlhbG9ndWXlsYIs6L+Z5Liq6KaB5rOo5oSPXG4gICAgICAgIHRoaXMud2luX3R5cGUgPSBXaW5UeXBlLkJpZzsgICAgICAgICAgICAgICAvL+aYr+WQpuaYr+WFqOWxj+eql+S9kyAgV2luVHlwZS5GdWxsLCBXaW5UeXBlLkJpZywgV2luVHlwZS5NaW5pLCBXaW5UeXBlLlRpcHNcbiAgICAgICAgdGhpcy5jdHJsID0gYXJndW1lbnRzWzBdO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XG4gICAgfSxcblxuICAgIC8vIOWIneWni+WMluS4gOS6m+mFjee9ruaVsOaNrizlj6/ku6XnlKjkuo7lo7DmmI7kuIDkupvlj5jph4/kuYvnsbvnmoRcbiAgICBpbml0Q29uZmlnOmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMucGxheWVyX2l0ZW0gID0gW107XG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjueahOWbnuiwgyzlj6/ku6XlnKjov5nph4zmjZXojrfnm7jlhbPoioLngrnmiJbogIXnu4Tku7ZcbiAgICBvcGVuQ2FsbEJhY2s6ZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcImJhY2tncm91bmRcIik7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZC5zY2FsZSA9IEZJVF9TQ0FMRTtcbiAgICBcbiAgICAgICAgdGhpcy5tYWluX2NvbnRhaW5lciA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJtYWluX2NvbnRhaW5lclwiKTtcbiAgICBcbiAgICAgICAgdGhpcy5sb2FkX2JnID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImxvYWRfYmdcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XG4gICAgICAgIHZhciByZXMgPSBQYXRoVG9vbC5nZXRCaWdCZyhcImFjdGlvbl9iaWdiZ18zXCIsbnVsbCxcImFjdGlvblwiKTtcbiAgICAgICAgdGhpcy5sb2FkUmVzKHJlcywgKGZ1bmN0aW9uKHJlc09iamVjdCl7XG4gICAgICAgICAgICB0aGlzLmxvYWRfYmcuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgIH0pLmJpbmQodGhpcykpO1xuICAgIFxuICAgICAgICB2YXIgVGV4dF8xID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIlRleHRfMVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICBUZXh0XzEuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmtLvliqjml7bpl7TvvJpcIik7XG4gICAgICAgIFxuICAgICAgICB2YXIgVGV4dF8zID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIlRleHRfM1wiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICBUZXh0XzMuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLlrozmiJDkuIrmlrnku7vliqHljbPlj6/lhY3otLnpooblj5Y15pif6Iux6ZuE5pav6Iqs5YWL5pavXCIpO1xuXG4gICAgICAgIHRoaXMucmVtYWluX3RpbWUgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwicmVtYWluX3RpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW1haW5fdGltZS5zdHJpbmcgPSBcIlwiO1xuICAgIFxuICAgICAgICB0aGlzLmFsbF9nZXQgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiYWxsX2dldFwiKTtcbiAgICAgICAgdGhpcy5hbGxfZ2V0LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgYWxsX2dldF9sYWIgPSB0aGlzLmFsbF9nZXQuZ2V0Q2hpbGRCeU5hbWUoXCJsYWJlbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICBhbGxfZ2V0X2xhYi5zdHJpbmcgPSBVdGlscy5USTE4TihcIumihuWPllwiKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuYWxsX2dvdG8gPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiYWxsX2dvdG9cIik7XG4gICAgICAgIHRoaXMuYWxsX2dvdG8uYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHZhciBhbGxfZ290b19sYWIgPSB0aGlzLmFsbF9nb3RvLmdldENoaWxkQnlOYW1lKFwibGFiZWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgYWxsX2dvdG9fbGFiLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5pyq5a6M5oiQXCIpO1xuXG4gICAgICAgIHRoaXMuYnRuX3BhaW50ID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImJ0bl9wYWludFwiKTtcbiAgICAgICAgdmFyIFRleHRfMiA9IHRoaXMuYnRuX3BhaW50LmdldENoaWxkQnlOYW1lKFwiVGV4dF8yXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG4gICAgICAgIFRleHRfMi5zdHJpbmcgPSBVdGlscy5USTE4TihcIuaImOaWl+mihOiniFwiKTtcbiAgICBcbiAgICAgICAgdGhpcy5maW5pc2hfdGV4dCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJmaW5pc2hfdGV4dFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICB0aGlzLmZpbmlzaF90ZXh0LnN0cmluZyA9IFwiXCI7XG4gICAgICAgIHRoaXMuc2V0UGxheWVySXRlbSgpO1xuICAgIFxuICAgICAgICB0aGlzLmJ0bl9jbG9zZSA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fY2xvc2VcIik7XG4gICAgfSxcblxuICAgIHNldFBsYXllckl0ZW06ZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIHBvc194ID0gMTAwO1xuICAgICAgICB2YXIgcG9zX3kgPSAxMTQ7XG4gICAgICAgIHZhciBiaWQgPSBbMjk5MDUsMjY5MDAsMjY5MDNdO1xuICAgICAgICBmb3IodmFyIGk9MDtpPDM7aSsrKXtcbiAgICAgICAgICAgIHZhciB0YWIgPSB7fTtcbiAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIml0ZW1fXCIrKHBhcnNlSW50KGkpKzEpKTtcbiAgICAgICAgICAgIHRhYi5idG5fZ290byA9IGl0ZW0uZ2V0Q2hpbGRCeU5hbWUoXCJidG5fZ290b1wiKTtcbiAgICAgICAgICAgIHRhYi5idG5fZ290by5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciB0YWJfZ290b19sYWIgPSB0YWIuYnRuX2dvdG8uZ2V0Q2hpbGRCeU5hbWUoXCJsYWJlbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICAgICAgdGFiX2dvdG9fbGFiLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5YmN5b6A5a6M5oiQXCIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0YWIuYnRuX2dldCA9IGl0ZW0uZ2V0Q2hpbGRCeU5hbWUoXCJidG5fZ2V0XCIpO1xuICAgICAgICAgICAgdGFiLmJ0bl9nZXQuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0YWIuYnRuX2dldF9sYWJlbCA9IHRhYi5idG5fZ2V0LmdldENoaWxkQnlOYW1lKFwibGFiZWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgICAgIHRhYi5idG5fZ2V0X2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5YmN5b6A6aKG5Y+WXCIpO1xuICAgICAgICAgICAgdGFiLmhhcyA9IGl0ZW0uZ2V0Q2hpbGRCeU5hbWUoXCJoYXNcIik7XG4gICAgICAgICAgICB0YWIuaGFzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIFxuICAgICAgICAgICAgdGFiLnRpdGxlX2xhYmVsID0gaXRlbS5nZXRDaGlsZEJ5TmFtZShcInRpdGxlXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG5cbiAgICAgICAgICAgIHRoaXMucGxheWVyX2l0ZW1baV0gPSBJdGVtc1Bvb2wuZ2V0SW5zdGFuY2UoKS5nZXRJdGVtKFwiYmFja3BhY2tfaXRlbVwiKTtcbiAgICAgICAgICAgIHRoaXMucGxheWVyX2l0ZW1baV0uc2V0UGFyZW50KGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS5pbml0Q29uZmlnKGZhbHNlLCAwLjgpO1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS5zZXRQb3NpdGlvbihwb3NfeC1pdGVtLndpZHRoLzIsIHBvc195LWl0ZW0uaGVpZ2h0LzIpO1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS5zZXREYXRhKHsgYmlkOiBiaWRbaV0sIG51bTogNTAgfSk7XG4gICAgICAgICAgICB0aGlzLnBsYXllcl9pdGVtW2ldLnNob3coKTtcbiAgICAgICAgICAgIHRoaXMucGxheWVyX2l0ZW1baV0uc2V0RGVmYXVsdFRpcCgpO1xuXG4gICAgICAgICAgICB0aGlzLnBsYXllcl9pdGVtW2ldID0gdGFiO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOazqOWGjOS6i+S7tuebkeWQrOeahOaOpeWPoyzkuI3pnIDopoHmiYvliqjosIPnlKgs5aaC5p6c5piv5L2/55SoZ2NvcmUuR2xvYmFsRXZlbnTnm5HlkKws5Y+v5Lul55u05o6l6LCD55SoYWRkR2xvYmFsRXZlbnRcbiAgICByZWdpc3RlckV2ZW50OmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoUmVjcnVpdEhlcm9FdmVudC5SZWNydWl0SGVyb0Jhc2VJbmZvLGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICAgICAgdmFyIGN0ciA9IEFjdGlvbkNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgICAgIHZhciB0aW1lID0gZGF0YS5lbmRfdGltZSAtIGdjb3JlLlNtYXJ0U29ja2V0LmdldFRpbWUoKTtcbiAgICAgICAgICAgIGN0ci5nZXRNb2RlbCgpLnNldENvdW50RG93blRpbWUodGhpcy5yZW1haW5fdGltZSx0aW1lKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0J0blN0YXR1cyhkYXRhKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcblxuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYnRuX2Nsb3NlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLmN0cmwub3BlblJlY3J1aXRIZXJvV2luZG93KGZhbHNlKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKTtcblxuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYmFja2dyb3VuZCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5SZWNydWl0SGVyb1dpbmRvdyhmYWxzZSk7XG4gICAgICAgIH0uYmluZCh0aGlzKSwgMik7XG5cbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmFsbF9nZXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5zZW5kZXIyNTEwMSgwKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKTtcblxuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYnRuX3BhaW50LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyB0aGlzLmN0cmwub3BlblJlY3J1aXRIZXJvV2luZG93KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuY3RybC5zZW5kZXIyNTEwMigpO1xuICAgICAgICAgICAgLy8gSGVyb0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuSGVyb0luZm9XaW5kb3dCeUJpZFN0YXIoMzA1MDgsIDEwKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAxKTtcblxuICAgICAgICBmb3IodmFyIGkgaW4gdGhpcy5wbGF5ZXJfaXRlbSl7XG4gICAgICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMucGxheWVyX2l0ZW1baV0uYnRuX2dvdG8sIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHRoaXMubW9kZWwuZ2V0UmVjcnVpdEVuZFRpbWUoKTtcbiAgICAgICAgICAgICAgICBpZihzdGF0dXMpe1xuICAgICAgICAgICAgICAgICAgICBpZihpIT0xKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuUmVjcnVpdEhlcm9XaW5kb3coZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuanVtcEdvdG9UZXNrVmlldyhpKTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZShVdGlscy5USTE4TihcIua0u+WKqOW3sue7k+adn1wiKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMsaSksIDEpO1xuXG4gICAgICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMucGxheWVyX2l0ZW1baV0uYnRuX2dldCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmp1bXBHZXRUZXNrVmlldyhpKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzLGkpLCAxKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDku7vliqFcbiAgICBzaG93QnRuU3RhdHVzOmZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICBpZighZGF0YSlyZXR1cm47XG4gICAgICAgIHZhciB0aXRsZSA9IFtVdGlscy5USTE4TihcIumAmuWFsyVkLyVk5YWzXCIpLFV0aWxzLlRJMThOKFwi5qyh5pel55m75b2VXCIpLFV0aWxzLlRJMThOKFwi5r+A5rS76Iez5bCK5pyI5Y2hXCIpXTtcbiAgICAgICAgdmFyIHRlc2tfZHVuID0gQ29uZmlnLndlbGZhcmVfZGF0YS5kYXRhX3dlbGZhcmVfY29uc3QuZHVuX21heF9pZDtcbiAgICAgICAgdmFyIGZpbmlzaF9udW0gPSAwO1xuICAgICAgICB2YXIgcG9zID0gWzIsMSwzXTtcbiAgICAgICAgZm9yKHZhciBpPTA7aTwzO2krKyl7XG4gICAgICAgICAgICB2YXIgYmFzZV9kYXRhID0gdGhpcy5tb2RlbC5nZXRSZWNydWl0QmFzZURhdGEocG9zW2ldKTtcbiAgICAgICAgICAgIGlmKGJhc2VfZGF0YSl7XG4gICAgICAgICAgICAgICAgaWYoaSA9PSAwKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS50aXRsZV9sYWJlbC5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIodGl0bGVbaV0sYmFzZV9kYXRhLnZhbCx0ZXNrX2R1bi52YWwpO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllcl9pdGVtW2ldLnRpdGxlX2xhYmVsLnN0cmluZyA9IHRpdGxlW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyDnibnmrorlpITnkIZcbiAgICAgICAgICAgICAgICBpZihpID09IDIgJiYgYmFzZV9kYXRhLnN0YXR1cyA9PSAxKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS5idG5fZ2V0X2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi6aKG5Y+WXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBsYXllcl9pdGVtW2ldLmJ0bl9nb3RvLmFjdGl2ZSA9IGJhc2VfZGF0YS5zdGF0dXMgPT0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXllcl9pdGVtW2ldLmJ0bl9nZXQuYWN0aXZlID0gYmFzZV9kYXRhLnN0YXR1cyA9PSAxO1xuICAgICAgICAgICAgICAgIHRoaXMucGxheWVyX2l0ZW1baV0uaGFzLmFjdGl2ZSA9IGJhc2VfZGF0YS5zdGF0dXMgPT0gMjtcbiAgICAgICAgICAgICAgICBpZihiYXNlX2RhdGEuc3RhdHVzID09IDEgfHwgYmFzZV9kYXRhLnN0YXR1cyA9PSAyKXtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX251bSA9IGZpbmlzaF9udW0gKyAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHIgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCLlrozmiJDov5vluqY6ICVkLzNcIiksZmluaXNoX251bSk7XG4gICAgICAgIHRoaXMuZmluaXNoX3RleHQuc3RyaW5nID0gc3RyO1xuICAgICAgICBpZihkYXRhLnN0YXRlIT1udWxsKXtcbiAgICAgICAgICAgIHRoaXMuYWxsX2dvdG8uYWN0aXZlID0gZGF0YS5zdGF0ZSA9PSAwO1xuXHRcdCAgICB0aGlzLmFsbF9nZXQuYWN0aXZlID0gZGF0YS5zdGF0ZSA9PSAxIHx8IGRhdGEuc3RhdGUgPT0gMTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDliY3lvoDnmoTot7PovaxcbiAgICBqdW1wR290b1Rlc2tWaWV3OmZ1bmN0aW9uKG51bSl7XG4gICAgICAgIGlmIChudW09PW51bGwpcmV0dXJuO1xuICAgICAgICBpZihudW0gPT0gMCl7XG4gICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFs1XSk7XG4gICAgICAgIH1lbHNlIGlmKG51bSA9PSAxKXtcbiAgICAgICAgICAgIEFjdGlvbkNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuU2V2ZW5Mb2dpbldpbih0cnVlKTtcbiAgICAgICAgfWVsc2UgaWYobnVtID09IDIpe1xuICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbNDRdKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDpooblj5bnmoTot7PovaxcbiAgICBqdW1wR2V0VGVza1ZpZXc6ZnVuY3Rpb24obnVtKXtcbiAgICAgICAgaWYgKG51bT09bnVsbClyZXR1cm47XG4gICAgICAgIGlmKG51bSA9PSAwKXtcbiAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzQ2XSk7XG4gICAgICAgIH1lbHNlIGlmKG51bSA9PSAxKXtcbiAgICAgICAgICAgIEFjdGlvbkNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuU2V2ZW5Mb2dpbldpbih0cnVlKTtcbiAgICAgICAgfWVsc2UgaWYobnVtID09IDIpe1xuICAgICAgICAgICAgdGhpcy5jdHJsLnNlbmRlcjI1MTAxKHBhcnNlSW50KG51bSkrMSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwgyzkuZ/lsLHmmK/kuIDkuKrnqpfkvZPnmoTmraPlvI/lhaXlj6Ms5Y+v5Lul6K6+572u5LiA5Lqb5pWw5o2u5LqGXG4gICAgb3BlblJvb3RXbmQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5jdHJsLnNlbmRlcjI1MTAwKCk7XG4gICAgICAgIHRoaXMubW9kZWwuc2V0RGF5Rmlyc3RMb2dpbihmYWxzZSk7XG4gICAgfSxcblxuICAgIC8vIOWFs+mXreeql+S9k+WbnuiwgyzpnIDopoHlnKjov5nph4zosIPnlKjor6XnqpfkvZPmiYDlsZ5jb250cm9sbGVy55qEY2xvc2Xmlrnms5XmsqHnlKjkuo7nva7nqbror6XnqpfkvZPlrp7kvovlr7nosaFcbiAgICBjbG9zZUNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKHRoaXMucGxheWVyX2l0ZW0gJiYgVXRpbHMubmV4dCh0aGlzLnBsYXllcl9pdGVtIHx8IFtdKSE9bnVsbCl7XG4gICAgICAgICAgICBmb3IodmFyIGkgaW4gdGhpcy5wbGF5ZXJfaXRlbSl7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5wbGF5ZXJfaXRlbVtpXSAmJiB0aGlzLnBsYXllcl9pdGVtW2ldLmRlbGV0ZU1lKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXJfaXRlbVtpXS5kZWxldGVNZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBsYXllcl9pdGVtID0gW107XG5cbiAgICAgICAgaWYodGhpcy5yZW1haW5fdGltZSAmJiB0aGlzLnJlbWFpbl90aW1lLm5vZGUpe1xuICAgICAgICAgICAgdGhpcy5yZW1haW5fdGltZS5ub2RlLnN0b3BBbGxBY3Rpb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN0cmwub3BlblJlY3J1aXRIZXJvV2luZG93KGZhbHNlKTtcbiAgICB9LFxufSkiXX0=
|