|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/mainscene/element/build_item.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, '4087cw7cgRHz4WRkcpMHcJf', 'build_item');
|
// Scripts/mod/mainscene/element/build_item.js
|
|
"use strict";
|
|
var SceneConst = require("scene_const");
|
|
var PathTool = require("pathtool");
|
|
var BuildItem = cc.Class({
|
"extends": BaseClass,
|
properties: {
|
data: null,
|
build_is_lock: null,
|
can_click: false,
|
isBuild: false,
|
config: null,
|
build_type: null,
|
root_wnd: cc.Node,
|
iconSP: cc.Sprite,
|
red_state: null,
|
red_nd: cc.Node
|
},
|
ctor: function ctor() {
|
this.data = arguments[0];
|
this.type = arguments[1];
|
this.createRootWind();
|
|
if (this.type == SceneConst.BuildItemType.build) {
|
this.build_type = this.data.config.type;
|
this.isBuild = this.build_type == SceneConst.BuildItemType.build;
|
this.config = this.data.config;
|
this.createIcon();
|
} else if (this.type == SceneConst.BuildItemType.effect) {
|
this.createEffect();
|
} else if (this.type == SceneConst.BuildItemType.npc) {
|
this.createNPC();
|
}
|
},
|
createRootWind: function createRootWind() {
|
this.con_size = cc.v2(83, 80);
|
var build_name = "";
|
|
if (this.type == SceneConst.BuildItemType.build) {
|
build_name = "guidesign_build_" + this.data.config.bid;
|
}
|
|
this.root_wnd = new cc.Node(build_name);
|
this.root_wnd.setContentSize(83, 80);
|
this.root_wnd.setAnchorPoint(0.5, 0);
|
var root_x = typeof this.data.x == "number" ? this.data.x : this.data.config.x;
|
var root_y = typeof this.data.y == "number" ? this.data.y : this.data.config.y;
|
this.root_wnd.setPosition(root_x, root_y);
|
},
|
createIcon: function createIcon() {
|
// this.iconSP = this.root_wnd.addComponent(cc.Sprite);
|
var sp_nd = new cc.Node();
|
sp_nd.setAnchorPoint(0.5, 0);
|
this.iconSP = sp_nd.addComponent(cc.Sprite);
|
this.root_wnd.addChild(sp_nd);
|
this.button = this.root_wnd.addComponent(cc.Button);
|
this.button.interactable = true;
|
this.button.transition = cc.Button.Transition.SCALE;
|
this.button.duration = 0.1;
|
this.button.zoomScale = 0.9;
|
|
if (this.isBuild) {
|
this.createBuild();
|
} // 红点
|
|
|
this.red_nd = new cc.Node();
|
this.red_nd.position = cc.v2(this.root_wnd.width * 0.3, this.root_wnd.height * 0.8);
|
this.root_wnd.addChild(this.red_nd);
|
this.red_sp = this.red_nd.addComponent(cc.Sprite);
|
var red_res = PathTool.getUIIconPath("centerscene", "scene_0");
|
LoaderManager.getInstance().loadRes(red_res, function (red_sf) {
|
this.red_sp.spriteFrame = red_sf;
|
}.bind(this));
|
this.red_nd.active = false;
|
this.setTipStatus();
|
},
|
registerEvent: function registerEvent() {
|
if (this.data && this.isBuild) {
|
this.root_wnd.on(cc.Node.EventType.TOUCH_END, function (event) {
|
var tochInfo = event.touch;
|
var startPos = event.touch.getStartLocation();
|
var localPos = event.touch.getLocation();
|
var dis = Math.sqrt(Math.pow(startPos.x - localPos.x, 2) + Math.pow(startPos.y - localPos.y, 2));
|
if (dis < 40) this.clickBbuildItem();
|
}.bind(this));
|
this.build_vo_update = this.data.bind(this.data.Update_self_event, function (key) {
|
if (key == "lock_status") {
|
this.setLockStatus();
|
} else if (key == "tips_status") {
|
this.setTipStatus();
|
} else if (key == "fight_status") {
|
this.fightStatus();
|
}
|
}.bind(this));
|
}
|
},
|
createBuild: function createBuild() {
|
var iconName = "scene_" + this.config.res;
|
var atlasPath = "ui_res/centerscene/" + iconName + ".png";
|
LoaderManager.getInstance().loadRes(atlasPath, function (res_object) {
|
this.iconSP.spriteFrame = res_object;
|
}.bind(this));
|
this.setLockStatus();
|
this.registerEvent();
|
},
|
createEffect: function createEffect() {
|
var sp_node = new cc.Node("");
|
sp_node.position = cc.v2(0, this.con_size.y * 0.5);
|
this.root_wnd.addChild(sp_node);
|
this.spine = sp_node.addComponent(sp.Skeleton);
|
this.spinePath = PathTool.getSpinePath(this.data.res, "action");
|
LoaderManager.getInstance().loadRes(this.spinePath, function (res) {
|
this.spine.skeletonData = res;
|
this.spine.setAnimation(0, "action", true);
|
}.bind(this));
|
},
|
createNPC: function createNPC() {
|
var sp_node = new cc.Node("");
|
sp_node.setContentSize(cc.v2(90, 90));
|
sp_node.position = cc.v2(0, this.con_size.y * 0.5);
|
|
if (this.data.bid !== 102 && this.data.bid !== 152) {
|
// sp_node.addComponent(cc.BlockInputEvents);
|
sp_node.on(cc.Node.EventType.TOUCH_END, this.onTouchNpc.bind(this), this);
|
}
|
|
sp_node.test_res = this.data;
|
this.root_wnd.addChild(sp_node);
|
this.spine = sp_node.addComponent(sp.Skeleton);
|
this.spinePath = PathTool.getSpinePath(this.data.res, "action");
|
this.spine.setEndListener(this.animaComplete.bind(this));
|
LoaderManager.getInstance().loadRes(this.spinePath, function (res) {
|
this.spine.skeletonData = res;
|
this.spine.setAnimation(0, "action1", true);
|
}.bind(this));
|
},
|
onTouchNpc: function onTouchNpc(event) {// cc.log(event);
|
// cc.log("TTTTTTTTTTTTTTTTTTTTTTTTTTT");
|
},
|
animaComplete: function animaComplete(tes1, tes2) {// cc.log("IIIIIIIIIIIIIIIIIIIII");
|
// cc.log(tes1);
|
// cc.log(tes2);
|
},
|
setLockStatus: function setLockStatus() {
|
if (this.build_is_lock === null || this.build_is_lock !== this.data.is_lock) {
|
this.build_is_lock = this.data.is_lock;
|
|
if (!this.data.is_lock) {
|
this.iconSP.setState(cc.Sprite.State.NORMAL); // 解锁的时候设置下红点
|
} else {
|
this.iconSP.setState(cc.Sprite.State.GRAY);
|
}
|
}
|
},
|
clickBbuildItem: function clickBbuildItem() {
|
if (!this.data) return;
|
|
if (this.data.is_lock) {
|
message(this.data.desc);
|
} else {
|
if (this.data.group_id != 0) {} // message(Utils.TI18N(this.data.config.name + "未开发"));
|
|
|
var mainSceneController = require("mainscene_controller").getInstance();
|
|
mainSceneController.openBuild(this.data.config.bid);
|
}
|
},
|
setRedPoint: function setRedPoint() {
|
if (this.data.is_lock || !this.data) return;
|
var tipInfo = this.data.getTipsStatus();
|
},
|
setTipStatus: function setTipStatus() {
|
if (this.data.is_lock || !this.data) {
|
this.red_nd.active = false;
|
return;
|
}
|
|
var status = this.data.getTipsStatus();
|
this.red_nd.active = status;
|
},
|
deleteMe: function deleteMe() {
|
if (this.type = SceneConst.BuildItemType.effect) {
|
this.root_wnd.destroy();
|
LoaderManager.getInstance().releaseRes(this.spinePath);
|
}
|
},
|
fightStatus: function fightStatus() {
|
var status = this.data.getFightStatus();
|
|
if (status) {
|
if (!this.fight_nd) {
|
this.initFightEffent();
|
} else {
|
this.fight_nd.active = true;
|
}
|
} else {
|
if (this.fight_nd) this.fight_nd.active = false;
|
}
|
},
|
initFightEffent: function initFightEffent() {
|
var fight_nd = this.fight_nd = new cc.Node();
|
fight_nd.y = this.root_wnd.height;
|
this.root_wnd.addChild(fight_nd);
|
this.fight_effect = fight_nd.addComponent(sp.Skeleton);
|
var effect_res = PathTool.getEffectRes(186);
|
var effect_path = PathTool.getSpinePath(effect_res);
|
LoaderManager.getInstance().loadRes(effect_path, function (effect_sd) {
|
this.fight_effect.skeletonData = effect_sd;
|
this.fight_effect.setAnimation(0, "action", true);
|
}.bind(this));
|
}
|
});
|
module.exports = BuildItem;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxtYWluc2NlbmVcXGVsZW1lbnRcXGJ1aWxkX2l0ZW0uanMiXSwibmFtZXMiOlsiU2NlbmVDb25zdCIsInJlcXVpcmUiLCJQYXRoVG9vbCIsIkJ1aWxkSXRlbSIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJwcm9wZXJ0aWVzIiwiZGF0YSIsImJ1aWxkX2lzX2xvY2siLCJjYW5fY2xpY2siLCJpc0J1aWxkIiwiY29uZmlnIiwiYnVpbGRfdHlwZSIsInJvb3Rfd25kIiwiTm9kZSIsImljb25TUCIsIlNwcml0ZSIsInJlZF9zdGF0ZSIsInJlZF9uZCIsImN0b3IiLCJhcmd1bWVudHMiLCJ0eXBlIiwiY3JlYXRlUm9vdFdpbmQiLCJCdWlsZEl0ZW1UeXBlIiwiYnVpbGQiLCJjcmVhdGVJY29uIiwiZWZmZWN0IiwiY3JlYXRlRWZmZWN0IiwibnBjIiwiY3JlYXRlTlBDIiwiY29uX3NpemUiLCJ2MiIsImJ1aWxkX25hbWUiLCJiaWQiLCJzZXRDb250ZW50U2l6ZSIsInNldEFuY2hvclBvaW50Iiwicm9vdF94IiwieCIsInJvb3RfeSIsInkiLCJzZXRQb3NpdGlvbiIsInNwX25kIiwiYWRkQ29tcG9uZW50IiwiYWRkQ2hpbGQiLCJidXR0b24iLCJCdXR0b24iLCJpbnRlcmFjdGFibGUiLCJ0cmFuc2l0aW9uIiwiVHJhbnNpdGlvbiIsIlNDQUxFIiwiZHVyYXRpb24iLCJ6b29tU2NhbGUiLCJjcmVhdGVCdWlsZCIsInBvc2l0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJyZWRfc3AiLCJyZWRfcmVzIiwiZ2V0VUlJY29uUGF0aCIsIkxvYWRlck1hbmFnZXIiLCJnZXRJbnN0YW5jZSIsImxvYWRSZXMiLCJyZWRfc2YiLCJzcHJpdGVGcmFtZSIsImJpbmQiLCJhY3RpdmUiLCJzZXRUaXBTdGF0dXMiLCJyZWdpc3RlckV2ZW50Iiwib24iLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJldmVudCIsInRvY2hJbmZvIiwidG91Y2giLCJzdGFydFBvcyIsImdldFN0YXJ0TG9jYXRpb24iLCJsb2NhbFBvcyIsImdldExvY2F0aW9uIiwiZGlzIiwiTWF0aCIsInNxcnQiLCJwb3ciLCJjbGlja0JidWlsZEl0ZW0iLCJidWlsZF92b191cGRhdGUiLCJVcGRhdGVfc2VsZl9ldmVudCIsImtleSIsInNldExvY2tTdGF0dXMiLCJmaWdodFN0YXR1cyIsImljb25OYW1lIiwicmVzIiwiYXRsYXNQYXRoIiwicmVzX29iamVjdCIsInNwX25vZGUiLCJzcGluZSIsInNwIiwiU2tlbGV0b24iLCJzcGluZVBhdGgiLCJnZXRTcGluZVBhdGgiLCJza2VsZXRvbkRhdGEiLCJzZXRBbmltYXRpb24iLCJvblRvdWNoTnBjIiwidGVzdF9yZXMiLCJzZXRFbmRMaXN0ZW5lciIsImFuaW1hQ29tcGxldGUiLCJ0ZXMxIiwidGVzMiIsImlzX2xvY2siLCJzZXRTdGF0ZSIsIlN0YXRlIiwiTk9STUFMIiwiR1JBWSIsIm1lc3NhZ2UiLCJkZXNjIiwiZ3JvdXBfaWQiLCJtYWluU2NlbmVDb250cm9sbGVyIiwib3BlbkJ1aWxkIiwic2V0UmVkUG9pbnQiLCJ0aXBJbmZvIiwiZ2V0VGlwc1N0YXR1cyIsInN0YXR1cyIsImRlbGV0ZU1lIiwiZGVzdHJveSIsInJlbGVhc2VSZXMiLCJnZXRGaWdodFN0YXR1cyIsImZpZ2h0X25kIiwiaW5pdEZpZ2h0RWZmZW50IiwiZmlnaHRfZWZmZWN0IiwiZWZmZWN0X3JlcyIsImdldEVmZmVjdFJlcyIsImVmZmVjdF9wYXRoIiwiZWZmZWN0X3NkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxVQUFVLEdBQUdDLE9BQU8sQ0FBQyxhQUFELENBQXhCOztBQUNBLElBQUlDLFFBQVEsR0FBR0QsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBRUEsSUFBSUUsU0FBUyxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUN4QixhQUFTQyxTQURlO0FBR3hCQyxFQUFBQSxVQUFVLEVBQUU7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LFVBQVUsR0FBRzlILFFBQVEsQ0FBQytILFlBQVQsQ0FBc0IsR0FBdEIsQ0FBakI7QUFDQSxRQUFJQyxXQUFXLEdBQUdoSSxRQUFRLENBQUNnRyxZQUFULENBQXNCOEIsVUFBdEIsQ0FBbEI7QUFDQXBFLElBQUFBLGFBQWEsQ0FBQ0MsV0FBZCxHQUE0QkMsT0FBNUIsQ0FBb0NvRSxXQUFwQyxFQUFpRCxVQUFVQyxTQUFWLEVBQXFCO0FBQ3JFLFdBQUtKLFlBQUwsQ0FBa0I1QixZQUFsQixHQUFpQ2dDLFNBQWpDO0FBQ1MsV0FBS0osWUFBTCxDQUFrQjNCLFlBQWxCLENBQStCLENBQS9CLEVBQWtDLFFBQWxDLEVBQTRDLElBQTVDO0FBQ1QsS0FIZ0QsQ0FHL0NuQyxJQUgrQyxDQUcxQyxJQUgwQyxDQUFqRDtBQUlBO0FBeE91QixDQUFULENBQWhCO0FBNE9BbUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbEksU0FBakIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTY2VuZUNvbnN0ID0gcmVxdWlyZShcInNjZW5lX2NvbnN0XCIpO1xyXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIilcclxuXHJcbnZhciBCdWlsZEl0ZW3jgIA9IGNjLkNsYXNzKHtcclxuXHRleHRlbmRzOiBCYXNlQ2xhc3MsXHJcblxyXG5cdHByb3BlcnRpZXM6IHtcclxuXHRcdGRhdGE6IG51bGwsXHJcblx0XHRidWlsZF9pc19sb2NrOiBudWxsLFxyXG5cdFx0Y2FuX2NsaWNrOiBmYWxzZSxcclxuXHRcdGlzQnVpbGQ6IGZhbHNlLFxyXG5cdFx0Y29uZmlnOiBudWxsLFxyXG5cdFx0YnVpbGRfdHlwZTogbnVsbCxcclxuXHRcdHJvb3Rfd25kOiBjYy5Ob2RlLFxyXG5cdFx0aWNvblNQOiBjYy5TcHJpdGUsXHJcblx0XHRyZWRfc3RhdGU6IG51bGwsXHJcblx0XHRyZWRfbmQ6IGNjLk5vZGUsXHJcblx0fSxcclxuXHJcblx0Y3RvcjogZnVuY3Rpb24oKSB7XHJcblx0XHR0aGlzLmRhdGEgPSBhcmd1bWVudHNbMF07XHJcblx0XHR0aGlzLnR5cGUgPSBhcmd1bWVudHNbMV07XHJcblxyXG5cdFx0dGhpcy5jcmVhdGVSb290V2luZCgpO1xyXG5cclxuXHRcdGlmICh0aGlzLnR5cGUgPT0gU2NlbmVDb25zdC5CdWlsZEl0ZW1UeXBlLmJ1aWxkKSB7XHJcblx0XHRcdHRoaXMuYnVpbGRfdHlwZSA9IHRoaXMuZGF0YS5jb25maWcudHlwZTtcclxuXHRcdFx0dGhpcy5pc0J1aWxkID0gKHRoaXMuYnVpbGRfdHlwZSA9PSBTY2VuZUNvbnN0LkJ1aWxkSXRlbVR5cGUuYnVpbGQpO1xyXG5cdFx0XHR0aGlzLmNvbmZpZyA9IHRoaXMuZGF0YS5jb25maWc7XHJcblx0XHRcdHRoaXMuY3JlYXRlSWNvbigpO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gU2NlbmVDb25zdC5CdWlsZEl0ZW1UeXBlLmVmZmVjdCkge1xyXG5cdFx0XHR0aGlzLmNyZWF0ZUVmZmVjdCgpO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gU2NlbmVDb25zdC5CdWlsZEl0ZW1UeXBlLm5wYykge1xyXG5cdFx0XHR0aGlzLmNyZWF0ZU5QQygpO1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdGNyZWF0ZVJvb3RXaW5kOiBmdW5jdGlvbigpIHtcclxuXHRcdHRoaXMuY29uX3NpemUgPSBjYy52Mig4MywgODApO1xyXG5cclxuXHRcdHZhciBidWlsZF9uYW1lID0gXCJcIjtcclxuXHRcdGlmICh0aGlzLnR5cGUgPT0gU2NlbmVDb25zdC5CdWlsZEl0ZW1UeXBlLmJ1aWxkKSB7XHJcblx0XHRcdGJ1aWxkX25hbWUgPSBcImd1aWRlc2lnbl9idWlsZF9cIiArIHRoaXMuZGF0YS5jb25maWcuYmlkO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMucm9vdF93bmQgPSBuZXcgY2MuTm9kZShidWlsZF9uYW1lKTtcclxuXHRcdHRoaXMucm9vdF93bmQuc2V0Q29udGVudFNpemUoODMsIDgwKTtcclxuXHRcdHRoaXMucm9vdF93bmQuc2V0QW5jaG9yUG9pbnQoMC41LCAwKTtcclxuXHJcblx0XHR2YXIgcm9vdF94ID0gKHR5cGVvZiB0aGlzLmRhdGEueCA9PSBcIm51bWJlclwiKSA/IHRoaXMuZGF0YS54IDogdGhpcy5kYXRhLmNvbmZpZy54O1xyXG5cdFx0dmFyIHJvb3RfeSA9ICh0eXBlb2YgdGhpcy5kYXRhLnkgPT0gXCJudW1iZXJcIikgPyB0aGlzLmRhdGEueSA6IHRoaXMuZGF0YS5jb25maWcueTtcclxuXHRcdHRoaXMucm9vdF93bmQuc2V0UG9zaXRpb24ocm9vdF94LCByb290X3kpO1xyXG5cdH0sXHJcblxyXG5cdGNyZWF0ZUljb246IGZ1bmN0aW9uKCkge1xyXG5cdFx0Ly8gdGhpcy5pY29uU1AgPSB0aGlzLnJvb3Rfd25kLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG5cdFx0dmFyIHNwX25kID0gbmV3IGNjLk5vZGUoKTtcclxuXHRcdHNwX25kLnNldEFuY2hvclBvaW50KDAuNSwgMCk7XHJcblx0XHR0aGlzLmljb25TUCA9IHNwX25kLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG5cdFx0dGhpcy5yb290X3duZC5hZGRDaGlsZChzcF9uZCk7XHJcblxyXG5cdFx0dGhpcy5idXR0b24gPSB0aGlzLnJvb3Rfd25kLmFkZENvbXBvbmVudChjYy5CdXR0b24pO1xyXG5cdFx0dGhpcy5idXR0b24uaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuXHRcdHRoaXMuYnV0dG9uLnRyYW5zaXRpb24gPSBjYy5CdXR0b24uVHJhbnNpdGlvbi5TQ0FMRTtcclxuXHRcdHRoaXMuYnV0dG9uLmR1cmF0aW9uID0gMC4xO1xyXG5cdFx0dGhpcy5idXR0b24uem9vbVNjYWxlID0gMC45O1xyXG5cclxuXHRcdGlmICh0aGlzLmlzQnVpbGQpIHtcclxuXHRcdFx0dGhpcy5jcmVhdGVCdWlsZCgpO1xyXG5cdFx0fVxyXG5cdFx0Ly/jgIDnuqLngrlcclxuXHRcdHRoaXMucmVkX25kID0gbmV3IGNjLk5vZGUoKTtcclxuXHRcdHRoaXMucmVkX25kLnBvc2l0aW9uID0gY2MudjIodGhpcy5yb290X3duZC53aWR0aCAqIDAuMywgdGhpcy5yb290X3duZC5oZWlnaHQgKiAwLjgpO1xyXG5cdFx0dGhpcy5yb290X3duZC5hZGRDaGlsZCh0aGlzLnJlZF9uZCk7XHJcblx0XHR0aGlzLnJlZF9zcCA9IHRoaXMucmVkX25kLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG5cdFx0dmFyIHJlZF9yZXMgPSBQYXRoVG9vbC5nZXRVSUljb25QYXRoKFwiY2VudGVyc2NlbmVcIiwgXCJzY2VuZV8wXCIpO1xyXG5cdFx0TG9hZGVyTWFuYWdlci5nZXRJbnN0YW5jZSgpLmxvYWRSZXMocmVkX3JlcywgZnVuY3Rpb24gKHJlZF9zZikge1xyXG5cdFx0XHR0aGlzLnJlZF9zcC5zcHJpdGVGcmFtZSA9IHJlZF9zZjtcclxuXHRcdH0uYmluZCh0aGlzKSlcclxuXHRcdHRoaXMucmVkX25kLmFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5zZXRUaXBTdGF0dXMoKTtcclxuXHR9LFxyXG5cclxuXHRyZWdpc3RlckV2ZW50OiBmdW5jdGlvbigpIHtcclxuXHRcdGlmKHRoaXMuZGF0YSAmJiB0aGlzLmlzQnVpbGQpIHtcclxuXHRcdFx0dGhpcy5yb290X3duZC5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcblx0XHRcdFx0dmFyIHRvY2hJbmZvID0gZXZlbnQudG91Y2g7XHJcblx0XHRcdFx0dmFyIHN0YXJ0UG9zID0gZXZlbnQudG91Y2guZ2V0U3RhcnRMb2NhdGlvbigpO1xyXG5cdFx0XHRcdHZhciBsb2NhbFBvcyA9IGV2ZW50LnRvdWNoLmdldExvY2F0aW9uKCk7XHJcblx0XHRcdFx0dmFyIGRpcyA9IE1hdGguc3FydChNYXRoLnBvdyhzdGFydFBvcy54IC0gbG9jYWxQb3MueCwgMikgKyBNYXRoLnBvdyhzdGFydFBvcy55IC0gbG9jYWxQb3MueSwgMikpO1xyXG5cdFx0XHRcdGlmIChkaXMgPCA0MCkgdGhpcy5jbGlja0JidWlsZEl0ZW0oKTtcclxuXHRcdFx0fS5iaW5kKHRoaXMpKTtcclxuXHJcblx0XHRcdHRoaXMuYnVpbGRfdm9fdXBkYXRlID0gdGhpcy5kYXRhLmJpbmQodGhpcy5kYXRhLlVwZGF0ZV9zZWxmX2V2ZW50LCBmdW5jdGlvbihrZXkpe1xyXG5cdFx0XHRcdGlmIChrZXkgPT0gXCJsb2NrX3N0YXR1c1wiKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNldExvY2tTdGF0dXMoKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGtleSA9PSBcInRpcHNfc3RhdHVzXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2V0VGlwU3RhdHVzKCk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChrZXkgPT0gXCJmaWdodF9zdGF0dXNcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5maWdodFN0YXR1cygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fS5iaW5kKHRoaXMpKTtcclxuXHRcdH1cclxuXHR9LFxyXG4gXHJcblx0Y3JlYXRlQnVpbGQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGljb25OYW1lID0gXHRcInNjZW5lX1wiICsgdGhpcy5jb25maWcucmVzO1xyXG5cdFx0dmFyIGF0bGFzUGF0aCA9IFwidWlfcmVzL2NlbnRlcnNjZW5lL1wiICsgaWNvbk5hbWUgKyBcIi5wbmdcIjtcclxuXHRcdExvYWRlck1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5sb2FkUmVzKGF0bGFzUGF0aCwgZnVuY3Rpb24gKHJlc19vYmplY3QpIHtcclxuXHRcdFx0dGhpcy5pY29uU1Auc3ByaXRlRnJhbWUgPSByZXNfb2JqZWN0O1xyXG5cdFx0fS5iaW5kKHRoaXMpKVxyXG5cclxuXHRcdHRoaXMuc2V0TG9ja1N0YXR1cygpO1xyXG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KCk7XHJcblx0fSxcclxuXHJcblx0Y3JlYXRlRWZmZWN0OiBmdW5jdGlvbigpIHtcclxuXHRcdHZhciBzcF9ub2RlID0gbmV3IGNjLk5vZGUoXCJcIik7XHJcblx0XHRzcF9ub2RlLnBvc2l0aW9uID0gY2MudjIoMCwgdGhpcy5jb25fc2l6ZS55ICogMC41KTtcdFx0XHJcblx0XHR0aGlzLnJvb3Rfd25kLmFkZENoaWxkKHNwX25vZGUpO1xyXG4gICAgICAgIHRoaXMuc3BpbmUgPSBzcF9ub2RlLmFkZENvbXBvbmVudChzcC5Ta2VsZXRvbik7XHJcbiAgICAgICAgdGhpcy5zcGluZVBhdGggPSBQYXRoVG9vbC5nZXRTcGluZVBhdGgodGhpcy5kYXRhLnJlcywgXCJhY3Rpb25cIilcclxuXHJcbiAgICAgICAgTG9hZGVyTWFuYWdlci5nZXRJbnN0YW5jZSgpLmxvYWRSZXModGhpcy5zcGluZVBhdGgsIChmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3BpbmUuc2tlbGV0b25EYXRhID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLnNwaW5lLnNldEFuaW1hdGlvbigwLCBcImFjdGlvblwiLCB0cnVlKTtcclxuICAgICAgICB9KS5iaW5kKHRoaXMpKTtcclxuXHR9LFxyXG5cclxuXHRjcmVhdGVOUEM6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIHNwX25vZGUgPSBuZXcgY2MuTm9kZShcIlwiKTtcclxuXHRcdHNwX25vZGUuc2V0Q29udGVudFNpemUoY2MudjIoOTAsIDkwKSk7XHJcblx0XHRzcF9ub2RlLnBvc2l0aW9uID0gY2MudjIoMCwgdGhpcy5jb25fc2l6ZS55ICogMC41KTtcclxuXHRcdGlmICh0aGlzLmRhdGEuYmlkICE9PSAxMDIgJiYgdGhpcy5kYXRhLmJpZCAhPT0gMTUyKSB7XHJcblx0XHRcdC8vIHNwX25vZGUuYWRkQ29tcG9uZW50KGNjLkJsb2NrSW5wdXRFdmVudHMpO1xyXG5cdFx0XHRzcF9ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy5vblRvdWNoTnBjLmJpbmQodGhpcyksIHRoaXMpO1xyXG5cdFx0fVxyXG5cdFx0c3Bfbm9kZS50ZXN0X3JlcyA9IHRoaXMuZGF0YTtcclxuXHRcdHRoaXMucm9vdF93bmQuYWRkQ2hpbGQoc3Bfbm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3BpbmUgPSBzcF9ub2RlLmFkZENvbXBvbmVudChzcC5Ta2VsZXRvbik7XHJcbiAgICAgICAgdGhpcy5zcGluZVBhdGggPSBQYXRoVG9vbC5nZXRTcGluZVBhdGgodGhpcy5kYXRhLnJlcywgXCJhY3Rpb25cIilcclxuICAgICAgICB0aGlzLnNwaW5lLnNldEVuZExpc3RlbmVyKHRoaXMuYW5pbWFDb21wbGV0ZS5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgTG9hZGVyTWFuYWdlci5nZXRJbnN0YW5jZSgpLmxvYWRSZXModGhpcy5zcGluZVBhdGgsIChmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3BpbmUuc2tlbGV0b25EYXRhID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLnNwaW5lLnNldEFuaW1hdGlvbigwLCBcImFjdGlvbjFcIiwgdHJ1ZSk7XHJcbiAgICAgICAgfSkuYmluZCh0aGlzKSk7XHJcblx0fSxcclxuXHJcblx0b25Ub3VjaE5wYzogZnVuY3Rpb24oZXZlbnQpIHtcclxuXHRcdC8vIGNjLmxvZyhldmVudCk7XHJcblx0XHQvLyBjYy5sb2coXCJUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRcIik7XHJcblx0fSxcclxuXHJcblx0YW5pbWFDb21wbGV0ZTogZnVuY3Rpb24odGVzMSwgdGVzMikge1xyXG5cdFx0Ly8gY2MubG9nKFwiSUlJSUlJSUlJSUlJSUlJSUlJSUlJXCIpO1xyXG5cdFx0Ly8gY2MubG9nKHRlczEpO1xyXG5cdFx0Ly8gY2MubG9nKHRlczIpO1xyXG5cdH0sXHJcblxyXG5cdHNldExvY2tTdGF0dXM6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuYnVpbGRfaXNfbG9jayA9PT0gbnVsbCB8fCB0aGlzLmJ1aWxkX2lzX2xvY2sgIT09IHRoaXMuZGF0YS5pc19sb2NrKSB7XHRcdFxyXG5cdFx0XHR0aGlzLmJ1aWxkX2lzX2xvY2sgPSB0aGlzLmRhdGEuaXNfbG9jaztcclxuXHRcdFx0aWYgKCF0aGlzLmRhdGEuaXNfbG9jaykge1xyXG5cdFx0XHRcdHRoaXMuaWNvblNQLnNldFN0YXRlKGNjLlNwcml0ZS5TdGF0ZS5OT1JNQUwpO1xyXG5cdFx0XHRcdC8vIOino+mUgeeahOaXtuWAmeiuvue9ruS4i+e6oueCuVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuaWNvblNQLnNldFN0YXRlKGNjLlNwcml0ZS5TdGF0ZS5HUkFZKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdGNsaWNrQmJ1aWxkSXRlbTogZnVuY3Rpb24oKSB7XHJcblx0XHRpZiAoIXRoaXMuZGF0YSkgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuZGF0YS5pc19sb2NrKSB7XHJcblx0XHRcdG1lc3NhZ2UodGhpcy5kYXRhLmRlc2MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5ncm91cF9pZCAhPSAwKSB7XHJcblxyXG5cdFx0XHR9XHJcblx0XHRcdC8vIG1lc3NhZ2UoVXRpbHMuVEkxOE4odGhpcy5kYXRhLmNvbmZpZy5uYW1lICsgXCLmnKrlvIDlj5FcIikpO1xyXG5cdFx0XHR2YXIgbWFpblNjZW5lQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWluc2NlbmVfY29udHJvbGxlclwiKS5nZXRJbnN0YW5jZSgpO1xyXG5cdFx0XHRtYWluU2NlbmVDb250cm9sbGVyLm9wZW5CdWlsZCh0aGlzLmRhdGEuY29uZmlnLmJpZCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0c2V0UmVkUG9pbnQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuZGF0YS5pc19sb2NrIHx8ICF0aGlzLmRhdGEpIHJldHVybjtcclxuXHRcdHZhciB0aXBJbmZvID0gdGhpcy5kYXRhLmdldFRpcHNTdGF0dXMoKTtcclxuXHR9LFxyXG5cclxuXHRzZXRUaXBTdGF0dXM6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuZGF0YS5pc19sb2NrIHx8ICF0aGlzLmRhdGEpICB7XHJcblx0XHRcdHRoaXMucmVkX25kLmFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIHN0YXR1cyA9IHRoaXMuZGF0YS5nZXRUaXBzU3RhdHVzKCk7XHJcblx0XHR0aGlzLnJlZF9uZC5hY3RpdmUgPSBzdGF0dXM7XHJcblx0fSxcclxuXHJcblx0ZGVsZXRlTWU6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMudHlwZSA9IFNjZW5lQ29uc3QuQnVpbGRJdGVtVHlwZS5lZmZlY3QpIHtcclxuXHRcdFx0dGhpcy5yb290X3duZC5kZXN0cm95KCk7XHJcblx0XHRcdExvYWRlck1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5yZWxlYXNlUmVzKHRoaXMuc3BpbmVQYXRoKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdFxyXG5cdGZpZ2h0U3RhdHVzOiBmdW5jdGlvbigpIHtcclxuXHRcdHZhciBzdGF0dXMgPSB0aGlzLmRhdGEuZ2V0RmlnaHRTdGF0dXMoKVxyXG5cdFx0aWYgKHN0YXR1cykge1xyXG5cdFx0XHRpZiAoIXRoaXMuZmlnaHRfbmQpIHtcclxuXHRcdFx0XHR0aGlzLmluaXRGaWdodEVmZmVudCgpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZmlnaHRfbmQuYWN0aXZlID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlnaHRfbmQpXHJcblx0XHRcdFx0dGhpcy5maWdodF9uZC5hY3RpdmUgPSBmYWxzZTtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRpbml0RmlnaHRFZmZlbnQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGZpZ2h0X25kID0gdGhpcy5maWdodF9uZCA9IG5ldyBjYy5Ob2RlKCk7XHJcblx0XHRmaWdodF9uZC55ID0gdGhpcy5yb290X3duZC5oZWlnaHQ7XHJcblx0XHR0aGlzLnJvb3Rfd25kLmFkZENoaWxkKGZpZ2h0X25kKTtcclxuXHRcdHRoaXMuZmlnaHRfZWZmZWN0ID0gZmlnaHRfbmQuYWRkQ29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuXHJcblx0XHR2YXIgZWZmZWN0X3JlcyA9IFBhdGhUb29sLmdldEVmZmVjdFJlcygxODYpO1xyXG5cdFx0dmFyIGVmZmVjdF9wYXRoID0gUGF0aFRvb2wuZ2V0U3BpbmVQYXRoKGVmZmVjdF9yZXMpO1xyXG5cdFx0TG9hZGVyTWFuYWdlci5nZXRJbnN0YW5jZSgpLmxvYWRSZXMoZWZmZWN0X3BhdGgsIGZ1bmN0aW9uIChlZmZlY3Rfc2QpIHtcclxuXHRcdFx0dGhpcy5maWdodF9lZmZlY3Quc2tlbGV0b25EYXRhID0gZWZmZWN0X3NkO1xyXG4gICAgICAgICAgICB0aGlzLmZpZ2h0X2VmZmVjdC5zZXRBbmltYXRpb24oMCwgXCJhY3Rpb25cIiwgdHJ1ZSk7XHJcblx0XHR9LmJpbmQodGhpcykpXHJcblx0fVxyXG5cclxufSk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEJ1aWxkSXRlbeOAgCJdfQ==
|