339 lines
44 KiB
JavaScript
339 lines
44 KiB
JavaScript
|
|
(function() {
|
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
|
var __module = nodeEnv ? module : {exports:{}};
|
|
var __filename = 'preview-scripts/assets/Script/GuideManager.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, 'effe2nlNnBES4H9tFM4r38Z', 'GuideManager');
|
|
// Script/GuideManager.ts
|
|
|
|
"use strict";
|
|
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 _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
|
var GuideManager = /** @class */ (function (_super) {
|
|
__extends(GuideManager, _super);
|
|
function GuideManager() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
_this.Tip = null;
|
|
_this.FoodPlist = null;
|
|
_this.Btn_New = null;
|
|
_this.Btn_Hear = null;
|
|
_this.Btn_See = null;
|
|
_this.Plant = null;
|
|
return _this;
|
|
}
|
|
GuideManager.prototype.onLoad = function () {
|
|
this.custom = 0;
|
|
};
|
|
GuideManager.prototype.start = function () {
|
|
};
|
|
//初始化数据
|
|
GuideManager.prototype.init = function () {
|
|
this.voiceSpriteFrame = this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame;
|
|
"";
|
|
this.node.getChildByName("jumpBtn").active = true;
|
|
this.node.getChildByName("nextBtn").active = false;
|
|
cc.tween(this.node.getChildByName("jumpBtn"))
|
|
.to(0.35, { opacity: 255 })
|
|
.start();
|
|
var tip = cc.fx.tipType.tipOne;
|
|
var label = this.node.getChildByName("tip1").getComponent(cc.Label);
|
|
cc.fx.GameTool.typingAni(label, tip, this.startGame.bind(this), this);
|
|
this.initData();
|
|
};
|
|
GuideManager.prototype.initData = function () {
|
|
this.customData = [
|
|
{
|
|
"item": "putao",
|
|
"type": 1,
|
|
"right": 1,
|
|
},
|
|
{
|
|
"item": "taozi",
|
|
"type": 2,
|
|
"right": 1,
|
|
},
|
|
{
|
|
"item": "putao",
|
|
"type": 2,
|
|
"right": 3,
|
|
},
|
|
{
|
|
"item": "taozi",
|
|
"type": 1,
|
|
"right": 2,
|
|
},
|
|
{
|
|
"item": "putao",
|
|
"type": 1,
|
|
"right": 2,
|
|
},
|
|
];
|
|
};
|
|
GuideManager.prototype.passVoice = function () {
|
|
var _this = this;
|
|
// cc.fx.AudioManager._instance.playMusicGame();
|
|
var voice = this.node.getChildByName("voiceTip");
|
|
voice.getChildByName("startBtn").getComponent(cc.Button).interactable = false;
|
|
voice.getChildByName("playBtn").getComponent(cc.Button).interactable = false;
|
|
cc.tween(voice)
|
|
.to(0.5, { opacity: 0 })
|
|
.call(function () {
|
|
voice.active = false;
|
|
})
|
|
.start();
|
|
setTimeout(function () {
|
|
_this.init();
|
|
}, 1000);
|
|
};
|
|
GuideManager.prototype.playVoice = function () {
|
|
cc.fx.AudioManager._instance.playEffect("taozi_audio", null);
|
|
};
|
|
GuideManager.prototype.jumpClick = function () {
|
|
cc.director.loadScene("GameScene");
|
|
};
|
|
GuideManager.prototype.nextClick = function () {
|
|
var _this = this;
|
|
//第一步
|
|
this.node.getChildByName("nextBtn").active = false;
|
|
var label = this.node.getChildByName("tip1").getComponent(cc.Label);
|
|
if (this.custom == 0) {
|
|
cc.tween(this.node.getChildByName("tip1"))
|
|
.to(0.2, { opacity: 0 })
|
|
.call(function () {
|
|
label.string = "";
|
|
})
|
|
.to(0.1, { opacity: 255 })
|
|
.call(function () {
|
|
var tip = cc.fx.tipType.tipTwo;
|
|
cc.fx.GameTool.typingAni(label, tip, _this.startGame.bind(_this), _this);
|
|
})
|
|
.start();
|
|
}
|
|
else if (this.custom == 1) {
|
|
this.node.getChildByName("nextBtn").active = false;
|
|
this.node.getChildByName("jumpBtn").active = false;
|
|
cc.tween(this.node.getChildByName("tip1"))
|
|
.to(0.2, { opacity: 0 })
|
|
.call(function () {
|
|
label.string = "";
|
|
_this.nextLevel();
|
|
})
|
|
.start();
|
|
}
|
|
this.custom += 1;
|
|
};
|
|
GuideManager.prototype.nextLevel = function () {
|
|
var _this = this;
|
|
this.choice = 0;
|
|
this.Btn_Hear.active = true;
|
|
this.Btn_New.active = true;
|
|
this.Btn_See.active = true;
|
|
this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
var name = this.customData[this.custom - 2].item;
|
|
if (this.customData[this.custom - 2].type == 1) {
|
|
this.Plant.getChildByName("name").getComponent(cc.Label).string = cc.fx.GameTool.getFoodName(name);
|
|
name = "prop_" + name;
|
|
this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.FoodPlist["_spriteFrames"][name];
|
|
this.now_Food = name;
|
|
cc.tween(this.Plant)
|
|
.to(0.2, { opacity: 255 })
|
|
.call(function () {
|
|
_this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
_this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
_this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
})
|
|
.start();
|
|
}
|
|
else {
|
|
this.Plant.getChildByName("name").getComponent(cc.Label).string = "";
|
|
this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.voiceSpriteFrame;
|
|
var audioName = name + "_audio";
|
|
name = "audio" + name;
|
|
this.now_Food = name;
|
|
cc.fx.AudioManager._instance.playEffect(audioName, null);
|
|
cc.tween(this.Plant)
|
|
.to(0.2, { opacity: 255 })
|
|
.call(function () {
|
|
_this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
_this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
_this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = true;
|
|
})
|
|
.start();
|
|
}
|
|
//关卡+1
|
|
};
|
|
//新植物按钮
|
|
GuideManager.prototype.click_Btn = function (customData, data) {
|
|
var _this = this;
|
|
//关掉计时器 处理逻辑之前,先行关掉按钮开关
|
|
if (data == "Btn_New") {
|
|
this.choice = 1;
|
|
this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
}
|
|
else if (data == "Btn_Hear") {
|
|
this.choice = 2;
|
|
this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
}
|
|
else if (data == "Btn_See") {
|
|
this.choice = 3;
|
|
this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
}
|
|
var target = this[data];
|
|
var label = this.Tip.getChildByName("content").getComponent(cc.Label);
|
|
//正确
|
|
if (this.choice == this.customData[this.custom - 2].right) {
|
|
cc.fx.AudioManager._instance.playEffect("yes", null);
|
|
this.Tip.stopAllActions();
|
|
this.Tip.active = false;
|
|
this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
target.getChildByName("err").active = false;
|
|
target.getChildByName("correct").active = true;
|
|
setTimeout(function () {
|
|
_this.Btn_New.getChildByName("nomal").active = true;
|
|
_this.Btn_New.getChildByName("err").active = false;
|
|
_this.Btn_New.getChildByName("correct").active = false;
|
|
_this.Btn_Hear.getChildByName("nomal").active = true;
|
|
_this.Btn_Hear.getChildByName("err").active = false;
|
|
_this.Btn_Hear.getChildByName("correct").active = false;
|
|
_this.Btn_See.getChildByName("nomal").active = true;
|
|
_this.Btn_See.getChildByName("err").active = false;
|
|
_this.Btn_See.getChildByName("correct").active = false;
|
|
_this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
_this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
_this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false;
|
|
_this.custom += 1;
|
|
if (_this.custom >= 7) {
|
|
_this.node.getChildByName("againBtn").active = true;
|
|
_this.node.getChildByName("startBtn").active = true;
|
|
_this.Btn_Hear.active = false;
|
|
_this.Btn_New.active = false;
|
|
_this.Btn_See.active = false;
|
|
}
|
|
else
|
|
_this.nextLevel();
|
|
}, 1000);
|
|
}
|
|
else {
|
|
cc.fx.AudioManager._instance.playEffect("yes", null);
|
|
var tipTemp = '葡萄刚才出现过呢';
|
|
this.Tip.active = true;
|
|
target.getChildByName("err").active = true;
|
|
target.getChildByName("correct").active = false;
|
|
switch ((this.custom - 2)) {
|
|
case 0:
|
|
tipTemp = "这是这局游戏第一次出现葡萄";
|
|
break;
|
|
case 1:
|
|
tipTemp = "这是这局游戏第一次出现桃子";
|
|
break;
|
|
case 2:
|
|
if (this.choice == 2)
|
|
tipTemp = '上次遇到葡萄时,似乎不是听到的吧';
|
|
break;
|
|
case 3:
|
|
if (this.choice == 3)
|
|
tipTemp = '上次遇到桃子时,似乎不是看到的吧';
|
|
else
|
|
tipTemp = '桃子刚才出现过呢';
|
|
break;
|
|
case 4:
|
|
if (this.choice == 3)
|
|
tipTemp = '之前确实看到过葡萄,但最近一次似乎不是看到的呢';
|
|
break;
|
|
}
|
|
label.string = tipTemp;
|
|
this.Tip.opacity = 255;
|
|
this.Tip.stopAllActions();
|
|
var self = this;
|
|
var action = cc.callFunc(function () {
|
|
self.Tip.active = false;
|
|
});
|
|
this.Tip.runAction(cc.sequence(cc.delayTime(2), cc.fadeIn(0.5), action));
|
|
}
|
|
};
|
|
//开始游戏
|
|
GuideManager.prototype.startGame = function () {
|
|
this.node.getChildByName("nextBtn").active = true;
|
|
cc.tween(this.node.getChildByName("nextBtn"))
|
|
.to(0.35, { opacity: 255 })
|
|
.start();
|
|
};
|
|
GuideManager.prototype.againClick = function () {
|
|
cc.director.loadScene("GuideScene");
|
|
};
|
|
GuideManager.prototype.onEnable = function () {
|
|
// cc.fx.Notifications.on("clickSun", this.clickSun, this);
|
|
};
|
|
GuideManager.prototype.onDisable = function () {
|
|
// cc.fx.Notifications.off("clickSun", this.clickSun);
|
|
};
|
|
GuideManager.prototype.update = function (dt) {
|
|
};
|
|
__decorate([
|
|
property(cc.Node)
|
|
], GuideManager.prototype, "Tip", void 0);
|
|
__decorate([
|
|
property(cc.SpriteAtlas)
|
|
], GuideManager.prototype, "FoodPlist", void 0);
|
|
__decorate([
|
|
property(cc.Node)
|
|
], GuideManager.prototype, "Btn_New", void 0);
|
|
__decorate([
|
|
property(cc.Node)
|
|
], GuideManager.prototype, "Btn_Hear", void 0);
|
|
__decorate([
|
|
property(cc.Node)
|
|
], GuideManager.prototype, "Btn_See", void 0);
|
|
__decorate([
|
|
property(cc.Node)
|
|
], GuideManager.prototype, "Plant", void 0);
|
|
GuideManager = __decorate([
|
|
ccclass
|
|
], GuideManager);
|
|
return GuideManager;
|
|
}(cc.Component));
|
|
exports.default = GuideManager;
|
|
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHdWlkZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBUztBQUNILElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRTFDO0lBQTBDLGdDQUFZO0lBQXREO1FBQUEscUVBK1JDO1FBNVJHLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFHcEIsZUFBUyxHQUFtQixJQUFJLENBQUM7UUFHakMsYUFBTyxHQUFZLElBQUksQ0FBQztRQUV4QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLGFBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsV0FBSyxHQUFZLElBQUksQ0FBQzs7SUFnUjFCLENBQUM7SUFwUUcsNkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCw0QkFBSyxHQUFMO0lBRUEsQ0FBQztJQUNELE9BQU87SUFDUCwyQkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQUEsRUFBRSxDQUFBO1FBQ2hHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzVDLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7YUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDVCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELCtCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2Q7Z0JBQ0ksTUFBTSxFQUFFLE9BQU87Z0JBQ2YsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFDLENBQUM7YUFDWjtZQUNEO2dCQUNJLE1BQU0sRUFBRSxPQUFPO2dCQUNmLE1BQU0sRUFBRSxDQUFDO2dCQUNULE9BQU8sRUFBQyxDQUFDO2FBQ1o7WUFDRDtnQkFDSSxNQUFNLEVBQUUsT0FBTztnQkFDZixNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLEVBQUMsQ0FBQzthQUNaO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLE9BQU87Z0JBQ2YsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFDLENBQUM7YUFDWjtZQUNEO2dCQUNJLE1BQU0sRUFBRSxPQUFPO2dCQUNmLE1BQU0sRUFBRSxDQUFDO2dCQUNULE9BQU8sRUFBQyxDQUFDO2FBQ1o7U0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELGdDQUFTLEdBQVQ7UUFBQSxpQkFjQztRQWJHLGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5RSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM3RSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNkLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDbkIsSUFBSSxDQUFDO1lBQ0YsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7UUFDVCxVQUFVLENBQUM7WUFDUCxLQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELGdDQUFTLEdBQVQ7UUFDSSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZ0NBQVMsR0FBVDtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxnQ0FBUyxHQUFUO1FBQUEsaUJBOEJDO1FBN0JHLEtBQUs7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEUsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUNoQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN6QyxFQUFFLENBQUMsR0FBRyxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsRUFBQyxDQUFDO2lCQUNuQixJQUFJLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO2lCQUNELEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7aUJBQ3JCLElBQUksQ0FBQztnQkFDRixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxFQUFDLEtBQUksQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQztpQkFDRCxLQUFLLEVBQUUsQ0FBQztTQUNaO2FBQ0ksSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDbkQsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDekMsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsQ0FBQztpQkFDbkIsSUFBSSxDQUFDO2dCQUNGLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDO2lCQUNELEtBQUssRUFBRSxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQVMsR0FBVDtRQUFBLGlCQXlDQztRQXhDRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDbkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUNsRixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9DLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25HLElBQUksR0FBRyxPQUFPLEdBQUMsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2lCQUNuQixFQUFFLENBQUMsR0FBRyxFQUFDLEVBQUMsT0FBTyxFQUFDLEdBQUcsRUFBQyxDQUFDO2lCQUNyQixJQUFJLENBQUM7Z0JBQ0YsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNsRixLQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ2pGLEtBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNyRixDQUFDLENBQUM7aUJBQ0QsS0FBSyxFQUFFLENBQUM7U0FDWjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM5RixJQUFJLFNBQVMsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ2hDLElBQUksR0FBRyxPQUFPLEdBQUUsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hELEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxHQUFHLEVBQUMsQ0FBQztpQkFDckIsSUFBSSxDQUFDO2dCQUNGLEtBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDbEYsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNqRixLQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDckYsQ0FBQyxDQUFDO2lCQUNELEtBQUssRUFBRSxDQUFDO1NBQ1o7UUFDRCxNQUFNO0lBRVYsQ0FBQztJQUVELE9BQU87SUFDUCxnQ0FBUyxHQUFULFVBQVUsVUFBVSxFQUFDLElBQUk7UUFBekIsaUJBbUZDO1FBbEZHLHlCQUF5QjtRQUN6QixJQUFHLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQ3JGO2FBQ0ksSUFBRyxJQUFJLElBQUksVUFBVSxFQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUN0RjthQUNJLElBQUcsSUFBSSxJQUFJLFNBQVMsRUFBQztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDckY7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJO1FBQ0osSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7WUFDbkQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNuRixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDbEYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMvQyxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbEQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDcEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbkQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbEQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUNuRixLQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQ2xGLEtBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDbEYsS0FBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLElBQUcsS0FBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7b0JBQ2hCLEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25ELEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25ELEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDN0IsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUM1QixLQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQy9COztvQkFDSSxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ1o7YUFDRztZQUNBLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQTtZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNoRCxRQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsRUFBQztnQkFDbkIsS0FBSyxDQUFDO29CQUNGLE9BQU8sR0FBRyxlQUFlLENBQUM7b0JBQzFCLE1BQU07Z0JBQ1YsS0FBSyxDQUFDO29CQUNGLE9BQU8sR0FBRyxlQUFlLENBQUM7b0JBQzFCLE1BQU07Z0JBQ1YsS0FBSyxDQUFDO29CQUNGLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUFFLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQztvQkFDbEQsTUFBTTtnQkFDVixLQUFLLENBQUM7b0JBQ0YsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQUUsT0FBTyxHQUFFLGtCQUFrQixDQUFDOzt3QkFDM0MsT0FBTyxHQUFHLFVBQVUsQ0FBQTtvQkFDMUIsTUFBTTtnQkFDVixLQUFLLENBQUM7b0JBQ0YsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQUUsT0FBTyxHQUFHLHlCQUF5QixDQUFDO29CQUN6RCxNQUFNO2FBQ2I7WUFDRCxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtTQUN6RTtJQUNMLENBQUM7SUFFRCxNQUFNO0lBQ04sZ0NBQVMsR0FBVDtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEQsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM1QyxFQUFFLENBQUMsSUFBSSxFQUFDLEVBQUMsT0FBTyxFQUFDLEdBQUcsRUFBQyxDQUFDO2FBQ3RCLEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVELGlDQUFVLEdBQVY7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBSUQsK0JBQVEsR0FBUjtRQUNJLDJEQUEyRDtJQUMvRCxDQUFDO0lBQ0QsZ0NBQVMsR0FBVDtRQUNJLHNEQUFzRDtJQUMxRCxDQUFDO0lBQ0QsNkJBQU0sR0FBTixVQUFRLEVBQUU7SUFDVixDQUFDO0lBM1JEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7NkNBQ0U7SUFHcEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQzttREFDUTtJQUdqQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2lEQUNNO0lBRXhCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7a0RBQ087SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztpREFDTTtJQUV4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOytDQUNJO0lBZkwsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQStSaEM7SUFBRCxtQkFBQztDQS9SRCxBQStSQyxDQS9SeUMsRUFBRSxDQUFDLFNBQVMsR0ErUnJEO2tCQS9Sb0IsWUFBWSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4vbW9kdWxlL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5cclxuLy8g5Li75ri45oiP5o6n5Yi257G7XHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHdWlkZU1hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgVGlwOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIFxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgRm9vZFBsaXN0OiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBCdG5fTmV3OiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgQnRuX0hlYXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBCdG5fU2VlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgUGxhbnQ6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgdm9pY2VTcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWU7ICAgICAvL+aYr+WQpuWPr+eCueWHu1xyXG5cclxuICAgIG5lZWRsZVR3ZWVuOiBjYy5Ud2VlbjxjYy5TcHJpdGU+O1xyXG4gICAgZnVuYzogKCkgPT4gdm9pZDtcclxuXHJcbiAgICBjdXN0b206bnVtYmVyO1xyXG5cclxuICAgIG5vd19Gb29kOiBzdHJpbmc7ICAgICAgIC8v5b2T5YmN5YWz5Y2h5ZCN5a2X5L+h5oGvXHJcbiAgICBjdXN0b21EYXRhOiB7IGl0ZW06IHN0cmluZzsgdHlwZTogbnVtYmVyOyByaWdodDogbnVtYmVyOyB9W107XHJcbiAgICBjaG9pY2U6IG51bWJlcjtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIHRoaXMuY3VzdG9tID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgLy/liJ3lp4vljJbmlbDmja5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLnZvaWNlU3ByaXRlRnJhbWUgPSB0aGlzLlBsYW50LmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZTtgYFxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImp1bXBCdG5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuZXh0QnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImp1bXBCdG5cIikpXHJcbiAgICAgICAgLnRvKDAuMzUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICBsZXQgdGlwID0gY2MuZngudGlwVHlwZS50aXBPbmU7XHJcblxyXG4gICAgICAgIGxldCBsYWJlbCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcDFcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICBjYy5meC5HYW1lVG9vbC50eXBpbmdBbmkobGFiZWwsdGlwLHRoaXMuc3RhcnRHYW1lLmJpbmQodGhpcyksdGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdERhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0RGF0YSgpe1xyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0YSA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJpdGVtXCI6IFwicHV0YW9cIixcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiAxLFxyXG4gICAgICAgICAgICAgICAgXCJyaWdodFwiOjEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiaXRlbVwiOiBcInRhb3ppXCIsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogMixcclxuICAgICAgICAgICAgICAgIFwicmlnaHRcIjoxLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcIml0ZW1cIjogXCJwdXRhb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IDIsXHJcbiAgICAgICAgICAgICAgICBcInJpZ2h0XCI6MyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJpdGVtXCI6IFwidGFvemlcIixcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiAxLFxyXG4gICAgICAgICAgICAgICAgXCJyaWdodFwiOjIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiaXRlbVwiOiBcInB1dGFvXCIsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgIFwicmlnaHRcIjoyLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgIH1cclxuXHJcbiAgICBwYXNzVm9pY2UoKXtcclxuICAgICAgICAvLyBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlNdXNpY0dhbWUoKTtcclxuICAgICAgICBsZXQgdm9pY2UgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ2b2ljZVRpcFwiKTtcclxuICAgICAgICB2b2ljZS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHZvaWNlLmdldENoaWxkQnlOYW1lKFwicGxheUJ0blwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICBjYy50d2Vlbih2b2ljZSlcclxuICAgICAgICAudG8oMC41LHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIHZvaWNlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHBsYXlWb2ljZSgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInRhb3ppX2F1ZGlvXCIsbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAganVtcENsaWNrKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHRDbGljaygpe1xyXG4gICAgICAgIC8v56ys5LiA5q2lXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmV4dEJ0blwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgbGFiZWwgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXAxXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgXHJcbiAgICAgICAgaWYodGhpcy5jdXN0b20gPT0gMCl7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcDFcIikpXHJcbiAgICAgICAgICAgIC50bygwLjIse29wYWNpdHk6MH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gXCJcIjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRvKDAuMSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PnsgXHJcbiAgICAgICAgICAgICAgICBsZXQgdGlwID0gY2MuZngudGlwVHlwZS50aXBUd287XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC50eXBpbmdBbmkobGFiZWwsdGlwLHRoaXMuc3RhcnRHYW1lLmJpbmQodGhpcyksdGhpcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuY3VzdG9tID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuZXh0QnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJqdW1wQnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXAxXCIpKVxyXG4gICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIGxhYmVsLnN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRMZXZlbCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0TGV2ZWwoKXtcclxuICAgICAgICB0aGlzLmNob2ljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5CdG5fSGVhci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX05ldy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX1NlZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkJ0bl9TZWUuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY3VzdG9tRGF0YVt0aGlzLmN1c3RvbS0yXS5pdGVtO1xyXG4gICAgICAgIGlmKHRoaXMuY3VzdG9tRGF0YVt0aGlzLmN1c3RvbS0yXS50eXBlID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLlBsYW50LmdldENoaWxkQnlOYW1lKFwibmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGNjLmZ4LkdhbWVUb29sLmdldEZvb2ROYW1lKG5hbWUpO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJwcm9wX1wiK25hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuUGxhbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5Gb29kUGxpc3RbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgICAgICB0aGlzLm5vd19Gb29kID0gbmFtZTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5QbGFudClcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuUGxhbnQuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCJcIlxyXG4gICAgICAgICAgICB0aGlzLlBsYW50LmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMudm9pY2VTcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgbGV0IGF1ZGlvTmFtZSA9IG5hbWUgKyBcIl9hdWRpb1wiO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJhdWRpb1wiKyBuYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm5vd19Gb29kID0gbmFtZTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KGF1ZGlvTmFtZSxudWxsKTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5QbGFudClcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v5YWz5Y2hKzFcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/mlrDmpI3nianmjInpkq5cclxuICAgIGNsaWNrX0J0bihjdXN0b21EYXRhLGRhdGEpe1xyXG4gICAgICAgIC8v5YWz5o6J6K6h5pe25ZmoICAg5aSE55CG6YC76L6R5LmL5YmN77yM5YWI6KGM5YWz5o6J5oyJ6ZKu5byA5YWzXHJcbiAgICAgICAgaWYoZGF0YSA9PSBcIkJ0bl9OZXdcIil7XHJcbiAgICAgICAgICAgIHRoaXMuY2hvaWNlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJCdG5fSGVhclwiKXtcclxuICAgICAgICAgICAgdGhpcy5jaG9pY2UgPSAyO1xyXG4gICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJCdG5fU2VlXCIpe1xyXG4gICAgICAgICAgICB0aGlzLmNob2ljZSA9IDM7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgbGV0IHRhcmdldCA9IHRoaXNbZGF0YV07XHJcbiAgICAgICAgdmFyIGxhYmVsID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJjb250ZW50XCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgLy/mraPnoa5cclxuICAgICAgICBpZih0aGlzLmNob2ljZSA9PSB0aGlzLmN1c3RvbURhdGFbdGhpcy5jdXN0b20tMl0ucmlnaHQpe1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ5ZXNcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuc3RvcEFsbEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX05ldy5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJlcnJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwiZXJyXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwiY29ycmVjdFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcImVyclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJjb3JyZWN0XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcImVyclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY3VzdG9tID49IDcpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImFnYWluQnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3RhcnRCdG5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnRuX05ldy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkJ0bl9TZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLm5leHRMZXZlbCgpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieWVzXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIHZhciB0aXBUZW1wID0gJ+iRoeiQhOWImuaJjeWHuueOsOi/h+WRoidcclxuICAgICAgICAgICAgdGhpcy5UaXAuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiZXJyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHN3aXRjaCgodGhpcy5jdXN0b20tMikpe1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgICAgIHRpcFRlbXAgPSBcIui/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsOiRoeiQhFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgICAgIHRpcFRlbXAgPSBcIui/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsOahg+WtkFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY2hvaWNlID09IDIpIHRpcFRlbXAgPSAn5LiK5qyh6YGH5Yiw6JGh6JCE5pe277yM5Ly85LmO5LiN5piv5ZCs5Yiw55qE5ZCnJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNob2ljZSA9PSAzKSB0aXBUZW1wID0n5LiK5qyh6YGH5Yiw5qGD5a2Q5pe277yM5Ly85LmO5LiN5piv55yL5Yiw55qE5ZCnJztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlICB0aXBUZW1wID0gJ+ahg+WtkOWImuaJjeWHuueOsOi/h+WRoidcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNob2ljZSA9PSAzKSB0aXBUZW1wID0gJ+S5i+WJjeehruWunueci+WIsOi/h+iRoeiQhO+8jOS9huacgOi/keS4gOasoeS8vOS5juS4jeaYr+eci+WIsOeahOWRoic7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gdGlwVGVtcDtcclxuICAgICAgICAgICAgdGhpcy5UaXAub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuc3RvcEFsbEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgYWN0aW9uID0gY2MuY2FsbEZ1bmMoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgIHNlbGYuVGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLlRpcC5ydW5BY3Rpb24oY2Muc2VxdWVuY2UoY2MuZGVsYXlUaW1lKDIpLGNjLmZhZGVJbigwLjUpLGFjdGlvbikpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiPXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuZXh0QnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmV4dEJ0blwiKSlcclxuICAgICAgICAudG8oMC4zNSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFnYWluQ2xpY2soKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHdWlkZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG5cclxuICAgIG9uRW5hYmxlICgpIHtcclxuICAgICAgICAvLyBjYy5meC5Ob3RpZmljYXRpb25zLm9uKFwiY2xpY2tTdW5cIiwgdGhpcy5jbGlja1N1biwgdGhpcyk7XHJcbiAgICB9XHJcbiAgICBvbkRpc2FibGUgKCkge1xyXG4gICAgICAgIC8vIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub2ZmKFwiY2xpY2tTdW5cIiwgdGhpcy5jbGlja1N1bik7XHJcbiAgICB9XHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICB9XHJcbn1cclxuIl19
|