| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- "use strict";
- var __assign = (this && this.__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);
- };
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var app = getApp();
- var util_1 = require("../../utils/util");
- var hwRequirement_impl_1 = require("../../service/impl/hwRequirement.impl");
- var hwOrder_impl_1 = require("../../service/impl/hwOrder.impl");
- var util_2 = require("../../utils/util");
- Page({
- data: {
- cover: true,
- hasInfo: false,
- info_name: '',
- idcardNumber: '',
- bright_points: '',
- message: {
- '0': '确认订单',
- '1': '订单关闭',
- '2': '已确认',
- '3': '订单中止',
- '4': '订单完成'
- },
- status: 0,
- show: true,
- name_error: '',
- id_error: '',
- id: 0,
- hwOrderAPI: {
- workContractType: -1,
- workContract: '',
- id: 0,
- status: -1
- },
- name: '',
- enrollId: 0,
- options: {
- id: 0,
- status: ''
- }
- },
- apply: function () {
- var _this = this;
- var userInfo = wx.getStorageSync('userInfo');
- if (userInfo.isDemonstrate) {
- wx.showModal({
- title: '报名成功',
- content: '请耐心等待企业确认',
- showCancel: false,
- confirmText: '知道了',
- success: function () {
- var hwOrderAPI = _this.data.hwOrderAPI;
- hwOrderAPI.status = 5;
- _this.setData({
- status: 2,
- hwOrderAPI: hwOrderAPI
- });
- util_1.putStorageSync("orderDetail_" + _this.data.id, _this.data.id, hwOrderAPI.status);
- }
- });
- }
- },
- saveIdCardNumber: function (e) {
- var idcardNumber = e.detail.value;
- if (idcardNumber) {
- if (idcardNumber.length !== 15 && idcardNumber.length !== 18) {
- this.setData({
- id_error: '身份证号码格式错误'
- });
- }
- else {
- this.setData({
- idcardNumber: idcardNumber,
- id_error: ''
- });
- }
- }
- else {
- this.setData({
- id_error: '请填写身份证号码'
- });
- }
- },
- saveName: function (e) {
- var info_name = e.detail.value;
- if (info_name) {
- this.setData({
- info_name: info_name,
- name_error: ''
- });
- }
- else {
- this.setData({
- name_error: '请填写姓名'
- });
- }
- },
- input: function (e) {
- this.setData({
- bright_points: e.detail.value
- });
- },
- openMap: function (e) {
- var name = e.currentTarget.dataset.name;
- var address = e.currentTarget.dataset.address;
- console.log(name, address);
- },
- buttonCheck: function () {
- var workContract = this.data.hwOrderAPI.workContract;
- if (workContract) {
- wx.showLoading({
- mask: true,
- title: '正在打开文件...',
- });
- wx.downloadFile({
- url: this.data.hwOrderAPI.workContract,
- success: function (res) {
- wx.openDocument({
- filePath: res.tempFilePath,
- success: function () {
- wx.hideLoading();
- },
- fail: function () {
- wx.showToast({
- icon: 'none',
- title: '打开失败',
- });
- }
- });
- }
- });
- }
- else {
- }
- },
- buttonSubmit: function () {
- var _this = this;
- var workContractType = this.data.hwOrderAPI.workContractType;
- if (workContractType === 1) {
- hwOrder_impl_1.confirmECOrdersImpl({
- orderId: this.data.hwOrderAPI.id
- }).then(function (res) {
- if (res.errCode === 0) {
- wx.reLaunch({
- url: "/pages/web-view/web-view?url=" + encodeURIComponent(res.data.url),
- success: function () {
- app.globalData.webview = "/pages/my-order/my-order";
- }
- });
- }
- });
- }
- if (workContractType === 0) {
- hwOrder_impl_1.confirmOrderImpl({
- orderId: this.data.hwOrderAPI.id
- }).then(function (res) {
- if (res.errCode === 0) {
- wx.showToast({
- title: '订单已确认',
- success: function () {
- var hwOrderAPI = _this.data.hwOrderAPI;
- hwOrderAPI.status = 2;
- _this.setData({
- hwOrderAPI: hwOrderAPI
- });
- }
- });
- }
- });
- }
- },
- showCover: function () {
- return __awaiter(this, void 0, void 0, function () {
- var userInfo;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, util_2.getHwUserInfo()];
- case 1:
- userInfo = _a.sent();
- if (userInfo.idcardNumber && userInfo.name) {
- this.setData({
- cover: false,
- hasInfo: true
- });
- }
- else {
- this.setData({
- cover: false,
- hasInfo: false
- });
- }
- return [2];
- }
- });
- });
- },
- cover: function () {
- var cover = !this.data.cover;
- this.setData({
- cover: cover
- });
- },
- cancelEnrollment: function () {
- var id = this.data.enrollId;
- hwRequirement_impl_1.cancelEnrollmentImpl({
- enroll_id: id
- }).then(function () {
- wx.showToast({
- icon: 'none',
- title: '取消成功',
- success: function () {
- setTimeout(function () {
- wx.navigateBack({
- delta: 1
- });
- }, 1200);
- }
- });
- });
- },
- buttonRight: function () {
- },
- onLoad: function (options) {
- this.setData({
- options: options
- });
- },
- onReady: function () {
- },
- onShow: function () {
- return __awaiter(this, void 0, void 0, function () {
- var options;
- var _this = this;
- return __generator(this, function (_a) {
- options = this.data.options;
- if (options.id && options.status) {
- if (options.status === '2') {
- hwOrder_impl_1.getOrderDetailImpl({
- orderId: options.id
- }).then(function (res) {
- if (res.errCode === 0) {
- var id = util_1.getStorageSync("orderDetail_" + _this.data.id);
- if (id) {
- res.data.hwOrderAPI.status = 2;
- }
- _this.setData(__assign(__assign({}, res.data.hwRequirementAPI), { hwOrderAPI: res.data.hwOrderAPI }));
- }
- });
- }
- if (options.status === '1') {
- hwRequirement_impl_1.getRequirementDetailImpl({
- user_id: wx.getStorageSync('userId'),
- user_token: wx.getStorageSync('userToken'),
- hwRequirementId: options.id
- }).then(function (res) {
- if (res.errCode === 0) {
- _this.setData(__assign(__assign({}, res.data.hwRequirementAPI), { displayCancel: res.data.displayCancel || null, needEnrollment: res.data.needEnrollment || null, enrollId: res.data.enrollId || null }));
- }
- });
- }
- }
- if (options.status) {
- this.setData({
- status: Number(options.status),
- show: false
- });
- }
- this.setData({
- user_id: wx.getStorageSync('userId'),
- });
- return [2];
- });
- });
- },
- onHide: function () {
- },
- onUnload: function () {
- },
- onPullDownRefresh: function () {
- },
- onReachBottom: function () {
- },
- onShareAppMessage: function () {
- return {
- title: this.data.name,
- path: "/pages/detail/detail?id=" + this.data.id + "&&status=" + this.data.status
- };
- }
- });
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNyQix5Q0FBaUU7QUFvQmpFLDRFQUFzRztBQUV0RyxnRUFBMkc7QUFDM0cseUNBQWdEO0FBQ2hELElBQUksQ0FBQztJQUtILElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxJQUFJO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsRUFBRTtRQUNiLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRSxNQUFNO1lBQ1gsR0FBRyxFQUFFLE1BQU07WUFDWCxHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxNQUFNO1lBQ1gsR0FBRyxFQUFFLE1BQU07U0FDWjtRQUNELE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxFQUFFLElBQUk7UUFDVixVQUFVLEVBQUUsRUFBRTtRQUNkLFFBQVEsRUFBRSxFQUFFO1FBQ1osRUFBRSxFQUFFLENBQUM7UUFDTCxVQUFVLEVBQUU7WUFDVixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDcEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsRUFBRSxFQUFFLENBQUM7WUFDTCxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLEVBQUUsRUFBRTtRQUNSLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLENBQUM7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYO0tBRUY7SUFPRCxLQUFLO1FBQUwsaUJBNkVDO1FBbkJDLElBQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUMsSUFBSSxRQUFRLENB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RUFBRTtRQUNqQixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNyQixJQUFJLEVBQUUsNkJBQTJCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQVE7U0FDNUUsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWdlcy9kZXRhaWwvZGV0YWlsLmpzXG5jb25zdCBhcHAgPSBnZXRBcHAoKTtcbmltcG9ydCB7IHB1dFN0b3JhZ2VTeW5jLCBnZXRTdG9yYWdlU3luYyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnXG4vLyB0eXBlIGVycm9yTWVzc2FnZVR5cGUgPSB7XG4vLyAgIGluZm9fbmFtZTogU3RyaW5nLFxuLy8gICBpZGNhcmROdW1iZXI6IFN0cmluZyxcbi8vIH1cbi8vIC8vIOacquWhq+WGmeaPkOekuuWtl+auteWPiuS/oeaBr1xuLy8gY29uc3QgZXJyb3JNZXNzYWdlOiBlcnJvck1lc3NhZ2VUeXBlID0ge1xuLy8gICBpbmZvX25hbWU6ICfor7floavlhpnlp5PlkI0nLFxuLy8gICBpZGNhcmROdW1iZXI6ICfor7floavlhpnouqvku73or4Hlj7fnoIEnLFxuLy8gfVxuXG4vLyB0eXBlIGVycm9yS2V5VHlwZSA9IHtcbi8vICAgaW5mb19uYW1lOiBTdHJpbmcsXG4vLyAgIGlkY2FyZE51bWJlcjogU3RyaW5nLFxuLy8gfVxuLy8gLy8g5pyq5aGr5YaZa2V55YC8XG4vLyBjb25zdCBlcnJvcktleTogZXJyb3JLZXlUeXBlID0ge1xuLy8gICBpbmZvX25hbWU6ICduYW1lX2Vycm9yJyxcbi8vICAgaWRjYXJkTnVtYmVyOiAnaWRfZXJyb3InLFxuLy8gfVxuaW1wb3J0IHsgY2FuY2VsRW5yb2xsbWVudEltcGwsIGdldFJlcXVpcmVtZW50RGV0YWlsSW1wbCB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW1wbC9od1JlcXVpcmVtZW50LmltcGwnXG4vLyBpbXBvcnQgeyBjYW5jZWxFbnJvbGxtZW50SW1wbCwgZW5yb2xsbWVudFJlcXVpcmVJbXBsLCBnZXRSZXF1aXJlbWVudERldGFpbEltcGwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ltcGwvaHdSZXF1aXJlbWVudC5pbXBsJ1xuaW1wb3J0IHsgY29uZmlybUVDT3JkZXJzSW1wbCwgY29uZmlybU9yZGVySW1wbCwgZ2V0T3JkZXJEZXRhaWxJbXBsIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbXBsL2h3T3JkZXIuaW1wbCdcbmltcG9ydCB7IGdldEh3VXNlckluZm8gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJ1xuUGFnZSh7XG5cbiAgLyoqXG4gICAqIOmhtemdoueahOWIneWni+aVsOaNrlxuICAgKi9cbiAgZGF0YToge1xuICAgIGNvdmVyOiB0cnVlLCAvLyDokpnlsYJcbiAgICBoYXNJbmZvOiBmYWxzZSwgLy/mmK/lkKbmi6XmnInkuKrkurrkv6Hmga9cbiAgICBpbmZvX25hbWU6ICcnLFxuICAgIGlkY2FyZE51bWJlcjogJycsXG4gICAgYnJpZ2h0X3BvaW50czogJycsIC8vIOS6rueCuVxuICAgIG1lc3NhZ2U6IHsgLy/orqLljZXnirbmgIHmmKDlsIRcbiAgICAgICcwJzogJ+ehruiupOiuouWNlScsXG4gICAgICAnMSc6ICforqLljZXlhbPpl60nLFxuICAgICAgJzInOiAn5bey56Gu6K6kJyxcbiAgICAgICczJzogJ+iuouWNleS4reatoicsXG4gICAgICAnNCc6ICforqLljZXlrozmiJAnXG4gICAgfSxcbiAgICBzdGF0dXM6IDAsIC8v5oyJ6ZKu54q25oCBIDEg6ZyA5rGCIDIg5bey5oql5ZCNIDMg6K6i5Y2VXG4gICAgc2hvdzogdHJ1ZSwgLy8g5piv5ZCm5bGV56S6XG4gICAgbmFtZV9lcnJvcjogJycsIC8vIOWnk+WQjemUmeivr+S/oeaBr1xuICAgIGlkX2Vycm9yOiAnJywgLy8gIOi6q+S7veivgemUmeivr+S/oeaBr1xuICAgIGlkOiAwLFxuICAgIGh3T3JkZXJBUEk6IHtcbiAgICAgIHdvcmtDb250cmFjdFR5cGU6IC0xLFxuICAgICAgd29ya0NvbnRyYWN0OiAnJyxcbiAgICAgIGlkOiAwLFxuICAgICAgc3RhdHVzOiAtMVxuICAgIH0sXG4gICAgbmFtZTogJycsXG4gICAgZW5yb2xsSWQ6IDAsXG4gICAgb3B0aW9uczoge1xuICAgICAgaWQ6IDAsXG4gICAgICBzdGF0dXM6ICcnXG4gICAgfVxuICAgIC8vIGJ0bl9tZXNzYWdlOiAnJ1xuICB9LFxuICAvKipcbiAgICog6ZyA5rGC5oql5ZCNXG4gICAqIEByZXF1aXJlbWVudF9pZCB7c3RyaW5nfSDpnIDmsYJJRFxuICAgKiBAYnJpZ2h0X3BvaW50cyB7c3RyaW5nfSAg5Lqu54K5XG4gICAqIEBlbnJvbGxfZnJvbSAge251bWJlcn0g5oql5ZCN5p2l5rqQ77yIMDrlsI/nqIvluo8gIDE6QVBQICAyOuWQjuWPsO+8iVxuICAgKi9cbiAgYXBwbHkoKSB7XG4gICAgLy8gaWYgKCF0aGlzLmRhdGEuaGFzSW5mbykge1xuICAgIC8vICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JNZXNzYWdlKSB7XG4gICAgLy8gICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdGhpcy5kYXRhW2tleV0pIHtcbiAgICAvLyAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgIC8vICAgICAgICAgaWNvbjogJ25vbmUnLFxuICAgIC8vICAgICAgICAgdGl0bGU6IGVycm9yTWVzc2FnZVtrZXldLFxuICAgIC8vICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgIC8vICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgIC8vICAgICAgICAgICAgIFtlcnJvcktleVtrZXldXTogZXJyb3JNZXNzYWdlW2tleV1cbiAgICAvLyAgICAgICAgICAgfSlcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9KVxuICAgIC8vICAgICAgIHJldHVyblxuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gICBpZiAodGhpcy5kYXRhLmlkY2FyZE51bWJlci5sZW5ndGggIT09IDE1ICYmIHRoaXMuZGF0YS5pZGNhcmROdW1iZXIubGVuZ3RoICE9PSAxOCkge1xuICAgIC8vICAgICB3eC5zaG93VG9hc3Qoe1xuICAgIC8vICAgICAgIGljb246ICdub25lJyxcbiAgICAvLyAgICAgICB0aXRsZTogJ+i6q+S7veivgeWPt+eggeagvOW8j+mUmeivrycsXG4gICAgLy8gICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgIC8vICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAvLyAgICAgICAgICAgaWRfZXJyb3I6ICfouqvku73or4Hlj7fnoIHmoLzlvI/plJnor68nXG4gICAgLy8gICAgICAgICB9KVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSlcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8g5oql5ZCN6ZyA5rGCXG4gICAgLy8gZW5yb2xsbWVudFJlcXVpcmVJbXBsKHtcbiAgICAvLyAgIHJlcXVpcmVtZW50X2lkOiB0aGlzLmRhdGEuaWQsXG4gICAgLy8gICBuYW1lOiB0aGlzLmRhdGEuaW5mb19uYW1lLFxuICAgIC8vICAgaWRjYXJkTnVtYmVyOiB0aGlzLmRhdGEuaWRjYXJkTnVtYmVyLFxuICAgIC8vICAgYnJpZ2h0X3BvaW50czogdGhpcy5kYXRhLmJyaWdodF9wb2ludHMsXG4gICAgLy8gICBlbnJvbGxfZnJvbTogMFxuICAgIC8vIH0pLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgd3guc2hvd1RvYXN0KHtcbiAgICAvLyAgICAgdGl0bGU6ICfmiqXlkI3miJDlip8nLFxuICAgIC8vICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAvLyAgICAgICAgIGNvdmVyOiB0cnVlLFxuICAgIC8vICAgICAgIH0sICgpID0+IHtcbiAgICAvLyAgICAgICAgIHd4Lm5hdmlnYXRlQmFjayh7XG4gICAgLy8gICAgICAgICAgIGRlbHRhOiAxLFxuICAgIC8vICAgICAgICAgfSlcbiAgICAvLyAgICAgICB9KVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9KVxuICAgIC8vIH0pLmNhdGNoKHJlcyA9PiB7XG4gICAgLy8gICBpZiAocmVzLmVyckNvZGUpIHtcbiAgICAvLyAgICAgd3guc2hvd01vZGFsKHtcbiAgICAvLyAgICAgICB0aXRsZTogJ+aKpeWQjeWksei0pScsXG4gICAgLy8gICAgICAgY29udGVudDogcmVzLmVyck1zZyxcbiAgICAvLyAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcbiAgICAvLyAgICAgICBjb25maXJtQ29sb3I6ICcjMzEzNjRDJ1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgY29uc3QgdXNlckluZm8gPSB3eC5nZXRTdG9yYWdlU3luYygndXNlckluZm8nKVxuXG4gICAgaWYgKHVzZXJJbmZvLmlzRGVtb25zdHJhdGUpIHtcbiAgICAgIHd4LnNob3dNb2RhbCh7XG4gICAgICAgIHRpdGxlOiAn5oql5ZCN5oiQ5YqfJyxcbiAgICAgICAgY29udGVudDogJ+ivt+iAkOW/g+etieW+heS8geS4muehruiupCcsXG4gICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICBjb25maXJtVGV4dDogJ+efpemBk+S6hicsXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBod09yZGVyQVBJID0gdGhpcy5kYXRhLmh3T3JkZXJBUElcbiAgICAgICAgICBod09yZGVyQVBJLnN0YXR1cyA9IDVcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgc3RhdHVzOiAyLFxuICAgICAgICAgICAgaHdPcmRlckFQSVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcHV0U3RvcmFnZVN5bmMoYG9yZGVyRGV0YWlsXyR7dGhpcy5kYXRhLmlkfWAsIHRoaXMuZGF0YS5pZCwgaHdPcmRlckFQSS5zdGF0dXMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDkuq7ngrnovpPlhaVcbiAgICogQGlkY2FyZE51bWJlciB7c3RyaW5nfSDouqvku73or4FcbiAgICovXG4gIHNhdmVJZENhcmROdW1iZXIoZTogYW55KSB7XG4gICAgY29uc3QgaWRjYXJkTnVtYmVyID0gZS5kZXRhaWwudmFsdWVcbiAgICBpZiAoaWRjYXJkTnVtYmVyKSB7XG4gICAgICBpZiAoaWRjYXJkTnVtYmVyLmxlbmd0aCAhPT0gMTUgJiYgaWRjYXJkTnVtYmVyLmxlbmd0aCAhPT0gMTgpIHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICBpZF9lcnJvcjogJ+i6q+S7veivgeWPt+eggeagvOW8j+mUmeivrydcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgaWRjYXJkTnVtYmVyLFxuICAgICAgICAgIGlkX2Vycm9yOiAnJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBpZF9lcnJvcjogJ+ivt+Whq+WGmei6q+S7veivgeWPt+eggSdcbiAgICAgIH0pXG4gICAgfVxuICB9LFxuICAvKipcbiAgICog5Lqu54K56L6T5YWlXG4gICAqIEBuYW1lIHtzdHJpbmd9IOWnk+WQjVxuICAgKi9cbiAgc2F2ZU5hbWUoZTogYW55KSB7XG4gICAgY29uc3QgaW5mb19uYW1lID0gZS5kZXRhaWwudmFsdWVcbiAgICBpZiAoaW5mb19uYW1lKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBpbmZvX25hbWUsXG4gICAgICAgIG5hbWVfZXJyb3I6ICcnXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBuYW1lX2Vycm9yOiAn6K+35aGr5YaZ5aeT5ZCNJ1xuICAgICAgfSlcbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiDkuq7ngrnovpPlhaVcbiAgICogQGJyaWdodF9wb2ludHMge3N0cmluZ30g5Lqu54K5XG4gICAqL1xuICBpbnB1dChlOiBhbnkpIHtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgYnJpZ2h0X3BvaW50czogZS5kZXRhaWwudmFsdWVcbiAgICB9KVxuICB9LFxuICAvKipcbiAgICog5omT5byA5Zyw5Zu+XG4gICAqL1xuICBvcGVuTWFwKGU6IGFueSkge1xuICAgIGNvbnN0IG5hbWUgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5uYW1lO1xuICAgIGNvbnN0IGFkZHJlc3MgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5hZGRyZXNzO1xuICAgIGNvbnNvbGUubG9nKG5hbWUsIGFkZHJlc3MpO1xuXG4gICAgLy8gd3gub3BlbkxvY2F0aW9uKHtcbiAgICAvLyAgIGxhdGl0dWRlOiAzMS41NDQzMjUsXG4gICAgLy8gICBsb25naXR1ZGU6IDEyMC4zNTY1OTUsXG4gICAgLy8gICBuYW1lLFxuICAgIC8vICAgYWRkcmVzc1xuICAgIC8vIH0pXG4gIH0sXG4gIC8qKlxuICAgKiDmn6XnnIvlkIjlkIxcbiAgICogQGZpbGVQYXRoIHtzdHJpbmd9IOWQiOWQjOWcsOWdgFxuICAgKi9cbiAgYnV0dG9uQ2hlY2soKSB7XG4gICAgLy8g6I635Y+W57q/5LiK5ZCI5ZCMICDlpoLmnpzlrZjlnKjmiZPlvIDlkIjlkIwgICDkuI3lrZjlnKjov5vooYzmj5DnpLrvvIjmmoLml6DvvIlcbiAgICBjb25zdCB3b3JrQ29udHJhY3QgPSB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3Q7XG4gICAgaWYgKHdvcmtDb250cmFjdCkge1xuICAgICAgd3guc2hvd0xvYWRpbmcoe1xuICAgICAgICBtYXNrOiB0cnVlLFxuICAgICAgICB0aXRsZTogJ+ato+WcqOaJk+W8gOaWh+S7ti4uLicsXG4gICAgICB9KVxuICAgICAgd3guZG93bmxvYWRGaWxlKHtcbiAgICAgICAgdXJsOiB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3QsXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcbiAgICAgICAgICB3eC5vcGVuRG9jdW1lbnQoe1xuICAgICAgICAgICAgZmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGgsXG4gICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKCkge1xuICAgICAgICAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgICAgIGljb246ICdub25lJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aJk+W8gOWksei0pScsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd3guc2hvd1RvYXN0KHtcbiAgICAgIC8vICAgaWNvbjonbm9uZScsXG4gICAgICAvLyAgIHRpdGxlOiAnJyxcbiAgICAgIC8vIH0pXG4gICAgfVxuICB9LFxuICAvKipcbiAgICog56Gu6K6k6K6i5Y2VXG4gICAqIEBvcmRlcklkIHtzdHJpbmd9IOiuouWNlUlEXG4gICAqIOWJjeWPsOaKpeWQjemcgOaxguWQjiAg5ZCO5Y+w55Sf5oiQ6K6i5Y2VICAg6ZyA5YmN5Y+w5omL5Yqo56Gu5a6a6K6i5Y2VIOagueaNruiuouWNleWQiOWQjOS4jeWQjOiwg+eUqOS4jeWQjOaOpeWPo1xuICAgKi9cbiAgYnV0dG9uU3VibWl0KCkge1xuICAgIGNvbnN0IHdvcmtDb250cmFjdFR5cGUgPSB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3RUeXBlO1xuICAgIC8vIOeUteWtkOWQiOWQjOehruiupOiuouWNlVxuICAgIGlmICh3b3JrQ29udHJhY3RUeXBlID09PSAxKSB7XG4gICAgICBjb25maXJtRUNPcmRlcnNJbXBsKHtcbiAgICAgICAgb3JkZXJJZDogdGhpcy5kYXRhLmh3T3JkZXJBUEkuaWRcbiAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcy5lcnJDb2RlID09PSAwKSB7XG4gICAgICAgICAgLy8g6Lez6L2sd2Vidmlld+mhtemdolxuICAgICAgICAgIHd4LnJlTGF1bmNoKHtcbiAgICAgICAgICAgIHVybDogYC9wYWdlcy93ZWItdmlldy93ZWItdmlldz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQocmVzLmRhdGEudXJsKX1gLFxuICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgICAgICAvLyDnvJPlrZjlvZPliY3pobXpnaLlnLDlnYAgICDmlrnkvr/ot7Plm55cbiAgICAgICAgICAgICAgYXBwLmdsb2JhbERhdGEud2VidmlldyA9IGAvcGFnZXMvbXktb3JkZXIvbXktb3JkZXJgO1xuICAgICAgICAgICAgICAvLyB3eC5zZXRTdG9yYWdlU3luYygnd2ViX3ZpZXcnLCBgL3BhZ2VzL215LW9yZGVyL215LW9yZGVyYClcbiAgICAgICAgICAgICAgLy8gd3guc2V0U3RvcmFnZVN5bmMoJ3dlYl92aWV3JywgYC8ke3RoaXMucm91dGV9P2lkPSR7dGhpcy5kYXRhLmh3T3JkZXJBUEkuaWR9JiZzdGF0dXM9JHt0aGlzLmRhdGEuc3RhdHVzfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgLy8g6Z2e55S15a2Q5ZCI5ZCMXG4gICAgaWYgKHdvcmtDb250cmFjdFR5cGUgPT09IDApIHtcbiAgICAgIGNvbmZpcm1PcmRlckltcGwoe1xuICAgICAgICBvcmRlcklkOiB0aGlzLmRhdGEuaHdPcmRlckFQSS5pZFxuICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzLmVyckNvZGUgPT09IDApIHtcbiAgICAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgdGl0bGU6ICforqLljZXlt7Lnoa7orqQnLFxuICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgICAgICAvLyDnoa7orqTmiJDlip/lkI4g5pu05pS55oyJ6ZKu54q25oCBXG4gICAgICAgICAgICAgIGNvbnN0IGh3T3JkZXJBUEkgPSB0aGlzLmRhdGEuaHdPcmRlckFQSTtcbiAgICAgICAgICAgICAgaHdPcmRlckFQSS5zdGF0dXMgPSAyO1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgIGh3T3JkZXJBUElcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSxcbiAgLy8g5pi+56S65oql5ZCN5aGr5YaZ55qE6K6i5Y2V6L6T5YWl5qGGXG4gIGFzeW5jIHNob3dDb3ZlcigpIHtcbiAgICBjb25zdCB1c2VySW5mbzogYW55ID0gYXdhaXQgZ2V0SHdVc2VySW5mbygpXG4gICAgaWYgKHVzZXJJbmZvLmlkY2FyZE51bWJlciAmJiB1c2VySW5mby5uYW1lKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBjb3ZlcjogZmFsc2UsXG4gICAgICAgIGhhc0luZm86IHRydWVcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIGNvdmVyOiBmYWxzZSxcbiAgICAgICAgaGFzSW5mbzogZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuXG4gIH0sXG4gIC8qKlxuICAgKiDmjqfliLZjb3ZlcuWxgueahOaYvuekuuS4jumakOiXj1xuICAgKi9cbiAgY292ZXIoKSB7XG4gICAgY29uc3QgY292ZXIgPSAhdGhpcy5kYXRhLmNvdmVyO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBjb3ZlclxuICAgIH0pXG4gIH0sXG4gIC8qKlxuICAgICog5Y+W5raI5oql5ZCNXG4gICAgKiBAZW5yb2xsX2lkIHtzdHJpbmd9IOaKpeWQjWlkXG4gICAgKi9cbiAgY2FuY2VsRW5yb2xsbWVudCgpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZGF0YS5lbnJvbGxJZFxuICAgIGNhbmNlbEVucm9sbG1lbnRJbXBsKHtcbiAgICAgIGVucm9sbF9pZDogaWRcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHd4LnNob3dUb2FzdCh7XG4gICAgICAgIGljb246ICdub25lJyxcbiAgICAgICAgdGl0bGU6ICflj5bmtojmiJDlip8nLFxuICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB3eC5uYXZpZ2F0ZUJhY2soe1xuICAgICAgICAgICAgICBkZWx0YTogMVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LCAxMjAwKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0sXG4gIC8qKlxuICAgKiBcbiAgICovXG4gIGJ1dHRvblJpZ2h0KCkge1xuXG4gIH0sXG4gIC8qKlxuICAgKiDnlJ/lkb3lkajmnJ/lh73mlbAtLeebkeWQrOmhtemdouWKoOi9vVxuICAgKi9cbiAgb25Mb2FkOiBmdW5jdGlvbiAob3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Yid5qyh5riy5p+T5a6M5oiQXG4gICAqL1xuICBvblJlYWR5OiBmdW5jdGlvbiAoKSB7XG5cbiAgfSxcblxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLmmL7npLpcbiAgICovXG4gIG9uU2hvdzogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmRhdGEub3B0aW9uc1xuICAgIGlmIChvcHRpb25zLmlkICYmIG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICAvLyAg5aaC5p6cIOeKtuaAgeS4ujMgIOivt+axguiuouWNleivpuaDhSBJROS4uuiuouWNlWlkXG4gICAgICBpZiAob3B0aW9ucy5zdGF0dXMgPT09ICcyJykge1xuICAgICAgICBnZXRPcmRlckRldGFpbEltcGwoe1xuICAgICAgICAgIG9yZGVySWQ6IG9wdGlvbnMuaWRcbiAgICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMuZXJyQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBnZXRTdG9yYWdlU3luYyhgb3JkZXJEZXRhaWxfJHt0aGlzLmRhdGEuaWR9YClcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICByZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1cyA9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgIC4uLnJlcy5kYXRhLmh3UmVxdWlyZW1lbnRBUEksXG4gICAgICAgICAgICAgIGh3T3JkZXJBUEk6IHJlcy5kYXRhLmh3T3JkZXJBUEksXG4gICAgICAgICAgICAgIC8vIGJ0bl9tZXNzYWdlOiByZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1cyA9PT0gMiAmJiByZXMuZGF0YS5od09yZGVyQVBJLnNlcnZpY2VTdGFnZSA/IGDnrKwke3Jlcy5kYXRhLmh3T3JkZXJBUEkuc2VydmljZVN0YWdlfeacn+acjeWKoeS4rWAgOiB0aGlzLmRhdGEubWVzc2FnZVtyZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1c11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyDlpoLmnpznirbmgIHkuLoxIOivt+axgumcgOaxguivpuaDhSBJROS4uumcgOaxgmlkXG4gICAgICBpZiAob3B0aW9ucy5zdGF0dXMgPT09ICcxJykge1xuICAgICAgICBnZXRSZXF1aXJlbWVudERldGFpbEltcGwoe1xuICAgICAgICAgIHVzZXJfaWQ6IHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySWQnKSxcbiAgICAgICAgICB1c2VyX3Rva2VuOiB3eC5nZXRTdG9yYWdlU3luYygndXNlclRva2VuJyksXG4gICAgICAgICAgaHdSZXF1aXJlbWVudElkOiBvcHRpb25zLmlkXG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzLmVyckNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgIC4uLnJlcy5kYXRhLmh3UmVxdWlyZW1lbnRBUEksXG4gICAgICAgICAgICAgIGRpc3BsYXlDYW5jZWw6IHJlcy5kYXRhLmRpc3BsYXlDYW5jZWwgfHwgbnVsbCxcbiAgICAgICAgICAgICAgbmVlZEVucm9sbG1lbnQ6IHJlcy5kYXRhLm5lZWRFbnJvbGxtZW50IHx8IG51bGwsXG4gICAgICAgICAgICAgIGVucm9sbElkOiByZXMuZGF0YS5lbnJvbGxJZCB8fCBudWxsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g5L+d5a2Y54q25oCBXG4gICAgaWYgKG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBzdGF0dXM6IE51bWJlcihvcHRpb25zLnN0YXR1cyksXG4gICAgICAgIHNob3c6IGZhbHNlXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgdXNlcl9pZDogd3guZ2V0U3RvcmFnZVN5bmMoJ3VzZXJJZCcpLFxuICAgIH0pXG5cbiAgfSxcblxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLpmpDol49cbiAgICovXG4gIG9uSGlkZTogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Y246L29XG4gICAqL1xuICBvblVubG9hZDogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOmhtemdouebuOWFs+S6i+S7tuWkhOeQhuWHveaVsC0t55uR5ZCs55So5oi35LiL5ouJ5Yqo5L2cXG4gICAqL1xuICBvblB1bGxEb3duUmVmcmVzaDogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOmhtemdouS4iuaLieinpuW6leS6i+S7tueahOWkhOeQhuWHveaVsFxuICAgKi9cbiAgb25SZWFjaEJvdHRvbTogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUqOaIt+eCueWHu+WPs+S4iuinkuWIhuS6q1xuICAgKi9cbiAgb25TaGFyZUFwcE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMuZGF0YS5uYW1lLFxuICAgICAgcGF0aDogYC9wYWdlcy9kZXRhaWwvZGV0YWlsP2lkPSR7dGhpcy5kYXRhLmlkfSYmc3RhdHVzPSR7dGhpcy5kYXRhLnN0YXR1c31gXG4gICAgfVxuICB9XG59KSJdfQ==
|