BlockView.js
24.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/scripts/prefabs/BlockView.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, '9a370Mc7IdB2ruEK58rhBMd', 'BlockView');
// scripts/prefabs/BlockView.ts
"use strict";
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var BattleConst_1 = require("../kernel/battle/BattleConst");
var BlcokSkillFireworkView_1 = require("./BlcokSkillFireworkView");
var BlockSkillBombView_1 = require("./BlockSkillBombView");
var BlockSkillSwitcherView_1 = require("./BlockSkillSwitcherView");
var ObjBaseView_1 = require("./ObjBaseView");
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var BlockView = /** @class */ (function (_super) {
__extends(BlockView, _super);
function BlockView() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._imgSkillIcon = null;
_this._imgEffect = null;
_this._txt = null;
_this._light = null;
_this._mapView = null;
_this._txtOffset = new cc.Vec2();
_this._skillView = null;
return _this;
//#endregion
}
Object.defineProperty(BlockView.prototype, "owner", {
get: function () { return this._owner; },
enumerable: false,
configurable: true
});
//#region interface
BlockView.prototype.onHit = function () {
_super.prototype.onHit.call(this);
var ani = this._txt.getComponent(cc.Animation);
ani && !ani.getAnimationState('fx_block_txt_hit').isPlaying && ani.play('fx_block_txt_hit', 0);
if (this._light) {
var lightAni = this._light.getComponent(cc.Animation);
lightAni && !lightAni.getAnimationState('fx_block_light_hit').isPlaying && lightAni.play('fx_block_light_hit', 0) && (this._light.active = true);
}
this._skillView && this._skillView.onCollision();
};
BlockView.prototype.onDead = function () {
this._mapView.playBlockParticle(this.node);
this._skillView && this._skillView.onDead();
this._imgEffect.destroy();
this._imgSkillIcon.destroy();
this._txt.destroy();
this._light && this._light.destroy();
_super.prototype.onDead.call(this);
};
//#endregion
//#region life cycle
BlockView.prototype.init = function (owner, mapView) {
this._imgSkillIcon = this.node.getChildByName('imgIcon');
this._imgEffect = this.node.getChildByName('imgEffect');
this._imgEffect.active = false;
this._txt = this.node.getChildByName('txt');
this._txtOffset.x = this._txt.x;
this._txtOffset.y = this._txt.y;
this._mapView = mapView;
this._light = this.node.getChildByName('light');
this._light && (this._light.active = false);
_super.prototype.init.call(this, owner, mapView);
//分层显示
this._imgEffect.removeFromParent();
this._txt.removeFromParent();
this._imgSkillIcon.removeFromParent();
this._light && this._light.removeFromParent();
mapView.effectLayer.addChild(this._imgEffect);
mapView.txtLayer.addChild(this._txt);
mapView.blockIconLayer.addChild(this._imgSkillIcon);
this._light && mapView.lightLayer.addChild(this._light);
if (owner.skill && owner.skill.skillId == BattleConst_1.BlockSkill.BOMB) {
this._skillView = new BlockSkillBombView_1.BlockSkillBombView(this, this._mapView);
}
else if (owner.skill && owner.skill.skillId >= BattleConst_1.BlockSkill.FIREWORK_VERTICAL && owner.skill.skillId <= BattleConst_1.BlockSkill.FIREWORK_DOUBLE) {
this._skillView = new BlcokSkillFireworkView_1.BlockSkillFireworkView(this, this._mapView);
}
else if (owner.skill && owner.skill.skillId == BattleConst_1.BlockSkill.SWITCHER) {
this._skillView = new BlockSkillSwitcherView_1.BlockSkillSwitcherView(this, mapView);
}
this.updateSkillIcon();
// this.onVisibleChange()
};
BlockView.prototype.onPreview = function () {
_super.prototype.onPreview.call(this);
this._txt.active = false;
};
BlockView.prototype.onDestroy = function () {
_super.prototype.onDestroy.call(this);
this._skillView && this._skillView.onDestroy();
this._skillView = null;
this._imgEffect = null;
this._imgSkillIcon = null;
this._txt = null;
};
//#endregion
//#region override method
BlockView.prototype.onPositionChange = function (x, y) {
_super.prototype.onPositionChange.call(this, x, y);
this._imgEffect.setPosition(x, y);
this._txt.setPosition(x + this._txtOffset.x, y + this._txtOffset.y);
this._imgSkillIcon.setPosition(x, y);
this._light && this._light.setPosition(x, y);
this._skillView && this._skillView.onPositionChange(x, y);
};
BlockView.prototype.onLazyUpdate = function () {
this._txt.getComponent(cc.Label).string = this.owner.hp.toString();
};
BlockView.prototype.onVisibleChange = function () {
_super.prototype.onVisibleChange.call(this);
this._imgEffect.active = this._visible;
this._imgEffect.active = false; //暂时屏蔽
this._imgSkillIcon.active = (this._visible && this.owner.skill && this.owner.skill.skillImg != '');
this._txt.active = this._visible && this.owner.hp > 0;
};
//#endregion
//#region private method
BlockView.prototype.updateSkillIcon = function () {
var _this = this;
if (this.owner.skill && this.owner.skill.skillImg != "") {
// this._imgSkillIcon.active = true;
cc.resources.load("battle/" + this.owner.skill.skillImg, cc.SpriteFrame, function (err, spf) {
// const frame = (spf as cc.SpriteAtlas).getSpriteFrame(this._owner.iconName);
if (!err && _this.isValid) { //有可能销毁后进入回调,增加判断 isValid
_this._imgSkillIcon.getComponent(cc.Sprite).spriteFrame = spf;
}
else {
// console.error(err.message);
}
});
}
else {
this._imgSkillIcon.active = false;
}
};
BlockView = __decorate([
ccclass
], BlockView);
return BlockView;
}(ObjBaseView_1.default));
exports.default = BlockView;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0c1xccHJlZmFic1xcQmxvY2tWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDREQUEwRDtBQUcxRCxtRUFBa0U7QUFDbEUsMkRBQTBEO0FBQzFELG1FQUFrRTtBQUVsRSw2Q0FBd0M7QUFFbEMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFHNUM7SUFBdUMsNkJBQVc7SUFBbEQ7UUFBQSxxRUErSkM7UUE3SmEsbUJBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsZ0JBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsVUFBSSxHQUFZLElBQUksQ0FBQztRQUNyQixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3pCLGNBQVEsR0FBWSxJQUFJLENBQUM7UUFFdkIsZ0JBQVUsR0FBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QyxnQkFBVSxHQUF1QixJQUFJLENBQUM7O1FBa0o5QyxZQUFZO0lBQ2hCLENBQUM7SUF4Skcsc0JBQUksNEJBQUs7YUFBVCxjQUF5QixPQUFPLElBQUksQ0FBQyxNQUFtQixDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFPM0QsbUJBQW1CO0lBRW5CLHlCQUFLLEdBQUw7UUFDSSxpQkFBTSxLQUFLLFdBQUUsQ0FBQztRQUVkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFB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YSxTQUFTLENBK0o3QjtJQUFELGdCQUFDO0NBL0pELEFBK0pDLENBL0pzQyxxQkFBVyxHQStKakQ7a0JBL0pvQixTQUFTIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IHsgQmxvY2tTa2lsbCB9IGZyb20gXCIuLi9rZXJuZWwvYmF0dGxlL0JhdHRsZUNvbnN0XCI7XHJcbmltcG9ydCB7IEJsb2NrRGF0YSB9IGZyb20gXCIuLi9rZXJuZWwvYmF0dGxlL21hcC9CbG9ja0RhdGFcIjtcclxuaW1wb3J0IHsgTWFwVmlldyB9IGZyb20gXCIuLi9rZXJuZWwvYmF0dGxlL21hcC9NYXBWaWV3XCI7XHJcbmltcG9ydCB7IEJsb2NrU2tpbGxGaXJld29ya1ZpZXcgfSBmcm9tIFwiLi9CbGNva1NraWxsRmlyZXdvcmtWaWV3XCI7XHJcbmltcG9ydCB7IEJsb2NrU2tpbGxCb21iVmlldyB9IGZyb20gXCIuL0Jsb2NrU2tpbGxCb21iVmlld1wiO1xyXG5pbXBvcnQgeyBCbG9ja1NraWxsU3dpdGNoZXJWaWV3IH0gZnJvbSBcIi4vQmxvY2tTa2lsbFN3aXRjaGVyVmlld1wiO1xyXG5pbXBvcnQgeyBCbGNva1NraWxsVmlld0Jhc2UgfSBmcm9tIFwiLi9CbG9ja1NraWxsVmlld0Jhc2VcIjtcclxuaW1wb3J0IE9iakJhc2VWaWV3IGZyb20gXCIuL09iakJhc2VWaWV3XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmxvY2tWaWV3IGV4dGVuZHMgT2JqQmFzZVZpZXcge1xyXG5cclxuICAgIHByb3RlY3RlZCBfaW1nU2tpbGxJY29uOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBfaW1nRWZmZWN0OiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBfdHh0OiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBfbGlnaHQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIGdldCBvd25lcigpOiBCbG9ja0RhdGEgeyByZXR1cm4gdGhpcy5fb3duZXIgYXMgQmxvY2tEYXRhOyB9XHJcbiAgICBwcml2YXRlIF9tYXBWaWV3OiBNYXBWaWV3ID0gbnVsbDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX3R4dE9mZnNldDogY2MuVmVjMiA9IG5ldyBjYy5WZWMyKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfc2tpbGxWaWV3OiBCbGNva1NraWxsVmlld0Jhc2UgPSBudWxsO1xyXG5cclxuICAgIC8vI3JlZ2lvbiBpbnRlcmZhY2VcclxuXHJcbiAgICBvbkhpdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5vbkhpdCgpO1xyXG5cclxuICAgICAgICBsZXQgYW5pID0gdGhpcy5fdHh0LmdldENvbXBvbmVudChjYy5BbmltYXRpb24pO1xyXG4gICAgICAgIGFuaSAmJiAhYW5pLmdldEFuaW1hdGlvblN0YXRlKCdmeF9ibG9ja190eHRfaGl0JykuaXNQbGF5aW5nICYmIGFuaS5wbGF5KCdmeF9ibG9ja190eHRfaGl0JywgMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9saWdodCkge1xyXG4gICAgICAgICAgICBsZXQgbGlnaHRBbmkgPSB0aGlzLl9saWdodC5nZXRDb21wb25lbnQoY2MuQW5pbWF0aW9uKTtcclxuICAgICAgICAgICAgbGlnaHRBbmkgJiYgIWxpZ2h0QW5pLmdldEFuaW1hdGlvblN0YXRlKCdmeF9ibG9ja19saWdodF9oaXQnKS5pc1BsYXlpbmcgJiYgbGlnaHRBbmkucGxheSgnZnhfYmxvY2tfbGlnaHRfaGl0JywgMCkgJiYgKHRoaXMuX2xpZ2h0LmFjdGl2ZSA9IHRydWUpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9za2lsbFZpZXcgJiYgdGhpcy5fc2tpbGxWaWV3Lm9uQ29sbGlzaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZWFkKCkge1xyXG5cclxuICAgICAgICB0aGlzLl9tYXBWaWV3LnBsYXlCbG9ja1BhcnRpY2xlKHRoaXMubm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3NraWxsVmlldyAmJiB0aGlzLl9za2lsbFZpZXcub25EZWFkKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2ltZ0VmZmVjdC5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5faW1nU2tpbGxJY29uLmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLl90eHQuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuX2xpZ2h0ICYmIHRoaXMuX2xpZ2h0LmRlc3Ryb3koKTtcclxuICAgICAgICBzdXBlci5vbkRlYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gbGlmZSBjeWNsZVxyXG5cclxuICAgIGluaXQob3duZXI6IEJsb2NrRGF0YSwgbWFwVmlldzogTWFwVmlldykge1xyXG5cclxuICAgICAgICB0aGlzLl9pbWdTa2lsbEljb24gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ2ltZ0ljb24nKTtcclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3QgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ2ltZ0VmZmVjdCcpO1xyXG4gICAgICAgIHRoaXMuX2ltZ0VmZmVjdC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl90eHQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ3R4dCcpO1xyXG4gICAgICAgIHRoaXMuX3R4dE9mZnNldC54ID0gdGhpcy5fdHh0Lng7XHJcbiAgICAgICAgdGhpcy5fdHh0T2Zmc2V0LnkgPSB0aGlzLl90eHQueTtcclxuICAgICAgICB0aGlzLl9tYXBWaWV3ID0gbWFwVmlldztcclxuICAgICAgICB0aGlzLl9saWdodCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnbGlnaHQnKTtcclxuICAgICAgICB0aGlzLl9saWdodCAmJiAodGhpcy5fbGlnaHQuYWN0aXZlID0gZmFsc2UpO1xyXG5cclxuICAgICAgICBzdXBlci5pbml0KG93bmVyLCBtYXBWaWV3KTtcclxuXHJcbiAgICAgICAgLy/liIblsYLmmL7npLpcclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3QucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgIHRoaXMuX3R4dC5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgdGhpcy5faW1nU2tpbGxJY29uLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICB0aGlzLl9saWdodCAmJiB0aGlzLl9saWdodC5yZW1vdmVGcm9tUGFyZW50KCk7XHJcblxyXG4gICAgICAgIG1hcFZpZXcuZWZmZWN0TGF5ZXIuYWRkQ2hpbGQodGhpcy5faW1nRWZmZWN0KTtcclxuICAgICAgICBtYXBWaWV3LnR4dExheWVyLmFkZENoaWxkKHRoaXMuX3R4dCk7XHJcbiAgICAgICAgbWFwVmlldy5ibG9ja0ljb25MYXllci5hZGRDaGlsZCh0aGlzLl9pbWdTa2lsbEljb24pO1xyXG4gICAgICAgIHRoaXMuX2xpZ2h0ICYmIG1hcFZpZXcubGlnaHRMYXllci5hZGRDaGlsZCh0aGlzLl9saWdodClcclxuXHJcbiAgICAgICAgaWYgKG93bmVyLnNraWxsICYmIG93bmVyLnNraWxsLnNraWxsSWQgPT0gQmxvY2tTa2lsbC5CT01CKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NraWxsVmlldyA9IG5ldyBCbG9ja1NraWxsQm9tYlZpZXcodGhpcywgdGhpcy5fbWFwVmlldyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG93bmVyLnNraWxsICYmIG93bmVyLnNraWxsLnNraWxsSWQgPj0gQmxvY2tTa2lsbC5GSVJFV09SS19WRVJUSUNBTCAmJiBvd25lci5za2lsbC5za2lsbElkIDw9IEJsb2NrU2tpbGwuRklSRVdPUktfRE9VQkxFKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NraWxsVmlldyA9IG5ldyBCbG9ja1NraWxsRmlyZXdvcmtWaWV3KHRoaXMsIHRoaXMuX21hcFZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChvd25lci5za2lsbCAmJiBvd25lci5za2lsbC5za2lsbElkID09IEJsb2NrU2tpbGwuU1dJVENIRVIpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2tpbGxWaWV3ID0gbmV3IEJsb2NrU2tpbGxTd2l0Y2hlclZpZXcodGhpcywgbWFwVmlldyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTa2lsbEljb24oKTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5vblZpc2libGVDaGFuZ2UoKVxyXG4gICAgfVxyXG5cclxuICAgIG9uUHJldmlldygpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5vblByZXZpZXcoKTtcclxuICAgICAgICB0aGlzLl90eHQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm9uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuX3NraWxsVmlldyAmJiB0aGlzLl9za2lsbFZpZXcub25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5fc2tpbGxWaWV3ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2ltZ1NraWxsSWNvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fdHh0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gb3ZlcnJpZGUgbWV0aG9kXHJcblxyXG4gICAgcHJvdGVjdGVkIG9uUG9zaXRpb25DaGFuZ2UoeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5vblBvc2l0aW9uQ2hhbmdlKHgsIHkpO1xyXG5cclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3Quc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgdGhpcy5fdHh0LnNldFBvc2l0aW9uKHggKyB0aGlzLl90eHRPZmZzZXQueCwgeSArIHRoaXMuX3R4dE9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl9pbWdTa2lsbEljb24uc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHQgJiYgdGhpcy5fbGlnaHQuc2V0UG9zaXRpb24oeCwgeSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3NraWxsVmlldyAmJiB0aGlzLl9za2lsbFZpZXcub25Qb3NpdGlvbkNoYW5nZSh4LCB5KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25MYXp5VXBkYXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3R4dC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMub3duZXIuaHAudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25WaXNpYmxlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm9uVmlzaWJsZUNoYW5nZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3QuYWN0aXZlID0gdGhpcy5fdmlzaWJsZTtcclxuICAgICAgICB0aGlzLl9pbWdFZmZlY3QuYWN0aXZlID0gZmFsc2U7IC8v5pqC5pe25bGP6JS9XHJcbiAgICAgICAgdGhpcy5faW1nU2tpbGxJY29uLmFjdGl2ZSA9ICh0aGlzLl92aXNpYmxlICYmIHRoaXMub3duZXIuc2tpbGwgJiYgdGhpcy5vd25lci5za2lsbC5za2lsbEltZyAhPSAnJyk7XHJcbiAgICAgICAgdGhpcy5fdHh0LmFjdGl2ZSA9IHRoaXMuX3Zpc2libGUgJiYgdGhpcy5vd25lci5ocCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kXHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVTa2lsbEljb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3duZXIuc2tpbGwgJiYgdGhpcy5vd25lci5za2lsbC5za2lsbEltZyAhPSBcIlwiKSB7XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLl9pbWdTa2lsbEljb24uYWN0aXZlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKFwiYmF0dGxlL1wiICsgdGhpcy5vd25lci5za2lsbC5za2lsbEltZywgY2MuU3ByaXRlRnJhbWUsIChlcnIsIHNwZikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgZnJhbWUgPSAoc3BmIGFzIGNjLlNwcml0ZUF0bGFzKS5nZXRTcHJpdGVGcmFtZSh0aGlzLl9vd25lci5pY29uTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVyciAmJiB0aGlzLmlzVmFsaWQpIHsgLy/mnInlj6/og73plIDmr4HlkI7ov5vlhaXlm57osIPvvIzlop7liqDliKTmlq0gaXNWYWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ltZ1NraWxsSWNvbi5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwZiBhcyBjYy5TcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faW1nU2tpbGxJY29uLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyNlbmRyZWdpb25cclxufVxyXG4iXX0=