|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/vedio/view/vedio_myself_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, '1e92d8s1o5NprGS157NZ+TU', 'vedio_myself_window');
|
// Scripts/mod/vedio/view/vedio_myself_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-05-22 16:20:26
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var VedioController = require("vedio_controller");
|
|
var VedioConst = require("vedio_const");
|
|
var VedioMainItem = require("vedio_item_panel");
|
|
var VedioEvent = require("vedio_event");
|
|
var RoleController = require("role_controller");
|
|
var ChatConst = require("chat_const");
|
|
var VedioMyselfWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("vedio", "vedio_collect_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 = VedioController.getInstance();
|
this._model = this.ctrl.getModel();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
var self = this;
|
self.background = self.root_wnd.getChildByName("background");
|
var main_container = self.root_wnd.getChildByName("main_container");
|
self.main_container = main_container;
|
self.share_panel = self.root_wnd.getChildByName("share_panel");
|
self.share_panel.active = false;
|
self.share_bg = self.share_panel.getChildByName("share_bg");
|
self.btn_guild = self.share_bg.getChildByName("btn_guild");
|
self.btn_world = self.share_bg.getChildByName("btn_world");
|
self.btn_cross = self.share_bg.getChildByName("btn_cross");
|
self.share_bg.getChildByName("guild_label").getComponent(cc.Label).string = Utils.TI18N("分享到公会频道");
|
self.share_bg.getChildByName("world_label").getComponent(cc.Label).string = Utils.TI18N("分享到世界频道"); // self.share_bg.getChildByName("cross_label"):setString(TI18N("分享到跨服频道"))
|
|
var win_title = main_container.getChildByName("win_title");
|
win_title.getComponent(cc.Label).string = Utils.TI18N("个人记录");
|
self.num_txt = main_container.getChildByName("num_txt").getComponent(cc.Label);
|
self.num_txt.fontSize = 22;
|
self.num_txt.string = Utils.TI18N("记录自己前30条PVP挑战记录");
|
self.no_vedio_image = main_container.getChildByName("no_vedio_image");
|
self.no_vedio_image.getChildByName("label").getComponent(cc.Label).string = Utils.TI18N("暂无录像收藏");
|
var vedio_list = main_container.getChildByName("vedio_list");
|
var scroll_view_size = vedio_list.getContentSize();
|
var setting = {
|
item_class: VedioMainItem,
|
//-- 单元类
|
start_x: 0,
|
//-- 第一个单元的X起点
|
space_x: 0,
|
//-- x方向的间隔
|
start_y: 0,
|
//-- 第一个单元的Y起点
|
space_y: 5,
|
//-- y方向的间隔
|
item_width: 620,
|
//-- 单元的尺寸width
|
item_height: 374,
|
//-- 单元的尺寸height
|
row: 0,
|
//-- 行数,作用于水平滚动类型
|
col: 1,
|
//-- 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
this.vedio_scrollview = new CommonScrollView();
|
this.vedio_scrollview.createScroll(vedio_list, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting);
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.background.on("touchend", function () {
|
Utils.playButtonSound(2);
|
this.ctrl.openVedioMyselfWindow(false);
|
}, this);
|
this.btn_guild.on('click', function () {
|
Utils.playButtonSound(1);
|
|
if (RoleController.getInstance().getRoleVo().isHasGuild() == false) {
|
message(Utils.TI18N("您暂未加入公会"));
|
return;
|
}
|
|
if (this.replay_id) {
|
this.ctrl.requestShareVedio(this.replay_id, ChatConst.Channel.Gang, this.srv_id, this.combat_type);
|
|
this._model.updateVedioData(null, this.replay_id, "share", this.share_num);
|
|
var new_data = this.updateVedioDataById(this.replay_id, "share", this.share_num);
|
gcore.GlobalEvent.fire(VedioEvent.UpdateVedioDataEvent, new_data);
|
}
|
|
this.replay_id = null;
|
this.srv_id = null;
|
this.combat_type = null;
|
this.share_panel.active = false;
|
}, this);
|
this.btn_world.on("click", function () {
|
Utils.playButtonSound(1);
|
|
if (this.replay_id) {
|
this.ctrl.requestShareVedio(this.replay_id, ChatConst.Channel.World, this.srv_id, this.combat_type);
|
|
this._model.updateVedioData(null, this.replay_id, "share", this.share_num);
|
|
var new_data = this.updateVedioDataById(this.replay_id, "share", this.share_num);
|
gcore.GlobalEvent.fire(VedioEvent.UpdateVedioDataEvent, new_data);
|
}
|
|
this.replay_id = null;
|
this.srv_id = null;
|
this.combat_type = null;
|
this.share_panel.active = false;
|
}, this);
|
this.share_panel.on("touchend", function () {
|
this.share_panel.active = false;
|
}, this);
|
this.addGlobalEvent(VedioEvent.UpdateMyselfVedioEvent, function (data) {
|
this.setData(data);
|
}.bind(this));
|
this.addGlobalEvent(VedioEvent.CollectSuccessVedioEvent, function (id) {
|
if (this.data) {
|
this._model.updateVedioData(null, id, "is_collect", 1);
|
|
var new_data = this.updateVedioDataById(id, "is_collect", 1);
|
gcore.GlobalEvent.fire(VedioEvent.UpdateVedioDataEvent, new_data);
|
}
|
}.bind(this));
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(params) {
|
this.ctrl.requestMyVedioByType(VedioConst.MyVedio_Type.Myself);
|
gcore.GlobalEvent.fire(VedioEvent.OpenCollectViewEvent, true);
|
},
|
setData: function setData(data) {
|
var self = this;
|
|
if (!data || Utils.next(data) == null) {
|
self.no_vedio_image.active = true;
|
} else {
|
self.no_vedio_image.active = false;
|
self.data = data;
|
self.vedio_scrollview.setData(self.data, this._onClickShareBtn.bind(this), {
|
is_myself: true
|
});
|
}
|
},
|
_onClickShareBtn: function _onClickShareBtn(world_pos, replay_id, share_num, srv_id, combat_type) {
|
var self = this;
|
self.replay_id = replay_id;
|
self.share_num = share_num;
|
self.srv_id = srv_id;
|
self.combat_type = combat_type;
|
var node_pos = self.share_panel.convertToNodeSpaceAR(world_pos);
|
|
if (node_pos) {
|
self.share_bg.setPosition(cc.v2(node_pos.x - 60, node_pos.y + 45));
|
self.share_panel.active = true;
|
}
|
},
|
updateVedioDataById: function updateVedioDataById(id, key, val) {
|
if (!this.data) return;
|
var vedio_data = {};
|
|
for (var k = 0; k < this.data.length; ++k) {
|
var v = this.data[k];
|
|
if (v.id == id) {
|
v[key] = val;
|
vedio_data = v;
|
break;
|
}
|
}
|
|
return vedio_data;
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.vedio_scrollview) {
|
this.vedio_scrollview.DeleteMe();
|
this.vedio_scrollview = null;
|
}
|
|
gcore.GlobalEvent.fire(VedioEvent.OpenCollectViewEvent, false);
|
this.ctrl.openVedioMyselfWindow(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFx2ZWRpb1xcdmlld1xcdmVkaW9fbXlzZWxmX3dpbmRvdy5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJDb21tb25TY3JvbGxWaWV3IiwiVmVkaW9Db250cm9sbGVyIiwiVmVkaW9Db25zdCIsIlZlZGlvTWFpbkl0ZW0iLCJWZWRpb0V2ZW50IiwiUm9sZUNvbnRyb2xsZXIiLCJDaGF0Q29uc3QiLCJWZWRpb015c2VsZldpbmRvdyIsImNjIiwiQ2xhc3MiLCJCYXNlVmlldyIsImN0b3IiLCJwcmVmYWJQYXRoIiwiZ2V0UHJlZmFiUGF0aCIsInZpZXdUYWciLCJTQ0VORV9UQUciLCJkaWFsb2d1ZSIsIndpbl90eXBlIiwiV2luVHlwZSIsImJpZyIsImN0cmwiLCJnZXRJbnN0YW5jZSIsIl9tb2RlbCIsImdldE1vZGVsIiwiaW5pdENvbmZpZyIsIm9wZW5DYWxsQmFjayIsInNlbGYiLCJiYWNrZ3JvdW5kIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsIm1haW5fY29udGFpbmVyIiwic2hhcmVfcGFuZWwiLCJhY3RpdmUiLCJzaGFyZV9iZyIsImJ0bl9ndWlsZCIsImJ0bl93b3JsZCIsImJ0bl9jcm9zcyIsImdldENvbXBvbmVudCIsIkxhYmVsIiwic3RyaW5nIiwiVXRpbHMiLCJUSTE4TiIsIndpbl90aXRsZSIsIm51bV90eHQiLCJmb250U2l6ZSIsIm5vX3ZlZGlvX2ltYWdlIiwidmVkaW9fbGlzdCIsInNjcm9sbF92aWV3X3NpemUiLCJnZXRDb250ZW50U2l6ZSIsInNldHRpbmciLCJpdGVtX2NsYXNzIiwic3RhcnRfeCIsInNwYWNlX3giLCJzdGFydF95Iiwic3BhY2VfeSIsIml0ZW1fd2lkdGgiLCJpdGVtX2hlaWdodCIsInJvdyIsImNvbCIsIm5lZWRfZHluYW1pYyIsInZlZGlvX3Njcm9sbHZpZXciLCJjcmVhdGVTY3JvbGwiLCJ2MiIsIlNjcm9sbFZpZXdEaXIiLCJ2ZXJ0aWNhbCIsIlNjcm9sbFZpZXdTdGFydFBvcyIsInRvcCIsInJlZ2lzdGVyRXZlbnQiLCJvbiIsInBsYXlCdXR0b25Tb3VuZCIsIm9wZW5WZWRpb015c2VsZldpbmRvdyIsImdldFJvbGVWbyIsImlzSGFzR3VpbGQiLCJtZXNzYWdlIiwicmVwbGF5X2lkIiwicmVxdWVzdFNoYXJlVmVkaW8iLCJDaGFubmVsIiwiR2FuZyIsInNydl9pZCIsImNvbWJhdF90eXBlIiwidXBkYXRlVmVkaW9EYXRhIiwic2hhcmVfbnVtIiwibmV3X2RhdGEiLCJ1cGRhdGVWZWRpb0RhdGFCeUlkIiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsImZpcmUiLCJVcGRhdGVWZWRpb0RhdGFFdmVudCIsIldvcmxkIiwiYWRkR2xvYmFsRXZlbnQiLCJVcGRhdGVNeXNlbGZWZWRpb0V2ZW50IiwiZGF0YSIsInNldERhdGEiLCJiaW5kIiwiQ29sbGVjdFN1Y2Nlc3NWZWRpb0V2ZW50IiwiaWQiLCJvcGVuUm9vdFduZCIsInBhcmFtcyIsInJlcXVlc3RNeVZlZGlvQnlUeXBlIiwiTXlWZWRpb19UeXBlIiwiTXlzZWxmIiwiT3BlbkNvbGxlY3RWaWV3RXZlbnQiLCJuZXh0IiwiX29uQ2xpY2tTaGFyZUJ0biIsImlzX215c2VsZiIsIndvcmxkX3BvcyIsIm5vZGVfcG9zIiwiY29udmVydFRvTm9kZVNwYWNlQVIiLCJzZXRQb3NpdGlvbiIsIngiLCJ5Iiwia2V5IiwidmFsIiwidmVkaW9fZGF0YSIsImsiLCJsZW5ndGgiLCJ2IiwiY2xvc2VDYWxsQmFjayIsIkRlbGV0ZU1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFDQSxJQUFJRSxlQUFlLEdBQUdGLE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFDQSxJQUFJRyxVQUFVLEdBQUdI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QVVrRCxxQkFBVixDQUFnQyxLQUFoQztBQUNIO0FBOUo0QixDQUFULENBQXhCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg6L+Z6YeM5piv5o+P6L+w6L+Z5Liq56qX5L2T55qE5L2c55So55qEXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNS0yMiAxNjoyMDoyNlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBDb21tb25TY3JvbGxWaWV3ID0gcmVxdWlyZShcImNvbW1vbl9zY3JvbGx2aWV3XCIpO1xudmFyIFZlZGlvQ29udHJvbGxlciA9IHJlcXVpcmUoXCJ2ZWRpb19jb250cm9sbGVyXCIpXG52YXIgVmVkaW9Db25zdCA9IHJlcXVpcmUoXCJ2ZWRpb19jb25zdFwiKVxudmFyIFZlZGlvTWFpbkl0ZW0gPSByZXF1aXJlKFwidmVkaW9faXRlbV9wYW5lbFwiKVxudmFyIFZlZGlvRXZlbnQgPSByZXF1aXJlKFwidmVkaW9fZXZlbnRcIilcbnZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIilcbnZhciBDaGF0Q29uc3QgPSByZXF1aXJlKFwiY2hhdF9jb25zdFwiKVxudmFyIFZlZGlvTXlzZWxmV2luZG93ID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VWaWV3LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcInZlZGlvXCIsIFwidmVkaW9fY29sbGVjdF93aW5kb3dcIik7XG4gICAgICAgIHRoaXMudmlld1RhZyA9IFNDRU5FX1RBRy5kaWFsb2d1ZTsgICAgICAgICAgICAgICAgLy/or6XnqpfkvZPmiYDlsZ51aeWxgue6pyzlhajlsY91aemcgOimgeWcqHVp5bGCLOmdnuWFqOWxj3Vp5ZyoZGlhbG9ndWXlsYIs6L+Z5Liq6KaB5rOo5oSPXG4gICAgICAgIHRoaXMud2luX3R5cGUgPSBXaW5UeXBlLmJpZzsgICAgICAgICAgICAgICAvL+aYr+WQpuaYr+WFqOWxj+eql+S9kyAgV2luVHlwZS5GdWxsLCBXaW5UeXBlLkJpZywgV2luVHlwZS5NaW5pLCBXaW5UeXBlLlRpcHNcbiAgICAgICAgdGhpcy5jdHJsID0gVmVkaW9Db250cm9sbGVyLmdldEluc3RhbmNlKClcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLmN0cmwuZ2V0TW9kZWwoKVxuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbkuIDkupvphY3nva7mlbDmja4s5Y+v5Lul55So5LqO5aOw5piO5LiA5Lqb5Y+Y6YeP5LmL57G755qEXG4gICAgaW5pdENvbmZpZzpmdW5jdGlvbigpe1xuXG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjueahOWbnuiwgyzlj6/ku6XlnKjov5nph4zmjZXojrfnm7jlhbPoioLngrnmiJbogIXnu4Tku7ZcbiAgICBvcGVuQ2FsbEJhY2s6ZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIHNlbGYuYmFja2dyb3VuZCA9IHNlbGYucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrZ3JvdW5kXCIpXG4gICAgICAgIGxldCBtYWluX2NvbnRhaW5lciA9IHNlbGYucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJtYWluX2NvbnRhaW5lclwiKVxuICAgICAgICBzZWxmLm1haW5fY29udGFpbmVyID0gbWFpbl9jb250YWluZXJcbiAgICAgICAgXG4gICAgICAgIHNlbGYuc2hhcmVfcGFuZWwgPSBzZWxmLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwic2hhcmVfcGFuZWxcIilcbiAgICAgICAgc2VsZi5zaGFyZV9wYW5lbC5hY3RpdmUgPSBmYWxzZVxuICAgICAgICBzZWxmLnNoYXJlX2JnID0gc2VsZi5zaGFyZV9wYW5lbC5nZXRDaGlsZEJ5TmFtZShcInNoYXJlX2JnXCIpXG4gICAgICAgIHNlbGYuYnRuX2d1aWxkID0gc2VsZi5zaGFyZV9iZy5nZXRDaGlsZEJ5TmFtZShcImJ0bl9ndWlsZFwiKVxuICAgICAgICBzZWxmLmJ0bl93b3JsZCA9IHNlbGYuc2hhcmVfYmcuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fd29ybGRcIilcbiAgICAgICAgc2VsZi5idG5fY3Jvc3MgPSBzZWxmLnNoYXJlX2JnLmdldENoaWxkQnlOYW1lKFwiYnRuX2Nyb3NzXCIpXG4gICAgICAgIHNlbGYuc2hhcmVfYmcuZ2V0Q2hpbGRCeU5hbWUoXCJndWlsZF9sYWJlbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5YiG5Lqr5Yiw5YWs5Lya6aKR6YGTXCIpO1xuICAgICAgICBzZWxmLnNoYXJlX2JnLmdldENoaWxkQnlOYW1lKFwid29ybGRfbGFiZWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuWIhuS6q+WIsOS4lueVjOmikemBk1wiKTtcbiAgICAgICAgLy8gc2VsZi5zaGFyZV9iZy5nZXRDaGlsZEJ5TmFtZShcImNyb3NzX2xhYmVsXCIpOnNldFN0cmluZyhUSTE4TihcIuWIhuS6q+WIsOi3qOacjemikemBk1wiKSlcblxuICAgICAgICBsZXQgd2luX3RpdGxlID0gbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5fdGl0bGVcIilcbiAgICAgICAgd2luX3RpdGxlLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLkuKrkurrorrDlvZVcIilcblxuICAgICAgICBzZWxmLm51bV90eHQgPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIm51bV90eHRcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKVxuICAgICAgICBzZWxmLm51bV90eHQuZm9udFNpemUgPSAyMjtcbiAgICAgICAgc2VsZi5udW1fdHh0LnN0cmluZyA9IFV0aWxzLlRJMThOKFwi6K6w5b2V6Ieq5bex5YmNMzDmnaFQVlDmjJHmiJjorrDlvZVcIilcbiAgICAgICAgc2VsZi5ub192ZWRpb19pbWFnZSA9IG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwibm9fdmVkaW9faW1hZ2VcIilcbiAgICAgICAgc2VsZi5ub192ZWRpb19pbWFnZS5nZXRDaGlsZEJ5TmFtZShcImxhYmVsXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmmoLml6DlvZXlg4/mlLbol49cIik7XG5cbiAgICAgICAgbGV0IHZlZGlvX2xpc3QgPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInZlZGlvX2xpc3RcIilcbiAgICAgICAgbGV0IHNjcm9sbF92aWV3X3NpemUgPSB2ZWRpb19saXN0LmdldENvbnRlbnRTaXplKClcbiAgICAgICAgbGV0IHNldHRpbmcgPSB7XG4gICAgICAgICAgICBpdGVtX2NsYXNzIDogVmVkaW9NYWluSXRlbSwgICAgICAvLy0tIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeCA6IDAsICAgICAgICAgICAgICAgICAgLy8tLSDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XG4gICAgICAgICAgICBzcGFjZV94IDogMCwgICAgICAgICAgICAgICAgICAgIC8vLS0geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeSA6IDAsICAgICAgICAgICAgICAgICAgICAvLy0tIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3kgOiA1LCAgICAgICAgICAgICAgICAgICAvLy0tIHnmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIGl0ZW1fd2lkdGggOiA2MjAsICAgICAgICAgICAgICAgLy8tLSDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQgOiAzNzQsICAgICAgICAgICAgICAvLy0tIOWNleWFg+eahOWwuuWvuGhlaWdodFxuICAgICAgICAgICAgcm93IDogMCwgICAgICAgICAgICAgICAgICAgICAgICAvLy0tIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sIDogMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLSDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgICAgIG5lZWRfZHluYW1pYyA6IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZlZGlvX3Njcm9sbHZpZXcgPSBuZXcgQ29tbW9uU2Nyb2xsVmlldygpO1xuICAgICAgICB0aGlzLnZlZGlvX3Njcm9sbHZpZXcuY3JlYXRlU2Nyb2xsKHZlZGlvX2xpc3QsIGNjLnYyKDAsMCkgLCBTY3JvbGxWaWV3RGlyLnZlcnRpY2FsLCBTY3JvbGxWaWV3U3RhcnRQb3MudG9wLCBzY3JvbGxfdmlld19zaXplLCBzZXR0aW5nKVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmJhY2tncm91bmQub24oXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBVdGlscy5wbGF5QnV0dG9uU291bmQoMilcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuVmVkaW9NeXNlbGZXaW5kb3coZmFsc2UpXG4gICAgICAgIH0sdGhpcylcbiAgICAgICAgdGhpcy5idG5fZ3VpbGQub24oJ2NsaWNrJyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgVXRpbHMucGxheUJ1dHRvblNvdW5kKDEpXG4gICAgICAgICAgICBpZihSb2xlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFJvbGVWbygpLmlzSGFzR3VpbGQoKSA9PSBmYWxzZSl7XG4gICAgICAgICAgICAgICAgbWVzc2FnZShVdGlscy5USTE4TihcIuaCqOaaguacquWKoOWFpeWFrOS8mlwiKSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHRoaXMucmVwbGF5X2lkKXtcbiAgICAgICAgICAgICAgICB0aGlzLmN0cmwucmVxdWVzdFNoYXJlVmVkaW8odGhpcy5yZXBsYXlfaWQsIENoYXRDb25zdC5DaGFubmVsLkdhbmcsIHRoaXMuc3J2X2lkLCB0aGlzLmNvbWJhdF90eXBlKVxuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsLnVwZGF0ZVZlZGlvRGF0YShudWxsLCB0aGlzLnJlcGxheV9pZCwgXCJzaGFyZVwiLCB0aGlzLnNoYXJlX251bSlcbiAgICAgICAgICAgICAgICBsZXQgbmV3X2RhdGEgPSB0aGlzLnVwZGF0ZVZlZGlvRGF0YUJ5SWQodGhpcy5yZXBsYXlfaWQsIFwic2hhcmVcIiwgdGhpcy5zaGFyZV9udW0pXG4gICAgICAgICAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShWZWRpb0V2ZW50LlVwZGF0ZVZlZGlvRGF0YUV2ZW50LCBuZXdfZGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVwbGF5X2lkID0gbnVsbFxuICAgICAgICAgICAgdGhpcy5zcnZfaWQgPSBudWxsXG4gICAgICAgICAgICB0aGlzLmNvbWJhdF90eXBlID0gbnVsbFxuICAgICAgICAgICAgdGhpcy5zaGFyZV9wYW5lbC5hY3RpdmUgPSBmYWxzZVxuICAgICAgICB9LHRoaXMpXG4gICAgICAgIHRoaXMuYnRuX3dvcmxkLm9uKFwiY2xpY2tcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgVXRpbHMucGxheUJ1dHRvblNvdW5kKDEpXG4gICAgICAgICAgICBpZih0aGlzLnJlcGxheV9pZCl7XG4gICAgICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RTaGFyZVZlZGlvKHRoaXMucmVwbGF5X2lkLCBDaGF0Q29uc3QuQ2hhbm5lbC5Xb3JsZCwgdGhpcy5zcnZfaWQsIHRoaXMuY29tYmF0X3R5cGUpXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWwudXBkYXRlVmVkaW9EYXRhKG51bGwsIHRoaXMucmVwbGF5X2lkLCBcInNoYXJlXCIsIHRoaXMuc2hhcmVfbnVtKVxuICAgICAgICAgICAgICAgIGxldCBuZXdfZGF0YSA9IHRoaXMudXBkYXRlVmVkaW9EYXRhQnlJZCh0aGlzLnJlcGxheV9pZCwgXCJzaGFyZVwiLCB0aGlzLnNoYXJlX251bSlcbiAgICAgICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFZlZGlvRXZlbnQuVXBkYXRlVmVkaW9EYXRhRXZlbnQsIG5ld19kYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZXBsYXlfaWQgPSBudWxsXG4gICAgICAgICAgICB0aGlzLnNydl9pZCA9IG51bGxcbiAgICAgICAgICAgIHRoaXMuY29tYmF0X3R5cGUgPSBudWxsXG4gICAgICAgICAgICB0aGlzLnNoYXJlX3BhbmVsLmFjdGl2ZSA9IGZhbHNlXG4gICAgICAgIH0sdGhpcylcbiAgICAgICAgdGhpcy5zaGFyZV9wYW5lbC5vbihcInRvdWNoZW5kXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuc2hhcmVfcGFuZWwuYWN0aXZlID0gZmFsc2VcbiAgICAgICAgfSx0aGlzKVxuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KFZlZGlvRXZlbnQuVXBkYXRlTXlzZWxmVmVkaW9FdmVudCwgZnVuY3Rpb24gKCBkYXRhICl7XG4gICAgICAgICAgICB0aGlzLnNldERhdGEoZGF0YSlcbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KFZlZGlvRXZlbnQuQ29sbGVjdFN1Y2Nlc3NWZWRpb0V2ZW50LCBmdW5jdGlvbiAoIGlkICl7XG4gICAgICAgICAgICBpZih0aGlzLmRhdGEpe1xuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsLnVwZGF0ZVZlZGlvRGF0YShudWxsLCBpZCwgXCJpc19jb2xsZWN0XCIsIDEpXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kYXRhID0gdGhpcy51cGRhdGVWZWRpb0RhdGFCeUlkKGlkLCBcImlzX2NvbGxlY3RcIiwgMSlcbiAgICAgICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFZlZGlvRXZlbnQuVXBkYXRlVmVkaW9EYXRhRXZlbnQsIG5ld19kYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjizmt7vliqDliLDlr7nlupTkuLvoioLngrnkuYvlkI7nmoTlm57osIMs5Lmf5bCx5piv5LiA5Liq56qX5L2T55qE5q2j5byP5YWl5Y+jLOWPr+S7peiuvue9ruS4gOS6m+aVsOaNruS6hlxuICAgIG9wZW5Sb290V25kOmZ1bmN0aW9uKHBhcmFtcyl7XG4gICAgICAgIHRoaXMuY3RybC5yZXF1ZXN0TXlWZWRpb0J5VHlwZShWZWRpb0NvbnN0Lk15VmVkaW9fVHlwZS5NeXNlbGYpXG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoVmVkaW9FdmVudC5PcGVuQ29sbGVjdFZpZXdFdmVudCwgdHJ1ZSlcbiAgICB9LFxuICAgIHNldERhdGEoZGF0YSl7XG4gICAgICAgIHZhciBzZWxmID0gdGhpc1xuICAgICAgICBpZighZGF0YSB8fCBVdGlscy5uZXh0KGRhdGEpID09IG51bGwpe1xuICAgICAgICAgICAgc2VsZi5ub192ZWRpb19pbWFnZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHNlbGYubm9fdmVkaW9faW1hZ2UuYWN0aXZlID0gZmFsc2VcbiAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFcbiAgICAgICAgICAgIHNlbGYudmVkaW9fc2Nyb2xsdmlldy5zZXREYXRhKHNlbGYuZGF0YSx0aGlzLl9vbkNsaWNrU2hhcmVCdG4uYmluZCh0aGlzKSx7aXNfbXlzZWxmIDogdHJ1ZX0pXG4gICAgICAgIH1cbiAgICB9LFxuICAgIF9vbkNsaWNrU2hhcmVCdG4oIHdvcmxkX3BvcywgcmVwbGF5X2lkLCBzaGFyZV9udW0sIHNydl9pZCwgY29tYmF0X3R5cGUgKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIHNlbGYucmVwbGF5X2lkID0gcmVwbGF5X2lkXG4gICAgICAgIHNlbGYuc2hhcmVfbnVtID0gc2hhcmVfbnVtXG4gICAgICAgIHNlbGYuc3J2X2lkID0gc3J2X2lkXG4gICAgICAgIHNlbGYuY29tYmF0X3R5cGUgPSBjb21iYXRfdHlwZVxuICAgICAgICBsZXQgbm9kZV9wb3MgPSBzZWxmLnNoYXJlX3BhbmVsLmNvbnZlcnRUb05vZGVTcGFjZUFSKHdvcmxkX3BvcylcbiAgICAgICAgaWYobm9kZV9wb3Mpe1xuICAgICAgICAgICAgc2VsZi5zaGFyZV9iZy5zZXRQb3NpdGlvbihjYy52Mihub2RlX3Bvcy54LTYwLCBub2RlX3Bvcy55KzQ1KSlcbiAgICAgICAgICAgIHNlbGYuc2hhcmVfcGFuZWwuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlVmVkaW9EYXRhQnlJZCggaWQsIGtleSwgdmFsICl7XG4gICAgICAgIGlmKCF0aGlzLmRhdGEpICByZXR1cm47XG4gICAgICAgIGxldCB2ZWRpb19kYXRhID0ge31cbiAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLmRhdGEubGVuZ3RoOysrayl7XG4gICAgICAgICAgICBsZXQgdiA9IHRoaXMuZGF0YVtrXVxuICAgICAgICAgICAgaWYodi5pZCA9PSBpZCl7XG4gICAgICAgICAgICAgICAgdltrZXldID0gdmFsXG4gICAgICAgICAgICAgICAgdmVkaW9fZGF0YSA9IHZcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZWRpb19kYXRhXG4gICAgfSxcbiAgICAvLyDlhbPpl63nqpfkvZPlm57osIMs6ZyA6KaB5Zyo6L+Z6YeM6LCD55So6K+l56qX5L2T5omA5bGeY29udHJvbGxlcueahGNsb3Nl5pa55rOV5rKh55So5LqO572u56m66K+l56qX5L2T5a6e5L6L5a+56LGhXG4gICAgY2xvc2VDYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICBpZih0aGlzLnZlZGlvX3Njcm9sbHZpZXcpe1xuICAgICAgICAgICAgdGhpcy52ZWRpb19zY3JvbGx2aWV3LkRlbGV0ZU1lKClcbiAgICAgICAgICAgIHRoaXMudmVkaW9fc2Nyb2xsdmlldyA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFZlZGlvRXZlbnQuT3BlbkNvbGxlY3RWaWV3RXZlbnQsIGZhbHNlKVxuICAgICAgICB0aGlzLmN0cmwub3BlblZlZGlvTXlzZWxmV2luZG93KGZhbHNlKVxuICAgIH0sXG59KSJdfQ==
|