123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/utils/Load.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, '91177+aHIdM+IaYQMcIzjtc', 'Load');
- // script/utils/Load.ts
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var ResConst_1 = require("../data/const/ResConst");
- var TypeConst_1 = require("../data/const/TypeConst");
- var GameDataCenter_1 = require("../data/GameDataCenter");
- var AssetsBundleMgr_1 = require("./AssetsBundleMgr");
- /**
- * 动态加载资源
- */
- var Load = /** @class */ (function () {
- function Load() {
- }
- Load.loadPrefabByBundle = function (bundle, prefab, callback) {
- cc.assetManager.loadBundle(bundle, cc.Prefab, function (err, bundle) {
- if (err) {
- console.warn(err);
- return;
- }
- bundle.load(prefab, cc.Prefab, function (err, prefab) {
- if (callback) {
- callback(prefab);
- }
- });
- });
- };
- // 根据详细地址加载图片资源
- Load.loadTexture = function (node, url, callback, needDelFirst) {
- var _this = this;
- if (callback === void 0) { callback = function (success) { }; }
- if (needDelFirst === void 0) { needDelFirst = true; }
- if (node.getComponent(cc.Sprite) == null) {
- node.addComponent(cc.Sprite);
- }
- var bundleName = url.split("/")[0];
- if (this.resList[bundleName] != null && this.resList[bundleName][url] != null && this.resList[bundleName][url].isValid && this.resList[bundleName][url].loaded) {
- if (this.resList[bundleName][url].getTexture().isValid && this.resList[bundleName][url].getTexture().loaded) {
- node.getComponent(cc.Sprite).spriteFrame = this.resList[bundleName][url];
- callback(true);
- return;
- }
- }
- if (needDelFirst) {
- node.getComponent(cc.Sprite).spriteFrame = null;
- }
- if (node['imageTag'] == null) {
- node['imageTag'] = 1;
- }
- else {
- if (node['imageTag'] > 100) {
- node['imageTag'] = 1;
- }
- else {
- node['imageTag'] += 1;
- }
- }
- var _tempImageTag = node['imageTag'];
- if (!bundleName || bundleName == "")
- return;
- AssetsBundleMgr_1.default.loadBundle(bundleName, function (error, bundle) {
- if (error) {
- console.error("bundle\u52A0\u8F7D\u5931\u8D25: " + bundleName);
- if (needDelFirst == false) {
- node.getComponent(cc.Sprite).spriteFrame = null;
- }
- return;
- }
- var realUrl = url.slice(url.indexOf("/") + 1);
- bundle.load(realUrl, cc.SpriteFrame, function (err, asset) {
- if (!node.isValid) {
- return;
- }
- if (err) {
- console.warn("加载资源失败:", url);
- if (needDelFirst == false) {
- node.getComponent(cc.Sprite).spriteFrame = null;
- }
- callback(false);
- return;
- }
- if (_tempImageTag != node['imageTag']) {
- return;
- }
- if (_this.resList[bundleName] == null) {
- _this.resList[bundleName] = {};
- }
- _this.resList[bundleName][url] = asset;
- node.getComponent(cc.Sprite).spriteFrame = asset;
- callback(true);
- });
- });
- };
- // 根据道具配置id加载道具图标
- Load.loadItemIcon = function (node, kindItem, callback) {
- var _a, _b;
- if (callback === void 0) { callback = function (success) { }; }
- if ((kindItem === null || kindItem === void 0 ? void 0 : kindItem[0]) == TypeConst_1.ItemKind.money) {
- this.loadTexture(node, ResConst_1.IconUrl.item + ((_a = GameDataCenter_1.default.item.getItemCfgBase(kindItem)) === null || _a === void 0 ? void 0 : _a.icon), callback);
- }
- else {
- this.loadTexture(node, ResConst_1.IconUrl.item + ((_b = GameDataCenter_1.default.item.getItemCfgBase(kindItem)) === null || _b === void 0 ? void 0 : _b.icon), callback);
- // console.error("loadItemIcon:未处理的道具类型:", kindItem[0])
- }
- };
- // 根据详细地址加载Spine资源
- Load.loadSpine = function (node, url, callback, needDelFirst) {
- var _this = this;
- if (callback === void 0) { callback = function (success) { }; }
- if (needDelFirst === void 0) { needDelFirst = true; }
- if (node.getComponent(sp.Skeleton) == null) {
- node.addComponent(sp.Skeleton);
- }
- var bundleName = url.split("/")[0];
- if (this.spineList[bundleName] != null && this.spineList[bundleName][url] != null && this.spineList[bundleName][url].isValid && this.spineList[bundleName][url].loaded) {
- // if (this.spineList[bundleName][url].getTexture().isValid && this.spineList[bundleName][url].getTexture().loaded) {
- node.getComponent(sp.Skeleton).skeletonData = this.spineList[bundleName][url];
- callback(true);
- return;
- // }
- }
- if (needDelFirst) {
- node.getComponent(sp.Skeleton).skeletonData = null;
- }
- if (node['imageTag'] == null) {
- node['imageTag'] = 1;
- }
- else {
- if (node['imageTag'] > 100) {
- node['imageTag'] = 1;
- }
- else {
- node['imageTag'] += 1;
- }
- }
- var _tempImageTag = node['imageTag'];
- AssetsBundleMgr_1.default.loadBundle(bundleName, function (error, bundle) {
- if (error) {
- console.error("bundle\u52A0\u8F7D\u5931\u8D25: " + bundleName);
- if (needDelFirst == false) {
- node.getComponent(cc.Sprite).spriteFrame = null;
- }
- return;
- }
- var realUrl = url.slice(url.indexOf("/") + 1);
- bundle.load(realUrl, sp.SkeletonData, function (err, asset) {
- if (!node.isValid) {
- return;
- }
- if (err) {
- console.warn("加载资源失败:", url);
- if (needDelFirst == false) {
- node.getComponent(sp.Skeleton).skeletonData = null;
- }
- callback(false);
- return;
- }
- if (_tempImageTag != node['imageTag']) {
- return;
- }
- if (_this.spineList[bundleName] == null) {
- _this.spineList[bundleName] = {};
- }
- _this.spineList[bundleName][url] = asset;
- node.getComponent(sp.Skeleton).skeletonData = asset;
- callback(true);
- });
- });
- };
- // // 根据详细地址获取图片资源
- // static getTexture(url: string, callback: Function = (success: boolean, asset: cc.SpriteFrame) => { }) {
- // let bundleName = url.split("/")[0]
- // if (this.resList[bundleName] != null && this.resList[bundleName][url] != null && this.resList[bundleName][url].isValid && this.resList[bundleName][url].loaded) {
- // if (this.resList[bundleName][url].getTexture().isValid && this.resList[bundleName][url].getTexture().loaded) {
- // callback(true, this.resList[bundleName][url])
- // }
- // }
- // AssetsBundleMgr.loadBundle(bundleName, (error, bundle: cc.AssetManager.Bundle) => {
- // if (error) {
- // console.error(`bundle加载失败: ${bundleName}`);
- // return;
- // }
- // let realUrl = url.slice(url.indexOf("/") + 1)
- // bundle.load(realUrl, cc.SpriteFrame, (err, asset: cc.SpriteFrame) => {
- // if (err) {
- // console.warn("加载资源失败:", url)
- // callback(false)
- // return null
- // }
- // if (this.resList[bundleName] == null) {
- // this.resList[bundleName] = {}
- // }
- // this.resList[bundleName][url] = asset
- // callback(true, this.resList[bundleName][url])
- // })
- // });
- // }
- Load.clearByBundle = function (bundleName) {
- if (this.resList[bundleName] != null) {
- this.resList[bundleName] = {};
- }
- };
- Load.clear = function () {
- this.resList = {};
- };
- Load.resList = {};
- Load.spineList = {};
- return Load;
- }());
- exports.default = Load;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvdXRpbHMvTG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLG1EQUFnRDtBQUNoRCxxREFBa0Q7QUFDbEQseURBQW1EO0FBQ25ELHFEQUErQztBQUUvQzs7R0FFRztBQUNIO0lBQUE7SUFtTEEsQ0FBQztJQWxMVSx1QkFBa0IsR0FBekIsVUFBMEIsTUFBYyxFQUFFLE1BQWMsRUFBRSxRQUFtQjtRQUN6RSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFDLEdBQUcsRUFBRSxNQUE4QjtZQUM5RSxJQUFJLEdBQUcsRUFBRTtnQkFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNqQixPQUFNO2FBQ1Q7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxFQUFFLE1BQU07Z0JBQ2hELElBQUksUUFBUSxFQUFFO29CQUNWLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtpQkFDbkI7WUFDTCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGVBQWU7SUFDUixnQkFBVyxHQUFsQixVQUFtQixJQUFhLEVBQUUsR0FBVyxFQUFFLFFBQThDLEVBQUUsWUFBNEI7UUFBM0gsaUJBd0RDO1FBeEQ4Qyx5QkFBQSxFQUFBLHFCQUFzQixPQUFnQixJQUFPLENBQUM7UUFBRSw2QkFBQSxFQUFBLG1CQUE0QjtRQUN2SCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMvQjtRQUNELElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFD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TyxHQUFHLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBcEtNLFlBQU8sR0FBZ0UsRUFBRSxDQUFBO0lBcUV6RSxjQUFTLEdBQWlFLEVBQUUsQ0FBQTtJQWdHdkYsV0FBQztDQW5MRCxBQW1MQyxJQUFBO2tCQW5Mb0IsSUFBSSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lY2ZnIGZyb20gXCIuLi9jb21tb24vZ2FtZUNmZ1wiXG5pbXBvcnQgeyBLaW5kSXRlbSB9IGZyb20gXCIuLi9jb21tb24vWHlzXCJcbmltcG9ydCB7IEljb25VcmwgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9SZXNDb25zdFwiXG5pbXBvcnQgeyBJdGVtS2luZCB9IGZyb20gXCIuLi9kYXRhL2NvbnN0L1R5cGVDb25zdFwiXG5pbXBvcnQgR2FtZURhdGFDZW50ZXIgZnJvbSBcIi4uL2RhdGEvR2FtZURhdGFDZW50ZXJcIlxuaW1wb3J0IEFzc2V0c0J1bmRsZU1nciBmcm9tIFwiLi9Bc3NldHNCdW5kbGVNZ3JcIlxuXG4vKipcbiAqIOWKqOaAgeWKoOi9vei1hOa6kFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2FkIHtcbiAgICBzdGF0aWMgbG9hZFByZWZhYkJ5QnVuZGxlKGJ1bmRsZTogc3RyaW5nLCBwcmVmYWI6IHN0cmluZywgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZShidW5kbGUsIGNjLlByZWZhYiwgKGVyciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycilcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKHByZWZhYiwgY2MuUHJlZmFiLCBmdW5jdGlvbiAoZXJyLCBwcmVmYWIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socHJlZmFiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHN0YXRpYyByZXNMaXN0OiB7IFtidW5kbGVOYW1lOiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IGNjLlNwcml0ZUZyYW1lIH0gfSA9IHt9XG4gICAgLy8g5qC55o2u6K+m57uG5Zyw5Z2A5Yqg6L295Zu+54mH6LWE5rqQXG4gICAgc3RhdGljIGxvYWRUZXh0dXJlKG5vZGU6IGNjLk5vZGUsIHVybDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24gPSAoc3VjY2VzczogYm9vbGVhbikgPT4geyB9LCBuZWVkRGVsRmlyc3Q6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIGlmIChub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpID09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGUuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSlcbiAgICAgICAgfVxuICAgICAgICBsZXQgYnVuZGxlTmFtZSA9IHVybC5zcGxpdChcIi9cIilbMF1cbiAgICAgICAgaWYgKHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXSAhPSBudWxsICYmIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdICE9IG51bGwgJiYgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdW3VybF0uaXNWYWxpZCAmJiB0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV1bdXJsXS5sb2FkZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV1bdXJsXS5nZXRUZXh0dXJlKCkuaXNWYWxpZCAmJiB0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV1bdXJsXS5nZXRUZXh0dXJlKCkubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmVlZERlbEZpcnN0KSB7XG4gICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlWydpbWFnZVRhZyddID09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGVbJ2ltYWdlVGFnJ10gPSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobm9kZVsnaW1hZ2VUYWcnXSA+IDEwMCkge1xuICAgICAgICAgICAgICAgIG5vZGVbJ2ltYWdlVGFnJ10gPSAxXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbJ2ltYWdlVGFnJ10gKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBfdGVtcEltYWdlVGFnID0gbm9kZVsnaW1hZ2VUYWcnXVxuICAgICAgICBpZiAoIWJ1bmRsZU5hbWUgfHwgYnVuZGxlTmFtZSA9PSBcIlwiKSByZXR1cm47XG4gICAgICAgIEFzc2V0c0J1bmRsZU1nci5sb2FkQnVuZGxlKGJ1bmRsZU5hbWUsIChlcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBidW5kbGXliqDovb3lpLHotKU6ICR7YnVuZGxlTmFtZX1gKTtcbiAgICAgICAgICAgICAgICBpZiAobmVlZERlbEZpcnN0ID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZWFsVXJsID0gdXJsLnNsaWNlKHVybC5pbmRleE9mKFwiL1wiKSArIDEpXG4gICAgICAgICAgICBidW5kbGUubG9hZChyZWFsVXJsLCBjYy5TcHJpdGVGcmFtZSwgKGVyciwgYXNzZXQ6IGNjLlNwcml0ZUZyYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLmlzVmFsaWQpIHsgcmV0dXJuIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIuWKoOi9vei1hOa6kOWksei0pTpcIiwgdXJsKVxuICAgICAgICAgICAgICAgICAgICBpZiAobmVlZERlbEZpcnN0ID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF90ZW1wSW1hZ2VUYWcgIT0gbm9kZVsnaW1hZ2VUYWcnXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXSA9IHt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdID0gYXNzZXRcbiAgICAgICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gYXNzZXRcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIOagueaNrumBk+WFt+mFjee9rmlk5Yqg6L296YGT5YW35Zu+5qCHXG4gICAgc3RhdGljIGxvYWRJdGVtSWNvbihub2RlOiBjYy5Ob2RlLCBraW5kSXRlbTogS2luZEl0ZW0sIGNhbGxiYWNrOiBGdW5jdGlvbiA9IChzdWNjZXNzOiBib29sZWFuKSA9PiB7IH0pIHtcbiAgICAgICAgaWYgKGtpbmRJdGVtPy5bMF0gPT0gSXRlbUtpbmQubW9uZXkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFRleHR1cmUobm9kZSwgSWNvblVybC5pdGVtICsgR2FtZURhdGFDZW50ZXIuaXRlbS5nZXRJdGVtQ2ZnQmFzZShraW5kSXRlbSk/Lmljb24sIGNhbGxiYWNrKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkVGV4dHVyZShub2RlLCBJY29uVXJsLml0ZW0gKyBHYW1lRGF0YUNlbnRlci5pdGVtLmdldEl0ZW1DZmdCYXNlKGtpbmRJdGVtKT8uaWNvbiwgY2FsbGJhY2spXG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKFwibG9hZEl0ZW1JY29uOuacquWkhOeQhueahOmBk+WFt+exu+WeizpcIiwga2luZEl0ZW1bMF0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgc3BpbmVMaXN0OiB7IFtidW5kbGVOYW1lOiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHNwLlNrZWxldG9uRGF0YSB9IH0gPSB7fVxuICAgIC8vIOagueaNruivpue7huWcsOWdgOWKoOi9vVNwaW5l6LWE5rqQXG4gICAgc3RhdGljIGxvYWRTcGluZShub2RlOiBjYy5Ob2RlLCB1cmw6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uID0gKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHsgfSwgbmVlZERlbEZpcnN0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgICAgICBpZiAobm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pID09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGUuYWRkQ29tcG9uZW50KHNwLlNrZWxldG9uKVxuICAgICAgICB9XG4gICAgICAgIGxldCBidW5kbGVOYW1lID0gdXJsLnNwbGl0KFwiL1wiKVswXVxuICAgICAgICBpZiAodGhpcy5zcGluZUxpc3RbYnVuZGxlTmFtZV0gIT0gbnVsbCAmJiB0aGlzLnNwaW5lTGlzdFtidW5kbGVOYW1lXVt1cmxdICE9IG51bGwgJiYgdGhpcy5zcGluZUxpc3RbYnVuZGxlTmFtZV1bdXJsXS5pc1ZhbGlkICYmIHRoaXMuc3BpbmVMaXN0W2J1bmRsZU5hbWVdW3VybF0ubG9hZGVkKSB7XG4gICAgICAgICAgICAvLyBpZiAodGhpcy5zcGluZUxpc3RbYnVuZGxlTmFtZV1bdXJsXS5nZXRUZXh0dXJlKCkuaXNWYWxpZCAmJiB0aGlzLnNwaW5lTGlzdFtidW5kbGVOYW1lXVt1cmxdLmdldFRleHR1cmUoKS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2tlbGV0b25EYXRhID0gdGhpcy5zcGluZUxpc3RbYnVuZGxlTmFtZV1bdXJsXVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWREZWxGaXJzdCkge1xuICAgICAgICAgICAgbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNrZWxldG9uRGF0YSA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVsnaW1hZ2VUYWcnXSA9PSBudWxsKSB7XG4gICAgICAgICAgICBub2RlWydpbWFnZVRhZyddID0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5vZGVbJ2ltYWdlVGFnJ10gPiAxMDApIHtcbiAgICAgICAgICAgICAgICBub2RlWydpbWFnZVRhZyddID0gMVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlWydpbWFnZVRhZyddICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgX3RlbXBJbWFnZVRhZyA9IG5vZGVbJ2ltYWdlVGFnJ11cbiAgICAgICAgQXNzZXRzQnVuZGxlTWdyLmxvYWRCdW5kbGUoYnVuZGxlTmFtZSwgKGVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYGJ1bmRsZeWKoOi9veWksei0pTogJHtidW5kbGVOYW1lfWApO1xuICAgICAgICAgICAgICAgIGlmIChuZWVkRGVsRmlyc3QgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlYWxVcmwgPSB1cmwuc2xpY2UodXJsLmluZGV4T2YoXCIvXCIpICsgMSlcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKHJlYWxVcmwsIHNwLlNrZWxldG9uRGF0YSwgKGVyciwgYXNzZXQ6IHNwLlNrZWxldG9uRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7IHJldHVybiB9XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCLliqDovb3otYTmupDlpLHotKU6XCIsIHVybClcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWREZWxGaXJzdCA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNrZWxldG9uRGF0YSA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfdGVtcEltYWdlVGFnICE9IG5vZGVbJ2ltYWdlVGFnJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNwaW5lTGlzdFtidW5kbGVOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BpbmVMaXN0W2J1bmRsZU5hbWVdID0ge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zcGluZUxpc3RbYnVuZGxlTmFtZV1bdXJsXSA9IGFzc2V0XG4gICAgICAgICAgICAgICAgbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNrZWxldG9uRGF0YSA9IGFzc2V0XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIC8vIOagueaNruivpue7huWcsOWdgOiOt+WPluWbvueJh+i1hOa6kFxuICAgIC8vIHN0YXRpYyBnZXRUZXh0dXJlKHVybDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24gPSAoc3VjY2VzczogYm9vbGVhbiwgYXNzZXQ6IGNjLlNwcml0ZUZyYW1lKSA9PiB7IH0pIHtcbiAgICAvLyAgICAgbGV0IGJ1bmRsZU5hbWUgPSB1cmwuc3BsaXQoXCIvXCIpWzBdXG4gICAgLy8gICAgIGlmICh0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV0gIT0gbnVsbCAmJiB0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV1bdXJsXSAhPSBudWxsICYmIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdLmlzVmFsaWQgJiYgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdW3VybF0ubG9hZGVkKSB7XG4gICAgLy8gICAgICAgICBpZiAodGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdW3VybF0uZ2V0VGV4dHVyZSgpLmlzVmFsaWQgJiYgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdW3VybF0uZ2V0VGV4dHVyZSgpLmxvYWRlZCkge1xuICAgIC8vICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUsIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdKVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICB9XG4gICAgLy8gICAgIEFzc2V0c0J1bmRsZU1nci5sb2FkQnVuZGxlKGJ1bmRsZU5hbWUsIChlcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XG4gICAgLy8gICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAvLyAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBidW5kbGXliqDovb3lpLHotKU6ICR7YnVuZGxlTmFtZX1gKTtcbiAgICAvLyAgICAgICAgICAgICByZXR1cm47XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgICBsZXQgcmVhbFVybCA9IHVybC5zbGljZSh1cmwuaW5kZXhPZihcIi9cIikgKyAxKVxuICAgIC8vICAgICAgICAgYnVuZGxlLmxvYWQocmVhbFVybCwgY2MuU3ByaXRlRnJhbWUsIChlcnIsIGFzc2V0OiBjYy5TcHJpdGVGcmFtZSkgPT4ge1xuICAgIC8vICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwi5Yqg6L296LWE5rqQ5aSx6LSlOlwiLCB1cmwpXG4gICAgLy8gICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKVxuICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICBpZiAodGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdID0ge31cbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdW3VybF0gPSBhc3NldFxuICAgIC8vICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUsIHRoaXMucmVzTGlzdFtidW5kbGVOYW1lXVt1cmxdKVxuICAgIC8vICAgICAgICAgfSlcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgc3RhdGljIGNsZWFyQnlCdW5kbGUoYnVuZGxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc0xpc3RbYnVuZGxlTmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yZXNMaXN0W2J1bmRsZU5hbWVdID0ge31cbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMucmVzTGlzdCA9IHt9XG4gICAgfVxufSJdfQ==
|