|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/daycharge/view/daycharge_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, '322b6m5h+ZIXarsm7Ud5F/B', 'daycharge_window');
|
// Scripts/mod/daycharge/view/daycharge_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 每日首充界面
|
// <br/>Create: 2019-04-28 11:05:12
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var DayChargetEvent = require("daycharge_event");
|
|
var DaychargeWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("action", "action_day_charge_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.first_effect = [];
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
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.Sprite_8_node = this.main_container.getChildByName("Sprite_8"); // this.Sprite_8_node.scale = 2;
|
|
this.Sprite_8 = this.Sprite_8_node.getComponent(cc.Sprite);
|
var res = PathTool.getBigBg("txt_cn_action_bigbg_2", null, "action");
|
this.loadRes(res, function (resObject) {
|
this.Sprite_8.spriteFrame = resObject;
|
}.bind(this));
|
this.btn_charge = this.main_container.getChildByName("btn_charge");
|
this.btn_charge.active = false;
|
this.btn_get = this.main_container.getChildByName("btn_get");
|
this.btn_get.active = false;
|
this.title_eff_nd = this.main_container.getChildByName("title_eff_nd");
|
this.first_effect[1] = this.title_eff_nd.getComponent(sp.Skeleton);
|
var anima_path = PathTool.getSpinePath(PathTool.getEffectRes(650), "action");
|
this.loadRes(anima_path, function (effect, ske_data) {
|
effect.skeletonData = ske_data;
|
effect.setAnimation(0, PlayerAction.action, true);
|
}.bind(this, this.first_effect[1]));
|
this.get_eff_nd = this.main_container.getChildByName("get_eff_nd");
|
this.first_effect[2] = this.get_eff_nd.getComponent(sp.Skeleton);
|
this.first_effect[2].node.active = false;
|
var anima_path = PathTool.getSpinePath(PathTool.getEffectRes(651), "action");
|
this.loadRes(anima_path, function (effect, ske_data) {
|
effect.skeletonData = ske_data;
|
effect.setAnimation(0, PlayerAction.action, true);
|
}.bind(this, this.first_effect[2]));
|
this.charge_num = this.seekChild(this.main_container, "charge_num").getComponent("CusRichText");
|
this.cahrge_num_child_nd = this.seekChild(this.charge_num.node, "CusNum");
|
this.diamond = this.main_container.getChildByName("Sprite_9");
|
var good_cons = this.main_container.getChildByName("good_cons");
|
var scroll_view_size = good_cons.getContentSize();
|
var setting = {
|
item_class: "backpack_item",
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 15,
|
// x方向的间隔
|
start_y: 15,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: 120 * 0.9,
|
// 单元的尺寸width
|
item_height: 120 * 0.9,
|
// 单元的尺寸height
|
row: 1,
|
// 行数,作用于水平滚动类型
|
col: 0,
|
// 列数,作用于垂直滚动类型
|
scale: 0.9
|
};
|
|
var CommonScrollView = require("common_scrollview");
|
|
this.item_scrollview = new CommonScrollView();
|
this.item_scrollview.createScroll(good_cons, cc.v2(0, 0), ScrollViewDir.horizontal, ScrollViewStartPos.top, scroll_view_size, setting); // this.item_scrollview:setSwallowTouches(false)
|
|
this.item_scrollview.setClickEnabled(false);
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.addGlobalEvent(DayChargetEvent.DAY_FIRST_CHARGE_EVENT, function (data) {
|
if (!data) return;
|
var reward_data = Config.charge_data.data_constant.day_charge_goal;
|
var num = reward_data.val - data.num;
|
|
if (num <= 0) {
|
num = 0;
|
}
|
|
this.charge_num.setNum(num);
|
this.diamond.x = this.charge_num.node.x + this.cahrge_num_child_nd.getContentSize().width * 1.4;
|
|
if (data.status == 0) {
|
this.first_effect[2].node.active = true;
|
this.btn_charge.active = true;
|
this.btn_get.active = false;
|
} else if (data.status == 1) {
|
this.first_effect[2].node.active = false;
|
this.btn_charge.active = false;
|
this.btn_get.active = true;
|
}
|
}.bind(this));
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openDayFirstChargeView(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.btn_charge, function () {
|
this.ctrl.openDayFirstChargeView(false);
|
|
var VipController = require("vip_controller");
|
|
VipController.getInstance().openVipMainWindow(true, VIPTABCONST.CHARGE);
|
}.bind(this), 1);
|
Utils.onTouchEnd(this.btn_get, function () {
|
this.ctrl.sender21011();
|
}.bind(this), 1);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(params) {
|
this.ctrl.sender21010();
|
|
var RoleController = require("role_controller");
|
|
var role_vo = RoleController.getInstance().getRoleVo();
|
var open_day = Config.charge_data.data_daily_reward_length;
|
var reward_data = Config.charge_data.data_daily_reward;
|
|
for (var i in reward_data) {
|
if (role_vo.open_day >= reward_data[i].min && role_vo.open_day <= reward_data[i].max) {
|
open_day = reward_data[i].id;
|
break;
|
}
|
}
|
|
if (this.item_scrollview) {
|
var list = [];
|
|
for (var i in reward_data[open_day].reward) {
|
var v = reward_data[open_day].reward[i];
|
var vo = {};
|
vo.bid = v[0];
|
vo.num = v[1];
|
list.push(vo);
|
}
|
|
this.item_scrollview.setData(list);
|
this.item_scrollview.addEndCallBack(function () {
|
var list = this.item_scrollview.getItemList();
|
|
for (var i in list) {
|
list[i].setDefaultTip();
|
}
|
}.bind(this));
|
}
|
|
this.diamond.x = this.charge_num.node.x + this.cahrge_num_child_nd.getContentSize().width * 1.4;
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.item_scrollview) {
|
this.item_scrollview.deleteMe();
|
this.item_scrollview = null;
|
}
|
|
for (var i in this.first_effect) {
|
if (this.first_effect[i]) {
|
this.first_effect[i].setToSetupPose();
|
this.first_effect[i].clearTracks();
|
}
|
}
|
|
this.ctrl.openDayFirstChargeView(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxkYXljaGFyZ2VcXHZpZXdcXGRheWNoYXJnZV93aW5kb3cuanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiRGF5Q2hhcmdldEV2ZW50IiwiRGF5Y2hhcmdlV2luZG93IiwiY2MiLCJDbGFzcyIsIkJhc2VWaWV3IiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwidmlld1RhZyIsIlNDRU5FX1RBRyIsImRpYWxvZ3VlIiwid2luX3R5cGUiLCJXaW5UeXBlIiwiQmlnIiwiY3RybCIsImFyZ3VtZW50cyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJpbml0Q29uZmlnIiwiZmlyc3RfZWZmZWN0Iiwib3BlbkNhbGxCYWNrIiwiYmFja2dyb3VuZCIsInJvb3Rfd25kIiwiZ2V0Q2hpbGRCeU5hbWUiLCJzY2FsZSIsIkZJVF9TQ0FMRSIsIm1haW5fY29udGFpbmVyIiwiU3ByaXRlXzhfbm9kZSIsIlNwcml0ZV84IiwiZ2V0Q29tcG9uZW50IiwiU3ByaXRlIiwicmVzIiwiZ2V0QmlnQmciLCJsb2FkUmVzIiwicmVzT2JqZWN0Iiwic3ByaXRlRnJhbWUiLCJiaW5kIiwiYnRuX2NoYXJnZSIsImFjdGl2ZSIsImJ0bl9nZXQiLCJ0aXRsZV9lZmZfbmQiLCJzcCIsIlNrZWxldG9uIiwiYW5pbWFfcGF0aCIsImdldFNwaW5lUGF0aCIsImdldEVmZmVjdFJlcyIsImVmZmVjdCIsInNrZV9kYXRhIiwic2tlbGV0b25EYXRhIiwic2V0QW5pbWF0aW9uIiwiUGxheWVyQWN0aW9uIiwiYWN0aW9uIiwiZ2V0X2VmZl9uZCIsIm5vZGUiLCJjaGFyZ2VfbnVtIiwic2Vla0NoaWxkIiwiY2FocmdlX251bV9jaGlsZF9uZCIsImRpYW1vbmQiLCJnb29kX2NvbnMiLCJzY3JvbGxfdmlld19zaXplIiwiZ2V0Q29udGVudFNpemUiLCJzZXR0aW5nIiwiaXRlbV9jbGFzcyIsInN0YXJ0X3giLCJzcGFjZV94Iiwic3RhcnRfeSIsInNwYWNlX3kiLCJpdGVtX3dpZHRoIiwiaXRlbV9oZWlnaHQiLCJyb3ciLCJjb2wiLCJDb21tb25TY3JvbGxWaWV3IiwiaXRlbV9zY3JvbGx2aWV3IiwiY3JlYXRlU2Nyb2xsIiwidjIiLCJTY3JvbGxWaWV3RGlyIiwiaG9yaXpvbnRhbCIsIlNjcm9sbFZpZXdTdGFydFBvcyIsInRvcCIsInNldENsaWNrRW5hYmxlZCIsInJlZ2lzdGVyRXZlbnQiLCJhZGRHbG9iYWxFdmVudCIsIkRBWV9GSVJTVF9DSEFSR0VfRVZFTlQiLCJkYXRhIiwicmV3YXJkX2RhdGEiLCJDb25maWciLCJjaGFyZ2VfZGF0YSIsImRhdGFfY29uc3RhbnQiLCJkYXlfY2hhcmdlX2dvYWwiLCJudW0iLCJ2YWwiLCJzZXROdW0iLCJ4Iiwid2lkdGgiLCJzdGF0dXMiLCJVdGlscyIsIm9uVG91Y2hFbmQiLCJvcGVuRGF5Rmlyc3RDaGFyZ2VWaWV3IiwiVmlwQ29udHJvbGxlciIsImdldEluc3RhbmNlIiwib3BlblZpcE1haW5XaW5kb3ciLCJWSVBUQUJDT05TVCIsIkNIQVJHRSIsInNlbmRlcjIxMDExIiwib3BlblJvb3RXbmQiLCJwYXJhbXMiLCJzZW5kZXIyMTAxMCIsIlJvbGVDb250cm9sbGVyIiwicm9sZV92byIsImdldFJvbGVWbyIsIm9wZW5fZGF5IiwiZGF0YV9kYWlseV9yZXdhcmRfbGVuZ3RoIiwiZGF0YV9kYWlseV9yZXdhcmQiLCJpIiwibWluIiwibWF4IiwiaWQiLCJsaXN0IiwicmV3YXJkIiwidiIsInZvIiwiYmlkIiwicHVzaCIsInNldERhdGEiLCJhZGRFbmRDYWxsQmFjayIsImdldEl0ZW1MaXN0Iiwic2V0RGVmYXVsdFRpcCIsImNsb3NlQ2FsbEJhY2siLCJkZWxldGVNZSIsInNldFRvU2V0dXBQb3NlIiwiY2xlYXJUcmFja3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0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LGFBQWEsRUFBQyx5QkFBVTtBQUNwQixRQUFHLEtBQUt2RCxlQUFSLEVBQXdCO0FBQ3BCLFdBQUtBLGVBQUwsQ0FBcUJ3RCxRQUFyQjtBQUNBLFdBQUt4RCxlQUFMLEdBQXVCLElBQXZCO0FBQ0g7O0FBRUQsU0FBSSxJQUFJeUMsQ0FBUixJQUFhLEtBQUs5RixZQUFsQixFQUErQjtBQUMzQixVQUFHLEtBQUtBLFlBQUwsQ0FBa0I4RixDQUFsQixDQUFILEVBQXdCO0FBQ3BCLGFBQUs5RixZQUFMLENBQWtCOEYsQ0FBbEIsRUFBcUJnQixjQUFyQjtBQUNBLGFBQUs5RyxZQUFMLENBQWtCOEYsQ0FBbEIsRUFBcUJpQixXQUFyQjtBQUNIO0FBQ0o7O0FBQ0QsU0FBS3BILElBQUwsQ0FBVW1GLHNCQUFWLENBQWlDLEtBQWpDO0FBQ0g7QUF0SzBCLENBQVQsQ0FBdEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICDmr4/ml6XpppblhYXnlYzpnaJcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTA0LTI4IDExOjA1OjEyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xudmFyIERheUNoYXJnZXRFdmVudCA9IHJlcXVpcmUoXCJkYXljaGFyZ2VfZXZlbnRcIik7XG5cbnZhciBEYXljaGFyZ2VXaW5kb3cgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZVZpZXcsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwiYWN0aW9uXCIsIFwiYWN0aW9uX2RheV9jaGFyZ2Vfd2luZG93XCIpO1xuICAgICAgICB0aGlzLnZpZXdUYWcgPSBTQ0VORV9UQUcuZGlhbG9ndWU7ICAgICAgICAgICAgICAgIC8v6K+l56qX5L2T5omA5bGedWnlsYLnuqcs5YWo5bGPdWnpnIDopoHlnKh1aeWxgizpnZ7lhajlsY91aeWcqGRpYWxvZ3Vl5bGCLOi/meS4quimgeazqOaEj1xuICAgICAgICB0aGlzLndpbl90eXBlID0gV2luVHlwZS5CaWc7ICAgICAgICAgICAgICAgLy/mmK/lkKbmmK/lhajlsY/nqpfkvZMgIFdpblR5cGUuRnVsbCwgV2luVHlwZS5CaWcsIFdpblR5cGUuTWluaSwgV2luVHlwZS5UaXBzXG4gICAgICAgIHRoaXMuY3RybCA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuY3RybC5nZXRNb2RlbCgpO1xuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbkuIDkupvphY3nva7mlbDmja4s5Y+v5Lul55So5LqO5aOw5piO5LiA5Lqb5Y+Y6YeP5LmL57G755qEXG4gICAgaW5pdENvbmZpZzpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmZpcnN0X2VmZmVjdCA9IFtdO1xuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI7nmoTlm57osIMs5Y+v5Lul5Zyo6L+Z6YeM5o2V6I6355u45YWz6IqC54K55oiW6ICF57uE5Lu2XG4gICAgb3BlbkNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZCA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrZ3JvdW5kXCIpO1xuICAgICAgICB0aGlzLmJhY2tncm91bmQuc2NhbGUgPSBGSVRfU0NBTEU7XG4gICAgICAgIHRoaXMubWFpbl9jb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibWFpbl9jb250YWluZXJcIik7XG4gICAgICAgIHRoaXMuU3ByaXRlXzhfbm9kZSA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJTcHJpdGVfOFwiKTtcbiAgICAgICAgLy8gdGhpcy5TcHJpdGVfOF9ub2RlLnNjYWxlID0gMjtcblxuICAgICAgICB0aGlzLlNwcml0ZV84ID0gdGhpcy5TcHJpdGVfOF9ub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuICAgICAgICB2YXIgcmVzID0gUGF0aFRvb2wuZ2V0QmlnQmcoXCJ0eHRfY25fYWN0aW9uX2JpZ2JnXzJcIixudWxsLFwiYWN0aW9uXCIpO1xuICAgICAgICB0aGlzLmxvYWRSZXMocmVzLCAoZnVuY3Rpb24ocmVzT2JqZWN0KXtcbiAgICAgICAgICAgIHRoaXMuU3ByaXRlXzguc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgIH0pLmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuYnRuX2NoYXJnZSA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fY2hhcmdlXCIpO1xuICAgICAgICB0aGlzLmJ0bl9jaGFyZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnRuX2dldCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fZ2V0XCIpO1xuICAgICAgICB0aGlzLmJ0bl9nZXQuYWN0aXZlID0gZmFsc2U7XG4gICAgXG4gICAgICAgIHRoaXMudGl0bGVfZWZmX25kID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInRpdGxlX2VmZl9uZFwiKTtcbiAgICAgICAgdGhpcy5maXJzdF9lZmZlY3RbMV0gPSB0aGlzLnRpdGxlX2VmZl9uZC5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuICAgICAgICB2YXIgYW5pbWFfcGF0aCA9IFBhdGhUb29sLmdldFNwaW5lUGF0aChQYXRoVG9vbC5nZXRFZmZlY3RSZXMoNjUwKSwgXCJhY3Rpb25cIik7XG4gICAgICAgIHRoaXMubG9hZFJlcyhhbmltYV9wYXRoLCBmdW5jdGlvbihlZmZlY3Qsc2tlX2RhdGEpIHtcbiAgICAgICAgICAgIGVmZmVjdC5za2VsZXRvbkRhdGEgPSBza2VfZGF0YTtcbiAgICAgICAgICAgIGVmZmVjdC5zZXRBbmltYXRpb24oMCwgUGxheWVyQWN0aW9uLmFjdGlvbiwgdHJ1ZSk7XG4gICAgICAgIH0uYmluZCh0aGlzLHRoaXMuZmlyc3RfZWZmZWN0WzFdKSk7XG5cbiAgICAgICAgdGhpcy5nZXRfZWZmX25kID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImdldF9lZmZfbmRcIik7XG4gICAgICAgIHRoaXMuZmlyc3RfZWZmZWN0WzJdID0gdGhpcy5nZXRfZWZmX25kLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbik7XG4gICAgICAgIHRoaXMuZmlyc3RfZWZmZWN0WzJdLm5vZGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHZhciBhbmltYV9wYXRoID0gUGF0aFRvb2wuZ2V0U3BpbmVQYXRoKFBhdGhUb29sLmdldEVmZmVjdFJlcyg2NTEpLCBcImFjdGlvblwiKTtcbiAgICAgICAgdGhpcy5sb2FkUmVzKGFuaW1hX3BhdGgsIGZ1bmN0aW9uKGVmZmVjdCxza2VfZGF0YSkge1xuICAgICAgICAgICAgZWZmZWN0LnNrZWxldG9uRGF0YSA9IHNrZV9kYXRhO1xuICAgICAgICAgICAgZWZmZWN0LnNldEFuaW1hdGlvbigwLCBQbGF5ZXJBY3Rpb24uYWN0aW9uLCB0cnVlKTtcbiAgICAgICAgfS5iaW5kKHRoaXMsdGhpcy5maXJzdF9lZmZlY3RbMl0pKTtcblxuICAgICAgICB0aGlzLmNoYXJnZV9udW0gPSB0aGlzLnNlZWtDaGlsZCh0aGlzLm1haW5fY29udGFpbmVyLCBcImNoYXJnZV9udW1cIikuZ2V0Q29tcG9uZW50KFwiQ3VzUmljaFRleHRcIik7XG4gICAgICAgIHRoaXMuY2FocmdlX251bV9jaGlsZF9uZCA9IHRoaXMuc2Vla0NoaWxkKHRoaXMuY2hhcmdlX251bS5ub2RlLCBcIkN1c051bVwiKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuZGlhbW9uZCA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJTcHJpdGVfOVwiKTtcbiAgICAgICAgXG4gICAgICAgIHZhciBnb29kX2NvbnMgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiZ29vZF9jb25zXCIpO1xuICAgICAgICB2YXIgc2Nyb2xsX3ZpZXdfc2l6ZSA9IGdvb2RfY29ucy5nZXRDb250ZW50U2l6ZSgpO1xuICAgICAgICB2YXIgc2V0dGluZyA9IHtcbiAgICAgICAgICAgIGl0ZW1fY2xhc3M6IFwiYmFja3BhY2tfaXRlbVwiLCAvLyDljZXlhYPnsbtcbiAgICAgICAgICAgIHN0YXJ0X3g6IDAsIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3g6IDE1LCAvLyB45pa55ZCR55qE6Ze06ZqUXG4gICAgICAgICAgICBzdGFydF95OiAxNSwgLy8g56ys5LiA5Liq5Y2V5YWD55qEWei1t+eCuVxuICAgICAgICAgICAgc3BhY2VfeTogMCwgLy8geeaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgaXRlbV93aWR0aDogMTIwICogMC45LCAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQ6IDEyMCAqIDAuOSwgLy8g5Y2V5YWD55qE5bC65a+4aGVpZ2h0XG4gICAgICAgICAgICByb3c6IDEsIC8vIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sOiAwLCAvLyDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgICAgIHNjYWxlOiAwLjlcbiAgICAgICAgfVxuICAgICAgICB2YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBuZXcgQ29tbW9uU2Nyb2xsVmlldygpO1xuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldyAuY3JlYXRlU2Nyb2xsKGdvb2RfY29ucywgY2MudjIoMCwwKSAsIFNjcm9sbFZpZXdEaXIuaG9yaXpvbnRhbCwgU2Nyb2xsVmlld1N0YXJ0UG9zLnRvcCwgc2Nyb2xsX3ZpZXdfc2l6ZSwgc2V0dGluZyk7XG5cbiAgICAgICAgLy8gdGhpcy5pdGVtX3Njcm9sbHZpZXc6c2V0U3dhbGxvd1RvdWNoZXMoZmFsc2UpXG4gICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LnNldENsaWNrRW5hYmxlZChmYWxzZSk7XG4gICAgfSxcblxuICAgIC8vIOazqOWGjOS6i+S7tuebkeWQrOeahOaOpeWPoyzkuI3pnIDopoHmiYvliqjosIPnlKgs5aaC5p6c5piv5L2/55SoZ2NvcmUuR2xvYmFsRXZlbnTnm5HlkKws5Y+v5Lul55u05o6l6LCD55SoYWRkR2xvYmFsRXZlbnRcbiAgICByZWdpc3RlckV2ZW50OmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoRGF5Q2hhcmdldEV2ZW50LkRBWV9GSVJTVF9DSEFSR0VfRVZFTlQsZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgICAgICBpZighZGF0YSlyZXR1cm47XG4gICAgICAgICAgICB2YXIgcmV3YXJkX2RhdGEgPSBDb25maWcuY2hhcmdlX2RhdGEuZGF0YV9jb25zdGFudC5kYXlfY2hhcmdlX2dvYWw7XG4gICAgICAgICAgICB2YXIgbnVtID0gcmV3YXJkX2RhdGEudmFsIC0gZGF0YS5udW07XG4gICAgICAgICAgICBpZihudW0gPD0gMCl7XG4gICAgICAgICAgICAgICAgbnVtID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhcmdlX251bS5zZXROdW0obnVtKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbW9uZC54ID0gdGhpcy5jaGFyZ2VfbnVtLm5vZGUueCt0aGlzLmNhaHJnZV9udW1fY2hpbGRfbmQuZ2V0Q29udGVudFNpemUoKS53aWR0aCoxLjQ7XG4gICAgICAgICAgICBpZihkYXRhLnN0YXR1cyA9PSAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcnN0X2VmZmVjdFsyXS5ub2RlLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5idG5fY2hhcmdlLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5idG5fZ2V0LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfWVsc2UgaWYoZGF0YS5zdGF0dXMgPT0gMSl7XG4gICAgICAgICAgICAgICAgdGhpcy5maXJzdF9lZmZlY3RbMl0ubm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bl9jaGFyZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5idG5fZ2V0LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0uYmluZCh0aGlzKSk7XG5cbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmJhY2tncm91bmQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuRGF5Rmlyc3RDaGFyZ2VWaWV3KGZhbHNlKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKTtcblxuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYnRuX2NoYXJnZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5EYXlGaXJzdENoYXJnZVZpZXcoZmFsc2UpO1xuICAgICAgICAgICAgdmFyIFZpcENvbnRyb2xsZXIgPSByZXF1aXJlKFwidmlwX2NvbnRyb2xsZXJcIilcbiAgICAgICAgICAgIFZpcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuVmlwTWFpbldpbmRvdyh0cnVlLCBWSVBUQUJDT05TVC5DSEFSR0UpO1xuICAgICAgICB9LmJpbmQodGhpcyksIDEpO1xuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5idG5fZ2V0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLmN0cmwuc2VuZGVyMjEwMTEoKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAxKTtcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwgyzkuZ/lsLHmmK/kuIDkuKrnqpfkvZPnmoTmraPlvI/lhaXlj6Ms5Y+v5Lul6K6+572u5LiA5Lqb5pWw5o2u5LqGXG4gICAgb3BlblJvb3RXbmQ6ZnVuY3Rpb24ocGFyYW1zKXtcbiAgICAgICAgdGhpcy5jdHJsLnNlbmRlcjIxMDEwKCk7XG4gICAgICAgIHZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIilcbiAgICAgICAgdmFyIHJvbGVfdm8gPSBSb2xlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFJvbGVWbygpO1xuICAgICAgICB2YXIgb3Blbl9kYXkgPSBDb25maWcuY2hhcmdlX2RhdGEuZGF0YV9kYWlseV9yZXdhcmRfbGVuZ3RoO1xuICAgICAgICB2YXIgcmV3YXJkX2RhdGEgPSBDb25maWcuY2hhcmdlX2RhdGEuZGF0YV9kYWlseV9yZXdhcmQ7XG5cbiAgICAgICAgZm9yKHZhciBpIGluIHJld2FyZF9kYXRhKXtcbiAgICAgICAgICAgIGlmKHJvbGVfdm8ub3Blbl9kYXkgPj0gcmV3YXJkX2RhdGFbaV0ubWluICYmIHJvbGVfdm8ub3Blbl9kYXkgPD0gcmV3YXJkX2RhdGFbaV0ubWF4KXtcbiAgICAgICAgICAgICAgICBvcGVuX2RheSA9IHJld2FyZF9kYXRhW2ldLmlkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5pdGVtX3Njcm9sbHZpZXcpe1xuICAgICAgICAgICAgdmFyIGxpc3QgPSBbXTtcbiAgICAgICAgICAgIGZvcih2YXIgaSBpbiByZXdhcmRfZGF0YVtvcGVuX2RheV0ucmV3YXJkKXtcbiAgICAgICAgICAgICAgICB2YXIgdiA9IHJld2FyZF9kYXRhW29wZW5fZGF5XS5yZXdhcmRbaV07XG4gICAgICAgICAgICAgICAgdmFyIHZvID0ge307XG4gICAgICAgICAgICAgICAgdm8uYmlkID0gdlswXTtcbiAgICAgICAgICAgICAgICB2by5udW0gPSB2WzFdO1xuICAgICAgICAgICAgICAgIGxpc3QucHVzaCh2byk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5zZXREYXRhKGxpc3QpO1xuXG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5hZGRFbmRDYWxsQmFjayhmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5pdGVtX3Njcm9sbHZpZXcuZ2V0SXRlbUxpc3QoKTtcbiAgICAgICAgICAgICAgICBmb3IodmFyIGkgaW4gbGlzdCl7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RbaV0uc2V0RGVmYXVsdFRpcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYW1vbmQueCA9IHRoaXMuY2hhcmdlX251bS5ub2RlLngrdGhpcy5jYWhyZ2VfbnVtX2NoaWxkX25kLmdldENvbnRlbnRTaXplKCkud2lkdGgqMS40O1xuICAgIH0sXG5cbiAgICAvLyDlhbPpl63nqpfkvZPlm57osIMs6ZyA6KaB5Zyo6L+Z6YeM6LCD55So6K+l56qX5L2T5omA5bGeY29udHJvbGxlcueahGNsb3Nl5pa55rOV5rKh55So5LqO572u56m66K+l56qX5L2T5a6e5L6L5a+56LGhXG4gICAgY2xvc2VDYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICBpZih0aGlzLml0ZW1fc2Nyb2xsdmlldyl7XG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5kZWxldGVNZSgpO1xuICAgICAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yKHZhciBpIGluIHRoaXMuZmlyc3RfZWZmZWN0KXtcbiAgICAgICAgICAgIGlmKHRoaXMuZmlyc3RfZWZmZWN0W2ldKXtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcnN0X2VmZmVjdFtpXS5zZXRUb1NldHVwUG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RfZWZmZWN0W2ldLmNsZWFyVHJhY2tzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdHJsLm9wZW5EYXlGaXJzdENoYXJnZVZpZXcoZmFsc2UpO1xuICAgIH0sXG59KSJdfQ==
|