"use strict"; var __assign = undefined && undefined.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require('./../common/component.js'); var shared_1 = require('./../picker/shared.js'); component_1.VantComponent({ classes: ['active-class', 'toolbar-class', 'column-class'], props: __assign({}, shared_1.pickerProps, { value: String, areaList: { type: Object, value: {} }, columnsNum: { type: [String, Number], value: 3 } }), data: { columns: [{ values: [] }, { values: [] }, { values: [] }], displayColumns: [{ values: [] }, { values: [] }, { values: [] }] }, watch: { value: function value(_value) { this.code = _value; this.setValues(); }, areaList: 'setValues', columnsNum: function columnsNum(value) { this.set({ displayColumns: this.data.columns.slice(0, +value) }); } }, mounted: function mounted() { this.setValues(); }, methods: { getPicker: function getPicker() { if (this.picker == null) { this.picker = this.selectComponent('.van-area__picker'); } return this.picker; }, onCancel: function onCancel(event) { this.emit('cancel', event.detail); }, onConfirm: function onConfirm(event) { this.emit('confirm', event.detail); }, emit: function emit(type, detail) { detail.values = detail.value; delete detail.value; this.$emit(type, detail); }, onChange: function onChange(event) { var _this = this; var _a = event.detail, index = _a.index, picker = _a.picker, value = _a.value; this.code = value[index].code; this.setValues().then(function () { _this.$emit('change', { picker: picker, values: picker.getValues(), index: index }); }); }, getConfig: function getConfig(type) { var areaList = this.data.areaList; return areaList && areaList[type + "_list"] || {}; }, getList: function getList(type, code) { var result = []; if (type !== 'province' && !code) { return result; } var list = this.getConfig(type); result = Object.keys(list).map(function (code) { return { code: code, name: list[code] }; }); if (code) { // oversea code if (code[0] === '9' && type === 'city') { code = '9'; } result = result.filter(function (item) { return item.code.indexOf(code) === 0; }); } return result; }, getIndex: function getIndex(type, code) { var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; var list = this.getList(type, code.slice(0, compareNum - 2)); // oversea code if (code[0] === '9' && type === 'province') { compareNum = 1; } code = code.slice(0, compareNum); for (var i = 0; i < list.length; i++) { if (list[i].code.slice(0, compareNum) === code) { return i; } } return 0; }, setValues: function setValues() { var _this = this; var county = this.getConfig('county'); var code = this.code || Object.keys(county)[0] || ''; var province = this.getList('province'); var city = this.getList('city', code.slice(0, 2)); var picker = this.getPicker(); if (!picker) { return; } var stack = []; stack.push(picker.setColumnValues(0, province, false)); stack.push(picker.setColumnValues(1, city, false)); if (city.length && code.slice(2, 4) === '00') { code = city[0].code; } stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false)); return Promise.all(stack).catch(function () {}).then(function () { return picker.setIndexes([_this.getIndex('province', code), _this.getIndex('city', code), _this.getIndex('county', code)]); }).catch(function () {}); }, getValues: function getValues() { var picker = this.getPicker(); return picker ? picker.getValues().filter(function (value) { return !!value; }) : []; }, getDetail: function getDetail() { var values = this.getValues(); var area = { code: '', country: '', province: '', city: '', county: '' }; if (!values.length) { return area; } var names = values.map(function (item) { return item.name; }); area.code = values[values.length - 1].code; if (area.code[0] === '9') { area.country = names[1] || ''; area.province = names[2] || ''; } else { area.province = names[0] || ''; area.city = names[1] || ''; area.county = names[2] || ''; } return area; }, reset: function reset() { this.code = ''; return this.setValues(); } } }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIl9fYXNzaWduIiwiT2JqZWN0IiwiaSIsIm4iLCJhcmd1bWVudHMiLCJzIiwidCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwic2hhcmVkXzEiLCJjbGFzc2VzIiwicHJvcHMiLCJhcmVhTGlzdCIsInR5cGUiLCJjb2x1bW5zTnVtIiwiZGF0YSIsImNvbHVtbnMiLCJ2YWx1ZXMiLCJkaXNwbGF5Q29sdW1ucyIsIndhdGNoIiwibW91bnRlZCIsIm1ldGhvZHMiLCJnZXRQaWNrZXIiLCJvbkNhbmNlbCIsImV2ZW50Iiwib25Db25maXJtIiwiZW1pdCIsImRldGFpbCIsIm9uQ2hhbmdlIiwiX3RoaXMiLCJfYSIsImluZGV4IiwicGlja2VyIiwiZ2V0Q29uZmlnIiwiZ2V0TGlzdCIsInJlc3VsdCIsImxpc3QiLCJjb2RlIiwibmFtZSIsIml0ZW0iLCJnZXRJbmRleCIsImNvbXBhcmVOdW0iLCJzZXRWYWx1ZXMiLCJjb3VudHkiLCJwcm92aW5jZSIsImNpdHkiLCJzdGFjayIsImdldFZhbHVlcyIsImdldERldGFpbCIsImFyZWEiLCJjb3VudHJ5IiwibmFtZXMiLCJyZXNldCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFJQSxXQUFZLGFBQVEsVUFBVCxRQUFDLElBQTBCLFlBQVk7QUFDbERBLGVBQVdDLE9BQUFBLE1BQUFBLElBQWlCLFVBQUEsQ0FBQSxFQUFZO0FBQ3BDLGFBQUssSUFBQSxDQUFBLEVBQU9DLElBQVAsQ0FBQSxFQUFjQyxJQUFJQyxVQUF2QixNQUFBLEVBQXlDRixJQUF6QyxDQUFBLEVBQUEsR0FBQSxFQUFxRDtBQUNqREcsZ0JBQUlELFVBQUpDLENBQUlELENBQUpDO0FBQ0EsaUJBQUssSUFBTCxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQWlCLG9CQUFJSixPQUFBQSxTQUFBQSxDQUFBQSxjQUFBQSxDQUFBQSxJQUFBQSxDQUFBQSxDQUFBQSxFQUFKLENBQUlBLENBQUosRUFDYkssRUFBQUEsQ0FB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bUJBQUEsSUFBQTtBQTNIQyxTQUFBO0FBNkhMRyxlQUFPLFNBQUEsS0FBQSxHQUFZO0FBQ2YsaUJBQUEsSUFBQSxHQUFBLEVBQUE7QUFDQSxtQkFBTyxLQUFQLFNBQU8sRUFBUDtBQUNIO0FBaElJO0FBNUJhLENBQTFCN0MiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29tcG9uZW50XzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL2NvbXBvbmVudFwiKTtcbnZhciBzaGFyZWRfMSA9IHJlcXVpcmUoXCIuLi9waWNrZXIvc2hhcmVkXCIpO1xuY29tcG9uZW50XzEuVmFudENvbXBvbmVudCh7XG4gICAgY2xhc3NlczogWydhY3RpdmUtY2xhc3MnLCAndG9vbGJhci1jbGFzcycsICdjb2x1bW4tY2xhc3MnXSxcbiAgICBwcm9wczogX19hc3NpZ24oe30sIHNoYXJlZF8xLnBpY2tlclByb3BzLCB7IHZhbHVlOiBTdHJpbmcsIGFyZWFMaXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICB2YWx1ZToge31cbiAgICAgICAgfSwgY29sdW1uc051bToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgICAgIHZhbHVlOiAzXG4gICAgICAgIH0gfSksXG4gICAgZGF0YToge1xuICAgICAgICBjb2x1bW5zOiBbeyB2YWx1ZXM6IFtdIH0sIHsgdmFsdWVzOiBbXSB9LCB7IHZhbHVlczogW10gfV0sXG4gICAgICAgIGRpc3BsYXlDb2x1bW5zOiBbeyB2YWx1ZXM6IFtdIH0sIHsgdmFsdWVzOiBbXSB9LCB7IHZhbHVlczogW10gfV1cbiAgICB9LFxuICAgIHdhdGNoOiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXJlYUxpc3Q6ICdzZXRWYWx1ZXMnLFxuICAgICAgICBjb2x1bW5zTnVtOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5Q29sdW1uczogdGhpcy5kYXRhLmNvbHVtbnMuc2xpY2UoMCwgK3ZhbHVlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0UGlja2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5waWNrZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGlja2VyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJy52YW4tYXJlYV9fcGlja2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5waWNrZXI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY2FuY2VsJywgZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db25maXJtOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29uZmlybScsIGV2ZW50LmRldGFpbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVtaXQ6IGZ1bmN0aW9uICh0eXBlLCBkZXRhaWwpIHtcbiAgICAgICAgICAgIGRldGFpbC52YWx1ZXMgPSBkZXRhaWwudmFsdWU7XG4gICAgICAgICAgICBkZWxldGUgZGV0YWlsLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy4kZW1pdCh0eXBlLCBkZXRhaWwpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIF9hID0gZXZlbnQuZGV0YWlsLCBpbmRleCA9IF9hLmluZGV4LCBwaWNrZXIgPSBfYS5waWNrZXIsIHZhbHVlID0gX2EudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSB2YWx1ZVtpbmRleF0uY29kZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuJGVtaXQoJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAgICAgcGlja2VyOiBwaWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogcGlja2VyLmdldFZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDb25maWc6IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgICAgICB2YXIgYXJlYUxpc3QgPSB0aGlzLmRhdGEuYXJlYUxpc3Q7XG4gICAgICAgICAgICByZXR1cm4gKGFyZWFMaXN0ICYmIGFyZWFMaXN0W3R5cGUgKyBcIl9saXN0XCJdKSB8fCB7fTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGlzdDogZnVuY3Rpb24gKHR5cGUsIGNvZGUpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGlmICh0eXBlICE9PSAncHJvdmluY2UnICYmICFjb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5nZXRDb25maWcodHlwZSk7XG4gICAgICAgICAgICByZXN1bHQgPSBPYmplY3Qua2V5cyhsaXN0KS5tYXAoZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBsaXN0W2NvZGVdXG4gICAgICAgICAgICB9KTsgfSk7XG4gICAgICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgICAgICAgIC8vIG92ZXJzZWEgY29kZVxuICAgICAgICAgICAgICAgIGlmIChjb2RlWzBdID09PSAnOScgJiYgdHlwZSA9PT0gJ2NpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnOSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0uY29kZS5pbmRleE9mKGNvZGUpID09PSAwOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEluZGV4OiBmdW5jdGlvbiAodHlwZSwgY29kZSkge1xuICAgICAgICAgICAgdmFyIGNvbXBhcmVOdW0gPSB0eXBlID09PSAncHJvdmluY2UnID8gMiA6IHR5cGUgPT09ICdjaXR5JyA/IDQgOiA2O1xuICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLmdldExpc3QodHlwZSwgY29kZS5zbGljZSgwLCBjb21wYXJlTnVtIC0gMikpO1xuICAgICAgICAgICAgLy8gb3ZlcnNlYSBjb2RlXG4gICAgICAgICAgICBpZiAoY29kZVswXSA9PT0gJzknICYmIHR5cGUgPT09ICdwcm92aW5jZScpIHtcbiAgICAgICAgICAgICAgICBjb21wYXJlTnVtID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvZGUgPSBjb2RlLnNsaWNlKDAsIGNvbXBhcmVOdW0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RbaV0uY29kZS5zbGljZSgwLCBjb21wYXJlTnVtKSA9PT0gY29kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0VmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGNvdW50eSA9IHRoaXMuZ2V0Q29uZmlnKCdjb3VudHknKTtcbiAgICAgICAgICAgIHZhciBjb2RlID0gdGhpcy5jb2RlIHx8IE9iamVjdC5rZXlzKGNvdW50eSlbMF0gfHwgJyc7XG4gICAgICAgICAgICB2YXIgcHJvdmluY2UgPSB0aGlzLmdldExpc3QoJ3Byb3ZpbmNlJyk7XG4gICAgICAgICAgICB2YXIgY2l0eSA9IHRoaXMuZ2V0TGlzdCgnY2l0eScsIGNvZGUuc2xpY2UoMCwgMikpO1xuICAgICAgICAgICAgdmFyIHBpY2tlciA9IHRoaXMuZ2V0UGlja2VyKCk7XG4gICAgICAgICAgICBpZiAoIXBpY2tlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGFjayA9IFtdO1xuICAgICAgICAgICAgc3RhY2sucHVzaChwaWNrZXIuc2V0Q29sdW1uVmFsdWVzKDAsIHByb3ZpbmNlLCBmYWxzZSkpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChwaWNrZXIuc2V0Q29sdW1uVmFsdWVzKDEsIGNpdHksIGZhbHNlKSk7XG4gICAgICAgICAgICBpZiAoY2l0eS5sZW5ndGggJiYgY29kZS5zbGljZSgyLCA0KSA9PT0gJzAwJykge1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjaXR5WzBdLmNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBpY2tlci5zZXRDb2x1bW5WYWx1ZXMoMiwgdGhpcy5nZXRMaXN0KCdjb3VudHknLCBjb2RlLnNsaWNlKDAsIDQpKSwgZmFsc2UpKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChzdGFjaylcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkgeyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyLnNldEluZGV4ZXMoW1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5nZXRJbmRleCgncHJvdmluY2UnLCBjb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZ2V0SW5kZXgoJ2NpdHknLCBjb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZ2V0SW5kZXgoJ2NvdW50eScsIGNvZGUpXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7IH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRWYWx1ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwaWNrZXIgPSB0aGlzLmdldFBpY2tlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlciA/IHBpY2tlci5nZXRWYWx1ZXMoKS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAhIXZhbHVlOyB9KSA6IFtdO1xuICAgICAgICB9LFxuICAgICAgICBnZXREZXRhaWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLmdldFZhbHVlcygpO1xuICAgICAgICAgICAgdmFyIGFyZWEgPSB7XG4gICAgICAgICAgICAgICAgY29kZTogJycsXG4gICAgICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6ICcnLFxuICAgICAgICAgICAgICAgIGNpdHk6ICcnLFxuICAgICAgICAgICAgICAgIGNvdW50eTogJydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJlYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuYW1lcyA9IHZhbHVlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZTsgfSk7XG4gICAgICAgICAgICBhcmVhLmNvZGUgPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdLmNvZGU7XG4gICAgICAgICAgICBpZiAoYXJlYS5jb2RlWzBdID09PSAnOScpIHtcbiAgICAgICAgICAgICAgICBhcmVhLmNvdW50cnkgPSBuYW1lc1sxXSB8fCAnJztcbiAgICAgICAgICAgICAgICBhcmVhLnByb3ZpbmNlID0gbmFtZXNbMl0gfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcmVhLnByb3ZpbmNlID0gbmFtZXNbMF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgYXJlYS5jaXR5ID0gbmFtZXNbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgYXJlYS5jb3VudHkgPSBuYW1lc1syXSB8fCAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcmVhO1xuICAgICAgICB9LFxuICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jb2RlID0gJyc7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9