|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/heroexpedit/view/heroexpedit_level_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, '264f5s4vpRMBZlM3fqX4KCC', 'heroexpedit_level_window');
|
// Scripts/mod/heroexpedit/view/heroexpedit_level_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-03-11 14:17:05
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var HeroConst = require("hero_const");
|
|
var PlayerHead = require("playerhead");
|
|
var HeroController = require("hero_controller");
|
|
var PartnerConst = require("partner_const");
|
|
var HeroExpeditEvent = require("heroexpedit_event");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var Heroexpedit_levelWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("heroexpedit", "level_message");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Tips; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.ctrl = arguments[0];
|
this.model = this.ctrl.getModel();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
this.reward_list = [];
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
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.text_level_msg = this.main_container.getChildByName("Image_6").getChildByName("Text_7").getComponent(cc.Label);
|
this.text_level_msg.string = Utils.TI18N("");
|
var text_17_0 = this.main_container.getChildByName("reward").getChildByName("Text_17_0").getComponent(cc.Label);
|
text_17_0.string = Utils.TI18N("奖励");
|
this.reward_panel = this.main_container.getChildByName("reward").getChildByName("reward_panel");
|
var text_17 = this.main_container.getChildByName("enemy").getChildByName("Text_17");
|
text_17.string = Utils.TI18N("敌方阵容");
|
this.enemy_panel = this.main_container.getChildByName("enemy").getChildByName("enemy_panel");
|
this.btn_fight = this.main_container.getChildByName("btn_fight");
|
var Text_6 = this.btn_fight.getChildByName("Text_6").getComponent(cc.Label);
|
Text_6.string = Utils.TI18N("战斗");
|
this.text_name = this.main_container.getChildByName("text_name").getComponent(cc.Label);
|
this.text_fight_power = this.main_container.getChildByName("text_fight_power").getComponent(cc.Label);
|
|
if (this.data) {
|
this.fightMessage(this.data);
|
}
|
},
|
fightMessage: function fightMessage(data) {
|
if (!this.root_wnd || !data) return;
|
this.text_level_msg.string = Utils.TI18N("第") + Config.expedition_data.data_sign_info[data.id].floor + Utils.TI18N("关");
|
this.my_head = new PlayerHead();
|
this.my_head.setAnchorPoint(0.5, 0.5);
|
this.my_head.setPosition(166 - this.main_container.width / 2, 541 - this.main_container.height / 2);
|
this.my_head.setLev(data.lev);
|
this.my_head.setParent(this.main_container);
|
this.my_head.setHeadRes(data.face);
|
this.my_head.show();
|
this.text_name.string = data.name;
|
this.text_fight_power.string = data.power; // 关卡奖励
|
|
if (data.rewards) {
|
var num = data.rewards.length;
|
var pos = [];
|
|
if (num == 2) {
|
pos = [166, 423];
|
} else {
|
pos = [166, 296, 423];
|
}
|
|
for (var i = 0; i < num; i++) {
|
if (!this.reward_list[i]) {
|
this.reward_list[i] = ItemsPool.getInstance().getItem("backpack_item");
|
this.reward_list[i].setParent(this.reward_panel);
|
this.reward_list[i].initConfig(null, 0.9);
|
this.reward_list[i].show();
|
}
|
|
if (this.reward_list[i]) {
|
this.reward_list[i].setPosition(pos[i], 55);
|
|
if (data.rewards[i].bid == 25 && data.is_holiday == 1) {
|
this.reward_list[i].holidHeroExpeditTag(true, "限时提升");
|
} else {
|
this.reward_list[i].holidHeroExpeditTag(false);
|
}
|
|
this.reward_list[i].setDefaultTip();
|
this.reward_list[i].setData({
|
bid: data.rewards[i].bid,
|
num: data.rewards[i].num
|
});
|
}
|
}
|
}
|
|
var scroll_view_size = this.enemy_panel.getContentSize();
|
var setting = {
|
item_class: "hero_exhibition_item",
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: 4,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: 119,
|
// 单元的尺寸width
|
item_height: 119,
|
// 单元的尺寸height
|
row: 1,
|
// 行数,作用于水平滚动类型
|
col: 1 // 列数,作用于垂直滚动类型
|
|
};
|
this.enemy_list = new CommonScrollView();
|
this.enemy_list.createScroll(this.enemy_panel, cc.v2(-5, 10), ScrollViewDir.horizontal, ScrollViewStartPos.top, scroll_view_size, setting);
|
this.enemy_list.setClickEnabled(false);
|
var enemy = [];
|
|
for (var i in data.guards) {
|
var v = data.guards[i];
|
var tab = {};
|
tab.bid = v.bid;
|
tab.star = v.star;
|
tab.blood = v.hp_per;
|
tab.lev = v.lev;
|
enemy.push(tab);
|
}
|
|
this.enemy_list.setData(enemy, null, {
|
scale: 0.8,
|
can_click: false,
|
from_type: HeroConst.ExhibitionItemType.eExpeditFight
|
});
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.addGlobalEvent(HeroExpeditEvent.levelMessageEvent, function (data) {
|
if (!data) return;
|
this.data = data;
|
this.fightMessage(data);
|
}.bind(this));
|
Utils.onTouchEnd(this.btn_fight, function () {
|
this.ctrl.openHeroExpeditLevelView(false);
|
HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.Expedit_Fight);
|
this.ctrl.sender24404();
|
}.bind(this), 1);
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openHeroExpeditLevelView(false);
|
}.bind(this), 2);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(data) {
|
if (!data) return;
|
this.data = data;
|
this.fightMessage(data);
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.reward_list && Utils.next(this.reward_list || []) != null) {
|
for (var i in this.reward_list) {
|
if (this.reward_list[i].deleteMe) {
|
this.reward_list[i].deleteMe();
|
}
|
}
|
}
|
|
this.data = null;
|
|
if (this.my_head) {
|
this.my_head.deleteMe();
|
this.my_head = null;
|
}
|
|
if (this.enemy_list) {
|
this.enemy_list.deleteMe();
|
this.enemy_list = null;
|
}
|
|
this.ctrl.openHeroExpeditLevelView(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxoZXJvZXhwZWRpdFxcdmlld1xcaGVyb2V4cGVkaXRfbGV2ZWxfd2luZG93LmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIkhlcm9Db25zdCIsIlBsYXllckhlYWQiLCJIZXJvQ29udHJvbGxlciIsIlBhcnRuZXJDb25zdCIsIkhlcm9FeHBlZGl0RXZlbnQiLCJDb21tb25TY3JvbGxWaWV3IiwiSGVyb2V4cGVkaXRfbGV2ZWxXaW5kb3ciLCJjYyIsIkNsYXNzIiwiQmFzZVZpZXciLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJ2aWV3VGFnIiwiU0NFTkVfVEFHIiwiZGlhbG9ndWUiLCJ3aW5fdHlwZSIsIldpblR5cGUiLCJUaXBzIiwiY3RybCIsImFyZ3VtZW50cyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJpbml0Q29uZmlnIiwicmV3YXJkX2xpc3QiLCJvcGVuQ2FsbEJhY2siLCJiYWNrZ3JvdW5kIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsInNjYWxlIiwiRklUX1NDQUxFIiwibWFpbl9jb250YWluZXIiLCJ0ZXh0X2xldmVsX21zZyIsImdldENvbXBvbmVudCIsIkxhYmVsIiwic3RyaW5nIiwiVXRpbHMiLCJUSTE4TiIsInRleHRfMTdfMCIsInJld2FyZF9wYW5lbCIsInRleHRfMTciLCJlbmVteV9wYW5lbCIsImJ0bl9maWdodCIsIlRleHRfNiIsInRleHRfbmFtZSIsInRleHRfZmlnaHRfcG93ZXIiLCJkYXRhIiwiZmlnaHRNZXNzYWdlIiwiQ29uZmlnIiwiZXhwZWRpdGlvbl9kYXRhIiwiZGF0YV9zaWduX2luZm8iLCJpZCIsImZsb29yIiwibXlfaGVhZCIsInNldEFuY2hvclBvaW50Iiwic2V0UG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInNldExldiIsImxldiIsInNldFBhcmVudCIsInNldEhlYWRSZXMiLCJmYWNlIiwic2hvdyIsIm5hbWUiLCJwb3dlciIsInJld2FyZHMiLCJudW0iLCJsZW5ndGgiLCJwb3MiLCJpIiwiSXRlbXNQb29sIiwiZ2V0SW5zdGFuY2UiLCJnZXRJdGVtIiwiYmlkIiwiaXNfaG9saWRheSIsImhvbGlkSGVyb0V4cGVkaXRUYWciLCJzZXREZWZhdWx0VGlwIiwic2V0RGF0YSIsInNjcm9sbF92aWV3X3NpemUiLCJnZXRDb250ZW50U2l6ZSIsInNldHRpbmciLCJpdGVtX2NsYXNzIiwic3RhcnRfeCIsInNwYWNlX3giLCJzdGFydF95Iiwic3BhY2VfeSIsIml0ZW1fd2lkdGgiLCJpdGVtX2hlaWdodCIsInJvdyIsImNvbCIsImVuZW15X2xpc3QiLCJjcmVhdGVTY3JvbGwiLCJ2MiIsIlNjcm9sbFZpZXdEaXIiLCJob3Jpem9udGFsIiwiU2Nyb2xsVmlld1N0YXJ0UG9zIiwidG9wIiwic2V0Q2xpY2tFbmFibGVkIiwiZW5lbXkiLCJndWFyZHMiLCJ2IiwidGFiIiwic3RhciIsImJsb29kIiwiaHBfcGVyIiwicHVzaCIsImNhbl9jbGljayIsImZyb21fdHlwZSIsIkV4aGliaXRpb25JdGVtVHlwZSIsImVFeHBlZGl0RmlnaHQiLCJyZWdpc3RlckV2ZW50IiwiYWRkR2xvYmFsRXZlbnQiLCJsZXZlbE1lc3NhZ2VFdmVudCIsImJpbmQiLCJvblRvdWNoRW5kIiwib3Blbkhlcm9FeHBlZGl0TGV2ZWxWaWV3Iiwib3BlbkZvcm1Hb0ZpZ2h0UGFuZWwiLCJGdW5fRm9ybSIsIkV4cGVkaXRfRmlnaHQiLCJzZW5kZXIyNDQwNCIsIm9wZW5Sb290V25kIiwiY2xvc2VDYWxsQmFjayIsIm5leHQiLCJkZWxldGVNZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLFNBQVMsR0FBR0QsT0FBTyxDQUFDLFlBQUQsQ0FBdkI7O0FBQ0EsSUFBSUUsVUFBVSxHQUFHRixPQUFPLENBQUMsWUFBRCxD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RyxXQUFMLElBQW9CWSxLQUFLLENBQUN1RixJQUFOLENBQVcsS0FBS25HLFdBQUwsSUFBb0IsRUFBL0IsS0FBcUMsSUFBNUQsRUFBaUU7QUFDN0QsV0FBSSxJQUFJOEMsQ0FBUixJQUFhLEtBQUs5QyxXQUFsQixFQUE4QjtBQUMxQixZQUFHLEtBQUtBLFdBQUwsQ0FBaUI4QyxDQUFqQixFQUFvQnNELFFBQXZCLEVBQWdDO0FBQzVCLGVBQUtwRyxXQUFMLENBQWlCOEMsQ0FBakIsRUFBb0JzRCxRQUFwQjtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxTQUFLOUUsSUFBTCxHQUFZLElBQVo7O0FBRUEsUUFBRyxLQUFLTyxPQUFSLEVBQWdCO0FBQ1osV0FBS0EsT0FBTCxDQUFhdUUsUUFBYjtBQUNBLFdBQUt2RSxPQUFMLEdBQWUsSUFBZjtBQUNIOztBQUVELFFBQUcsS0FBS3NDLFVBQVIsRUFBbUI7QUFDZixXQUFLQSxVQUFMLENBQWdCaUMsUUFBaEI7QUFDQSxXQUFLakMsVUFBTCxHQUFrQixJQUFsQjtBQUNIOztBQUNELFNBQUt4RSxJQUFMLENBQVVpRyx3QkFBVixDQUFtQyxLQUFuQztBQUNIO0FBcktrQyxDQUFULENBQTlCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg6L+Z6YeM5piv5o+P6L+w6L+Z5Liq56qX5L2T55qE5L2c55So55qEXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMy0xMSAxNDoxNzowNVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBIZXJvQ29uc3QgPSByZXF1aXJlKFwiaGVyb19jb25zdFwiKTtcbnZhciBQbGF5ZXJIZWFkID0gcmVxdWlyZShcInBsYXllcmhlYWRcIik7XG52YXIgSGVyb0NvbnRyb2xsZXIgPSByZXF1aXJlKFwiaGVyb19jb250cm9sbGVyXCIpO1xudmFyIFBhcnRuZXJDb25zdCA9IHJlcXVpcmUoXCJwYXJ0bmVyX2NvbnN0XCIpO1xudmFyIEhlcm9FeHBlZGl0RXZlbnQgPSByZXF1aXJlKFwiaGVyb2V4cGVkaXRfZXZlbnRcIik7XG52YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcblxudmFyIEhlcm9leHBlZGl0X2xldmVsV2luZG93ID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VWaWV3LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcImhlcm9leHBlZGl0XCIsIFwibGV2ZWxfbWVzc2FnZVwiKTtcbiAgICAgICAgdGhpcy52aWV3VGFnID0gU0NFTkVfVEFHLmRpYWxvZ3VlOyAgICAgICAgICAgICAgICAvL+ivpeeql+S9k+aJgOWxnnVp5bGC57qnLOWFqOWxj3Vp6ZyA6KaB5ZyodWnlsYIs6Z2e5YWo5bGPdWnlnKhkaWFsb2d1ZeWxgizov5nkuKropoHms6jmhI9cbiAgICAgICAgdGhpcy53aW5fdHlwZSA9IFdpblR5cGUuVGlwczsgICAgICAgICAgICAgICAvL+aYr+WQpuaYr+WFqOWxj+eql+S9kyAgV2luVHlwZS5GdWxsLCBXaW5UeXBlLkJpZywgV2luVHlwZS5NaW5pLCBXaW5UeXBlLlRpcHNcbiAgICAgICAgdGhpcy5jdHJsID0gYXJndW1lbnRzWzBdO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XG4gICAgfSxcblxuICAgIC8vIOWIneWni+WMluS4gOS6m+mFjee9ruaVsOaNrizlj6/ku6XnlKjkuo7lo7DmmI7kuIDkupvlj5jph4/kuYvnsbvnmoRcbiAgICBpbml0Q29uZmlnOmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMucmV3YXJkX2xpc3QgPSBbXTtcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCO55qE5Zue6LCDLOWPr+S7peWcqOi/memHjOaNleiOt+ebuOWFs+iKgueCueaIluiAhee7hOS7tlxuICAgIG9wZW5DYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmJhY2tncm91bmQgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwiYmFja2dyb3VuZFwiKTtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kLnNjYWxlID0gRklUX1NDQUxFO1xuICAgICAgICB0aGlzLm1haW5fY29udGFpbmVyID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcIm1haW5fY29udGFpbmVyXCIpO1xuICAgIFxuICAgICAgICB0aGlzLnRleHRfbGV2ZWxfbXNnID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIkltYWdlXzZcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUZXh0XzdcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy50ZXh0X2xldmVsX21zZy5zdHJpbmcgPSBVdGlscy5USTE4TihcIlwiKTtcbiAgICAgICAgdmFyIHRleHRfMTdfMCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyZXdhcmRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUZXh0XzE3XzBcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgdGV4dF8xN18wLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5aWW5YqxXCIpO1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIHRoaXMucmV3YXJkX3BhbmVsID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInJld2FyZFwiKS5nZXRDaGlsZEJ5TmFtZShcInJld2FyZF9wYW5lbFwiKTtcbiAgICAgICAgdmFyIHRleHRfMTcgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiZW5lbXlcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUZXh0XzE3XCIpO1xuICAgICAgICB0ZXh0XzE3LnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5pWM5pa56Zi15a65XCIpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5lbmVteV9wYW5lbCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJlbmVteVwiKS5nZXRDaGlsZEJ5TmFtZShcImVuZW15X3BhbmVsXCIpO1xuICAgICAgICB0aGlzLmJ0bl9maWdodCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fZmlnaHRcIik7XG4gICAgICAgIHZhciBUZXh0XzYgPSB0aGlzLmJ0bl9maWdodC5nZXRDaGlsZEJ5TmFtZShcIlRleHRfNlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICBUZXh0XzYuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmiJjmlpdcIik7XG4gICAgXG4gICAgICAgIHRoaXMudGV4dF9uYW1lID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInRleHRfbmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICB0aGlzLnRleHRfZmlnaHRfcG93ZXIgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwidGV4dF9maWdodF9wb3dlclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuXG4gICAgICAgIGlmKHRoaXMuZGF0YSl7XG4gICAgICAgICAgICB0aGlzLmZpZ2h0TWVzc2FnZSh0aGlzLmRhdGEpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGZpZ2h0TWVzc2FnZTpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgaWYoIXRoaXMucm9vdF93bmQgfHwgIWRhdGEpcmV0dXJuO1xuICAgICAgICB0aGlzLnRleHRfbGV2ZWxfbXNnLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi56ysXCIpK0NvbmZpZy5leHBlZGl0aW9uX2RhdGEuZGF0YV9zaWduX2luZm9bZGF0YS5pZF0uZmxvb3IrVXRpbHMuVEkxOE4oXCLlhbNcIik7XG5cbiAgICAgICAgdGhpcy5teV9oZWFkID0gbmV3IFBsYXllckhlYWQoKTtcbiAgICAgICAgdGhpcy5teV9oZWFkLnNldEFuY2hvclBvaW50KDAuNSwgMC41KVxuICAgICAgICB0aGlzLm15X2hlYWQuc2V0UG9zaXRpb24oMTY2LXRoaXMubWFpbl9jb250YWluZXIud2lkdGgvMiw1NDEtdGhpcy5tYWluX2NvbnRhaW5lci5oZWlnaHQvMik7XG4gICAgICAgIHRoaXMubXlfaGVhZC5zZXRMZXYoZGF0YS5sZXYpXG4gICAgICAgIHRoaXMubXlfaGVhZC5zZXRQYXJlbnQodGhpcy5tYWluX2NvbnRhaW5lcik7XG4gICAgICAgIHRoaXMubXlfaGVhZC5zZXRIZWFkUmVzKGRhdGEuZmFjZSk7XG4gICAgICAgIHRoaXMubXlfaGVhZC5zaG93KCk7XG5cbiAgICAgICAgdGhpcy50ZXh0X25hbWUuc3RyaW5nID0gZGF0YS5uYW1lO1xuICAgICAgICB0aGlzLnRleHRfZmlnaHRfcG93ZXIuc3RyaW5nID0gZGF0YS5wb3dlcjtcbiAgICAgICAgLy8g5YWz5Y2h5aWW5YqxXG4gICAgICAgIGlmKGRhdGEucmV3YXJkcyl7XG4gICAgICAgICAgICB2YXIgbnVtID0gZGF0YS5yZXdhcmRzLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBwb3MgPSBbXTtcbiAgICAgICAgICAgIGlmKG51bSA9PSAyKXtcbiAgICAgICAgICAgICAgICBwb3MgPSBbMTY2LDQyM107XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBwb3MgPSBbMTY2LDI5Niw0MjNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yKHZhciBpID0gMDtpPG51bTtpKyspe1xuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnJld2FyZF9saXN0W2ldKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXdhcmRfbGlzdFtpXSA9IEl0ZW1zUG9vbC5nZXRJbnN0YW5jZSgpLmdldEl0ZW0oXCJiYWNrcGFja19pdGVtXCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJld2FyZF9saXN0W2ldLnNldFBhcmVudCh0aGlzLnJld2FyZF9wYW5lbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV3YXJkX2xpc3RbaV0uaW5pdENvbmZpZyhudWxsLDAuOSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV3YXJkX2xpc3RbaV0uc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0aGlzLnJld2FyZF9saXN0W2ldKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXdhcmRfbGlzdFtpXS5zZXRQb3NpdGlvbihwb3NbaV0sIDU1KTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXdhcmRzW2ldLmJpZCA9PSAyNSAmJiBkYXRhLmlzX2hvbGlkYXkgPT0gMSl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJld2FyZF9saXN0W2ldLmhvbGlkSGVyb0V4cGVkaXRUYWcodHJ1ZSwgXCLpmZDml7bmj5DljYdcIik7XG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXdhcmRfbGlzdFtpXS5ob2xpZEhlcm9FeHBlZGl0VGFnKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJld2FyZF9saXN0W2ldLnNldERlZmF1bHRUaXAoKTtcbiAgICBcdFx0ICAgICAgICB0aGlzLnJld2FyZF9saXN0W2ldLnNldERhdGEoe2JpZDpkYXRhLnJld2FyZHNbaV0uYmlkLCBudW06ZGF0YS5yZXdhcmRzW2ldLm51bX0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNjcm9sbF92aWV3X3NpemUgPSB0aGlzLmVuZW15X3BhbmVsLmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHZhciBzZXR0aW5nID0ge1xuICAgICAgICAgICAgaXRlbV9jbGFzczogXCJoZXJvX2V4aGliaXRpb25faXRlbVwiLCAgICAgIC8vIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeDogMCwgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XG4gICAgICAgICAgICBzcGFjZV94OiAwLCAgICAgICAgICAgICAgICAgICAgLy8geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeTogNCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3k6IDAsICAgICAgICAgICAgICAgICAgIC8vIHnmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIGl0ZW1fd2lkdGg6IDExOSwgICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQ6IDExOSwgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuGhlaWdodFxuICAgICAgICAgICAgcm93OiAxLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW5lbXlfbGlzdCA9IG5ldyBDb21tb25TY3JvbGxWaWV3KCk7XG4gICAgICAgIHRoaXMuZW5lbXlfbGlzdC5jcmVhdGVTY3JvbGwodGhpcy5lbmVteV9wYW5lbCwgY2MudjIoLTUsMTApLCBTY3JvbGxWaWV3RGlyLmhvcml6b250YWwsIFNjcm9sbFZpZXdTdGFydFBvcy50b3AsIHNjcm9sbF92aWV3X3NpemUsIHNldHRpbmcpO1xuICAgICAgICB0aGlzLmVuZW15X2xpc3Quc2V0Q2xpY2tFbmFibGVkKGZhbHNlKTtcblxuICAgICAgICB2YXIgZW5lbXkgPSBbXTtcbiAgICAgICAgZm9yKHZhciBpIGluIGRhdGEuZ3VhcmRzKXtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YS5ndWFyZHNbaV07XG4gICAgICAgICAgICB2YXIgdGFiID0ge307XG4gICAgICAgICAgICB0YWIuYmlkID0gdi5iaWQ7XG4gICAgICAgICAgICB0YWIuc3RhciA9IHYuc3RhcjtcbiAgICAgICAgICAgIHRhYi5ibG9vZCA9IHYuaHBfcGVyO1xuICAgICAgICAgICAgdGFiLmxldiA9IHYubGV2O1xuICAgICAgICAgICAgZW5lbXkucHVzaCh0YWIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5lbXlfbGlzdC5zZXREYXRhKGVuZW15LG51bGwse3NjYWxlOiAwLjgsIGNhbl9jbGljazogZmFsc2UsZnJvbV90eXBlOiBIZXJvQ29uc3QuRXhoaWJpdGlvbkl0ZW1UeXBlLmVFeHBlZGl0RmlnaHR9KVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KEhlcm9FeHBlZGl0RXZlbnQubGV2ZWxNZXNzYWdlRXZlbnQsIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgIGlmKCFkYXRhKXJldHVybjtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLmZpZ2h0TWVzc2FnZShkYXRhKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5idG5fZmlnaHQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuSGVyb0V4cGVkaXRMZXZlbFZpZXcoZmFsc2UpO1xuICAgICAgICAgICAgSGVyb0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuRm9ybUdvRmlnaHRQYW5lbCh0cnVlLCBQYXJ0bmVyQ29uc3QuRnVuX0Zvcm0uRXhwZWRpdF9GaWdodCk7XG4gICAgICAgICAgICB0aGlzLmN0cmwuc2VuZGVyMjQ0MDQoKVxuICAgICAgICB9LmJpbmQodGhpcyksIDEpO1xuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5iYWNrZ3JvdW5kLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLmN0cmwub3Blbkhlcm9FeHBlZGl0TGV2ZWxWaWV3KGZhbHNlKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKTtcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwgyzkuZ/lsLHmmK/kuIDkuKrnqpfkvZPnmoTmraPlvI/lhaXlj6Ms5Y+v5Lul6K6+572u5LiA5Lqb5pWw5o2u5LqGXG4gICAgb3BlblJvb3RXbmQ6ZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgIGlmKCFkYXRhKXJldHVybjtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5maWdodE1lc3NhZ2UoZGF0YSk7XG4gICAgfSxcblxuICAgIC8vIOWFs+mXreeql+S9k+WbnuiwgyzpnIDopoHlnKjov5nph4zosIPnlKjor6XnqpfkvZPmiYDlsZ5jb250cm9sbGVy55qEY2xvc2Xmlrnms5XmsqHnlKjkuo7nva7nqbror6XnqpfkvZPlrp7kvovlr7nosaFcbiAgICBjbG9zZUNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKHRoaXMucmV3YXJkX2xpc3QgJiYgVXRpbHMubmV4dCh0aGlzLnJld2FyZF9saXN0IHx8IFtdKSAhPW51bGwpe1xuICAgICAgICAgICAgZm9yKHZhciBpIGluIHRoaXMucmV3YXJkX2xpc3Qpe1xuICAgICAgICAgICAgICAgIGlmKHRoaXMucmV3YXJkX2xpc3RbaV0uZGVsZXRlTWUpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJld2FyZF9saXN0W2ldLmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhID0gbnVsbDtcblxuICAgICAgICBpZih0aGlzLm15X2hlYWQpe1xuICAgICAgICAgICAgdGhpcy5teV9oZWFkLmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICB0aGlzLm15X2hlYWQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5lbmVteV9saXN0KXtcbiAgICAgICAgICAgIHRoaXMuZW5lbXlfbGlzdC5kZWxldGVNZSgpO1xuICAgICAgICAgICAgdGhpcy5lbmVteV9saXN0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN0cmwub3Blbkhlcm9FeHBlZGl0TGV2ZWxWaWV3KGZhbHNlKTtcbiAgICB9LFxufSkiXX0=
|