index.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. "use strict";
  2. var __assign = undefined && undefined.__assign || function () {
  3. __assign = Object.assign || function (t) {
  4. for (var s, i = 1, n = arguments.length; i < n; i++) {
  5. s = arguments[i];
  6. for (var p in s) {
  7. if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
  8. }
  9. }
  10. return t;
  11. };
  12. return __assign.apply(this, arguments);
  13. };
  14. Object.defineProperty(exports, "__esModule", { value: true });
  15. var component_1 = require('./../common/component.js');
  16. var shared_1 = require('./../picker/shared.js');
  17. component_1.VantComponent({
  18. classes: ['active-class', 'toolbar-class', 'column-class'],
  19. props: __assign({}, shared_1.pickerProps, { value: String, areaList: {
  20. type: Object,
  21. value: {}
  22. }, columnsNum: {
  23. type: [String, Number],
  24. value: 3
  25. } }),
  26. data: {
  27. columns: [{ values: [] }, { values: [] }, { values: [] }],
  28. displayColumns: [{ values: [] }, { values: [] }, { values: [] }]
  29. },
  30. watch: {
  31. value: function value(_value) {
  32. this.code = _value;
  33. this.setValues();
  34. },
  35. areaList: 'setValues',
  36. columnsNum: function columnsNum(value) {
  37. this.set({
  38. displayColumns: this.data.columns.slice(0, +value)
  39. });
  40. }
  41. },
  42. mounted: function mounted() {
  43. this.setValues();
  44. },
  45. methods: {
  46. getPicker: function getPicker() {
  47. if (this.picker == null) {
  48. this.picker = this.selectComponent('.van-area__picker');
  49. }
  50. return this.picker;
  51. },
  52. onCancel: function onCancel(event) {
  53. this.emit('cancel', event.detail);
  54. },
  55. onConfirm: function onConfirm(event) {
  56. this.emit('confirm', event.detail);
  57. },
  58. emit: function emit(type, detail) {
  59. detail.values = detail.value;
  60. delete detail.value;
  61. this.$emit(type, detail);
  62. },
  63. onChange: function onChange(event) {
  64. var _this = this;
  65. var _a = event.detail,
  66. index = _a.index,
  67. picker = _a.picker,
  68. value = _a.value;
  69. this.code = value[index].code;
  70. this.setValues().then(function () {
  71. _this.$emit('change', {
  72. picker: picker,
  73. values: picker.getValues(),
  74. index: index
  75. });
  76. });
  77. },
  78. getConfig: function getConfig(type) {
  79. var areaList = this.data.areaList;
  80. return areaList && areaList[type + "_list"] || {};
  81. },
  82. getList: function getList(type, code) {
  83. var result = [];
  84. if (type !== 'province' && !code) {
  85. return result;
  86. }
  87. var list = this.getConfig(type);
  88. result = Object.keys(list).map(function (code) {
  89. return {
  90. code: code,
  91. name: list[code]
  92. };
  93. });
  94. if (code) {
  95. // oversea code
  96. if (code[0] === '9' && type === 'city') {
  97. code = '9';
  98. }
  99. result = result.filter(function (item) {
  100. return item.code.indexOf(code) === 0;
  101. });
  102. }
  103. return result;
  104. },
  105. getIndex: function getIndex(type, code) {
  106. var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
  107. var list = this.getList(type, code.slice(0, compareNum - 2));
  108. // oversea code
  109. if (code[0] === '9' && type === 'province') {
  110. compareNum = 1;
  111. }
  112. code = code.slice(0, compareNum);
  113. for (var i = 0; i < list.length; i++) {
  114. if (list[i].code.slice(0, compareNum) === code) {
  115. return i;
  116. }
  117. }
  118. return 0;
  119. },
  120. setValues: function setValues() {
  121. var _this = this;
  122. var county = this.getConfig('county');
  123. var code = this.code || Object.keys(county)[0] || '';
  124. var province = this.getList('province');
  125. var city = this.getList('city', code.slice(0, 2));
  126. var picker = this.getPicker();
  127. if (!picker) {
  128. return;
  129. }
  130. var stack = [];
  131. stack.push(picker.setColumnValues(0, province, false));
  132. stack.push(picker.setColumnValues(1, city, false));
  133. if (city.length && code.slice(2, 4) === '00') {
  134. code = city[0].code;
  135. }
  136. stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
  137. return Promise.all(stack).catch(function () {}).then(function () {
  138. return picker.setIndexes([_this.getIndex('province', code), _this.getIndex('city', code), _this.getIndex('county', code)]);
  139. }).catch(function () {});
  140. },
  141. getValues: function getValues() {
  142. var picker = this.getPicker();
  143. return picker ? picker.getValues().filter(function (value) {
  144. return !!value;
  145. }) : [];
  146. },
  147. getDetail: function getDetail() {
  148. var values = this.getValues();
  149. var area = {
  150. code: '',
  151. country: '',
  152. province: '',
  153. city: '',
  154. county: ''
  155. };
  156. if (!values.length) {
  157. return area;
  158. }
  159. var names = values.map(function (item) {
  160. return item.name;
  161. });
  162. area.code = values[values.length - 1].code;
  163. if (area.code[0] === '9') {
  164. area.country = names[1] || '';
  165. area.province = names[2] || '';
  166. } else {
  167. area.province = names[0] || '';
  168. area.city = names[1] || '';
  169. area.county = names[2] || '';
  170. }
  171. return area;
  172. },
  173. reset: function reset() {
  174. this.code = '';
  175. return this.setValues();
  176. }
  177. }
  178. });
  179. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIl9fYXNzaWduIiwiT2JqZWN0IiwiaSIsIm4iLCJhcmd1bWVudHMiLCJzIiwidCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwic2hhcmVkXzEiLCJjbGFzc2VzIiwicHJvcHMiLCJhcmVhTGlzdCIsInR5cGUiLCJjb2x1bW5zTnVtIiwiZGF0YSIsImNvbHVtbnMiLCJ2YWx1ZXMiLCJkaXNwbGF5Q29sdW1ucyIsIndhdGNoIiwibW91bnRlZCIsIm1ldGhvZHMiLCJnZXRQaWNrZXIiLCJvbkNhbmNlbCIsImV2ZW50Iiwib25Db25maXJtIiwiZW1pdCIsImRldGFpbCIsIm9uQ2hhbmdlIiwiX3RoaXMiLCJfYSIsImluZGV4IiwicGlja2VyIiwiZ2V0Q29uZmlnIiwiZ2V0TGlzdCIsInJlc3VsdCIsImxpc3QiLCJjb2RlIiwibmFtZSIsIml0ZW0iLCJnZXRJbmRleCIsImNvbXBhcmVOdW0iLCJzZXRWYWx1ZXMiLCJjb3VudHkiLCJwcm92aW5jZSIsImNpdHkiLCJzdGFjayIsImdldFZhbHVlcyIsImdldERldGFpbCIsImFyZWEiLCJjb3VudHJ5IiwibmFtZXMiLCJyZXNldCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFJQSxXQUFZLGFBQVEsVUFBVCxRQUFDLElBQTBCLFlBQVk7QUFDbERBLGVBQVdDLE9BQUFBLE1BQUFBLElBQWlCLFVBQUEsQ0FBQSxFQUFZO0FBQ3BDLGFBQUssSUFBQSxDQUFBLEVBQU9DLElBQVAsQ0FBQSxFQUFjQyxJQUFJQyxVQUF2QixNQUFBLEVBQXlDRixJQUF6QyxDQUFBLEVBQUEsR0FBQSxFQUFxRDtBQUNqREcsZ0JBQUlELFVBQUpDLENBQUlELENBQUpDO0FBQ0EsaUJBQUssSUFBTCxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQWlCLG9CQUFJSixPQUFBQSxTQUFBQSxDQUFBQSxjQUFBQSxDQUFBQSxJQUFBQSxDQUFBQSxDQUFBQSxFQUFKLENBQUlBLENBQUosRUFDYkssRUFBQUEsQ0FB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bUJBQUEsSUFBQTtBQTNIQyxTQUFBO0FBNkhMRyxlQUFPLFNBQUEsS0FBQSxHQUFZO0FBQ2YsaUJBQUEsSUFBQSxHQUFBLEVBQUE7QUFDQSxtQkFBTyxLQUFQLFNBQU8sRUFBUDtBQUNIO0FBaElJO0FBNUJhLENBQTFCN0MiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29tcG9uZW50XzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL2NvbXBvbmVudFwiKTtcbnZhciBzaGFyZWRfMSA9IHJlcXVpcmUoXCIuLi9waWNrZXIvc2hhcmVkXCIpO1xuY29tcG9uZW50XzEuVmFudENvbXBvbmVudCh7XG4gICAgY2xhc3NlczogWydhY3RpdmUtY2xhc3MnLCAndG9vbGJhci1jbGFzcycsICdjb2x1bW4tY2xhc3MnXSxcbiAgICBwcm9wczogX19hc3NpZ24oe30sIHNoYXJlZF8xLnBpY2tlclByb3BzLCB7IHZhbHVlOiBTdHJpbmcsIGFyZWFMaXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICB2YWx1ZToge31cbiAgICAgICAgfSwgY29sdW1uc051bToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgICAgIHZhbHVlOiAzXG4gICAgICAgIH0gfSksXG4gICAgZGF0YToge1xuICAgICAgICBjb2x1bW5zOiBbeyB2YWx1ZXM6IFtdIH0sIHsgdmFsdWVzOiBbXSB9LCB7IHZhbHVlczogW10gfV0sXG4gICAgICAgIGRpc3BsYXlDb2x1bW5zOiBbeyB2YWx1ZXM6IFtdIH0sIHsgdmFsdWVzOiBbXSB9LCB7IHZhbHVlczogW10gfV1cbiAgICB9LFxuICAgIHdhdGNoOiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXJlYUxpc3Q6ICdzZXRWYWx1ZXMnLFxuICAgICAgICBjb2x1bW5zTnVtOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5Q29sdW1uczogdGhpcy5kYXRhLmNvbHVtbnMuc2xpY2UoMCwgK3ZhbHVlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0UGlja2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5waWNrZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGlja2VyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJy52YW4tYXJlYV9fcGlja2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5waWNrZXI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY2FuY2VsJywgZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db25maXJtOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29uZmlybScsIGV2ZW50LmRldGFpbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVtaXQ6IGZ1bmN0aW9uICh0eXBlLCBkZXRhaWwpIHtcbiAgICAgICAgICAgIGRldGFpbC52YWx1ZXMgPSBkZXRhaWwudmFsdWU7XG4gICAgICAgICAgICBkZWxldGUgZGV0YWlsLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy4kZW1pdCh0eXBlLCBkZXRhaWwpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIF9hID0gZXZlbnQuZGV0YWlsLCBpbmRleCA9IF9hLmluZGV4LCBwaWNrZXIgPSBfYS5waWNrZXIsIHZhbHVlID0gX2EudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSB2YWx1ZVtpbmRleF0uY29kZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuJGVtaXQoJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAgICAgcGlja2VyOiBwaWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogcGlja2VyLmdldFZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDb25maWc6IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgICAgICB2YXIgYXJlYUxpc3QgPSB0aGlzLmRhdGEuYXJlYUxpc3Q7XG4gICAgICAgICAgICByZXR1cm4gKGFyZWFMaXN0ICYmIGFyZWFMaXN0W3R5cGUgKyBcIl9saXN0XCJdKSB8fCB7fTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGlzdDogZnVuY3Rpb24gKHR5cGUsIGNvZGUpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGlmICh0eXBlICE9PSAncHJvdmluY2UnICYmICFjb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5nZXRDb25maWcodHlwZSk7XG4gICAgICAgICAgICByZXN1bHQgPSBPYmplY3Qua2V5cyhsaXN0KS5tYXAoZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBsaXN0W2NvZGVdXG4gICAgICAgICAgICB9KTsgfSk7XG4gICAgICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgICAgICAgIC8vIG92ZXJzZWEgY29kZVxuICAgICAgICAgICAgICAgIGlmIChjb2RlWzBdID09PSAnOScgJiYgdHlwZSA9PT0gJ2NpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnOSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0uY29kZS5pbmRleE9mKGNvZGUpID09PSAwOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEluZGV4OiBmdW5jdGlvbiAodHlwZSwgY29kZSkge1xuICAgICAgICAgICAgdmFyIGNvbXBhcmVOdW0gPSB0eXBlID09PSAncHJvdmluY2UnID8gMiA6IHR5cGUgPT09ICdjaXR5JyA/IDQgOiA2O1xuICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLmdldExpc3QodHlwZSwgY29kZS5zbGljZSgwLCBjb21wYXJlTnVtIC0gMikpO1xuICAgICAgICAgICAgLy8gb3ZlcnNlYSBjb2RlXG4gICAgICAgICAgICBpZiAoY29kZVswXSA9PT0gJzknICYmIHR5cGUgPT09ICdwcm92aW5jZScpIHtcbiAgICAgICAgICAgICAgICBjb21wYXJlTnVtID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvZGUgPSBjb2RlLnNsaWNlKDAsIGNvbXBhcmVOdW0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RbaV0uY29kZS5zbGljZSgwLCBjb21wYXJlTnVtKSA9PT0gY29kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0VmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGNvdW50eSA9IHRoaXMuZ2V0Q29uZmlnKCdjb3VudHknKTtcbiAgICAgICAgICAgIHZhciBjb2RlID0gdGhpcy5jb2RlIHx8IE9iamVjdC5rZXlzKGNvdW50eSlbMF0gfHwgJyc7XG4gICAgICAgICAgICB2YXIgcHJvdmluY2UgPSB0aGlzLmdldExpc3QoJ3Byb3ZpbmNlJyk7XG4gICAgICAgICAgICB2YXIgY2l0eSA9IHRoaXMuZ2V0TGlzdCgnY2l0eScsIGNvZGUuc2xpY2UoMCwgMikpO1xuICAgICAgICAgICAgdmFyIHBpY2tlciA9IHRoaXMuZ2V0UGlja2VyKCk7XG4gICAgICAgICAgICBpZiAoIXBpY2tlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGFjayA9IFtdO1xuICAgICAgICAgICAgc3RhY2sucHVzaChwaWNrZXIuc2V0Q29sdW1uVmFsdWVzKDAsIHByb3ZpbmNlLCBmYWxzZSkpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChwaWNrZXIuc2V0Q29sdW1uVmFsdWVzKDEsIGNpdHksIGZhbHNlKSk7XG4gICAgICAgICAgICBpZiAoY2l0eS5sZW5ndGggJiYgY29kZS5zbGljZSgyLCA0KSA9PT0gJzAwJykge1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjaXR5WzBdLmNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBpY2tlci5zZXRDb2x1bW5WYWx1ZXMoMiwgdGhpcy5nZXRMaXN0KCdjb3VudHknLCBjb2RlLnNsaWNlKDAsIDQpKSwgZmFsc2UpKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChzdGFjaylcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkgeyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyLnNldEluZGV4ZXMoW1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5nZXRJbmRleCgncHJvdmluY2UnLCBjb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZ2V0SW5kZXgoJ2NpdHknLCBjb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZ2V0SW5kZXgoJ2NvdW50eScsIGNvZGUpXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7IH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRWYWx1ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwaWNrZXIgPSB0aGlzLmdldFBpY2tlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlciA/IHBpY2tlci5nZXRWYWx1ZXMoKS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAhIXZhbHVlOyB9KSA6IFtdO1xuICAgICAgICB9LFxuICAgICAgICBnZXREZXRhaWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLmdldFZhbHVlcygpO1xuICAgICAgICAgICAgdmFyIGFyZWEgPSB7XG4gICAgICAgICAgICAgICAgY29kZTogJycsXG4gICAgICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6ICcnLFxuICAgICAgICAgICAgICAgIGNpdHk6ICcnLFxuICAgICAgICAgICAgICAgIGNvdW50eTogJydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJlYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuYW1lcyA9IHZhbHVlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZTsgfSk7XG4gICAgICAgICAgICBhcmVhLmNvZGUgPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdLmNvZGU7XG4gICAgICAgICAgICBpZiAoYXJlYS5jb2RlWzBdID09PSAnOScpIHtcbiAgICAgICAgICAgICAgICBhcmVhLmNvdW50cnkgPSBuYW1lc1sxXSB8fCAnJztcbiAgICAgICAgICAgICAgICBhcmVhLnByb3ZpbmNlID0gbmFtZXNbMl0gfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcmVhLnByb3ZpbmNlID0gbmFtZXNbMF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgYXJlYS5jaXR5ID0gbmFtZXNbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgYXJlYS5jb3VudHkgPSBuYW1lc1syXSB8fCAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcmVhO1xuICAgICAgICB9LFxuICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jb2RlID0gJyc7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9