PageSourceSearch

https://mywtc.wtctheology.org.uk/js/2412.0bdc29ee.js

js wtctheology.org.uk collected 2026-10-03 23:56:55 UTC 207,999 bytes, 1 lines download raw bytes

1"use strict";(self["webpackChunkcdms"]=self["webpackChunkcdms"]||[]).push([[2412],{72412:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ HESAManagement; }\n});\n\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VAlert/VAlert.js + 2 modules\nvar VAlert = __webpack_require__(1965);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VBtn/VBtn.js + 2 modules\nvar VBtn = __webpack_require__(33740);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCard/VCard.js\nvar VCard = __webpack_require__(3698);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCard/index.js\nvar components_VCard = __webpack_require__(52938);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VCol.js\nvar VCol = __webpack_require__(54414);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCombobox/VCombobox.js\nvar VCombobox = __webpack_require__(7506);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VContainer.js + 1 modules\nvar VContainer = __webpack_require__(3449);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VDialog/VDialog.js + 1 modules\nvar VDialog = __webpack_require__(99991);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VForm/VForm.js\nvar VForm = __webpack_require__(70174);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VIcon/VIcon.js + 1 modules\nvar VIcon = __webpack_require__(36930);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VRow.js\nvar VRow = __webpack_require__(2756);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSelect/VSelect.js + 5 modules\nvar VSelect = __webpack_require__(18783);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSheet/VSheet.js + 1 modules\nvar VSheet = __webpack_require__(28184);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VSpacer.js\nvar VSpacer = __webpack_require__(41034);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSwitch/VSwitch.js + 1 modules\nvar VSwitch = __webpack_require__(63000);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VTextField/VTextField.js + 3 modules\nvar VTextField = __webpack_require__(79549);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VTextarea/VTextarea.js + 1 modules\nvar VTextarea = __webpack_require__(26513);\n;// ./node_modules/vuetify-loader/lib/loader.js??ruleSet[1].rules[0].use!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/pug-plain-loader/index.js!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=template&id=35aa4e35&scoped=true&lang=pug\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar render = function render() {\n  var _vm = this,\n    _c = _vm._self._c;\n  return _c(VCard/* default */.A, [_c(components_VCard/* VCardTitle */.ri, [_vm._v(_vm._s(_vm.hesaTitle))]), _c(components_VCard/* VCardText */.OQ, [_c(VContainer/* default */.A, {\n    attrs: {\n      \"fluid\": \"\"\n    }\n  }, _vm._l(_vm.visibleSections, function (section) {\n    return _c(VSheet/* default */.A, {\n      key: section.name,\n      staticClass: \"mt-4 pa-4\",\n      attrs: {\n        \"outlined\": \"\"\n      }\n    }, [_c(VRow/* default */.A, [_c(VCol/* default */.A, {\n      attrs: {\n        \"cols\": \"12\"\n      }\n    }, [_vm.canEditSection(section) ? _c(VRow/* default */.A, {\n      staticClass: \"align-center\"\n    }, [_c(VCol/* default */.A, [_c('h3', [_vm._v(_vm._s(section.name))])]), _c(VCol/* default */.A, {\n      staticClass: \"text-right\"\n    }, [_c(VBtn/* default */.A, {\n      attrs: {\n        \"fab\": \"\",\n        \"dark\": \"\",\n        \"x-small\": \"\",\n        \"color\": section.name === 'Financial Support' ? 'primary' : 'success'\n      },\n      on: {\n        \"click\": function ($event) {\n          return _vm.openEditDialog(section);\n        }\n      }\n    }, [_c(VIcon/* default */.A, [_vm._v(_vm._s(section.name === 'Financial Support' ? 'mdi-plus' : 'mdi-pencil'))])], 1)], 1)], 1) : _c('h3', [_vm._v(_vm._s(section.name))]), section.name === 'Annual survey' && (!_vm.data.profile.hesaSurvey || Object.keys(_vm.data.profile.hesaSurvey).length === 0) ? _c(VAlert/* default */.A, {\n      staticClass: \"pa-0 mt-3 mb-0\",\n      attrs: {\n        \"type\": \"info\",\n        \"text\": \"\"\n      }\n    }, [_vm._v(\"No HESA survey data available\")]) : _vm._e()], 1)], 1), section.name !== 'Financial Support' ? _c(VRow/* default */.A, [_vm._l(section.fields, function (field) {\n      return [field.newRow ? _c('div', {\n        key: `${field.label}-break`,\n        staticClass: \"hesa-row-break\"\n      }) : _vm._e(), _c(VCol/* default */.A, _vm._b({\n        key: field.label\n      }, 'v-col', field.cols, false), [field.fieldType === 'switch' ? _c(VSwitch/* default */.A, {\n        attrs: {\n          \"input-value\"
1: _vm.getFieldValue(field),\n          \"label\": field.label,\n          \"hint\": _vm.getFieldHint(field) ? `Source: ${_vm.getFieldHint(field)}` : null,\n          \"color\": \"success\",\n          \"dense\": \"\",\n          \"readonly\": \"\",\n          \"persistent-hint\": \"\"\n        }\n      }) : _c(VTextField/* default */.A, {\n        attrs: {\n          \"value\": _vm.getFieldValue(field),\n          \"label\": field.label,\n          \"hint\": _vm.getFieldHint(field) ? `Source: ${_vm.getFieldHint(field)}` : null,\n          \"dense\": \"\",\n          \"readonly\": \"\",\n          \"persistent-hint\": \"\"\n        }\n      })], 1)];\n    })], 2) : _vm._e(), section.name === 'Entry Qualifications' ? _c(VRow/* default */.A, [_c(VCol/* default */.A, {\n      attrs: {\n        \"cols\": \"12\"\n      }\n    }, [_vm.data.profile._id ? _c('entry-qualification-table', {\n      attrs: {\n        \"profile-id\": _vm.data.profile._id,\n        \"records\": _vm.entryQualificationRecords,\n        \"title\": \"Entry Qualification Awards\",\n        \"readonly\": _vm.readonly || !_vm.hasEditPermission('hesa:edit')\n      },\n      on: {\n        \"updated\": _vm.updateEntryQualificationRecords\n      }\n    }) : _vm._e()], 1)], 1) : _vm._e(), section.name === 'Financial Support' ? _c(VRow/* default */.A, [_c(VCol/* default */.A, {\n      attrs: {\n        \"cols\": \"12\"\n      }\n    }, [_vm.currentEngagement._id && _vm.hesaRelevantSession._id ? _c('financial-support-table', {\n      attrs: {\n        \"student-id\": _vm.data._id,\n        \"engagement-id\": _vm.currentEngagement._id,\n        \"session-id\": _vm.hesaRelevantSession._id,\n        \"records\": _vm.hesaFinSupRecords,\n        \"ssn\": _vm.data.profile.ssn,\n        \"title\": \"Financial Support Details\",\n        \"readonly\": _vm.readonly || !_vm.hasEditPermission('hesa:edit')\n      },\n      on: {\n        \"updated\": _vm.updateFinSupRecords\n      }\n    }) : _vm._e()], 1)], 1) : _vm._e()], 1);\n  }), 1)], 1), _c(VDialog/* default */.A, {\n    attrs: {\n      \"max-width\": \"600px\"\n    },\n    model: {\n      value: _vm.editDialog,\n      callback: function ($$v) {\n        _vm.editDialog = $$v;\n      },\n      expression: \"editDialog\"\n    }\n  }, [_c(VCard/* default */.A, [_c(components_VCard/* VCardTitle */.ri, [_c('span', {\n    staticClass: \"text-h5\"\n  }, [_vm._v(_vm._s(_vm.editDialogTitle))]), _c(VSpacer/* default */.A), _c(VIcon/* default */.A, {\n    attrs: {\n      \"aria-label\": \"Close\"\n    },\n    on: {\n      \"click\": function ($event) {\n        _vm.editDialog = false;\n      }\n    }\n  }, [_vm._v(\"mdi-close\")])], 1), _c(components_VCard/* VCardText */.OQ, [_c(VForm/* default */.A, {\n    ref: \"editForm\",\n    on: {\n      \"submit\": function ($event) {\n        $event.preventDefault();\n      }\n    },\n    model: {\n      value: _vm.editFormValid,\n      callback: function ($$v) {\n        _vm.editFormValid = $$v;\n      },\n      expression: \"editFormValid\"\n    }\n  }, [_c(VContainer/* default */.A, {\n    attrs: {\n      \"fluid\": \"\"\n    }\n  }, [_c(VRow/* default */.A, _vm._l(_vm.currentEditableFields, function (field) {\n    return _c(VCol/* default */.A, {\n      key: field.editKey,\n      attrs: {\n        \"cols\": \"12\",\n        \"md\": field.fieldType === 'textarea' ? '12' : '6'\n      }\n    }, [field.fieldType === 'switch' ? _c(VSwitch/* default */.A, {\n      attrs: {\n        \"label\": field.label,\n        \"color\": \"success\",\n        \"dense\": \"\",\n        \"hide-details\": \"\"\n      },\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    }) : field.fieldType === 'select' ? _c(VSelect/* default */.A, {\n      attrs: {\n        \"items\": field.selectOptions,\n        \"label\": field.label,\n        \"item-text\": \"text\",\n        \"item-value\": \"value\",\n        \"dense\": \"\",\n        \"clearable\": \"\",\n        \"hide-details\": \"\"\n      }
1,\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    }) : field.fieldType === 'date' ? _c('date-picker', {\n      attrs: {\n        \"label\": field.label,\n        \"clearable\": \"\",\n        \"dense\": \"\"\n      },\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    }) : field.fieldType === 'textarea' ? _c(VTextarea/* default */.A, {\n      attrs: {\n        \"label\": field.label,\n        \"dense\": \"\",\n        \"rows\": \"3\",\n        \"hide-details\": \"\"\n      },\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    }) : field.fieldType === 'number-select' ? _c(VCombobox/* default */.A, {\n      attrs: {\n        \"items\": field.selectOptions,\n        \"label\": field.label,\n        \"item-text\": \"text\",\n        \"item-value\": \"value\",\n        \"return-object\": false,\n        \"rules\": field.rules || [],\n        \"inputmode\": \"numeric\",\n        \"dense\": \"\",\n        \"hide-details\": \"auto\"\n      },\n      on: {\n        \"change\": _vm.onComboboxChange,\n        \"update:search-input\": val => _vm.onComboboxSearchInput(field.editKey, val)\n      },\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    }) : _c(VTextField/* default */.A, {\n      attrs: {\n        \"label\": field.label,\n        \"type\": field.fieldType === 'number' ? 'number' : 'text',\n        \"dense\": \"\",\n        \"hide-details\": \"\"\n      },\n      model: {\n        value: _vm.editFormData[field.editKey],\n        callback: function ($$v) {\n          _vm.$set(_vm.editFormData, field.editKey, $$v);\n        },\n        expression: \"editFormData[field.editKey]\"\n      }\n    })], 1);\n  }), 1)], 1)], 1), _vm.currentEditSection && _vm.currentEditSection.name === 'Engagement Leaver' ? _c(VAlert/* default */.A, {\n    staticClass: \"mt-3 mb-0\",\n    attrs: {\n      \"type\": \"info\",\n      \"text\": \"\",\n      \"dense\": \"\"\n    }\n  }, [_vm._v(\"Only update QUALAWARDID if different from programme of study\")]) : _vm._e()], 1), _c(components_VCard/* VCardActions */.SL, [_c(VSpacer/* default */.A), _c(VBtn/* default */.A, {\n    attrs: {\n      \"text\": \"\"\n    },\n    on: {\n      \"click\": function ($event) {\n        _vm.editDialog = false;\n      }\n    }\n  }, [_vm._v(\"Cancel\")]), _c(VBtn/* default */.A, {\n    attrs: {\n      \"color\": \"success\"\n    },\n    on: {\n      \"click\": _vm.saveEditableFields\n    }\n  }, [_vm._v(\"Save\")])], 1)], 1)], 1)], 1);\n};\nvar staticRenderFns = [];\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js\nvar es_iterator_constructor = __webpack_require__(18111);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js\nvar es_iterator_filter = __webpack_require__(22489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js\nvar es_iterator_find = __webpack_require__(20116);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js\nvar es_iterator_for_each = __webpack_require__(7588);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js\nvar es_iterator_map = __webpack_require__(61701);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js\nvar es_iterator_reduce = __webpack_require__(18237);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js\nvar es_iterator_some = __webpack_require__(13579);\n// EXTERNAL MODULE: ./src/services/systemdata.service.js\nvar systemdata_service = __webpack_require__(41718);\n// EXTERNAL MODULE: ./src/services/students.service.js\nvar students_service = __webpack_require__(72931);\n// EXTERNAL MODULE: ./src/services/educationalProfiles.service.js\nvar educationalProfiles_service = __webpack_require__(47116);\n// EXTERNAL MODULE: ./src/services/hesaCodes.service.js\nvar hesaCodes_service = __webpack_require__(29918);\n// EXTERNAL MODULE: ./src/services/programmes.v2.service.js\nvar programmes_v2_service = __webpack_require__(53046);\n;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=script&lang=js\n\n\n\n\n\n\n\n\n\n\n\n\nconst PREVIOUS_PROVIDER_DEFAULTS = [{\n  value: '5037',\n  text: '5037 - Other UK Further Education College'\n}, {\n  value: '5038',\n  text: '5038 - Other UK Higher Education Provider'\n}, {\n  value: '5039',\n  text: '5039 - Other UK independent school'\n}, {\n  value: '5046',\n  text: '5046 - Other UK state school'\n}, {\n  value: '5047',\n  text: '5047 - Other UK training provider'\n}, {\n  value: '5049',\n  text: '5049 - Any non-UK provider'\n}];\n/* harmony default export */ var HESAManagementvue_type_script_lang_js = ({\n  name: 'HESAManagement',\n  components: {\n    DatePicker: () => __webpack_require__.e(/* import() */ 8816).then(__webpack_require__.bind(__webpack_require__, 68816)),\n    EntryQualificationTable: () => __webpack_require__.e(/* import() */ 3367).then(__webpack_require__.bind(__webpack_require__, 53367)),\n    Financial
1SupportTable: () => __webpack_require__.e(/* import() */ 1870).then(__webpack_require__.bind(__webpack_require__, 91870))\n  },\n  props: {\n    data: {\n      type: Object,\n      required: true\n    },\n    readonly: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: () => ({\n    hesaCollegeConfig: {},\n    qualAwardResultOptions: [{\n      value: '0001',\n      text: '0001 - First class honours'\n    }, {\n      value: '0002',\n      text: '0002 - Upper second class honours'\n    }, {\n      value: '0003',\n      text: '0003 - Lower second class honours'\n    }, {\n      value: '0004',\n      text: '0004 - Third class honours'\n    }, {\n      value: '0005',\n      text: '0005 - Unclassified honours'\n    }, {\n      value: '0006',\n      text: '0006 - Aegrotat (whether to honours or to pass)'\n    }, {\n      value: '0007',\n      text: '0007 - Ordinary (non-honours) degree'\n    }, {\n      value: '0008',\n      text: '0008 - General degree - degree awarded after following a non-honours course/degree that was not available to be classified'\n    }, {\n      value: '0009',\n      text: '0009 - Distinction'\n    }, {\n      value: '0010',\n      text: '0010 - Merit'\n    }, {\n      value: '0011',\n      text: '0011 - Pass'\n    }, {\n      value: '0012',\n      text: '0012 - Commendation'\n    }, {\n      value: '0013',\n      text: '0013 - Award of credit'\n    }, {\n      value: '9999',\n      text: '9999 - Not available'\n    }],\n    sections: [{\n      name: 'System generated',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [{\n        label: 'Version',\n        value: 'hesaCollegeConfig.hesaVersion',\n        editable: false,\n        hint: 'System generated',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'OWNSTU',\n        value: 'data.studentId',\n        editable: true,\n        editKey: 'ownstu',\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SID',\n        value: 'data.profile.hesaSurvey.sid',\n        editable: true,\n        editKey: 'sid',\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'NUMHUS',\n        value: 'data.profile.hesaSurvey.numhus',\n        editable: true,\n        editKey: 'numhus',\n        fieldType: 'number',\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SSN',\n        value: 'data.profile.ssn',\n        editable: true,\n        editKey: 'ssn',\n        hint: 'Student profile',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Included in HESA Report',\n        value: data => !data.hesaExclude,\n        editable: true,\n        editKey: 'hesaInclude',\n        fieldType: 'switch',\n        cols: {\n          cols: '12'\n        }\n      }]\n    }, {\n      name: 'Student provided',\n      viewPermission: 'hesa:view',\n      fields: [{\n        label: 'FNAMES',\n        value: 'data.contact.fnames',\n        editable: false,\n        hint: 'Student provided',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SURNAME',\n        value: 'data.contact.lastName',\n        editable: false,\n        hint: 'Student provided',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'BIRTHDTE',\n        value: (data, filters) => filters.hesaDate(data.profile?.dob),\n        editable: false,\n        hint: 'Student provided',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'NATION',\n        value: 'formattedNationality',\n        editable: false,\n        hint: 'Student provided',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }]\n    }, {\n      name: 'Annual survey',\n      viewPermission: 'hesa:view',\n      fields: [{\n        label: 'ETHNIC',\n        value: 'formattedEthnicityId',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'GENDERID',\n        value: 'formattedGenderId',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'RELIGION',\n        value: 'formattedReligion',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SEXID',\n        value: 'formattedSexId',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SEXORT',\n        value: 'formattedSexOrt',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SNAME16',\n        value: data => data.profile.hesaSurvey?.sname16,\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'TTPCODE',\n        // Prefer the survey answer. When it is missing and the ttpcodeFallback\n        // config flag is set, fall back to the contact record postcode - mirroring\n        // the export logic in cdms-server generateStudent_TTPCODE.\n        value(data) {\
1n          const surveyPostcode = data.profile.hesaSurvey?.ttpcode;\n          if (surveyPostcode) return surveyPostcode;\n          if (this.hesaCollegeConfig?.ttpcodeFallback) {\n            return data.contact?.postCode || '';\n          }\n          return '';\n        },\n        editable: false,\n        hint(data) {\n          if (!data.profile.hesaSurvey?.ttpcode && this.hesaCollegeConfig?.ttpcodeFallback && data.contact?.postCode) {\n            return 'Fall back to contact postcode';\n          }\n          return 'Annual survey';\n        },\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'DISABILITY',\n        value: 'formattedDisability',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6'\n        }\n      }]\n    }, {\n      name: 'Entry Profile',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [\n      // {\n      //   label: 'Updated entry profile',\n      //   value: (data) => data.profile.hesaSurvey?.entryProfileUpdatedAt,\n      //   editable: true,\n      //   editKey: 'entryProfileUpdatedAt',\n      //   fieldType: 'date',\n      //   cols: {cols: '6', md: '2'},\n      // },\n      {\n        label: 'APELCRD',\n        value: 'formattedApelCrd',\n        editable: false,\n        hint: 'Academic record',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'CRDPTSTU',\n        value: 'formattedCrdPTStu',\n        editable: false,\n        hint: 'Academic record',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'CRDSCM',\n        value: () => 'Not yet implemented',\n        editable: false,\n        // TODO: true\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'CARELEAVER',\n        value: 'formattedCareLeaver',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'HIGHESTQOE',\n        value: data => data.profile.hesaSurvey?.highestQOE,\n        editable: true,\n        editKey: 'highestQOE',\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'PARED',\n        value: 'formattedParEd',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'PERMADDCOUNTRY',\n        value: 'formattedPermAddCountry',\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'PERMADDPOSTCODE',\n        value: data => data.profile.hesaSurvey?.permAddPostcode || data.contact?.postCode,\n        editable: false,\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'PREVIOUSPROVIDER',\n        value: data => data.profile.hesaSurvey?.previousProvider,\n        editable: true,\n        editKey: 'previousProvider',\n        fieldType: 'number-select',\n        selectOptions: PREVIOUS_PROVIDER_DEFAULTS,\n        rules: [v => !v || PREVIOUS_PROVIDER_DEFAULTS.some(o => o.value === String(v).trim()) || /^[0-9]{8}$/.test(String(v).trim()) || 'Must be exactly 8 digits or one of the listed options'],\n        hint: 'Annual survey',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Include Credits',\n        value: data => data.profile.hesaSurvey?.includeCRDPTSTU ?? true,\n        editable: true,\n        editKey: 'includeCRDPTSTU',\n        fieldType: 'switch',\n        newRow: true,\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Exclude Entry Profile',\n        value: data => data.profile.hesaSurvey?.excludeEntryProfile ?? false,\n        editable: true,\n        editKey: 'excludeEntryProfile',\n        fieldType: '
1switch',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Force Entry Profile',\n        hint: 'Return the Entry Profile for an engagement that started in an earlier reporting period, to correct data already submitted',\n        value: data => data.profile.hesaSurvey?.forceEntryProfile ?? false,\n        editable: true,\n        editKey: 'forceEntryProfile',\n        fieldType: 'switch',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }]\n    }, {\n      name: 'Entry Qualifications',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [] // This section uses a custom component\n    }, {\n      name: 'Financial Support',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [] // This section uses a custom component\n    }, {\n      name: 'Engagement Leaver',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [{\n        label: 'ENGENDDATE',\n        value: 'currentEngagement.endDate',\n        editable: true,\n        editKey: 'engEndDate',\n        fieldType: 'date',\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'INTENDEDDESTINATION',\n        value: () => 'Not yet implemented',\n        editable: false,\n        // TODO: true\n        // editKey: 'intendedDestination',\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'RSNENGEND',\n        value: 'currentEngagement.hesaRsnEngEnd',\n        editable: true,\n        editKey: 'rsnEngEnd',\n        fieldType: 'select',\n        selectOptions: [{\n          value: '01',\n          text: '01 - Left and awarded credit or a qualification'\n        }, {\n          value: '03',\n          text: '03 - Transferred to another provider'\n        }, {\n          value: '05',\n          text: '05 - Death'\n        }, {\n          value: '11',\n          text: '11 - Other (left but without being awarded credit or a qualification)'\n        }, {\n          value: '12',\n          text: '12 - Transferred out as part of collaborative supervision arrangements'\n        }, {\n          value: '98',\n          text: '98 - Left but award of credit or a qualification not yet known'\n        }],\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'QUALAWARDID',\n        value: 'formattedQualAwardId',\n        editable: true,\n        editKey: 'qualAwardId',\n        fieldType: 'select',\n        selectOptions: [],\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'QUALAWARDRESULT',\n        value: 'formattedQualAwardResult',\n        editable: true,\n        editKey: 'qualAwardResult',\n        fieldType: 'select',\n        selectOptions: [],\n        hint: 'System managed',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }]\n    }, {\n      name: 'Optional Overrides',\n      viewPermission: 'hesa:view',\n      editPermission: 'hesa:edit',\n      fields: [{\n        label: 'RPSTULOAD',\n        value: 'hesaRelevantSession.hesaRPSTULOAD',\n        editable: true,\n        editKey: 'rpstuload',\n        fieldType: 'number',\n        hint: 'Session load data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'INVOICEFEEAMOUNT',\n        value: 'hesaRelevantSession.hesaINVOICEFEEAMOUNT',\n        editable: true,\n        editKey: 'invoicefeeamount',\n        fieldType: 'number',\n        hint: 'Session data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SCSFEEAMOUNT',\n        value: 'hesaRelevantSession.hesaSCSFEEAMOUNT',\n        editable: true,\n        editKey: 'scsfeeamount',\n        fieldType: 'number',\n        hint: 'Session data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SCSESSIONID',\n        value: 'hesaRelevantSession.hesaSCSESSIONID',\n        editable: true,\n        editKey: 'scsessionid',\n        fieldType: 'text',\n        hint: 'Session data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'SCSMODE',\n        value: 'hesaRelevantSession.hesaSCSMODE',\n        editable: true,\n        editKey: 'scsmode',\n        fieldType: '
1select',\n        selectOptions: [{\n          value: '01',\n          text: '01 - Full-time'\n        }, {\n          value: '02',\n          text: '02 - Other full time'\n        }, {\n          value: '03',\n          text: '03 - Accelerated full time'\n        }, {\n          value: '31',\n          text: '31 - Part-time'\n        }],\n        hint: 'Session data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Previous SCS',\n        value: function () {\n          return this.hesaRelevantSession?.previousSCS ? 'Previous SCS data' : 'No content';\n        },\n        editable: true,\n        editKey: 'previousscs',\n        fieldType: 'textarea',\n        hint: 'Previous return',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'ELQ',\n        value: 'hesaRelevantSession.hesaELQ',\n        editable: true,\n        editKey: 'elq',\n        fieldType: 'select',\n        selectOptions: [{\n          value: '01',\n          text: '01 - Non-exempt ELQ'\n        }, {\n          value: '02',\n          text: '02 - Exempt ELQ'\n        }, {\n          value: '03',\n          text: '03 - Not ELQ'\n        }, {\n          value: '09',\n          text: '09 - Not required'\n        }],\n        hint: 'Session data',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }, {\n        label: 'Expected Engagement End Date',\n        value: 'currentEngagement.hesaEngExpectedEndDate',\n        editable: true,\n        editKey: 'hesaEngExpectedEndDate',\n        fieldType: 'date',\n        hint: 'Expected end date for engagement',\n        cols: {\n          cols: '6',\n          md: '2'\n        }\n      }]\n    }],\n    hesaSurvey: {},\n    hesaCodes: {},\n    hesaProgrammes: [],\n    editDialog: false,\n    editFormValid: false,\n    currentEditSection: null,\n    editFormData: {}\n  }),\n  computed: {\n    hesaTitle() {\n      if (!this.hesaCollegeConfig.hesaReportingYear) {\n        return 'HESA Data';\n      }\n      const startYear = this.hesaCollegeConfig.hesaReportingYear;\n      const endYear = startYear + 1;\n      const endYearShort = String(endYear).slice(-2);\n      return `HESA Data for ${startYear}-${endYearShort}`;\n    },\n    visibleSections() {\n      return this.sections.filter(section => {\n        if (!this.hasViewPermission(section.viewPermission)) {\n          return false;\n        }\n        if (section.visible && typeof section.visible === 'function') {\n          return section.visible(this.data, this);\n        }\n        return true;\n      });\n    },\n    currentEditableFields() {\n      if (!this.currentEditSection) return [];\n      return this.currentEditSection.fields.filter(field => field.editable).map(field => {\n        if (field.editKey === 'qualAwardId') {\n          return {\n            ...field,\n            selectOptions: this.hesaProgrammes.map(p => ({\n              value: p.qualid,\n              text: `${p.qualid} - ${p.title}`\n            }))\n          };\n        }\n        if (field.editKey === 'qualAwardResult') {\n          return {\n            ...field,\n            selectOptions: this.qualAwardResultOptions\n          };\n        }\n        return field;\n      });\n    },\n    editDialogTitle() {\n      return this.currentEditSection ? `Edit ${this.currentEditSection.name}` : 'Edit HESA fields';\n    },\n    formattedApelCrd() {\n      return this.currentEngagement.incomingCredits?.find(credit => credit.type === 'APEL') ? '01' : undefined;\n    },\n    formattedCrdPTStu() {\n      return this.currentEngagement.incomingCredits?.reduce((total, credit) => total + (credit.credits || 0), 0) || undefined;\n    },\n    formattedGenderId() {\n      return this.formatHesaField('genderId', 'Student_GENDERID');\n    },\n    formattedEthnicityId() {\n      return this.formatHesaField('ethnicityId', 'Student_ETHNIC');\n    },\n    formattedNationality() {\n      return this.formatHesaField('nationality', 'Student_NATION');\n    },\n    formattedReligion() {\n      return this.formatHesaField('religion', 'Student_RELIGION');\n    },\n    formattedSexOrt() {\n      return this.formatHesaField('sexOrt', 'Student_SEXORT');\n    },\n    formattedCareLeaver() {\n      return this.formatHesaField('careLeaver', 'EntryProfile_CARELEAVER');\n    },\n    formattedParEd() {\n      return this.formatHesaField('parEd', 'EntryProfile_PARED');\n    },\n    formattedPermAddCountry() {\n      return this.formatHesaField('permAddCountry', 'EntryProfile_PERMADDCOUNTRY');\n    },\n    formattedHighestQOE() {\n      return this.formatHesaField('highe
1stQOE', 'EntryProfile_HIGHESTQOE');\n    },\n    formattedFundingBodyId() {\n      return this.formatHesaField('fundingBodyId', 'Student_FUNDCOMP');\n    },\n    formattedDisability() {\n      if (!this.data.profile.hesaSurvey.disability || !Array.isArray(this.data.profile.hesaSurvey.disability)) {\n        return '';\n      }\n      const codeObj = this.hesaCodes['Disability_DISABILITY'];\n      if (!codeObj || !codeObj.codes) return this.data.profile.hesaSurvey.disability.join(', ');\n      return this.data.profile.hesaSurvey.disability.map(code => {\n        const label = Object.keys(codeObj.codes).find(key => codeObj.codes[key] === code);\n        return label ? `${code} - ${label}` : code;\n      }).join(', ');\n    },\n    formattedSexId() {\n      // The return resolves SEXID from the survey answer first and the profile\n      // second, so this has to show the same source — otherwise a student who\n      // answered only in the survey reads as blank here while the XML carries\n      // their code.\n      const surveyCode = this.data.profile.hesaSurvey?.sexId;\n      if (surveyCode && surveyCode !== '99') {\n        return this.formatHesaField('sexId', 'Student_SEXID');\n      }\n      const code = this.parseHesaField(this.data.profile.sex, 'Student_SEXID');\n      return code ? `${code} - ${this.data.profile.sex}` : this.data.profile.sex;\n    },\n    formattedQualAwardId() {\n      const qualid = this.currentEngagement?.hesaQualAwardId;\n      if (!qualid) return '';\n      const programme = this.hesaProgrammes.find(p => p.qualid === qualid);\n      return programme ? `${qualid} - ${programme.title}` : qualid;\n    },\n    formattedQualAwardResult() {\n      const code = this.currentEngagement?.hesaQualAwardResult;\n      if (!code) return '';\n      const paddedCode = String(code).padStart(4, '0');\n      const option = this.qualAwardResultOptions.find(opt => opt.value === paddedCode);\n      return option ? option.text : paddedCode;\n    },\n    activeEngagementIndex() {\n      if (!this.data.engagements || this.data.engagements.length === 0) {\n        return 0;\n      }\n      if (!this.hesaCollegeConfig.hesaReportingYear) {\n        return 0;\n      }\n      const {\n        hesaReportingYear\n      } = this.hesaCollegeConfig;\n      const academicYearStart = new Date(hesaReportingYear, 8, 1);\n      const academicYearEnd = new Date(hesaReportingYear + 1, 7, 31);\n\n      // Iterate through all engagements to find the first one with valid sessions\n      const validSessionCounts = this.data.engagements.map(engagement => {\n        if (!engagement.partnerId) return false;\n        const validSessions = engagement.sessions?.filter(session => {\n          const sessionStart = new Date(session.startDate);\n          const sessionEnd = session.endDate ? new Date(session.endDate) : null;\n          // Session must start OR end within the academic year\n          const sessionStartsInYear = sessionStart >= academicYearStart && sessionStart < academicYearEnd;\n          const sessionEndsInYear = sessionEnd && sessionEnd >= academicYearStart && sessionEnd < academicYearEnd;\n          return sessionStartsInYear || sessionEndsInYear;\n        }) || [];\n        return validSessions.length;\n      });\n\n      // Find the first engagement with valid sessions\n      const activeIndex = validSessionCounts.findIndex(count => count > 0);\n\n      // Return the found index, or default to 0 if no valid sessions found\n      return activeIndex !== -1 ? activeIndex : 0;\n    },\n    currentEngagement() {\n      return this.data.engagements?.[this.activeEngagementIndex] || {};\n    },\n    currentSession() {\n      return this.data.engagements?.[this.activeEngagementIndex]?.sessions?.[0] || {};\n    },\n    hesaRelevantSession() {\n      // Find the session that is relevant for HESA reporting based on hesaReportingYear\n      if (!this.hesaCollegeConfig.hesaReportingYear || !this.currentEngagement.sessions) {\n        return this.currentSession;\n      }\n      const {\n        hesaReportingYear\n      } = this.hesaCollegeConfig;\n      const academicYearStart = new Date(hesaReportingYear, 8, 1); // September 1st\n      const academicYearEnd = new Date(hesaReportingYear + 1, 7, 31); // July 31st next year\n\n      // Find sessions that start within the HESA reporting academic year\n      const relevantSessions = this.currentEngagement.sessions.filter(session => {\n        if (!session.startDate) return false;\n        const sessionStart = new Date(session.startDate);\n        return sessionStart >= academicYearStart && sessionStart <= academicYearEnd;\n      });\n\n      // Return the first relevant session, or fall back to currentSession\n      return relevantSessions[0] || this.currentSession;\n    },\n    hesaFinSupRecords() {\n      return this.hesaRelevantSession?.hesaFinSup || [];\n    },\n    entryQualificationRecords() {\n      return this.data.profile.hesaSurvey?.entryQualificationAward || [];\n    }\n  },\n  async created() {\n    const {\n      data: collegeConfig\n    } = await systemdata_service/* default */.A.getDataByName('hesaCollegeConfig');\n    this.hesaCollegeConfig = collegeConfig;\n    this.data.profile.hesaSurvey = this.data.profile.hesaSurvey || {};\n\n    // Fetch all relevant HESA codes and programmes\n    await Promise.all([this.loadHesaCodes(), this.loadHesaProgrammes()]);\n  },\n  watch: {\n    editDialog(newVal) {\n      if (newVal && this.currentEditSection) {\n        this.initializeEditFormData();\n      }\n    }\n  },\n  methods: {\n    async loadHesaCodes() {\n      const codeTypes = ['Student_NATION', 'Student_GENDERID', 'Student_ETHNIC', 'EntryProfile_PERMADDCOUNTRY', 'Student_RELIGION', 'Student_SEXORT', 'Student_SEXID', 'EntryProfile_CARELEAVER', 'EntryProfile_PARED', 'EntryProfile_HIGHESTQOE',\n      // 'Student_FUNDCOMP',\n      'Disability_DISABILITY'];
1\n      try {\n        const {\n          data\n        } = await hesaCodes_service/* default */.A.getMultipleCodes(codeTypes);\n        if (Array.isArray(data.notFound) && data.notFound.length > 0) {\n          console.warn('HESA codes not found:', data.notFound);\n        }\n        // The bulk endpoint returns each table as a bare code map, while the\n        // single-field one wraps it as {field, codes}. Every accessor below\n        // expects the wrapped form, so normalise on the way in — otherwise\n        // each lookup fails its `codeObj.codes` guard and falls back to the\n        // raw value, leaving sex as a label with no code and the survey\n        // fields as codes with no label.\n        this.$set(this, 'hesaCodes', Object.fromEntries(Object.entries(data.data).map(([field, codes]) => [field, {\n          codes\n        }])));\n      } catch (error) {\n        console.error(`Error loading HESA codes for ${codeType}:`, error);\n      }\n    },\n    async loadHesaProgrammes() {\n      try {\n        const {\n          data\n        } = await programmes_v2_service/* default */.A.getList({\n          hesa: true\n        });\n        this.hesaProgrammes = data.filter(p => p.qualid);\n      } catch (error) {\n        console.error('Error loading HESA programmes:', error);\n      }\n    },\n    formatHesaField(fieldName, codeType) {\n      const value = this.data.profile.hesaSurvey[fieldName];\n      if (!value) return '';\n      const codeObj = this.hesaCodes[codeType];\n      if (!codeObj || !codeObj.codes) return value;\n\n      // Find the label for the code value\n      const label = Object.keys(codeObj.codes).find(key => codeObj.codes[key] === value);\n      return label ? `${value} - ${label}` : value;\n    },\n    parseHesaField(labelText, codeType) {\n      if (!labelText || typeof labelText !== 'string') return null;\n      const codeObj = this.hesaCodes[codeType];\n      if (!codeObj || !codeObj.codes) return null;\n\n      // Find the code for the given label\n      const entry = Object.entries(codeObj.codes).find(([label]) => label.toLowerCase() === labelText.toLowerCase());\n      return entry ? entry[1] : null;\n    },\n    async updateEngagementField(fieldName, value) {\n      try {\n        await students_service/* default */.A.patchEngagement(this.data._id, 'engagements', this.currentEngagement._id, fieldName, value);\n      } catch (error) {\n        console.error(`Error updating engagement field ${fieldName}:`, error);\n        throw error; // Re-throw to be handled by the save method\n      }\n    },\n    hasViewPermission(permission) {\n      return !permission || this.$hasPermission(permission);\n    },\n    hasEditPermission(permission) {\n      return !permission || this.$hasPermission(permission);\n    },\n    getFieldValue(field) {\n      if (typeof field.value === 'function') {\n        return field.value.call(this, this.data, this.$filters);\n      } else if (typeof field.value === 'string') {\n        // Handle dot notation for nested properties\n        // This assumes no optional chaining in the string - use functions for complex access patterns\n        try {\n          return field.value.split('.').reduce((obj, key) => {\n            if (obj == null) return null;\n            return obj[key];\n          }, this);\n        } catch (error) {\n          console.warn(`Error accessing field value \"${field.value}\":`, error);\n          return null;\n        }\n      }\n      return field.value;\n    },\n    getFieldHint(field) {\n      if (typeof field.hint === 'function') {\n        return field.hint.call(this, this.data, this.$filters);\n      }\n      return field.hint;\n    },\n    sectionHasEditableFields(section) {\n      return section.fields.some(field => field.editable);\n    },\n    canEditSection(section) {\n      return section.editPermission && this.hasEditPermission(section.editPermission) && this.sectionHasEditableFields(section);\n    },\n    openEditDialog(section) {\n      this.currentEditSection = section;\n      this.editDialog = true;\n    }
1,\n    initializeEditFormData() {\n      const formData = {};\n      this.currentEditableFields.forEach(field => {\n        if (field.editKey) {\n          if (field.editKey === 'hesaInclude') {\n            // For the inverted include field, get the boolean value\n            formData[field.editKey] = this.getFieldValue(field);\n          } else if (field.editKey === 'qualAwardId') {\n            // For qualAwardId, get the raw value directly\n            formData[field.editKey] = this.currentEngagement?.hesaQualAwardId || '';\n          } else if (field.editKey === 'qualAwardResult') {\n            // For qualAwardResult, get the raw value and pad it\n            const rawValue = this.currentEngagement?.hesaQualAwardResult;\n            formData[field.editKey] = rawValue ? String(rawValue).padStart(4, '0') : '';\n          } else if (field.editKey === 'rsnEngEnd') {\n            // For rsnEngEnd, get the raw value directly\n            formData[field.editKey] = this.currentEngagement?.hesaRsnEngEnd || '';\n          } else if (field.editKey === 'engEndDate') {\n            // For engEndDate, get the raw value directly\n            formData[field.editKey] = this.currentEngagement?.endDate || '';\n          } else if (field.editKey === 'hesaEngExpectedEndDate') {\n            // For hesaEngExpectedEndDate, get the raw value directly\n            formData[field.editKey] = this.currentEngagement?.hesaEngExpectedEndDate || '';\n          } else if (field.editKey === 'rpstuload' || field.editKey === 'invoicefeeamount' || field.editKey === 'scsfeeamount') {\n            // For session fields, get values from hesaRelevantSession\n            const value = this.getFieldValue(field);\n            formData[field.editKey] = value ? Number(value) : null;\n          } else if (field.editKey === 'scsessionid' || field.editKey === 'previousscs') {\n            // For session text fields, get the text value from hesaRelevantSession\n            formData[field.editKey] = this.hesaRelevantSession?.[field.editKey === 'scsessionid' ? 'hesaSCSESSIONID' : 'previousSCS'] || '';\n          } else if (field.editKey === 'scsmode') {\n            // For SCSMODE field, get the value from hesaRelevantSession\n            formData[field.editKey] = this.hesaRelevantSession?.hesaSCSMODE || '';\n          } else if (field.editKey === 'elq') {\n            // For ELQ field, get the value from hesaRelevantSession\n            formData[field.editKey] = this.hesaRelevantSession?.hesaELQ || '';\n          } else if (field.fieldType === 'switch') {\n            // Switches must bind a real boolean; the `|| ''` fallback below\n            // would coerce a legitimate `false` into '', which then fails to\n            // cast to Boolean on save.\n            formData[field.editKey] = Boolean(this.getFieldValue(field));\n          } else if (field.fieldType === 'number') {\n            // For number fields, ensure numeric value\n            const value = this.getFieldValue(field);\n            formData[field.editKey] = value ? Number(value) : null;\n          } else {\n            formData[field.editKey] = this.getFieldValue(field) || '';\n          }\n        }\n      });\n      this.editFormData = formData;\n    },\n    onComboboxChange() {\n      this.$nextTick(() => {\n        if (this.$refs.editForm) this.$refs.editForm.validate();\n      });\n    },\n    // v-combobox only commits on blur/Enter; mirror the search buffer into v-model live so Save can't beat the commit.\n    onComboboxSearchInput(editKey, val) {\n      if (this.editFormData[editKey] !== val) {\n        this.$set(this.editFormData, editKey, val == null ? '' : val);\n      }\n    },\n    async saveEditableFields() {\n      try {\n        // v-combobox only commits typed text to v-model on blur; force it before reading editFormData.\n        if (document.activeElement && typeof document.activeElement.blur === 'function') {\n          document.activeElement.blur();\n        }\n        await this.$nextTick();\n        if (this.$refs.editForm && !this.$refs.editForm.validate()) {\n          this.$showMessage('Please correct the highlighted errors before saving', 'error');\n          return;\n        }\n        const hesaSurveyUpdates = {};\n        const profileUpdates = {};\n        const studentUpdates = {};\n        const engagementUpdates = {};\n        const sessionUpdates = {};\n\n        // Process each editable field based on its editKey\n        Object.entries(this.editFormData).forEac
1h(([key, value]) => {\n          switch (key) {\n            case 'ownstu':\n              if (value !== this.data.studentId) {\n                studentUpdates.studentId = value || null;\n              }\n              break;\n            case 'hesaInclude':\n              // Invert the include switch value to get the exclude value\n              const excludeValue = !value;\n              if (excludeValue !== this.data.hesaExclude) {\n                studentUpdates.hesaExclude = excludeValue;\n              }\n              break;\n            case 'ssn':\n              if (value !== this.data.profile.ssn) {\n                profileUpdates.ssn = value;\n              }\n              break;\n            case 'ttpcode':\n              hesaSurveyUpdates.ttpcode = value;\n              break;\n            case 'engEndDate':\n              if (value !== this.currentEngagement?.endDate) {\n                engagementUpdates.manualEndDate = value;\n              }\n              break;\n            case 'rsnEngEnd':\n              if (value !== this.currentEngagement?.hesaRsnEngEnd) {\n                engagementUpdates.hesaRsnEngEnd = value;\n              }\n              break;\n            case 'qualAwardId':\n              if (value !== this.currentEngagement?.hesaQualAwardId) {\n                engagementUpdates.hesaQualAwardId = value;\n              }\n              break;\n            case 'qualAwardResult':\n              if (value !== this.currentEngagement?.hesaQualAwardResult) {\n                engagementUpdates.hesaQualAwardResult = value;\n              }\n              break;\n            case 'hesaEngExpectedEndDate':\n              if (value !== this.currentEngagement?.hesaEngExpectedEndDate) {\n                engagementUpdates.hesaEngExpectedEndDate = value;\n              }\n              break;\n            case 'rpstuload':\n              if (value !== this.hesaRelevantSession?.hesaRPSTULOAD) {\n                sessionUpdates.hesaRPSTULOAD = value ? Number(value) : null;\n              }\n              break;\n            case 'invoicefeeamount':\n              if (value !== this.hesaRelevantSession?.hesaINVOICEFEEAMOUNT) {\n                sessionUpdates.hesaINVOICEFEEAMOUNT = value ? Number(value) : null;\n              }\n              break;\n            case 'scsfeeamount':\n              if (value !== this.hesaRelevantSession?.hesaSCSFEEAMOUNT) {\n                sessionUpdates.hesaSCSFEEAMOUNT = value ? Number(value) : null;\n              }\n              break;\n            case 'scsessionid':\n              if (value !== this.hesaRelevantSession?.hesaSCSESSIONID) {\n                sessionUpdates.hesaSCSESSIONID = value || null;\n              }\n              break;\n            case 'previousscs':\n              if (value !== this.hesaRelevantSession?.previousSCS) {\n                sessionUpdates.previousSCS = value || null;\n              }\n              break;\n            case 'scsmode':\n              if (value !== this.hesaRelevantSession?.hesaSCSMODE) {\n                sessionUpdates.hesaSCSMODE = value || null;\n              }\n              break;\n            case 'elq':\n              if (value !== this.hesaRelevantSession?.hesaELQ) {\n                sessionUpdates.hesaELQ = value || null;\n              }\n              break;\n            default:\n              // For other fields, assume they go to hesaSurvey\n              // Check if this is a number field and convert appropriately\n              const field = this.currentEditableFields.find(f => f.editKey === key);\n              if (field?.fieldType === 'number') {\n                hesaSurveyUpdates[key] = value ? Number(value) : null;\n              } else {\n                hesaSurveyUpdates[key] = value;\n              }\n          }\n        });\n\n        // Make API calls only if there are updates\n        if (Object.keys(hesaSurveyUpdates).length > 0) {\n          await educationalProfiles_service/* default */.A.updateHesaSurvey(this.data.profile._id, hesaSurveyUpdates);\n          // Update the local data to reflect the changes immediately\n          Object.entries(hesaSurveyUpdates).forEac
1h(([fieldName, value]) => {\n            this.$set(this.data.profile.hesaSurvey, fieldName, value);\n          });\n        }\n        if (Object.keys(profileUpdates).length > 0) {\n          await educationalProfiles_service/* default */.A.update(this.data.profile._id, profileUpdates);\n          // Update the local data to reflect the changes immediately\n          Object.entries(profileUpdates).forEach(([fieldName, value]) => {\n            this.$set(this.data.profile, fieldName, value);\n          });\n        }\n        if (Object.keys(studentUpdates).length > 0) {\n          await students_service/* default */.A.patch(this.data._id, studentUpdates);\n          // Update the local data to reflect the changes immediately\n          Object.entries(studentUpdates).forEach(([fieldName, value]) => {\n            this.$set(this.data, fieldName, value);\n          });\n        }\n        if (Object.keys(engagementUpdates).length > 0) {\n          await Promise.all(Object.entries(engagementUpdates).map(async ([fieldName, value]) => {\n            await this.updateEngagementField(fieldName, value);\n          }));\n          // Update the local data to reflect the changes immediately\n          Object.entries(engagementUpdates).forEach(([fieldName, value]) => {\n            if (this.currentEngagement) {\n              this.$set(this.currentEngagement, fieldName, value);\n            }\n          });\n        }\n        if (Object.keys(sessionUpdates).length > 0) {\n          await Promise.all(Object.entries(sessionUpdates).map(async ([fieldName, value]) => {\n            await students_service/* default */.A.patchEnrolmentSession(this.data._id, 'engagements', this.currentEngagement._id, this.hesaRelevantSession._id, fieldName, value);\n          }));\n          // Update the local data to reflect the changes immediately\n          Object.entries(sessionUpdates).forEach(([fieldName, value]) => {\n            if (this.hesaRelevantSession) {\n              this.$set(this.hesaRelevantSession, fieldName, value);\n            }\n          });\n        }\n\n        // Emit updates\n        if (Object.keys(studentUpdates).length > 0) {\n          this.$emit('updated-student', {\n            studentId: studentUpdates.studentId,\n            hesaExclude: studentUpdates.hesaExclude\n          }, null);\n        }\n        if (Object.keys(engagementUpdates).length > 0) {\n          this.$emit('updated-engagement', engagementUpdates);\n        }\n        if (Object.keys(sessionUpdates).length > 0) {\n          this.$emit('updated-session', {\n            sessionId: this.hesaRelevantSession._id,\n            updates: sessionUpdates\n          });\n        }\n        this.$emit('updated-hesa', {\n          hesaSurvey: hesaSurveyUpdates,\n          profile: profileUpdates\n        });\n        const sectionName = this.currentEditSection?.name || 'HESA';\n        this.editDialog = false;\n        this.currentEditSection = null;\n        this.$showMessage(`${sectionName} fields updated successfully`, 'success');\n      } catch (error) {\n        console.error('Error updating HESA fields:', error);\n        const detail = error?.response?.data?.error || error?.message || 'Unknown error';\n        this.$showMessage(`Error updating HESA fields: ${detail}`, 'error');\n      }\n    },\n    updateFinSupRecords(updatedRecords) {\n      // Update local data\n      this.$set(this.hesaRelevantSession, 'hesaFinSup', updatedRecords);\n\n      // Emit update\n      this.$emit('updated-session', {\n        sessionId: this.hesaRelevantSession._id,\n        updates: {\n          hesaFinSup: updatedRecords\n        }\n      });\n    },\n    updateEntryQualificationRecords(updatedRecords) {\n      // Update local data\n      if (!this.data.profile.hesaSurvey) {\n        this.$set(this.data.profile, 'hesaSurvey', {});\n      }\n      this.$set(this.data.profile.hesaSurvey, 'entryQualificationAward', updatedRecords);\n\n      // Emit update\n      this.$emit('updated-hesa', {\n        hesaSurvey: {\n          entryQualificationAward: updatedRecords\n        },\n        profile: {}\n      });\n    }\n  }\n});\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=script&lang=js\n /* harmony default export */ var components_HESAManagementvue_type_script_lang_js = (HESAManagementvue_type_script_lang_js); \n;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLo
1ader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=style&index=0&id=35aa4e35&prod&scoped=true&lang=css\n// extracted by mini-css-extract-plugin\n\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=style&index=0&id=35aa4e35&prod&scoped=true&lang=css\n\n// EXTERNAL MODULE: ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(81656);\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,componentNormalizer/* default */.A)(\n  components_HESAManagementvue_type_script_lang_js,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"35aa4e35\",\n  null\n  \n)\n\n/* harmony default export */ var HESAManagement = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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FBQUEsR0FDQTtFQUFBNUIsS0FBQTtFQUFBNEIsSUFBQTtBQUFBLEdBQ0E7RUFBQTVCLEtBQUE7RUFBQTRCLElBQUE7QUFBQSxHQUNBO0VBQUE1QixLQUFBO0VBQUE0QixJQUFBO0FBQUEsR0FDQTtFQUFBNUIsS0FBQTtFQUFBNEIsSUFBQTtBQUFBLEdBQ0E7RUFBQTVCLEtBQUE7RUFBQTRCLElBQUE7QUFBQSxFQUNBO0FBRUEsMEVBQWU7RUFDZjlELElBQUE7RUFDQStELFVBQUE7SUFDQUMsVUFBQSxFQUFBQSxDQUFBO0lBQ0FDLHVCQUFBLEVBQUFBLENBQUE7SUFDQUMscUJBQUEsRUFBQUEsQ0FBQTtFQUNBO0VBQ0FDLEtBQUE7SUFDQTVELElBQUE7TUFDQTZELElBQUEsRUFBQTFELE1BQUE7TUFDQTJELFFBQUE7SUFDQTtJQUNBNUMsUUFBQTtNQUNBMkMsSUFBQSxFQUFBRSxPQUFBO01BQ0FDLE9BQUE7SUFDQTtFQUNBO0VBQ0FoRSxJQUFBLEVBQUFBLENBQUE7SUFDQWlFLGlCQUFBO0lBQ0FDLHNCQUFBLEdBQ0E7TUFBQXZDLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQU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BO1FBQ0E7UUFDQSxLQUFBYSxLQUFBO1VBQ0FuUCxVQUFBLEVBQUFrTyxpQkFBQTtVQUNBbk8sT0FBQSxFQUFBb087UUFDQTtRQUVBLE1BQUFtQixXQUFBLFFBQUExTSxrQkFBQSxFQUFBckQsSUFBQTtRQUNBLEtBQUFtQyxVQUFBO1FBQ0EsS0FBQWtCLGtCQUFBO1FBQ0EsS0FBQXFMLFlBQUEsSUFBQXFCLFdBQUE7TUFDQSxTQUFBckQsS0FBQTtRQUNBSixPQUFBLENBQUFJLEtBQUEsZ0NBQUFBLEtBQUE7UUFDQSxNQUFBc0QsTUFBQSxHQUFBdEQsS0FBQSxFQUFBdUQsUUFBQSxFQUFBMVAsSUFBQSxFQUFBbU0sS0FBQSxJQUFBQSxLQUFBLEVBQUF3RCxPQUFBO1FBQ0EsS0FBQXhCLFlBQUEsZ0NBQUFzQixNQUFBO01BQ0E7SUFDQTtJQUVBaE8sb0JBQUFtTyxjQUFBO01BQ0E7TUFDQSxLQUFBcE4sSUFBQSxNQUFBbEIsbUJBQUEsZ0JBQUFzTyxjQUFBOztNQUVBO01BQ0EsS0FBQVAsS0
1FBQTtRQUNBQyxTQUFBLE9BQUFoTyxtQkFBQSxDQUFBTixHQUFBO1FBQ0F1TyxPQUFBO1VBQUF4RSxVQUFBLEVBQUE2RTtRQUFBO01BQ0E7SUFDQTtJQUVBeE8sZ0NBQUF3TyxjQUFBO01BQ0E7TUFDQSxVQUFBNVAsSUFBQSxDQUFBQyxPQUFBLENBQUFDLFVBQUE7UUFDQSxLQUFBc0MsSUFBQSxNQUFBeEMsSUFBQSxDQUFBQyxPQUFBO01BQ0E7TUFDQSxLQUFBdUMsSUFBQSxNQUFBeEMsSUFBQSxDQUFBQyxPQUFBLENBQUFDLFVBQUEsNkJBQUEwUCxjQUFBOztNQUVBO01BQ0EsS0FBQVAsS0FBQTtRQUNBblAsVUFBQTtVQUFBOEssdUJBQUEsRUFBQTRFO1FBQUE7UUFDQTNQLE9BQUE7TUFDQTtJQUNBO0VBQ0E7QUFDQSxDQUFDLEU7O0FDbnlDc1IsQ0FBQyxxRkFBZSxxQ0FBRyxFQUFDLEM7O0FDQTNTOzs7Ozs7O0FFQWlIO0FBQ2hEO0FBQ0w7QUFDNUQsQ0FBc0c7OztBQUd0RztBQUM0RztBQUM1RyxnQkFBZ0Isc0NBQVU7QUFDMUIsRUFBRSxnREFBTTtBQUNSLEVBQUUsTUFBTTtBQUNSLEVBQUUsZUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbURBQWUsaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jZG1zLy4vc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT8zNTVjIiwid2VicGFjazovL2NkbXMvc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT9kZDlkIiwid2VicGFjazovL2NkbXMvLi9zcmMvdmlld3MvZGFzaGJvYXJkL3Byb2ZpbGVzL2NvbXBvbmVudHMvSEVTQU1hbmFnZW1lbnQudnVlPzRkMmMiLCJ3ZWJwYWNrOi8vY2Rtcy8uL3NyYy92aWV3cy9kYXNoYm9hcmQvcHJvZmlsZXMvY29tcG9uZW50cy9IRVNBTWFuYWdlbWVudC52dWU/ZjBjMyIsIndlYnBhY2s6Ly9jZG1zLy4vc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT9kYWFiIiwid2VicGFjazovL2NkbXMvLi9zcmMvdmlld3MvZGFzaGJvYXJkL3Byb2ZpbGVzL2NvbXBvbmVudHMvSEVTQU1hbmFnZW1lbnQudnVlP2MwNGYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCd2LWNhcmQnLFtfYygndi1jYXJkLXRpdGxlJyxbX3ZtLl92KF92bS5fcyhfdm0uaGVzYVRpdGxlKSldKSxfYygndi1jYXJkLXRleHQnLFtfYygndi1jb250YWluZXInLHthdHRyczp7XCJmbHVpZFwiOlwiXCJ9fSxfdm0uX2woKF92bS52aXNpYmxlU2VjdGlvbnMpLGZ1bmN0aW9uKHNlY3Rpb24pe3JldHVybiBfYygndi1zaGVldCcse2tleTpzZWN0aW9uLm5hbWUsc3RhdGljQ2xhc3M6XCJtdC00IHBhLTRcIixhdHRyczp7XCJvdXRsaW5lZFwiOlwiXCJ9fSxbX2MoJ3Ytcm93JyxbX2MoJ3YtY29sJyx7YXR0cnM6e1wiY29sc1wiOlwiMTJcIn19LFsoX3ZtLmNhbkVkaXRTZWN0aW9uKHNlY3Rpb24pKT9fYygndi1yb3cnLHtzdGF0aWNDbGFzczpcImFsaWduLWNlbnRlclwifSxbX2MoJ3YtY29sJyxbX2MoJ2gzJyxbX3ZtLl92KF92bS5fcyhzZWN0aW9uLm5hbWUpKV0pXSksX2MoJ3YtY29sJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LXJpZ2h0XCJ9LFtfYygndi1idG4nLHthdHRyczp7XCJmYWJcIjpcIlwiLFwiZGFya1wiOlwiXCIsXCJ4LXNtYWxsXCI6XCJcIixcImNvbG9yXCI6c2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnID8gJ3ByaW1hcnknIDogJ3N1Y2Nlc3MnfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5vcGVuRWRpdERpYWxvZyhzZWN0aW9uKX19fSxbX2MoJ3YtaWNvbicsW192bS5fdihfdm0uX3Moc2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnID8gJ21kaS1wbHVzJyA6ICdtZGktcGVuY2lsJykpXSldLDEpXSwxKV0sMSk6X2MoJ2gzJyxbX3ZtLl92KF92bS5fcyhzZWN0aW9uLm5hbWUpKV0pLChzZWN0aW9uLm5hbWUgPT09ICdBbm51YWwgc3VydmV5JyAmJiAoIV92bS5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSB8fCBPYmplY3Qua2V5cyhfdm0uZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkpLmxlbmd0aCA9PT0gMCkpP19jKCd2LWFsZXJ0Jyx7c3RhdGljQ2xhc3M6XCJwYS0wIG10LTMgbWItMFwiLGF0dHJzOntcInR5cGVcIjpcImluZm9cIixcInRleHRcIjpcIlwifX0sW192bS5fdihcIk5vIEhFU0Egc3VydmV5IGRhdGEgYXZhaWxhYmxlXCIpXSk6X3ZtLl9lKCldLDEpXSwxKSwoc2VjdGlvbi5uYW1lICE9PSAnRmluYW5jaWFsIFN1cHBvcnQnKT9fYygndi1yb3cnLFtfdm0uX2woKHNlY3Rpb24uZmllbGRzKSxmdW5jdGlvbihmaWVsZCl7cmV0dXJuIFsoZmllbGQubmV3
1Um93KT9fYygnZGl2Jyx7a2V5OmAke2ZpZWxkLmxhYmVsfS1icmVha2Asc3RhdGljQ2xhc3M6XCJoZXNhLXJvdy1icmVha1wifSk6X3ZtLl9lKCksX2MoJ3YtY29sJyxfdm0uX2Ioe2tleTpmaWVsZC5sYWJlbH0sJ3YtY29sJyxmaWVsZC5jb2xzLGZhbHNlKSxbKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3N3aXRjaCcpP19jKCd2LXN3aXRjaCcse2F0dHJzOntcImlucHV0LXZhbHVlXCI6X3ZtLmdldEZpZWxkVmFsdWUoZmllbGQpLFwibGFiZWxcIjpmaWVsZC5sYWJlbCxcImhpbnRcIjpfdm0uZ2V0RmllbGRIaW50KGZpZWxkKSA/IGBTb3VyY2U6ICR7X3ZtLmdldEZpZWxkSGludChmaWVsZCl9YCA6IG51bGwsXCJjb2xvclwiOlwic3VjY2Vzc1wiLFwiZGVuc2VcIjpcIlwiLFwicmVhZG9ubHlcIjpcIlwiLFwicGVyc2lzdGVudC1oaW50XCI6XCJcIn19KTpfYygndi10ZXh0LWZpZWxkJyx7YXR0cnM6e1widmFsdWVcIjpfdm0uZ2V0RmllbGRWYWx1ZShmaWVsZCksXCJsYWJlbFwiOmZpZWxkLmxhYmVsLFwiaGludFwiOl92bS5nZXRGaWVsZEhpbnQoZmllbGQpID8gYFNvdXJjZTogJHtfdm0uZ2V0RmllbGRIaW50KGZpZWxkKX1gIDogbnVsbCxcImRlbnNlXCI6XCJcIixcInJlYWRvbmx5XCI6XCJcIixcInBlcnNpc3RlbnQtaGludFwiOlwiXCJ9fSldLDEpXX0pXSwyKTpfdm0uX2UoKSwoc2VjdGlvbi5uYW1lID09PSAnRW50cnkgUXVhbGlmaWNhdGlvbnMnKT9fYygndi1yb3cnLFtfYygndi1jb2wnLHthdHRyczp7XCJjb2xzXCI6XCIxMlwifX0sWyhfdm0uZGF0YS5wcm9maWxlLl9pZCk/X2MoJ2VudHJ5LXF1YWxpZmljYXRpb24tdGFibGUnLHthdHRyczp7XCJwcm9maWxlLWlkXCI6X3ZtLmRhdGEucHJvZmlsZS5faWQsXCJyZWNvcmRzXCI6X3ZtLmVudHJ5UXVhbGlmaWNhdGlvblJlY29yZHMsXCJ0aXRsZVwiOlwiRW50cnkgUXVhbGlmaWNhdGlvbiBBd2FyZHNcIixcInJlYWRvbmx5XCI6X3ZtLnJlYWRvbmx5IHx8ICFfdm0uaGFzRWRpdFBlcm1pc3Npb24oJ2hlc2E6ZWRpdCcpfSxvbjp7XCJ1cGRhdGVkXCI6X3ZtLnVwZGF0ZUVudHJ5UXVhbGlmaWNhdGlvblJlY29yZHN9fSk6X3ZtLl9lKCldLDEpXSwxKTpfdm0uX2UoKSwoc2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnKT9fYygndi1yb3cnLFtfYygndi1jb2wnLHthdHRyczp7XCJjb2xzXCI6XCIxMlwifX0sWyhfdm0uY3VycmVudEVuZ2FnZW1lbnQuX2lkICYmIF92bS5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCk/X2MoJ2ZpbmFuY2lhbC1zdXBwb3J0LXRhYmxlJyx7YXR0cnM6e1wic3R1ZGVudC1pZFwiOl92bS5kYXRhLl9pZCxcImVuZ2FnZW1lbnQtaWRcIjpfdm0uY3VycmVudEVuZ2FnZW1lbnQuX2lkLFwic2Vzc2lvbi1pZFwiOl92bS5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCxcInJlY29yZHNcIjpfdm0uaGVzYUZpblN1cFJlY29yZHMsXCJzc25cIjpfdm0uZGF0YS5wcm9maWxlLnNzbixcInRpdGxlXCI6XCJGaW5hbmNpYWwgU3VwcG9ydCBEZXRhaWxzXCIsXCJyZWFkb25seVwiOl92bS5yZWFkb25seSB8fCAhX3ZtLmhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKX0sb246e1widXBkYXRlZFwiOl92bS51cGRhdGVGaW5TdXBSZWNvcmRzfX0pOl92bS5fZSgpXSwxKV0sMSk6X3ZtLl9lKCldLDEpfSksMSldLDEpLF9jKCd2LWRpYWxvZycse2F0dHJzOntcIm1heC13aWR0aFwiOlwiNjAwcHhcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdERpYWxvZyksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS5lZGl0RGlhbG9nPSQkdn0sZXhwcmVzc2lvbjpcImVkaXREaWFsb2dcIn19LFtfYygndi1jYXJkJyxbX2MoJ3YtY2FyZC10aXRsZScsW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWg1XCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0RGlhbG9nVGl0bGUpKV0pLF9jKCd2LXNwYWNlcicpLF9jKCd2LWljb24nLHthdHRyczp7XCJhcmlhLWxhYmVsXCI6XCJDbG9zZVwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVkaXREaWFsb2cgPSBmYWxzZX19fSxbX3ZtLl92KFwibWRpLWNsb3NlXCIpXSldLDEpLF9jKCd2LWNhcmQtdGV4dCcsW19jKCd2LWZvcm0nLHtyZWY6XCJlZGl0Rm9ybVwiLG9uOntcInN1Ym1pdFwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7fX0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1WYWxpZCksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS5lZGl0Rm9ybVZhbGlkPSQkdn0sZXhwcmVzc2lvbjpcImVkaXRGb3JtVmFsaWRcIn19LFtfYygndi1jb250YWluZXInLHthdHRyczp7XCJmbHVpZFwiOlwiXCJ9fSxbX2MoJ3Ytcm93Jyxfdm0uX2woKF92bS5jdXJyZW50RWRpdGFibGVGaWVsZHMpLGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gX2MoJ3YtY29sJyx7a2V5OmZpZWxkLmVkaXRLZXksYXR0cnM6e1wiY29sc1wiOlwiMTJcIixcIm1kXCI6ZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnID8gJzEyJyA6ICc2J319LFsoZmllbGQuZmllbGRUeXBlID09PSAnc3dpdGNoJyk/X2MoJ3Ytc3dpdGNoJyx7YXR0cnM6e1wibGFiZWxcIjpmaWVsZC5sYWJlbCxcImNvbG9yXCI6XCJzdWNjZXNzXCIsXCJkZW5zZVwiOlwiXCIsXCJoaWRlLWRldGFpbHNcIjpcIlwifSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6KGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NlbGVjdCcpP19jKCd2LXNlbGVjdCcse2F0dHJzOntcIml0ZW1zXCI6ZmllbGQuc2VsZWN0T3B0aW9ucyxcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJpdGVtLXRleHRcIjpcInRleHRcIixcIml0ZW0tdmFsdWVcIjpcInZhbHVlXCIsXCJkZW5zZVwiOlwiXCIsXCJjbGVhcmFibGVcIjpcIlwiLFwiaGlkZS1kZXRhaWxzXCI6XCJcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldKSxjYWxsYmFjazpmdW5jdGlvbiAoJCR2KSB7X3ZtLiRzZXQoX3ZtLmVkaXRGb3JtRGF0YSwgZmllbGQuZWRpdEtleSwgJCR2KX0sZXhwcmVzc2lvbjpcImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwifX0pOihmaWVsZC5maWVsZFR5cGUgPT09ICdkYXRlJyk/X2MoJ2RhdGUtcGlja2VyJyx7YXR0cnM6e1wibGFiZWxcIjpmaWVsZC5sYWJlbCxcImNsZWFyYWJsZVwiOlwiXCIsXCJkZW5zZVwiOlwiXCJ9LG1vZGVsOnt2YWx1ZTooX3ZtLmVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS4kc2V0KF92bS5lZGl0Rm9ybURhdGEsIGZpZWxkLmVkaXRLZXksICQkdil9LGV4cHJlc3Npb246XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIn19KTooZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnKT9fYygndi10ZXh0YXJlYScse2F0dHJzOntcImx
1hYmVsXCI6ZmllbGQubGFiZWwsXCJkZW5zZVwiOlwiXCIsXCJyb3dzXCI6XCIzXCIsXCJoaWRlLWRldGFpbHNcIjpcIlwifSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6KGZpZWxkLmZpZWxkVHlwZSA9PT0gJ251bWJlci1zZWxlY3QnKT9fYygndi1jb21ib2JveCcse2F0dHJzOntcIml0ZW1zXCI6ZmllbGQuc2VsZWN0T3B0aW9ucyxcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJpdGVtLXRleHRcIjpcInRleHRcIixcIml0ZW0tdmFsdWVcIjpcInZhbHVlXCIsXCJyZXR1cm4tb2JqZWN0XCI6ZmFsc2UsXCJydWxlc1wiOmZpZWxkLnJ1bGVzIHx8IFtdLFwiaW5wdXRtb2RlXCI6XCJudW1lcmljXCIsXCJkZW5zZVwiOlwiXCIsXCJoaWRlLWRldGFpbHNcIjpcImF1dG9cIn0sb246e1wiY2hhbmdlXCI6X3ZtLm9uQ29tYm9ib3hDaGFuZ2UsXCJ1cGRhdGU6c2VhcmNoLWlucHV0XCI6KHZhbCkgPT4gX3ZtLm9uQ29tYm9ib3hTZWFyY2hJbnB1dChmaWVsZC5lZGl0S2V5LCB2YWwpfSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6X2MoJ3YtdGV4dC1maWVsZCcse2F0dHJzOntcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJ0eXBlXCI6ZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnLFwiZGVuc2VcIjpcIlwiLFwiaGlkZS1kZXRhaWxzXCI6XCJcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldKSxjYWxsYmFjazpmdW5jdGlvbiAoJCR2KSB7X3ZtLiRzZXQoX3ZtLmVkaXRGb3JtRGF0YSwgZmllbGQuZWRpdEtleSwgJCR2KX0sZXhwcmVzc2lvbjpcImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwifX0pXSwxKX0pLDEpXSwxKV0sMSksKF92bS5jdXJyZW50RWRpdFNlY3Rpb24gJiYgX3ZtLmN1cnJlbnRFZGl0U2VjdGlvbi5uYW1lID09PSAnRW5nYWdlbWVudCBMZWF2ZXInKT9fYygndi1hbGVydCcse3N0YXRpY0NsYXNzOlwibXQtMyBtYi0wXCIsYXR0cnM6e1widHlwZVwiOlwiaW5mb1wiLFwidGV4dFwiOlwiXCIsXCJkZW5zZVwiOlwiXCJ9fSxbX3ZtLl92KFwiT25seSB1cGRhdGUgUVVBTEFXQVJESUQgaWYgZGlmZmVyZW50IGZyb20gcHJvZ3JhbW1lIG9mIHN0dWR5XCIpXSk6X3ZtLl9lKCldLDEpLF9jKCd2LWNhcmQtYWN0aW9ucycsW19jKCd2LXNwYWNlcicpLF9jKCd2LWJ0bicse2F0dHJzOntcInRleHRcIjpcIlwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVkaXREaWFsb2cgPSBmYWxzZX19fSxbX3ZtLl92KFwiQ2FuY2VsXCIpXSksX2MoJ3YtYnRuJyx7YXR0cnM6e1wiY29sb3JcIjpcInN1Y2Nlc3NcIn0sb246e1wiY2xpY2tcIjpfdm0uc2F2ZUVkaXRhYmxlRmllbGRzfX0sW192bS5fdihcIlNhdmVcIildKV0sMSldLDEpXSwxKV0sMSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlIGxhbmc9XCJwdWdcIj5cbiAgdi1jYXJkXG4gICAgdi1jYXJkLXRpdGxlIHt7IGhlc2FUaXRsZSB9fVxuICAgIHYtY2FyZC10ZXh0XG4gICAgICB2LWNvbnRhaW5lcihmbHVpZClcbiAgICAgICAgLy8gRHluYW1pYyBzZWN0aW9uc1xuICAgICAgICB2LXNoZWV0Lm10LTQucGEtNCh2LWZvcj1cInNlY3Rpb24gaW4gdmlzaWJsZVNlY3Rpb25zXCIgOmtleT1cInNlY3Rpb24ubmFtZVwiIG91dGxpbmVkKVxuICAgICAgICAgIHYtcm93XG4gICAgICAgICAgICB2LWNvbChjb2xzPVwiMTJcIilcbiAgICAgICAgICAgICAgdi1yb3cuYWxpZ24tY2VudGVyKHYtaWY9XCJjYW5FZGl0U2VjdGlvbihzZWN0aW9uKVwiKVxuICAgICAgICAgICAgICAgIHYtY29sXG4gICAgICAgICAgICAgICAgICBoMyB7eyBzZWN0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICB2LWNvbC50ZXh0LXJpZ2h0XG4gICAgICAgICAgICAgICAgICB2LWJ0bihmYWIgZGFyayB4LXNtYWxsIDpjb2xvcj1cInNlY3Rpb24ubmFtZSA9PT0gJ0ZpbmFuY2lhbCBTdXBwb3J0JyA/ICdwcmltYXJ5JyA6ICdzdWNjZXNzJ1wiIEBjbGljaz1cIm9wZW5FZGl0RGlhbG9nKHNlY3Rpb24pXCIpXG4gICAgICAgICAgICAgICAgICAgIHYtaWNvbiB7eyBzZWN0aW9uLm5hbWUgPT09ICdGaW5hbmNpYWwgU3VwcG9ydCcgPyAnbWRpLXBsdXMnIDogJ21kaS1wZW5jaWwnIH19XG4gICAgICAgICAgICAgIGgzKHYtZWxzZSkge3sgc2VjdGlvbi5uYW1lIH19XG5cbiAgICAgICAgICAgICAgdi1hbGVydC5wYS0wLm10LTMubWItMChcbiAgICAgICAgICAgICAgICB2LWlmPVwic2VjdGlvbi5uYW1lID09PSAnQW5udWFsIHN1cnZleScgJiYgKCFkYXRhLnByb2ZpbGUuaGVzYVN1cnZleSB8fCBPYmplY3Qua2V5cyhkYXRhLnByb2ZpbGUuaGVzYVN1cnZleSkubGVuZ3RoID09PSAwKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImluZm9cIlxuICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgKSBObyBIRVNBIHN1cnZleSBkYXRhIGF2YWlsYWJsZVxuXG4gICAgICAgICAgLy8gUmVndWxhciBzZWN0aW9uIGZpZWxkc1xuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgIT09ICdGaW5hbmNpYWwgU3VwcG9ydCdcIilcbiAgICAgICAgICAgIHRlbXBsYXRlKHYtZm9yPVwiZmllbGQgaW4gc2VjdGlvbi5maWVsZHNcIilcbiAgICAgICAgICAgICAgLmhlc2Etcm93LWJyZWFrKHYtaWY9XCJmaWVsZC5uZXdSb3dcIiA6a2V5PVwiYCR7ZmllbGQubGFiZWx9LWJyZWFrYFwiKVxuICAgICAgICAgICAgICB2LWNvbChcbiAgICAgICAgICAgICAgICA6a2V5PVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgI
1HYtYmluZD1cImZpZWxkLmNvbHNcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdi1zd2l0Y2goXG4gICAgICAgICAgICAgICAgICB2LWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc3dpdGNoJ1wiXG4gICAgICAgICAgICAgICAgICA6aW5wdXQtdmFsdWU9XCJnZXRGaWVsZFZhbHVlKGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICA6bGFiZWw9XCJmaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICA6aGludD1cImdldEZpZWxkSGludChmaWVsZCkgPyBgU291cmNlOiAke2dldEZpZWxkSGludChmaWVsZCl9YCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdGVudC1oaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHYtdGV4dC1maWVsZChcbiAgICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiZ2V0RmllbGRWYWx1ZShmaWVsZClcIlxuICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgOmhpbnQ9XCJnZXRGaWVsZEhpbnQoZmllbGQpID8gYFNvdXJjZTogJHtnZXRGaWVsZEhpbnQoZmllbGQpfWAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdGVudC1oaW50XG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gRW50cnkgUXVhbGlmaWNhdGlvbnMgc2VjdGlvblxuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgPT09ICdFbnRyeSBRdWFsaWZpY2F0aW9ucydcIilcbiAgICAgICAgICAgIHYtY29sKGNvbHM9XCIxMlwiKVxuICAgICAgICAgICAgICBlbnRyeS1xdWFsaWZpY2F0aW9uLXRhYmxlKFxuICAgICAgICAgICAgICAgIHYtaWY9XCJkYXRhLnByb2ZpbGUuX2lkXCJcbiAgICAgICAgICAgICAgICA6cHJvZmlsZS1pZD1cImRhdGEucHJvZmlsZS5faWRcIlxuICAgICAgICAgICAgICAgIDpyZWNvcmRzPVwiZW50cnlRdWFsaWZpY2F0aW9uUmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFbnRyeSBRdWFsaWZpY2F0aW9uIEF3YXJkc1wiXG4gICAgICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHkgfHwgIWhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKVwiXG4gICAgICAgICAgICAgICAgQHVwZGF0ZWQ9XCJ1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzXCJcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gRmluYW5jaWFsIFN1cHBvcnQgc2VjdGlvblxuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgPT09ICdGaW5hbmNpYWwgU3VwcG9ydCdcIilcbiAgICAgICAgICAgIHYtY29sKGNvbHM9XCIxMlwiKVxuICAgICAgICAgICAgICBmaW5hbmNpYWwtc3VwcG9ydC10YWJsZShcbiAgICAgICAgICAgICAgICB2LWlmPVwiY3VycmVudEVuZ2FnZW1lbnQuX2lkICYmIGhlc2FSZWxldmFudFNlc3Npb24uX2lkXCJcbiAgICAgICAgICAgICAgICA6c3R1ZGVudC1pZD1cImRhdGEuX2lkXCJcbiAgICAgICAgICAgICAgICA6ZW5nYWdlbWVudC1pZD1cImN1cnJlbnRFbmdhZ2VtZW50Ll9pZFwiXG4gICAgICAgICAgICAgICAgOnNlc3Npb24taWQ9XCJoZXNhUmVsZXZhbnRTZXNzaW9uLl9pZFwiXG4gICAgICAgICAgICAgICAgOnJlY29yZHM9XCJoZXNhRmluU3VwUmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgOnNzbj1cImRhdGEucHJvZmlsZS5zc25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRmluYW5jaWFsIFN1cHBvcnQgRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHkgfHwgIWhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKVwiXG4gICAgICAgICAgICAgICAgQHVwZGF0ZWQ9XCJ1cGRhdGVGaW5TdXBSZWNvcmRzXCJcbiAgICAgICAgICAgICAgKVxuXG4gICAgLy8gRWRpdCBkaWFsb2cgZm9yIGVkaXRhYmxlIGZpZWxkc1xuICAgIHYtZGlhbG9nKHYtbW9kZWw9XCJlZGl0RGlhbG9nXCIgbWF4LXdpZHRoPVwiNjAwcHhcIilcbiAgICAgIHYtY2FyZFxuICAgICAgICB2LWNhcmQtdGl0bGVcbiAgICAgICAgICBzcGFuLnRleHQtaDUge3sgZWRpdERpYWxvZ1RpdGxlIH19XG4gICAgICAgICAgdi1zcGFjZXJcbiAgICAgICAgICB2LWljb24oYXJpYS1sYWJlbD1cIkNsb3NlXCIgQGNsaWNrPVwiZWRpdERpYWxvZyA9IGZhbHNlXCIpIG1kaS1jbG9zZVxuICAgICAgICB2LWNhcmQtdGV4dFxuICAgICAgICAgIHYtZm9ybShyZWY9XCJlZGl0Rm9ybVwiIHYtbW9kZWw9XCJlZGl0Rm9ybVZhbGlkXCIgQHN1Ym1pdC5wcmV2ZW50KVxuICAgICAgICAgICAgdi1jb250YWluZXIoZmx1aWQpXG4gICAgICAgICAgICAgIHYtcm93XG4gICAgICAgICAgICAgICAgdi1jb2woXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cImZpZWxkIGluIGN1cnJlbnRFZGl0YWJsZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiZmllbGQuZWRpdEtleVwiXG4gICAgICAgICAgICAgICAgICBjb2xzPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgOm1kPVwiZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnID8gJzEyJyA6ICc2J1wiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdi1zd2l0Y2goXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzd2l0Y2gnXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB2LXNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2VsZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgI
1HYtbW9kZWw9XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIlxuICAgICAgICAgICAgICAgICAgICA6aXRlbXM9XCJmaWVsZC5zZWxlY3RPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBpdGVtLXRleHQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS12YWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlXG4gICAgICAgICAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZGF0ZS1waWNrZXIoXG4gICAgICAgICAgICAgICAgICAgIHYtZWxzZS1pZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlXG4gICAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB2LXRleHRhcmVhKFxuICAgICAgICAgICAgICAgICAgICB2LWVsc2UtaWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICd0ZXh0YXJlYSdcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJcbiAgICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdi1jb21ib2JveChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyLXNlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJcbiAgICAgICAgICAgICAgICAgICAgOml0ZW
11zPVwiZmllbGQuc2VsZWN0T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS10ZXh0PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0tdmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIDpyZXR1cm4tb2JqZWN0PVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICA6cnVsZXM9XCJmaWVsZC5ydWxlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHM9XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIm9uQ29tYm9ib3hDaGFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOnNlYXJjaC1pbnB1dD1cIih2YWwpID0+IG9uQ29tYm9ib3hTZWFyY2hJbnB1dChmaWVsZC5lZGl0S2V5LCB2YWwpXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHYtdGV4dC1maWVsZChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIlxuICAgICAgICAgICAgICAgICAgICA6bGFiZWw9XCJmaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIDp0eXBlPVwiZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgdi1hbGVydCh2LWlmPVwiY3VycmVudEVkaXRTZWN0aW9uICYmIGN1cnJlbnRFZGl0U2VjdGlvbi5uYW1lID09PSAnRW5nYWdlbWVudCBMZWF2ZXInXCIgdHlwZT1cImluZm9cIiB0ZXh0IGRlbnNlIGNsYXNzPVwibXQtMyBtYi0wXCIpIE9ubHkgdXBkYXRlIFFVQUxBV0FSRElEIGlmIGRpZmZlcmVudCBmcm9tIHByb2dyYW1tZSBvZiBzdHVkeVxuICAgICAgICB2LWNhcmQtYWN0aW9uc1xuICAgICAgICAgIHYtc3BhY2VyXG4gICAgICAgICAgdi1idG4odGV4dCBAY2xpY2s9XCJlZGl0RGlhbG9nID0gZmFsc2VcIikgQ2FuY2VsXG4gICAgICAgICAgdi1idG4oY29sb3I9XCJzdWNjZXNzXCIgQGNsaWNrPVwic2F2ZUVkaXRhYmxlRmllbGRzXCIpIFNhdmVcbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgU3lzdGVtRGF0YVNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlcy9zeXN0ZW1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IFN0dWRlbnRzU2VydmljZSBmcm9tICdAL3NlcnZpY2VzL3N0dWRlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEVkdWNhdGlvbmFsUHJvZmlsZXNTZXJ2aWNlIGZyb20gJ0Avc2VydmljZXMvZWR1Y2F0aW9uYWxQcm9maWxlcy5zZXJ2aWNlJztcbmltcG9ydCBIZXNhQ29kZXNTZXJ2aWNlIGZyb20gJ0Avc2VydmljZXMvaGVzYUNvZGVzLnNlcnZpY2UnO1xuaW1wb3J0IFByb2dyYW1tZXNWMlNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlcy9wcm9ncmFtbWVzLnYyLnNlcnZpY2UnO1xuXG5jb25zdCBQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyA9IFtcbiAge3ZhbHVlOiAnNTAzNycsIHRleHQ6ICc1MDM3IC0gT3RoZXIgVUsgRnVydGhlciBFZHVjYXRpb24gQ29sbGVnZSd9LFxuICB7dmFsdWU6ICc1MDM4JywgdGV4dDogJzUwMzggLSBPdGhlciBVSyBIaWdoZXIgRWR1Y2F0aW9uIFByb3ZpZGVyJ30sXG4gIHt2YWx1ZTogJzUwMzknLCB0ZXh0OiAnNTAzOSAtIE90aGVyIFVLIGluZGVwZW5kZW50IHNjaG9vbCd9LFxuICB7dmFsdWU6ICc1MDQ2JywgdGV4dDogJzUwNDYgLSBPdGhlciBVSyBzdGF0ZSBzY2hvb2wnfSxcbiAge3ZhbHVlOiAnNTA0NycsIHRleHQ6ICc1MDQ3IC0gT3RoZXIgVUsgdHJhaW5pbmcgcHJvdmlkZXInfSxcbiAge3ZhbHVlOiAnNTA0OScsIHRleHQ6ICc1MDQ5IC0gQW55IG5vbi1VSyBwcm92aWRlcid9LFxuXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnSEVTQU1hbmFnZW1lbnQnLFxuICBjb21wb25lbnRzOiB7XG4gICAgRGF0ZVBpY2tlcjogKCkgPT4gaW1wb3J0KCdAL2NvbXBvbmVudHMvY2Rtcy9EYXRlUGlja2VyJyksXG4gICAgRW50cnlRdWFsaWZpY2F0aW9uVGFibGU6ICgpID0+IGltcG9ydCgnQC9jb21wb25lbnRzL2NkbXMvRW50cnlRdWFsaWZpY2F0aW9uVGFibGUnKSxcbiAgICBGaW5hbmNpYWxTdXBwb3J0VGFibGU6ICgpID0+IGltcG9ydCgnQC9jb21wb25lbnRzL2NkbXMvRmluYW5jaWFsU3VwcG9ydFRhYmxlJyksXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgZGF0YToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICByZWFkb25seToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSxcbiAgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBoZXNhQ29sbGVnZUNvbmZpZzoge30sXG4gICAgcXVhbEF3YXJkUmVzdWx0T3B0aW9uczogW1xuICAgICAge3ZhbHVlOiAnMDAwMScsIHRleHQ6ICcwMDAxIC0gRmlyc3QgY2xhc3MgaG9ub3Vycyd9LFxuICAgICAge3ZhbHVlOiAnMDAwMicsIHRleHQ6ICcwMDAyIC0gVXBwZXIgc2Vjb25kIGNsYXNzIGhvbm91cnMnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDMnLCB0ZXh0OiAnMDAwMyAtIExvd2VyIHNlY29uZCBjbGFzcyBob25vdXJzJ30sXG4gICAgICB7dmFsdWU6ICcwMDA0JywgdGV4dDogJzAwMDQgLSBUaGlyZCBjbGFzcyBob25vdXJzJ30sXG4gICAgICB7dmFsdWU6ICcwMDA1JywgdGV4dDogJzAwMDUgLSBVbmNsYXNzaWZpZWQgaG9ub3Vycyd9LFxuICAgICAge3ZhbHVlOiAnMDAwNicsIHRleHQ6ICcwMDA2IC0gQWVncm90YXQgKHdoZXRoZXIgdG8gaG9ub3VycyBvciB0byBwYXNzKSd9LFxuICAgICAge3ZhbHVlOiAnMDAwNycsIHRleHQ6ICcwMDA3IC0gT3JkaW5hcnkgKG5vbi1ob25vdXJzKSBkZWdyZWUnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDgnLCB0ZXh0OiAnMDAwOCAtIEdlbmVyYWwgZGVncmVlIC0gZGVncmVlIGF3YXJkZWQgYWZ0ZXIgZm9sbG93aW5nIGEgbm9uLWhvbm91cnMgY291cnNlL2RlZ3JlZSB0aGF0IHdhcyBub3QgYXZhaWxhYmxlIHRvIGJlIGNsYXNzaWZpZWQnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDknLCB0ZXh0OiAnMDAwOSAtIERpc3RpbmN0aW9uJ30sXG4gICAgICB7dmFsdWU6ICcwMDEwJywgdGV4dDogJzAwMTAgLSBNZXJpdCd9LFxuICAgICAge3ZhbHVlOiAnMDAxMScsIHRleHQ6ICcwMDExIC0gUGFzcyd9LF
1xuICAgICAge3ZhbHVlOiAnMDAxMicsIHRleHQ6ICcwMDEyIC0gQ29tbWVuZGF0aW9uJ30sXG4gICAgICB7dmFsdWU6ICcwMDEzJywgdGV4dDogJzAwMTMgLSBBd2FyZCBvZiBjcmVkaXQnfSxcbiAgICAgIHt2YWx1ZTogJzk5OTknLCB0ZXh0OiAnOTk5OSAtIE5vdCBhdmFpbGFibGUnfSxcbiAgICBdLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTeXN0ZW0gZ2VuZXJhdGVkJyxcbiAgICAgICAgdmlld1Blcm1pc3Npb246ICdoZXNhOnZpZXcnLFxuICAgICAgICBlZGl0UGVybWlzc2lvbjogJ2hlc2E6ZWRpdCcsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVmVyc2lvbicsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FDb2xsZWdlQ29uZmlnLmhlc2FWZXJzaW9uJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gZ2VuZXJhdGVkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdPV05TVFUnLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnN0dWRlbnRJZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdvd25zdHUnLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTSUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnByb2ZpbGUuaGVzYVN1cnZleS5zaWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnc2lkJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTlVNSFVTJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkubnVtaHVzJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ251bWh1cycsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTU04nLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnByb2ZpbGUuc3NuJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3NzbicsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm9maWxlJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJbmNsdWRlZCBpbiBIRVNBIFJlcG9ydCcsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+ICFkYXRhLmhlc2FFeGNsdWRlLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaGVzYUluY2x1ZGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnMTInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1N0dWRlbnQgcHJvdmlkZWQnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRk5BTUVTJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZGF0YS5jb250YWN0LmZuYW1lcycsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU1VSTkFNRScsXG4gICAgICAgICAgICB2YWx1ZTogJ2RhdGEuY29udGFjdC5sYXN0TmFtZScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQklSVEhEVEUnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhLCBmaWx0ZXJzKSA9PiBmaWx0ZXJzLmhlc2FEYXRlKGRhdGEucHJvZmlsZT8uZG9iKSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdTdHVkZW50IHByb3ZpZGVkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdOQVRJT04nLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWROYXRpb25hbGl0eScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRVRITklDJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkRXRobmljaXR5SWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnV
1hbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0dFTkRFUklEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkR2VuZGVySWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JFTElHSU9OJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkUmVsaWdpb24nLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NFWElEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkU2V4SWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NFWE9SVCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvcm1hdHRlZFNleE9ydCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU05BTUUxNicsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5zbmFtZTE2LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnV
1hbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RUUENPREUnLFxuICAgICAgICAgICAgLy8gUHJlZmVyIHRoZSBzdXJ2ZXkgYW5zd2VyLiBXaGVuIGl0IGlzIG1pc3NpbmcgYW5kIHRoZSB0dHBjb2RlRmFsbGJhY2tcbiAgICAgICAgICAgIC8vIGNvbmZpZyBmbGFnIGlzIHNldCwgZmFsbCBiYWNrIHRvIHRoZSBjb250YWN0IHJlY29yZCBwb3N0Y29kZSAtIG1pcnJvcmluZ1xuICAgICAgICAgICAgLy8gdGhlIGV4cG9ydCBsb2dpYyBpbiBjZG1zLXNlcnZlciBnZW5lcmF0ZVN0dWRlbnRfVFRQQ09ERS5cbiAgICAgICAgICAgIHZhbHVlKGRhdGEpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VydmV5UG9zdGNvZGUgPSBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8udHRwY29kZTtcbiAgICAgICAgICAgICAgaWYgKHN1cnZleVBvc3Rjb2RlKSByZXR1cm4gc3VydmV5UG9zdGNvZGU7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmhlc2FDb2xsZWdlQ29uZmlnPy50dHBjb2RlRmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5jb250YWN0Py5wb3N0Q29kZSB8fCAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludChkYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnR0cGNvZGUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmhlc2FDb2xsZWdlQ29uZmlnPy50dHBjb2RlRmFsbGJhY2sgJiZcbiAgICAgICAgICAgICAgICBkYXRhLmNvbnRhY3Q/LnBvc3RDb2RlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRmFsbCBiYWNrIHRvIGNvbnRhY3QgcG9zdGNvZGUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnQW5udWFsIHN1cnZleSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0RJU0FCSUxJVFknLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWREaXNhYmlsaXR5JyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdBbm51YWwgc3VydmV5JyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNid9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW50cnkgUHJvZmlsZScsXG4gICAgICAgIHZpZXdQZXJtaXNzaW9uOiAnaGVzYTp2aWV3JyxcbiAgICAgICAgZWRpdFBlcm1pc3Npb246ICdoZXNhOmVkaXQnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAvLyB7XG4gICAgICAgICAgLy8gICBsYWJlbDogJ1VwZGF0ZWQgZW50cnkgcHJvZmlsZScsXG4gICAgICAgICAgLy8gICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5lbnRyeVByb2ZpbGVVcGRhdGVkQXQsXG4gICAgICAgICAgLy8gICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAvLyAgIGVkaXRLZXk6ICdlbnRyeVByb2ZpbGVVcGRhdGVkQXQnLFxuICAgICAgICAgIC8vICAgZmllbGRUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgLy8gICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQVBFTENSRCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvcm1hdHRlZEFwZWxDcmQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FjYWRlbWljIHJlY29yZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ1JEUFRTVFUnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRDcmRQVFN0dScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQWNhZGVtaWMgcmVjb3JkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDUkRTQ00nLFxuICAgICAgICAgICAgdmFsdWU6ICgpID0+ICdOb3QgeWV0IGltcGxlbWVudGVkJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgLy8gVE9ETzogdHJ1ZVxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDQVJFTEVBVkVSJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkQ2FyZUxlYXZlcicsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSElHSEVTVFFPRScsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5oaWdoZXN0UU9FLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaGlnaGVzdFFPRScsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEFSRUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRQYXJFZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgI
1HtcbiAgICAgICAgICAgIGxhYmVsOiAnUEVSTUFERENPVU5UUlknLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRQZXJtQWRkQ291bnRyeScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEVSTUFERFBPU1RDT0RFJyxcbiAgICAgICAgICAgIHZhbHVlOiAoZGF0YSkgPT4gZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnBlcm1BZGRQb3N0Y29kZSB8fCBkYXRhLmNvbnRhY3Q/LnBvc3RDb2RlLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BSRVZJT1VTUFJPVklERVInLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8ucHJldmlvdXNQcm92aWRlcixcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3ByZXZpb3VzUHJvdmlkZXInLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnbnVtYmVyLXNlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyxcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICh2KSA9PiAhdlxuICAgICAgICAgICAgICAgIHx8IFBSRVZJT1VTX1BST1ZJREVSX0RFRkFVTFRTLnNvbWUoKG8pID0+IG8udmFsdWUgPT09IFN0cmluZyh2KS50cmltKCkpXG4gICAgICAgICAgICAgICAgfHwgL15bMC05XXs4fSQvLnRlc3QoU3RyaW5nKHYpLnRyaW0oKSlcbiAgICAgICAgICAgICAgICB8fCAnTXVzdCBiZSBleGFjdGx5IDggZGlnaXRzIG9yIG9uZSBvZiB0aGUgbGlzdGVkIG9wdGlvbnMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGhpbnQ6ICdBbm51YWwgc3VydmV5JyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJbmNsdWRlIENyZWRpdHMnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8uaW5jbHVkZUNSRFBUU1RVID8/IHRydWUsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdpbmNsdWRlQ1JEUFRTVFUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIG5ld1JvdzogdHJ1ZSxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFeGNsdWRlIEVudHJ5IFByb2ZpbGUnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8uZXhjbHVkZUVudHJ5UHJvZmlsZSA/PyBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ2V4Y2x1ZGVFbnRyeVByb2ZpbGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdGb3JjZSBFbnRyeSBQcm9maWxlJyxcbiAgICAgICAgICAgIGhpbnQ6ICdSZXR1cm4gdGhlIEVudHJ5IFByb2ZpbGUgZm9yIGFuIGVuZ2FnZW1lbnQgdGhhdCBzdGFydGVkIGluIGFuIGVhcmxpZXIgcmVwb3J0aW5nIHBlcmlvZCwgdG8gY29ycmVjdCBkYXRhIGFscmVhZHkgc3VibWl0dGVkJyxcbiAgICAgICAgICAgIHZhbHVlOiAoZGF0YSkgPT4gZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LmZvcmNlRW50cnlQcm9maWxlID8/IGZhbHNlLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnZm9yY2VFbnRyeVByb2ZpbGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW50cnkgUXVhbGlmaWNhdGlvbnMnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXSwgLy8gVGhpcyBzZWN0aW9uIHVzZXMgYSBjdXN0b20gY29tcG9uZW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRmluYW5jaWFsIFN1cHBvcnQnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXSwgLy8gVGhpcyBzZWN0aW9uIHVzZXMgYSBjdXN0b20gY29tcG9uZW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW5nYWdlbWVudCBMZWF2ZXInLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFTkdFTkREQVRFJyxcbiAgICAgICAgICAgIHZhbHVlOiAnY3VycmVudEVuZ2FnZW1lbnQuZW5kRGF0ZScsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdlbmdFbmREYXRlJyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJTlRFTkRFRERFU1RJTkFUSU9OJyxcbiAgICAgICAgICAgI
1HZhbHVlOiAoKSA9PiAnTm90IHlldCBpbXBsZW1lbnRlZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIC8vIFRPRE86IHRydWVcbiAgICAgICAgICAgIC8vIGVkaXRLZXk6ICdpbnRlbmRlZERlc3RpbmF0aW9uJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUlNORU5HRU5EJyxcbiAgICAgICAgICAgIHZhbHVlOiAnY3VycmVudEVuZ2FnZW1lbnQuaGVzYVJzbkVuZ0VuZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdyc25FbmdFbmQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IFtcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDEnLCB0ZXh0OiAnMDEgLSBMZWZ0IGFuZCBhd2FyZGVkIGNyZWRpdCBvciBhIHF1YWxpZmljYXRpb24nfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDMnLCB0ZXh0OiAnMDMgLSBUcmFuc2ZlcnJlZCB0byBhbm90aGVyIHByb3ZpZGVyJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzA1JywgdGV4dDogJzA1IC0gRGVhdGgnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMTEnLCB0ZXh0OiAnMTEgLSBPdGhlciAobGVmdCBidXQgd2l0aG91dCBiZWluZyBhd2FyZGVkIGNyZWRpdCBvciBhIHF1YWxpZmljYXRpb24pJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzEyJywgdGV4dDogJzEyIC0gVHJhbnNmZXJyZWQgb3V0IGFzIHBhcnQgb2YgY29sbGFib3JhdGl2ZSBzdXBlcnZpc2lvbiBhcnJhbmdlbWVudHMnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnOTgnLCB0ZXh0OiAnOTggLSBMZWZ0IGJ1dCBhd2FyZCBvZiBjcmVkaXQgb3IgYSBxdWFsaWZpY2F0aW9uIG5vdCB5ZXQga25vd24nfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoaW50OiAnU3lzdGVtIG1hbmFnZWQnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1FVQUxBV0FSRElEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkUXVhbEF3YXJkSWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAncXVhbEF3YXJkSWQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IFtdLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdRVUFMQVdBUkRSRVNVTFQnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRRdWFsQXdhcmRSZXN1bHQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAncXVhbEF3YXJkUmVzdWx0JyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBbXSxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ09wdGlvbmFsIE92ZXJyaWRlcycsXG4gICAgICAgIHZpZXdQZXJtaXNzaW9uOiAnaGVzYTp2aWV3JyxcbiAgICAgICAgZWRpdFBlcm1pc3Npb246ICdoZXNhOmVkaXQnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JQU1RVTE9BRCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FSZWxldmFudFNlc3Npb24uaGVzYVJQU1RVTE9BRCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdycHN0dWxvYWQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGxvYWQgZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSU5WT0lDRUZFRUFNT1VOVCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FSZWxldmFudFNlc3Npb24uaGVzYUlOVk9JQ0VGRUVBTU9VTlQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaW52b2ljZWZlZWFtb3VudCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1Nlc3Npb24gZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0NTRkVFQU1PVU5UJyxcbiAgICAgICAgICAgIHZhbHVlOiAnaGVzYVJlbGV2YW50U2Vzc2lvbi5oZXNhU0NTRkVFQU1PVU5UJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3Njc2ZlZWFtb3VudCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1Nlc3Npb24gZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0NTRVNTSU9OSUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FTQ1NFU1NJT05JRCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdzY3Nlc3Npb25pZCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGRhdGEnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NDU01PREUnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FTQ1NNT0RFJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3Njc21vZGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgI
1HNlbGVjdE9wdGlvbnM6IFtcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDEnLCB0ZXh0OiAnMDEgLSBGdWxsLXRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDInLCB0ZXh0OiAnMDIgLSBPdGhlciBmdWxsIHRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDMnLCB0ZXh0OiAnMDMgLSBBY2NlbGVyYXRlZCBmdWxsIHRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMzEnLCB0ZXh0OiAnMzEgLSBQYXJ0LXRpbWUnfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoaW50OiAnU2Vzc2lvbiBkYXRhJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdQcmV2aW91cyBTQ1MnLFxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5wcmV2aW91c1NDUyA/ICdQcmV2aW91cyBTQ1MgZGF0YScgOiAnTm8gY29udGVudCc7IH0sXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdwcmV2aW91c3NjcycsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICBoaW50OiAnUHJldmlvdXMgcmV0dXJuJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFTFEnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FFTFEnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnZWxxJyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBbXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzAxJywgdGV4dDogJzAxIC0gTm9uLWV4ZW1wdCBFTFEnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDInLCB0ZXh0OiAnMDIgLSBFeGVtcHQgRUxRJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzAzJywgdGV4dDogJzAzIC0gTm90IEVMUSd9LFxuICAgICAgICAgICAgICB7dmFsdWU6ICcwOScsIHRleHQ6ICcwOSAtIE5vdCByZXF1aXJlZCd9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGRhdGEnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0V4cGVjdGVkIEVuZ2FnZW1lbnQgRW5kIERhdGUnLFxuICAgICAgICAgICAgdmFsdWU6ICdjdXJyZW50RW5nYWdlbWVudC5oZXNhRW5nRXhwZWN0ZWRFbmREYXRlJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ2hlc2FFbmdFeHBlY3RlZEVuZERhdGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgICBoaW50OiAnRXhwZWN0ZWQgZW5kIGRhdGUgZm9yIGVuZ2FnZW1lbnQnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBoZXNhU3VydmV5OiB7fSxcbiAgICBoZXNhQ29kZXM6IHt9LFxuICAgIGhlc2FQcm9ncmFtbWVzOiBbXSxcbiAgICBlZGl0RGlhbG9nOiBmYWxzZSxcbiAgICBlZGl0Rm9ybVZhbGlkOiBmYWxzZSxcbiAgICBjdXJyZW50RWRpdFNlY3Rpb246IG51bGwsXG4gICAgZWRpdEZvcm1EYXRhOiB7fSxcbiAgfSksXG4gIGNvbXB1dGVkOiB7XG4gICAgaGVzYVRpdGxlKCkge1xuICAgICAgaWYgKCF0aGlzLmhlc2FDb2xsZWdlQ29uZmlnLmhlc2FSZXBvcnRpbmdZZWFyKSB7XG4gICAgICAgIHJldHVybiAnSEVTQSBEYXRhJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWcuaGVzYVJlcG9ydGluZ1llYXI7XG4gICAgICBjb25zdCBlbmRZZWFyID0gc3RhcnRZZWFyICsgMTtcbiAgICAgIGNvbnN0IGVuZFllYXJTaG9ydCA9IFN0cmluZyhlbmRZZWFyKS5zbGljZSgtMik7XG4gICAgICByZXR1cm4gYEhFU0EgRGF0YSBmb3IgJHtzdGFydFllYXJ9LSR7ZW5kWWVhclNob3J0fWA7XG4gICAgfSxcbiAgICB2aXNpYmxlU2VjdGlvbnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWN0aW9ucy5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1ZpZXdQZXJtaXNzaW9uKHNlY3Rpb24udmlld1Blcm1pc3Npb24pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uLnZpc2libGUgJiYgdHlwZW9mIHNlY3Rpb24udmlzaWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBzZWN0aW9uLnZpc2libGUodGhpcy5kYXRhLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY3VycmVudEVkaXRhYmxlRmllbGRzKCkge1xuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRFZGl0U2VjdGlvbikgcmV0dXJuIFtdO1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEVkaXRTZWN0aW9uLmZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5lZGl0YWJsZSkubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ3F1YWxBd2FyZElkJykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IHRoaXMuaGVzYVByb2dyYW1tZXMubWFwKChwKSA9PiAoe1xuICAgICAgICAgICAgICB2YWx1ZTogcC5xdWFsaWQsXG4gICAgICAgICAgICAgIHRleHQ6IGAke3AucXVhbGlkfSAtICR7cC50aXRsZX1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdxdWFsQXdhcmRSZXN1bHQnKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgc2VsZWN0T3B0aW9uczogdGhpcy5xdWFsQXdhcmRSZXN1bHRPcHRpb25zLFxuICAgICAgICAgI
1H07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBlZGl0RGlhbG9nVGl0bGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RWRpdFNlY3Rpb25cbiAgICAgICAgPyBgRWRpdCAke3RoaXMuY3VycmVudEVkaXRTZWN0aW9uLm5hbWV9YFxuICAgICAgICA6ICdFZGl0IEhFU0EgZmllbGRzJztcbiAgICB9LFxuICAgIGZvcm1hdHRlZEFwZWxDcmQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RW5nYWdlbWVudC5pbmNvbWluZ0NyZWRpdHM/LmZpbmQoKGNyZWRpdCkgPT4gY3JlZGl0LnR5cGUgPT09ICdBUEVMJylcbiAgICAgICAgPyAnMDEnXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkQ3JkUFRTdHUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RW5nYWdlbWVudC5pbmNvbWluZ0NyZWRpdHM/LnJlZHVjZSgodG90YWwsIGNyZWRpdCkgPT4gdG90YWwgKyAoY3JlZGl0LmNyZWRpdHMgfHwgMCksIDApIHx8IHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGZvcm1hdHRlZEdlbmRlcklkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdnZW5kZXJJZCcsICdTdHVkZW50X0dFTkRFUklEJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRFdGhuaWNpdHlJZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgnZXRobmljaXR5SWQnLCAnU3R1ZGVudF9FVEhOSUMnKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZE5hdGlvbmFsaXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCduYXRpb25hbGl0eScsICdTdHVkZW50X05BVElPTicpO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkUmVsaWdpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRIZXNhRmllbGQoJ3JlbGlnaW9uJywgJ1N0dWRlbnRfUkVMSUdJT04nKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZFNleE9ydCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgnc2V4T3J0JywgJ1N0dWRlbnRfU0VYT1JUJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRDYXJlTGVhdmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdjYXJlTGVhdmVyJywgJ0VudHJ5UHJvZmlsZV9DQVJFTEVBVkVSJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRQYXJFZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgncGFyRWQnLCAnRW50cnlQcm9maWxlX1BBUkVEJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRQZXJtQWRkQ291bnRyeSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgncGVybUFkZENvdW50cnknLCAnRW50cnlQcm9maWxlX1BFUk1BRERDT1VOVFJZJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRIaWdoZXN0UU9FKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdoaWdoZXN0UU9FJywgJ0VudHJ5UHJvZmlsZV9ISUdIRVNUUU9FJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRGdW5kaW5nQm9keUlkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdmdW5kaW5nQm9keUlkJywgJ1N0dWRlbnRfRlVORENPTVAnKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZERpc2FiaWxpdHkoKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkuZGlzYWJpbGl0eSB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5LmRpc2FiaWxpdHkpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29kZU9iaiA9IHRoaXMuaGVzYUNvZGVzWydEaXNhYmlsaXR5X0RJU0FCSUxJVFknXTtcbiAgICAgIGlmICghY29kZU9iaiB8fCAhY29kZU9iai5jb2RlcykgcmV0dXJuIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkuZGlzYWJpbGl0eS5qb2luKCcsICcpO1xuXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleS5kaXNhYmlsaXR5XG4gICAgICAgIC5tYXAoKGNvZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IE9iamVjdC5rZXlzKGNvZGVPYmouY29kZXMpLmZpbmQoKGtleSkgPT4gY29kZU9iai5jb2Rlc1trZXldID09PSBjb2RlKTtcbiAgICAgICAgICByZXR1cm4gbGFiZWwgPyBgJHtjb2RlfSAtICR7bGFiZWx9YCA6IGNvZGU7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkU2V4SWQoKSB7XG4gICAgICAvLyBUaGUgcmV0dXJuIHJlc29sdmVzIFNFWElEIGZyb20gdGhlIHN1cnZleSBhbnN3ZXIgZmlyc3QgYW5kIHRoZSBwcm9maWxlXG4gICAgICAvLyBzZWNvbmQsIHNvIHRoaXMgaGFzIHRvIHNob3cgdGhlIHNhbWUgc291cmNlIOKAlCBvdGhlcndpc2UgYSBzdHVkZW50IHdob1xuICAgICAgLy8gYW5zd2VyZWQgb25seSBpbiB0aGUgc3VydmV5IHJlYWRzIGFzIGJsYW5rIGhlcmUgd2hpbGUgdGhlIFhNTCBjYXJyaWVzXG4gICAgICAvLyB0aGVpciBjb2RlLlxuICAgICAgY29uc3Qgc3VydmV5Q29kZSA9IHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnNleElkO1xuICAgICAgaWYgKHN1cnZleUNvZGUgJiYgc3VydmV5Q29kZSAhPT0gJzk5Jykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRIZXNhRmllbGQoJ3NleElkJywgJ1N0dWRlbnRfU0VYSUQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLnBhcnNlSGVzYUZpZWxkKHRoaXMuZGF0YS5wcm9maWxlLnNleCwgJ1N0dWRlbnRfU0VYSUQnKTtcbiAgICAgIHJldHVybiBjb2RlID8gYCR7Y29kZX0gLSAke3RoaXMuZGF0YS5wcm9maWxlLnNleH1gIDogdGhpcy5kYXRhLnByb2ZpbGUuc2V4O1xuICAgIH0sXG4gICAgZm9ybWF0dGVkUXVhbEF3YXJkSWQoKSB7XG4gICAgICBjb25zdCBxdWFsaWQgPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkSWQ7XG4gICAgICBpZiAoIXF1YWxpZCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgcHJvZ3JhbW1lID0gdGhpcy5oZXNhUHJvZ3JhbW1lcy5maW5kKChwKSA9PiBwLnF1YWxpZCA9PT0gcXVhbGlkKTtcbiAgICAgIHJldHVybi
1Bwcm9ncmFtbWUgPyBgJHtxdWFsaWR9IC0gJHtwcm9ncmFtbWUudGl0bGV9YCA6IHF1YWxpZDtcbiAgICB9LFxuICAgIGZvcm1hdHRlZFF1YWxBd2FyZFJlc3VsdCgpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkUmVzdWx0O1xuICAgICAgaWYgKCFjb2RlKSByZXR1cm4gJyc7XG4gICAgICBjb25zdCBwYWRkZWRDb2RlID0gU3RyaW5nKGNvZGUpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLnF1YWxBd2FyZFJlc3VsdE9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHBhZGRlZENvZGUpO1xuICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi50ZXh0IDogcGFkZGVkQ29kZTtcbiAgICB9LFxuICAgIGFjdGl2ZUVuZ2FnZW1lbnRJbmRleCgpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhLmVuZ2FnZW1lbnRzIHx8IHRoaXMuZGF0YS5lbmdhZ2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5oZXNhQ29sbGVnZUNvbmZpZy5oZXNhUmVwb3J0aW5nWWVhcikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2hlc2FSZXBvcnRpbmdZZWFyfSA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWc7XG4gICAgICBjb25zdCBhY2FkZW1pY1llYXJTdGFydCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyLCA4LCAxKTtcbiAgICAgIGNvbnN0IGFjYWRlbWljWWVhckVuZCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyICsgMSwgNywgMzEpO1xuXG4gICAgICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIGVuZ2FnZW1lbnRzIHRvIGZpbmQgdGhlIGZpcnN0IG9uZSB3aXRoIHZhbGlkIHNlc3Npb25zXG4gICAgICBjb25zdCB2YWxpZFNlc3Npb25Db3VudHMgPSB0aGlzLmRhdGEuZW5nYWdlbWVudHMubWFwKChlbmdhZ2VtZW50KSA9PiB7XG4gICAgICAgIGlmICghZW5nYWdlbWVudC5wYXJ0bmVySWQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsaWRTZXNzaW9ucyA9IGVuZ2FnZW1lbnQuc2Vzc2lvbnM/LmZpbHRlcigoc2Vzc2lvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25TdGFydCA9IG5ldyBEYXRlKHNlc3Npb24uc3RhcnREYXRlKTtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRW5kID0gc2Vzc2lvbi5lbmREYXRlID8gbmV3IERhdGUoc2Vzc2lvbi5lbmREYXRlKSA6IG51bGw7XG4gICAgICAgICAgLy8gU2Vzc2lvbiBtdXN0IHN0YXJ0IE9SIGVuZCB3aXRoaW4gdGhlIGFjYWRlbWljIHllYXJcbiAgICAgICAgICBjb25zdCBzZXNzaW9uU3RhcnRzSW5ZZWFyID0gc2Vzc2lvblN0YXJ0ID49IGFjYWRlbWljWWVhclN0YXJ0ICYmIHNlc3Npb25TdGFydCA8IGFjYWRlbWljWWVhckVuZDtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRW5kc0luWWVhciA9IHNlc3Npb25FbmQgJiYgc2Vzc2lvbkVuZCA+PSBhY2FkZW1pY1llYXJTdGFydCAmJiBzZXNzaW9uRW5kIDwgYWNhZGVtaWNZZWFyRW5kO1xuICAgICAgICAgIHJldHVybiBzZXNzaW9uU3RhcnRzSW5ZZWFyIHx8IHNlc3Npb25FbmRzSW5ZZWFyO1xuICAgICAgICB9KSB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHZhbGlkU2Vzc2lvbnMubGVuZ3RoO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGVuZ2FnZW1lbnQgd2l0aCB2YWxpZCBzZXNzaW9uc1xuICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB2YWxpZFNlc3Npb25Db3VudHMuZmluZEluZGV4KChjb3VudCkgPT4gY291bnQgPiAwKTtcblxuICAgICAgLy8gUmV0dXJuIHRoZSBmb3VuZCBpbmRleCwgb3IgZGVmYXVsdCB0byAwIGlmIG5vIHZhbGlkIHNlc3Npb25zIGZvdW5kXG4gICAgICByZXR1cm4gYWN0aXZlSW5kZXggIT09IC0xID8gYWN0aXZlSW5kZXggOiAwO1xuICAgIH0sXG4gICAgY3VycmVudEVuZ2FnZW1lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmVuZ2FnZW1lbnRzPy5bdGhpcy5hY3RpdmVFbmdhZ2VtZW50SW5kZXhdIHx8IHt9O1xuICAgIH0sXG4gICAgY3VycmVudFNlc3Npb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmVuZ2FnZW1lbnRzPy5bdGhpcy5hY3RpdmVFbmdhZ2VtZW50SW5kZXhdPy5zZXNzaW9ucz8uWzBdIHx8IHt9O1xuICAgIH0sXG4gICAgaGVzYVJlbGV2YW50U2Vzc2lvbigpIHtcbiAgICAgIC8vIEZpbmQgdGhlIHNlc3Npb24gdGhhdCBpcyByZWxldmFudCBmb3IgSEVTQSByZXBvcnRpbmcgYmFzZWQgb24gaGVzYVJlcG9ydGluZ1llYXJcbiAgICAgIGlmICghdGhpcy5oZXNhQ29sbGVnZUNvbmZpZy5oZXNhUmVwb3J0aW5nWWVhciB8fCAhdGhpcy5jdXJyZW50RW5nYWdlbWVudC5zZXNzaW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2hlc2FSZXBvcnRpbmdZZWFyfSA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWc7XG4gICAgICBjb25zdCBhY2FkZW1pY1llYXJTdGFydCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyLCA4LCAxKTsgLy8gU2VwdGVtYmVyIDFzdFxuICAgICAgY29uc3QgYWNhZGVtaWNZZWFyRW5kID0gbmV3IERhdGUoaGVzYVJlcG9ydGluZ1llYXIgKyAxLCA3LCAzMSk7IC8vIEp1bHkgMzFzdCBuZXh0IHllYXJcblxuICAgICAgLy8gRmluZCBzZXNzaW9ucyB0aGF0IHN0YXJ0IHdpdGhpbiB0aGUgSEVTQSByZXBvcnRpbmcgYWNhZGVtaWMgeWVhclxuICAgICAgY29uc3QgcmVsZXZhbnRTZXNzaW9ucyA9IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuc2Vzc2lvbnMuZmlsdGVyKChzZXNzaW9uKSA9PiB7XG4gICAgICAgIGlmICghc2Vzc2lvbi5zdGFydERhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblN0YXJ0ID0gbmV3IERhdGUoc2Vzc2lvbi5zdGFydERhdGUpO1xuICAgICAgICByZXR1cm4gc2Vzc2lvblN0YXJ0ID49IGFjYWRlbWljWWVhclN0YXJ0ICYmIHNlc3Npb25TdGFydCA8PSBhY2FkZW1pY1llYXJFbmQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCByZWxldmFudCBzZXNzaW9uLCBvciBmYWxsIGJhY2sgdG8gY3VycmVudFNlc3Npb25cbiAgICAgIHJldHVybi
1ByZWxldmFudFNlc3Npb25zWzBdIHx8IHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgfSxcbiAgICBoZXNhRmluU3VwUmVjb3JkcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FGaW5TdXAgfHwgW107XG4gICAgfSxcbiAgICBlbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LmVudHJ5UXVhbGlmaWNhdGlvbkF3YXJkIHx8IFtdO1xuICAgIH0sXG4gIH0sXG4gIGFzeW5jIGNyZWF0ZWQoKSB7XG4gICAgY29uc3Qge2RhdGE6IGNvbGxlZ2VDb25maWd9ID0gYXdhaXQgU3lzdGVtRGF0YVNlcnZpY2UuZ2V0RGF0YUJ5TmFtZSgnaGVzYUNvbGxlZ2VDb25maWcnKTtcbiAgICB0aGlzLmhlc2FDb2xsZWdlQ29uZmlnID0gY29sbGVnZUNvbmZpZztcblxuICAgIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkgPSB0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5IHx8IHt9O1xuXG4gICAgLy8gRmV0Y2ggYWxsIHJlbGV2YW50IEhFU0EgY29kZXMgYW5kIHByb2dyYW1tZXNcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmxvYWRIZXNhQ29kZXMoKSxcbiAgICAgIHRoaXMubG9hZEhlc2FQcm9ncmFtbWVzKCksXG4gICAgXSk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgZWRpdERpYWxvZyhuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgJiYgdGhpcy5jdXJyZW50RWRpdFNlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRWRpdEZvcm1EYXRhKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGFzeW5jIGxvYWRIZXNhQ29kZXMoKSB7XG4gICAgICBjb25zdCBjb2RlVHlwZXMgPSBbXG4gICAgICAgICdTdHVkZW50X05BVElPTicsXG4gICAgICAgICdTdHVkZW50X0dFTkRFUklEJyxcbiAgICAgICAgJ1N0dWRlbnRfRVRITklDJyxcbiAgICAgICAgJ0VudHJ5UHJvZmlsZV9QRVJNQUREQ09VTlRSWScsXG4gICAgICAgICdTdHVkZW50X1JFTElHSU9OJyxcbiAgICAgICAgJ1N0dWRlbnRfU0VYT1JUJyxcbiAgICAgICAgJ1N0dWRlbnRfU0VYSUQnLFxuICAgICAgICAnRW50cnlQcm9maWxlX0NBUkVMRUFWRVInLFxuICAgICAgICAnRW50cnlQcm9maWxlX1BBUkVEJyxcbiAgICAgICAgJ0VudHJ5UHJvZmlsZV9ISUdIRVNUUU9FJyxcbiAgICAgICAgLy8gJ1N0dWRlbnRfRlVORENPTVAnLFxuICAgICAgICAnRGlzYWJpbGl0eV9ESVNBQklMSVRZJyxcbiAgICAgIF07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IEhlc2FDb2Rlc1NlcnZpY2UuZ2V0TXVsdGlwbGVDb2Rlcyhjb2RlVHlwZXMpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLm5vdEZvdW5kKSAmJiBkYXRhLm5vdEZvdW5kLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0hFU0EgY29kZXMgbm90IGZvdW5kOicsIGRhdGEubm90Rm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBidWxrIGVuZHBvaW50IHJldHVybnMgZWFjaCB0YWJsZSBhcyBhIGJhcmUgY29kZSBtYXAsIHdoaWxlIHRoZVxuICAgICAgICAvLyBzaW5nbGUtZmllbGQgb25lIHdyYXBzIGl0IGFzIHtmaWVsZCwgY29kZXN9LiBFdmVyeSBhY2Nlc3NvciBiZWxvd1xuICAgICAgICAvLyBleHBlY3RzIHRoZSB3cmFwcGVkIGZvcm0sIHNvIG5vcm1hbGlzZSBvbiB0aGUgd2F5IGluIOKAlCBvdGhlcndpc2VcbiAgICAgICAgLy8gZWFjaCBsb29rdXAgZmFpbHMgaXRzIGBjb2RlT2JqLmNvZGVzYCBndWFyZCBhbmQgZmFsbHMgYmFjayB0byB0aGVcbiAgICAgICAgLy8gcmF3IHZhbHVlLCBsZWF2aW5nIHNleCBhcyBhIGxhYmVsIHdpdGggbm8gY29kZSBhbmQgdGhlIHN1cnZleVxuICAgICAgICAvLyBmaWVsZHMgYXMgY29kZXMgd2l0aCBubyBsYWJlbC5cbiAgICAgICAgdGhpcy4kc2V0KHRoaXMsICdoZXNhQ29kZXMnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVud
1HJpZXMoZGF0YS5kYXRhKS5tYXAoKFtmaWVsZCwgY29kZXNdKSA9PiBbZmllbGQsIHtjb2Rlc31dKSxcbiAgICAgICAgKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nIEhFU0EgY29kZXMgZm9yICR7Y29kZVR5cGV9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgbG9hZEhlc2FQcm9ncmFtbWVzKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgUHJvZ3JhbW1lc1YyU2VydmljZS5nZXRMaXN0KHtoZXNhOiB0cnVlfSk7XG4gICAgICAgIHRoaXMuaGVzYVByb2dyYW1tZXMgPSBkYXRhLmZpbHRlcigocCkgPT4gcC5xdWFsaWQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBIRVNBIHByb2dyYW1tZXM6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBmb3JtYXRIZXNhRmllbGQoZmllbGROYW1lLCBjb2RlVHlwZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5W2ZpZWxkTmFtZV07XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG5cbiAgICAgIGNvbnN0IGNvZGVPYmogPSB0aGlzLmhlc2FDb2Rlc1tjb2RlVHlwZV07XG4gICAgICBpZiAoIWNvZGVPYmogfHwgIWNvZGVPYmouY29kZXMpIHJldHVybiB2YWx1ZTtcblxuICAgICAgLy8gRmluZCB0aGUgbGFiZWwgZm9yIHRoZSBjb2RlIHZhbHVlXG4gICAgICBjb25zdCBsYWJlbCA9IE9iamVjdC5rZXlzKGNvZGVPYmouY29kZXMpLmZpbmQoKGtleSkgPT4gY29kZU9iai5jb2Rlc1trZXldID09PSB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiBsYWJlbCA/IGAke3ZhbHVlfSAtICR7bGFiZWx9YCA6IHZhbHVlO1xuICAgIH0sXG5cbiAgICBwYXJzZUhlc2FGaWVsZChsYWJlbFRleHQsIGNvZGVUeXBlKSB7XG4gICAgICBpZiAoIWxhYmVsVGV4dCB8fCB0eXBlb2YgbGFiZWxUZXh0ICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IGNvZGVPYmogPSB0aGlzLmhlc2FDb2Rlc1tjb2RlVHlwZV07XG4gICAgICBpZiAoIWNvZGVPYmogfHwgIWNvZGVPYmouY29kZXMpIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBGaW5kIHRoZSBjb2RlIGZvciB0aGUgZ2l2ZW4gbGFiZWxcbiAgICAgIGNvbnN0IGVudHJ5ID0gT2JqZWN0LmVud
1HJpZXMoY29kZU9iai5jb2RlcykuZmluZChcbiAgICAgICAgKFtsYWJlbF0pID0+IGxhYmVsLnRvTG93ZXJDYXNlKCkgPT09IGxhYmVsVGV4dC50b0xvd2VyQ2FzZSgpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5WzFdIDogbnVsbDtcbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlRW5nYWdlbWVudEZpZWxkKGZpZWxkTmFtZSwgdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFN0dWRlbnRzU2VydmljZS5wYXRjaEVuZ2FnZW1lbnQoXG4gICAgICAgICAgdGhpcy5kYXRhLl9pZCxcbiAgICAgICAgICAnZW5nYWdlbWVudHMnLFxuICAgICAgICAgIHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuX2lkLFxuICAgICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHVwZGF0aW5nIGVuZ2FnZW1lbnQgZmllbGQgJHtmaWVsZE5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7IC8vIFJlLXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHNhdmUgbWV0aG9kXG4gICAgICB9XG4gICAgfSxcblxuICAgIGhhc1ZpZXdQZXJtaXNzaW9uKHBlcm1pc3Npb24pIHtcbiAgICAgIHJldHVybiAhcGVybWlzc2lvbiB8fCB0aGlzLiRoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgIH0sXG5cbiAgICBoYXNFZGl0UGVybWlzc2lvbihwZXJtaXNzaW9uKSB7XG4gICAgICByZXR1cm4gIXBlcm1pc3Npb24gfHwgdGhpcy4kaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKTtcbiAgICB9LFxuXG4gICAgZ2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZmllbGQudmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEsIHRoaXMuJGZpbHRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEhhbmRsZSBkb3Qgbm90YXRpb24gZm9yIG5lc3RlZCBwcm9wZXJ0aWVzXG4gICAgICAgIC8vIFRoaXMgYXNzdW1lcyBubyBvcHRpb25hbCBjaGFpbmluZyBpbiB0aGUgc3RyaW5nIC0gdXNlIGZ1bmN0aW9ucyBmb3IgY29tcGxleCBhY2Nlc3MgcGF0dGVybnNcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZmllbGQudmFsdWUuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG9ialtrZXldO1xuICAgICAgICAgIH0sIHRoaXMpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3IgYWNjZXNzaW5nIGZpZWxkIHZhbHVlIFwiJHtmaWVsZC52YWx1ZX1cIjpgLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZTtcbiAgICB9LFxuXG4gICAgZ2V0RmllbGRIaW50KGZpZWxkKSB7XG4gICAgICBpZiAodHlwZW9mIGZpZWxkLmhpbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLmhpbnQuY2FsbCh0aGlzLCB0aGlzLmRhdGEsIHRoaXMuJGZpbHRlcnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkLmhpbnQ7XG4gICAgfSxcblxuICAgIHNlY3Rpb25IYXNFZGl0YWJsZUZpZWxkcyhzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC5lZGl0YWJsZSk7XG4gICAgfSxcblxuICAgIGNhbkVkaXRTZWN0aW9uKHNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmVkaXRQZXJtaXNzaW9uICYmXG4gICAgICAgICAgdGhpcy5oYXNFZGl0UGVybWlzc2lvbihzZWN0aW9uLmVkaXRQZXJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VjdGlvbkhhc0VkaXRhYmxlRmllbGRzKHNlY3Rpb24pO1xuICAgIH0sXG5cbiAgICBvcGVuRWRpdERpYWxvZyhzZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFZGl0U2VjdGlvbiA9IHNlY3Rpb247XG4gICAgICB0aGlzLmVkaXREaWFsb2cgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBpbml0aWFsaXplRWRpdEZvcm1EYXRhKCkge1xuICAgICAgY29uc3QgZm9ybURhdGEgPSB7fTtcblxuICAgICAgdGhpcy5jdXJyZW50RWRpdGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLmVkaXRLZXkpIHtcbiAgICAgICAgICBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2hlc2FJbmNsdWRlJykge1xuICAgICAgICAgICAgLy8gRm9yIHRoZSBpbnZlcnRlZCBpbmNsdWRlIGZpZWxkLCBnZXQgdGhlIGJvb2xlYW4gdmFsdWVcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5nZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdxdWFsQXdhcmRJZCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBxdWFsQXdhcmRJZCwgZ2V0IHRoZSByYXcgdmFsdWUgZGlyZWN0bHlcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZElkIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ3F1YWxBd2FyZFJlc3VsdCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBxdWFsQXdhcmRSZXN1bHQsIGdldCB0aGUgcmF3IHZhbHVlIGFuZCBwYWQgaXRcbiAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZFJlc3VsdDtcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gcmF3VmFsdWUgPyBTdHJpbmcocmF3VmFsdWUpLnBhZFN0YXJ0KDQsICcwJykgOiAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdyc25FbmdFbmQnKSB7XG4gICAgICAgICAgICAvLyBGb3IgcnNuRW5nRW5kLCBnZXQgdGhlIHJhdyB2YWx1ZSBkaXJlY3RseVxuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUnNuRW5nRW5kIHx8ICcnO1xuICAgICAgICAgI
1H0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2VuZ0VuZERhdGUnKSB7XG4gICAgICAgICAgICAvLyBGb3IgZW5nRW5kRGF0ZSwgZ2V0IHRoZSByYXcgdmFsdWUgZGlyZWN0bHlcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uZW5kRGF0ZSB8fCAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdoZXNhRW5nRXhwZWN0ZWRFbmREYXRlJykge1xuICAgICAgICAgICAgLy8gRm9yIGhlc2FFbmdFeHBlY3RlZEVuZERhdGUsIGdldCB0aGUgcmF3IHZhbHVlIGRpcmVjdGx5XG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQ/Lmhlc2FFbmdFeHBlY3RlZEVuZERhdGUgfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0S2V5ID09PSAncnBzdHVsb2FkJyB8fCBmaWVsZC5lZGl0S2V5ID09PSAnaW52b2ljZWZlZWFtb3VudCcgfHwgZmllbGQuZWRpdEtleSA9PT0gJ3Njc2ZlZWFtb3VudCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBzZXNzaW9uIGZpZWxkcywgZ2V0IHZhbHVlcyBmcm9tIGhlc2FSZWxldmFudFNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdzY3Nlc3Npb25pZCcgfHwgZmllbGQuZWRpdEtleSA9PT0gJ3ByZXZpb3Vzc2NzJykge1xuICAgICAgICAgICAgLy8gRm9yIHNlc3Npb24gdGV4dCBmaWVsZHMsIGdldCB0aGUgdGV4dCB2YWx1ZSBmcm9tIGhlc2FSZWxldmFudFNlc3Npb25cbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5bZmllbGQuZWRpdEtleSA9PT0gJ3Njc2Vzc2lvbmlkJyA/ICdoZXNhU0NTRVNTSU9OSUQnIDogJ3ByZXZpb3VzU0NTJ10gfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0S2V5ID09PSAnc2NzbW9kZScpIHtcbiAgICAgICAgICAgIC8vIEZvciBTQ1NNT0RFIGZpZWxkLCBnZXQgdGhlIHZhbHVlIGZyb20gaGVzYVJlbGV2YW50U2Vzc2lvblxuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FTQ1NNT0RFIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2VscScpIHtcbiAgICAgICAgICAgIC8vIEZvciBFTFEgZmllbGQsIGdldCB0aGUgdmFsdWUgZnJvbSBoZXNhUmVsZXZhbnRTZXNzaW9uXG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8uaGVzYUVMUSB8fCAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3N3aXRjaCcpIHtcbiAgICAgICAgICAgIC8vIFN3aXRjaGVzIG11c3QgYmluZCBhIHJlYWwgYm9vbGVhbjsgdGhlIGB8fCAnJ2AgZmFsbGJhY2sgYmVsb3dcbiAgICAgICAgICAgIC8vIHdvdWxkIGNvZXJjZSBhIGxlZ2l0aW1hdGUgYGZhbHNlYCBpbnRvICcnLCB3aGljaCB0aGVuIGZhaWxzIHRvXG4gICAgICAgICAgICAvLyBjYXN0IHRvIEJvb2xlYW4gb24gc2F2ZS5cbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gQm9vbGVhbih0aGlzLmdldEZpZWxkVmFsdWUoZmllbGQpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIC8vIEZvciBudW1iZXIgZmllbGRzLCBlbnN1cmUgbnVtZXJpYyB2YWx1ZVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWUoZmllbGQpO1xuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB2YWx1ZSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuZ2V0RmllbGRWYWx1ZShmaWVsZCkgfHwgJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZWRpdEZvcm1EYXRhID0gZm9ybURhdGE7XG4gICAgfSxcblxuICAgIG9uQ29tYm9ib3hDaGFuZ2UoKSB7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmVkaXRGb3JtKSB0aGlzLiRyZWZzLmVkaXRGb3JtLnZhbGlkYXRlKCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gdi1jb21ib2JveCBvbmx5IGNvbW1pdHMgb24gYmx1ci9FbnRlcjsgbWlycm9yIHRoZSBzZWFyY2ggYnVmZmVyIGludG8gdi1tb2RlbCBsaXZlIHNvIFNhdmUgY2FuJ3QgYmVhdCB0aGUgY29tbWl0LlxuICAgIG9uQ29tYm9ib3hTZWFyY2hJbnB1dChlZGl0S2V5LCB2YWwpIHtcbiAgICAgIGlmICh0aGlzLmVkaXRGb3JtRGF0YVtlZGl0S2V5XSAhPT0gdmFsKSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmVkaXRGb3JtRGF0YSwgZWRpdEtleSwgdmFsID09IG51bGwgPyAnJyA6IHZhbCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHNhdmVFZGl0YWJsZUZpZWxkcygpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHYtY29tYm9ib3ggb25seSBjb21taXRzIHR5cGVkIHRleHQgdG8gdi1tb2RlbCBvbiBibHVyOyBmb3JjZSBpdCBiZWZvcmUgcmVhZGluZyBlZGl0Rm9ybURhdGEuXG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIHR5cGVvZiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkb2
1N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLiRuZXh0VGljaygpO1xuXG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmVkaXRGb3JtICYmICF0aGlzLiRyZWZzLmVkaXRGb3JtLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgnUGxlYXNlIGNvcnJlY3QgdGhlIGhpZ2hsaWdodGVkIGVycm9ycyBiZWZvcmUgc2F2aW5nJywgJ2Vycm9yJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGVzYVN1cnZleVVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3QgcHJvZmlsZVVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3Qgc3R1ZGVudFVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3QgZW5nYWdlbWVudFVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblVwZGF0ZXMgPSB7fTtcblxuICAgICAgICAvLyBQcm9jZXNzIGVhY2ggZWRpdGFibGUgZmllbGQgYmFzZWQgb24gaXRzIGVkaXRLZXlcbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5lZGl0Rm9ybURhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdvd25zdHUnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGF0YS5zdHVkZW50SWQpIHtcbiAgICAgICAgICAgICAgICBzdHVkZW50VXBkYXRlcy5zdHVkZW50SWQgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGVzYUluY2x1ZGUnOlxuICAgICAgICAgICAgICAvLyBJbnZlcnQgdGhlIGluY2x1ZGUgc3dpdGNoIHZhbHVlIHRvIGdldCB0aGUgZXhjbHVkZSB2YWx1ZVxuICAgICAgICAgICAgICBjb25zdCBleGNsdWRlVmFsdWUgPSAhdmFsdWU7XG4gICAgICAgICAgICAgIGlmIChleGNsdWRlVmFsdWUgIT09IHRoaXMuZGF0YS5oZXNhRXhjbHVkZSkge1xuICAgICAgICAgICAgICAgIHN0dWRlbnRVcGRhdGVzLmhlc2FFeGNsdWRlID0gZXhjbHVkZVZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3NuJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRhdGEucHJvZmlsZS5zc24pIHtcbiAgICAgICAgICAgICAgICBwcm9maWxlVXBkYXRlcy5zc24gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3R0cGNvZGUnOlxuICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlcy50dHBjb2RlID0gdmFsdWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5nRW5kRGF0ZSc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLm1hbnVhbEVuZERhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JzbkVuZ0VuZCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVJzbkVuZ0VuZCkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLmhlc2FSc25FbmdFbmQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YWxBd2FyZElkJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkSWQpIHtcbiAgICAgICAgICAgICAgICBlbmdhZ2VtZW50VXBkYXRlcy5oZXNhUXVhbEF3YXJkSWQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YWxBd2FyZFJlc3VsdCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLmhlc2FRdWFsQXdhcmRSZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hlc2FFbmdFeHBlY3RlZEVuZERhdGUnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQ/Lmhlc2FFbmdFeHBlY3RlZEVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICBlbmdhZ2VtZW50VXBkYXRlcy5oZXNhRW5nRXhwZWN0ZWRFbmREYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdycHN0dWxvYWQnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8uaGVzYVJQU1RVTE9BRCkge1xuICAgICAgICAgICAgICAgIHNlc3Npb25VcGRhdGVzLmhlc2FSUFNUVUxPQUQgPSB2YWx1ZSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaW52b2ljZWZlZWFtb3VudCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhSU5WT0lDRUZFRUFNT1VOVCkge1xuICAgICAgICAgICAgICAgIHNlc3Npb25VcGRhdGVzLmhlc2FJTlZPSUNFRkVFQU1PVU5UID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Njc2ZlZWFtb3VudCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhU0NTRkVFQU1PVU5UKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvblVwZGF0ZXMuaGVzYVNDU0ZFRUFNT1VOVCA9IHZhbHVlID8gTnVtYmVyKHZhbHVlKSA6IG51bGw7XG4gICAgICAgICAgICAgI
1H1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzY3Nlc3Npb25pZCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhU0NTRVNTSU9OSUQpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5oZXNhU0NTRVNTSU9OSUQgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJldmlvdXNzY3MnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8ucHJldmlvdXNTQ1MpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5wcmV2aW91c1NDUyA9IHZhbHVlIHx8IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzY3Ntb2RlJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FTQ1NNT0RFKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvblVwZGF0ZXMuaGVzYVNDU01PREUgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWxxJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FFTFEpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5oZXNhRUxRID0gdmFsdWUgfHwgbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vIEZvciBvdGhlciBmaWVsZHMsIGFzc3VtZSB0aGV5IGdvIHRvIGhlc2FTdXJ2ZXlcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG51bWJlciBmaWVsZCBhbmQgY29udmVydCBhcHByb3ByaWF0ZWx5XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jdXJyZW50RWRpdGFibGVGaWVsZHMuZmluZCgoZikgPT4gZi5lZGl0S2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQ/LmZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlc1trZXldID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE1ha2UgQVBJIGNhbGxzIG9ubHkgaWYgdGhlcmUgYXJlIHVwZGF0ZXNcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGhlc2FTdXJ2ZXlVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgRWR1Y2F0aW9uYWxQcm9maWxlc1NlcnZpY2UudXBkYXRlSGVzYVN1cnZleShcbiAgICAgICAgICAgIHRoaXMuZGF0YS5wcm9maWxlLl9pZCxcbiAgICAgICAgICAgIGhlc2FTdXJ2ZXlVcGRhdGVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhoZXNhU3VydmV5VXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocHJvZmlsZVVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCBFZHVjYXRpb25hbFByb2ZpbGVzU2VydmljZS51cGRhdGUodGhpcy5kYXRhLnByb2ZpbGUuX2lkLCBwcm9maWxlVXBkYXRlcyk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9maWxlVXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUsIGZpZWxkTmFtZSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0dWRlbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgU3R1ZGVudHNTZXJ2aWNlLnBhdGNoKHRoaXMuZGF0YS5faWQsIHN0dWRlbnRVcGRhdGVzKTtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxvY2FsIGRhdGEgdG8gcmVmbGVjdCB0aGUgY2hhbmdlcyBpbW1lZGlhdGVseVxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHN0dWRlbnRVcGRhdGVzKS5mb3JFYWNoKChbZmllbGROYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmRhdGEsIGZpZWxkTmFtZSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVuZ2FnZW1lbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhlbmdhZ2VtZW50VXBkYXRlcykubWFwKGFzeW5jKFtmaWVsZE5hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUVuZ2FnZW1lbnRGaWVsZChmaWVsZE5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbmdhZ2VtZW50VXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50RW5nYWdlbWVudCkge1xuICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5jdXJyZW50RW5nYWdlbWVudCwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgI
1H1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2Vzc2lvblVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNlc3Npb25VcGRhdGVzKS5tYXAoYXN5bmMoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IFN0dWRlbnRzU2VydmljZS5wYXRjaEVucm9sbWVudFNlc3Npb24oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLl9pZCxcbiAgICAgICAgICAgICAgICAnZW5nYWdlbWVudHMnLFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuX2lkLFxuICAgICAgICAgICAgICAgIHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbi5faWQsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxvY2FsIGRhdGEgdG8gcmVmbGVjdCB0aGUgY2hhbmdlcyBpbW1lZGlhdGVseVxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNlc3Npb25VcGRhdGVzKS5mb3JFYWNoKChbZmllbGROYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlc2FSZWxldmFudFNlc3Npb24pIHtcbiAgICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbiwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbWl0IHVwZGF0ZXNcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0dWRlbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1zdHVkZW50Jywge1xuICAgICAgICAgICAgc3R1ZGVudElkOiBzdHVkZW50VXBkYXRlcy5zdHVkZW50SWQsXG4gICAgICAgICAgICBoZXNhRXhjbHVkZTogc3R1ZGVudFVwZGF0ZXMuaGVzYUV4Y2x1ZGUsXG4gICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZW5nYWdlbWVudFVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGVkLWVuZ2FnZW1lbnQnLCBlbmdhZ2VtZW50VXBkYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNlc3Npb25VcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1zZXNzaW9uJywge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24uX2lkLFxuICAgICAgICAgICAgdXBkYXRlczogc2Vzc2lvblVwZGF0ZXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1oZXNhJywge1xuICAgICAgICAgIGhlc2FTdXJ2ZXk6IGhlc2FTdXJ2ZXlVcGRhdGVzLFxuICAgICAgICAgIHByb2ZpbGU6IHByb2ZpbGVVcGRhdGVzLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudEVkaXRTZWN0aW9uPy5uYW1lIHx8ICdIRVNBJztcbiAgICAgICAgdGhpcy5lZGl0RGlhbG9nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3VycmVudEVkaXRTZWN0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoYCR7c2VjdGlvbk5hbWV9IGZpZWxkcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseWAsICdzdWNjZXNzJyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGRhdGluZyBIRVNBIGZpZWxkczonLCBlcnJvcik7XG4gICAgICAgIGNvbnN0IGRldGFpbCA9IGVycm9yPy5yZXNwb25zZT8uZGF0YT8uZXJyb3IgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShgRXJyb3IgdXBkYXRpbmcgSEVTQSBmaWVsZHM6ICR7ZGV0YWlsfWAsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB1cGRhdGVGaW5TdXBSZWNvcmRzKHVwZGF0ZWRSZWNvcmRzKSB7XG4gICAgICAvLyBVcGRhdGUgbG9jYWwgZGF0YVxuICAgICAgdGhpcy4kc2V0KHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbiwgJ2hlc2FGaW5TdXAnLCB1cGRhdGVkUmVjb3Jkcyk7XG5cbiAgICAgIC8vIEVtaXQgdXBkYXRlXG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGVkLXNlc3Npb24nLCB7XG4gICAgICAgIHNlc3Npb25JZDogdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCxcbiAgICAgICAgdXBkYXRlczoge2hlc2FGaW5TdXA6IHVwZGF0ZWRSZWNvcmRzfSxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICB1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzKHVwZGF0ZWRSZWNvcmRzKSB7XG4gICAgICAvLyBVcGRhdGUgbG9jYWwgZGF0YVxuICAgICAgaWYgKCF0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5KSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmRhdGEucHJvZmlsZSwgJ2hlc2FTdXJ2ZXknLCB7fSk7XG4gICAgICB9XG4gICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSwgJ2VudHJ5UXVhbGlmaWNhdGlvbkF3YXJkJywgdXBkYXRlZFJlY29yZHMpO1xuXG4gICAgICAvLyBFbWl0IHVwZGF0ZVxuICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1oZXNhJywge1xuICAgICAgICBoZXNhU3VydmV5OiB7ZW50cnlRdWFsaWZpY2F0aW9uQXdhcmQ6IHVwZGF0ZWRSZWNvcmRzfSxcbiAgICAgICAgcHJvZmlsZToge30sXG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmhlc2Etcm93LWJyZWFrIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIGhlaWdodDogMDtcbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvbG9hZGVyLmpzPz9jbG9uZWRSdWxlU2V0LTEyLnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMi51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMi51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNWFhNGUzNSZwcm9kJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWFhNGUzNSZzY29wZWQ9dHJ1ZSZsYW5nPXB1Z1wiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNWFhNGUzNSZwcm9kJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjM1YWE0ZTM1XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJfdiIsIl9zIiwiaGVzYVRpdGxlIiwiYXR0cnMiLCJfbCIsInZpc2libGVTZWN0aW9ucyIsInNlY3Rpb24iLCJrZXkiLCJuYW1lIiwic3RhdGljQ2xhc3MiLCJjYW5FZGl0U2VjdGlvbiIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJvcGVuRWRpdERpYWxvZyIsImRhdGEiLCJwcm9maWxlIiwiaG
1VzYVN1cnZleSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJfZSIsImZpZWxkcyIsImZpZWxkIiwibmV3Um93IiwibGFiZWwiLCJfYiIsImNvbHMiLCJmaWVsZFR5cGUiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRIaW50IiwiX2lkIiwiZW50cnlRdWFsaWZpY2F0aW9uUmVjb3JkcyIsInJlYWRvbmx5IiwiaGFzRWRpdFBlcm1pc3Npb24iLCJ1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzIiwiY3VycmVudEVuZ2FnZW1lbnQiLCJoZXNhUmVsZXZhbnRTZXNzaW9uIiwiaGVzYUZpblN1cFJlY29yZHMiLCJzc24iLCJ1cGRhdGVGaW5TdXBSZWNvcmRzIiwibW9kZWwiLCJ2YWx1ZSIsImVkaXREaWFsb2ciLCJjYWxsYmFjayIsIiQkdiIsImV4cHJlc3Npb24iLCJlZGl0RGlhbG9nVGl0bGUiLCJyZWYiLCJzdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsImVkaXRGb3JtVmFsaWQiLCJjdXJyZW50RWRpdGFibGVGaWVsZHMiLCJlZGl0S2V5IiwiZWRpdEZvcm1EYXRhIiwiJHNldCIsInNlbGVjdE9wdGlvbnMiLCJydWxlcyIsIm9uQ29tYm9ib3hDaGFuZ2UiLCJ2YWwiLCJvbkNvbWJvYm94U2VhcmNoSW5wdXQiLCJjdXJyZW50RWRpdFNlY3Rpb24iLCJzYXZlRWRpdGFibGVGaWVsZHMiLCJzdGF0aWNSZW5kZXJGbnMiLCJTeXN0ZW1EYXRhU2VydmljZSIsIlN0dWRlbnRzU2VydmljZSIsIkVkdWNhdGlvbmFsUHJvZmlsZXNTZXJ2aWNlIiwiSGVzYUNvZGVzU2VydmljZSIsIlByb2dyYW1tZXNWMlNlcnZpY2UiLCJQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyIsInRleHQiLCJjb21wb25lbnRzIiwiRGF0ZVBpY2tlciIsIkVudHJ5UXVhbGlmaWNhdGlvblRhYmxlIiwiRmluYW5jaWFsU3VwcG9ydFRhYmxlIiwicHJvcHMiLCJ0eXBlIiwicmVxdWlyZWQiLCJCb29sZWFuIiwiZGVmYXVsdCIsImhlc2FDb2xsZWdlQ29uZmlnIiwicXVhbEF3YXJkUmVzdWx0T3B0aW9ucyIsInNlY3Rpb25zIiwidmlld1Blcm1pc3Npb24iLCJlZGl0UGVybWlzc2lvbiIsImVkaXRhYmxlIiwiaGludCIsIm1kIiwiaGVzYUV4Y2x1ZGUiLCJmaWx0ZXJzIiwiaGVzYURhdGUiLCJkb2IiLCJzbmFtZTE2Iiwic3VydmV5UG9zdGNvZGUiLCJ0dHBjb2RlIiwidHRwY29kZUZhbGxiYWNrIiwiY29udGFjdCIsInBvc3RDb2RlIiwiaGlnaGVzdFFPRSIsInBlcm1BZGRQb3N0Y29kZSIsInByZXZpb3VzUHJvdmlkZXIiLCJ2Iiwic29tZSIsIm8iLCJTdHJpbmciLCJ0cmltIiwidGVzdCIsImluY2x1ZGVDUkRQVFNUVSIsImV4Y2x1ZGVFbnRyeVByb2ZpbGUiLCJmb3JjZUVudHJ5UHJvZmlsZSIsInByZXZpb3VzU0NTIiwiaGVzYUNvZGVzIiwiaGVzYVByb2dyYW1tZXMiLCJjb21wdXRlZCIsImhlc2FSZXBvcnRpbmdZZWFyIiwic3RhcnRZZWFyIiwiZW5kWWVhciIsImVuZFllYXJTaG9ydCIsInNsaWNlIiwiZmlsdGVyIiwiaGFzVmlld1Blcm1pc3Npb24iLCJ2aXNpYmxlIiwibWFwIiwicCIsInF1YWxpZCIsInRpdGxlIiwiZm9ybWF0dGVkQXBlbENyZCIsImluY29taW5nQ3JlZGl0cyIsImZpbmQiLCJjcmVkaXQiLCJ1bmRlZmluZWQiLCJmb3JtYXR0ZWRDcmRQVFN0dSIsInJlZHVjZSIsInRvdGFsIiwiY3JlZGl0cyIsImZvcm1hdHRlZEdlbmRlcklkIiwiZm9ybWF0SGVzYUZpZWxkIiwiZm9ybWF0dGVkRXRobmljaXR5SWQiLCJmb3JtYXR0ZWROYXRpb25hbGl0eSIsImZvcm1hdHRlZFJlbGlnaW9uIiwiZm9ybWF0dGVkU2V4T3J0IiwiZm9ybWF0dGVkQ2FyZUxlYXZlciIsImZvcm1hdHRlZFBhckVkIiwiZm9ybWF0dGVkUGVybUFkZENvdW50cnkiLCJmb3JtYXR0ZWRIaWdoZXN0UU9FIiwiZm9ybWF0dGVkRnVuZGluZ0JvZHlJZCIsImZvcm1hdHRlZERpc2FiaWxpdHkiLCJkaXNhYmlsaXR5IiwiQXJyYXkiLCJpc0FycmF5IiwiY29kZU9iaiIsImNvZGVzIiwiam9pbiIsImNvZGUiLCJmb3JtYXR0ZWRTZXhJZCIsInN1cnZleUNvZGUiLCJzZXhJZCIsInBhcnNlSGVzYUZpZWxkIiwic2V4IiwiZm9ybWF0dGVkUXVhbEF3YXJkSWQiLCJoZXNhUXVhbEF3YXJkSWQiLCJwcm9ncmFtbWUiLCJmb3JtYXR0ZWRRdWFsQXdhcmRSZXN1bHQiLCJoZXNhUXVhbEF3YXJkUmVzdWx0IiwicGFkZGVkQ29kZSIsInBhZFN0YXJ0Iiwib3B0aW9uIiwib3B0IiwiYWN0aXZlRW5nYWdlbWVudEluZGV4IiwiZW5nYWdlbWVudHMiLCJhY2FkZW1pY1llYXJTdGFydCIsIkRhdGUiLCJhY2FkZW1pY1llYXJFbmQiLCJ2YWxpZFNlc3Npb25Db3VudHMiLCJlbmdhZ2VtZW50IiwicGFydG5lcklkIiwidmFsaWRTZXNzaW9ucyIsInNlc3Npb25zIiwic2Vzc2lvbiIsInNlc3Npb25TdGFydCIsInN0YXJ0RGF0ZSIsInNlc3Npb25FbmQiLCJlbmREYXRlIiwic2Vzc2lvblN0YXJ0c0luWWVhciIsInNlc3Npb25FbmRzSW5ZZWFyIiwiYWN0aXZlSW5kZXgiLCJmaW5kSW5kZXgiLCJjb3VudCIsImN1cnJlbnRTZXNzaW9uIiwicmVsZXZhbnRTZXNzaW9ucyIsImhlc2FGaW5TdXAiLCJlbnRyeVF1YWxpZmljYXRpb25Bd2FyZCIsImNyZWF0ZWQiLCJjb2xsZWdlQ29uZmlnIiwiZ2V0RGF0YUJ5TmFtZSIsIlByb21pc2UiLCJhbGwiLCJsb2FkSGVzYUNvZGVzIiwibG9hZEhlc2FQcm9ncmFtbWVzIiwid2F0Y2giLCJuZXdWYWwiLCJpbml0aWFsaXplRWRpdEZvcm1EYXRhIiwibWV0aG9kcyIsImNvZGVUeXBlcyIsImdldE11bHRpcGxlQ29kZXMiLCJub3RGb3VuZCIsImNvbnNvbGUiLCJ3YXJuIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwiZXJyb3IiLCJjb2RlVHlwZSIsImdldExpc3QiLCJoZXNhIiwiZmllbGROYW1lIiwibGFiZWxUZXh0IiwiZW50cnkiLCJ0b0xvd2VyQ2FzZSIsInVwZGF0ZUVuZ2FnZW1lbnRGaWVsZCIsInBhdGNoRW5nYWdlbWVudCIsInBlcm1pc3Npb24iLCIkaGFzUGVybWlzc2lvbiIsImNhbGwiLCIkZmlsdGVycyIsInNwbGl0Iiwib2JqIiwic2VjdGlvbkhhc0VkaXRhYmxlRmllbGRzIiwiZm9ybURhdGEiLCJmb3JFYWNoIiwicmF3VmFsdWUiLCJoZXNhUnNuRW5nRW5kIiwiaGVzYUVuZ0V4cGVjdGVkRW5kRGF0ZSIsIk51bWJlciIsImhlc2FTQ1NNT0RFIiwiaGVzYUVMUSIsIiRuZXh0VGljayIsIiRyZWZzIiwiZWRpdEZvcm0iLCJ2YWxpZGF0ZSIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsImJsdXIiLCIkc2hvd01lc3NhZ2UiLCJoZXNhU3VydmV5VXBkYXRlcyIsInByb2ZpbGVVcGRhdGVzIiwic3R1ZGVudFVwZGF0ZXMiLCJlbmdhZ2VtZW50VXBkYXRlcyIsInNlc3Npb25VcGRhdGVzIiwic3R1ZGVudElkIiwiZXhjbHVkZVZhbHVlIiwibWFudWFsRW5kRGF0ZSIsImhlc2FSUFNUVUxPQUQiLCJoZXNhSU5WT0lDRUZFRUFNT1VOVCIsImhlc2FTQ1NGRUVBTU9VTlQiLCJoZXNhU0NTRVNTSU9OSUQiLCJmIiwidXBkYXRlSGVzYVN1cnZleSIsInVwZGF0ZSIsInBhdGNoIiwicGF0Y2hFbnJvbG1lbnRTZXNzaW9uIiwiJGVtaXQiLCJzZXNzaW9uSWQiLCJ1cGRhdGVzIiwic2VjdGlvbk5hbWUiLCJkZXRhaWwiLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJ1cGRhdGVkUmVjb3JkcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72412\n\n}")},63e3:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  A: function() { return /* binding */ VSwitch; }\n});\n\n// EXTERNAL MODULE: ./node_modules/vuetify/src/styles/components/_selection-controls.sass\nvar _selection_controls = __webpack_require__(15601);\n;// ./node_modules/vuetify/src/components/VSwitch/VSwitch.sass\n// extracted by mini-css-extract-plugin\n\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/mixins/selectable/index.js\nvar selectable = __webpack_require__(8944);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VInput/index.js\nvar VInput = __webpack_require__(27908);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/directives/touch/index.js\nvar touch = __webpack_require__(22699);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/transitions/index.js + 2 modules\nvar transitions = __webpack_require__(45961);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js + 1 modules\nvar VProgressCircular = __webpack_require__(51554);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/util/helpers.js\nvar helpers = __webpack_require__(4152);\n;// ./node_modules/vuetify/lib/components/VSwitch/VSwitch.js\n// Styles\n\n // Mixins\n\n\n // Directives\n\n // Components\n\n\n // Helpers\n\n\n/* @vue/component */\n\n/* harmony default export */ var VSwitch = (selectable/* default */.A.extend({\n  name: 'v-switch',\n  directives: {\n    Touch: touch/* default */.A\n  },\n  props: {\n    inset: Boolean,\n    loading: {\n      type: [Boolean, String],\n      default: false\n    },\n    flat: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        ...VInput/* default */.A.options.computed.classes.call(this),\n        'v-input--selection-controls v-input--switch': true,\n        'v-input--switch--flat': this.flat,\n        'v-input--switch--inset': this.inset\n      };\n    },\n    attrs() {\n      return {\n        'aria-checked': String(this.isActive),\n        'aria-disabled': 
1String(this.isDisabled),\n        role: 'switch'\n      };\n    },\n    // Do not return undefined if disabled,\n    // according to spec, should still show\n    // a color when disabled and active\n    validationState() {\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor !== null) return this.computedColor;\n      return undefined;\n    },\n    switchData() {\n      return this.setTextColor(this.loading ? undefined : this.validationState, {\n        class: this.themeClasses\n      });\n    }\n  },\n  methods: {\n    genDefaultSlot() {\n      return [this.genSwitch(), this.genLabel()];\n    },\n    genSwitch() {\n      const {\n        title,\n        ...switchAttrs\n      } = this.attrs$;\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.genInput('checkbox', {\n        ...this.attrs,\n        ...switchAttrs\n      }), this.genRipple(this.setTextColor(this.validationState, {\n        directives: [{\n          name: 'touch',\n          value: {\n            left: this.onSwipeLeft,\n            right: this.onSwipeRight\n          }\n        }]\n      })), this.$createElement('div', {\n        staticClass: 'v-input--switch__track',\n        ...this.switchData\n      }), this.$createElement('div', {\n        staticClass: 'v-input--switch__thumb',\n        ...this.switchData\n      }, [this.genProgress()])]);\n    },\n    genProgress() {\n      return this.$createElement(transitions/* VFabTransition */.Z, {}, [this.loading === false ? null : (0,helpers/* getSlot */.$c)(this, 'progress') || this.$createElement(VProgressCircular/* default */.A, {\n        props: {\n          color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n          size: 16,\n          width: 2,\n          indeterminate: true\n        }\n      })]);\n    },\n    onSwipeLeft() {\n      if (this.isActive) this.onChange();\n    },\n    onSwipeRight() {\n      if (!this.isActive) this.onChange();\n    },\n    onKeydown(e) {\n      if (e.keyCode === helpers/* keyCodes */.uP.left && this.isActive || e.keyCode === helpers/* keyCodes */.uP.right && !this.isActive) this.onChange();\n    }\n  }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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wic291cmNlcyI6WyJ3ZWJwYWNrOi8vY2Rtcy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9jb21wb25lbnRzL1ZTd2l0Y2gvVlN3aXRjaC5zYXNzPzI0MDIiLCJ3ZWJwYWNrOi8vY2Rtcy8uLi9zcmMvY29tcG9uZW50cy9WU3dpdGNoL1ZTd2l0Y2gudHM/YmVhMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCIvLyBTdHlsZXNcbmltcG9ydCAnLi4vLi4vc3R5bGVzL2NvbXBvbmVudHMvX3NlbGVjdGlvbi1jb250cm9scy5zYXNzJ1xuaW1wb3J0ICcuL1ZTd2l0Y2guc2FzcydcblxuLy8gTWl4aW5zXG5pbXBvcnQgU2VsZWN0YWJsZSBmcm9tICcuLi8uLi9taXhpbnMvc2VsZWN0YWJsZSdcbmltcG9ydCBWSW5wdXQgZnJvbSAnLi4vVklucHV0J1xuXG4vLyBEaXJlY3RpdmVzXG5pbXBvcnQgVG91Y2ggZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b3VjaCdcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgVkZhYlRyYW5zaXRpb24gfSBmcm9tICcuLi90cmFuc2l0aW9ucydcbmltcG9ydCBWUHJvZ3Jlc3NDaXJjdWxhciBmcm9tICcuLi9WUHJvZ3Jlc3NDaXJjdWxhci9WUHJvZ3Jlc3NDaXJjdWxhcidcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgZ2V0U2xvdCwga2V5Q29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2hlbHBlcnMnXG5cbi8vIFR5cGVzXG5pbXBvcnQgeyBWTm9kZSwgVk5vZGVEYXRhIH0gZnJvbSAndnVlJ1xuXG4vKiBAdnVlL2NvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgU2VsZWN0YWJsZS5leHRlbmQoe1xuICBuYW1lOiAndi1zd2l0Y2gnLFxuXG4gIGRpcmVjdGl2ZXM6IHsgVG91Y2ggfSxcblxuICBwcm9wczoge1xuICAgIGluc2V0OiBCb29sZWFuLFxuICAgIGxvYWRpbmc6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgICBmbGF0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNsYXNzZXMgKCk6IG9iamVjdCB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5WSW5wdXQub3B0aW9ucy5jb21wdXRlZC5jbGFzc2VzLmNhbGwodGhpcyksXG4gICAgICAgICd2LWlucHV0LS1zZWxlY3Rpb24tY29udHJvbHMgdi1pbnB1dC0tc3dpdGNoJzogdHJ1ZSxcbiAgICAgICAgJ3YtaW5wdXQtLXN3aXRjaC0tZmxhdCc6IHRoaXMuZmxhdCxcbiAgICAgICAgJ3YtaW5wdXQtLXN3aXRjaC0taW5zZXQnOiB0aGlzLmluc2V0LFxuICAgICAgfVxuICAgIH0sXG4gICAgYXR0cnMgKCk6IG9iamVjdCB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYXJpYS1jaGVja2VkJzogU3RyaW5nKHRoaXMuaXNBY3RpdmUpLFxuICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IFN0cmluZyh0aGlzLmlzRGlzYWJsZWQpLFxuICAgICAgICByb2xlOiAnc3dpdGNoJyxcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIERvIG5vdCByZXR1cm4gdW5kZWZpbmVkIGlmIGRpc2FibGVkLFxuICAgIC8vIGFjY29yZGluZyB0byBzcGVjLCBzaG91bGQgc3RpbGwgc2hvd1xuICAgIC8vIGEgY29sb3Igd2hlbiBkaXNhYmxlZCBhbmQgYWN0aXZlXG4gICAgdmFsaWRhdGlvblN0YXRlICgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKHRoaXMuaGFzRXJyb3IgJiYgdGhpcy5zaG91bGRWYWxpZGF0ZSkgcmV0dXJuICdlcnJvcidcbiAgICAgIGlmICh0aGlzLmhhc1N1Y2Nlc3MpIHJldHVybiAnc3VjY2VzcydcbiAgICAgIGlmICh0aGlzLmhhc0NvbG9yICE9PSBudWxsKSByZXR1cm4gdGhpcy5jb21wdXRlZENvbG9yXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSxcbiAgICBzd2l0Y2hEYXRhICgpOiBWTm9kZURhdGEge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0VGV4dENvbG9yKHRoaXMubG9hZGluZyA/IHVuZGVmaW5lZCA6IHRoaXMudmFsaWRhdGlvblN0YXRlLCB7XG4gICAgICAgIGNsYXNzOiB0aGlzLnRoZW
11lQ2xhc3NlcyxcbiAgICAgIH0pXG4gICAgfSxcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2VuRGVmYXVsdFNsb3QgKCk6IChWTm9kZSB8IG51bGwpW10ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy5nZW5Td2l0Y2goKSxcbiAgICAgICAgdGhpcy5nZW5MYWJlbCgpLFxuICAgICAgXVxuICAgIH0sXG4gICAgZ2VuU3dpdGNoICgpOiBWTm9kZSB7XG4gICAgICBjb25zdCB7IHRpdGxlLCAuLi5zd2l0Y2hBdHRycyB9ID0gdGhpcy5hdHRycyRcblxuICAgICAgcmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICd2LWlucHV0LS1zZWxlY3Rpb24tY29udHJvbHNfX2lucHV0JyxcbiAgICAgIH0sIFtcbiAgICAgICAgdGhpcy5nZW5JbnB1dCgnY2hlY2tib3gnLCB7XG4gICAgICAgICAgLi4udGhpcy5hdHRycyxcbiAgICAgICAgICAuLi5zd2l0Y2hBdHRycyxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuZ2VuUmlwcGxlKHRoaXMuc2V0VGV4dENvbG9yKHRoaXMudmFsaWRhdGlvblN0YXRlLCB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgICAgIG5hbWU6ICd0b3VjaCcsXG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICBsZWZ0OiB0aGlzLm9uU3dpcGVMZWZ0LFxuICAgICAgICAgICAgICByaWdodDogdGhpcy5vblN3aXBlUmlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1dLFxuICAgICAgICB9KSksXG4gICAgICAgIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ3YtaW5wdXQtLXN3aXRjaF9fdHJhY2snLFxuICAgICAgICAgIC4uLnRoaXMuc3dpdGNoRGF0YSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ3YtaW5wdXQtLXN3aXRjaF9fdGh1bWInLFxuICAgICAgICAgIC4uLnRoaXMuc3dpdGNoRGF0YSxcbiAgICAgICAgfSwgW3RoaXMuZ2VuUHJvZ3Jlc3MoKV0pLFxuICAgICAgXSlcbiAgICB9LFxuICAgIGdlblByb2dyZXNzICgpOiBWTm9kZSB7XG4gICAgICByZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChWRmFiVHJhbnNpdGlvbiwge30sIFtcbiAgICAgICAgdGhpcy5sb2FkaW5nID09PSBmYWxzZVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogZ2V0U2xvdCh0aGlzLCAncHJvZ3Jlc3MnKSB8fCB0aGlzLiRjcmVhdGVFbGVtZW50KFZQcm9ncmVzc0NpcmN1bGFyLCB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBjb2xvcjogKHRoaXMubG9hZGluZyA9PT0gdHJ1ZSB8fCB0aGlzLmxvYWRpbmcgPT09ICcnKVxuICAgICAgICAgICAgICAgID8gKHRoaXMuY29sb3IgfHwgJ3ByaW1hcnknKVxuICAgICAgICAgICAgICAgIDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBzaXplOiAxNixcbiAgICAgICAgICAgICAgd2lkdGg6IDIsXG4gICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgXSlcbiAgICB9LFxuICAgIG9uU3dpcGVMZWZ0ICgpIHtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB0aGlzLm9uQ2hhbmdlKClcbiAgICB9LFxuICAgIG9uU3dpcGVSaWdodCAoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHRoaXMub25DaGFuZ2UoKVxuICAgIH0sXG4gICAgb25LZXlkb3duIChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIChlLmtleUNvZGUgPT09IGtleUNvZGVzLmxlZnQgJiYgdGhpcy5pc0FjdGl2ZSkgfHxcbiAgICAgICAgKGUua2V5Q29kZSA9PT0ga2V5Q29kZXMucmlnaHQgJiYgIXRoaXMuaXNBY3RpdmUpXG4gICAgICApIHRoaXMub25DaGFuZ2UoKVxuICAgIH0sXG4gIH0sXG59KVxuIl0sIm5hbWVzIjpbIlNlbGVjdGFibGUiLCJWSW5wdXQiLCJUb3VjaCIsIlZGYWJUcmFuc2l0aW9uIiwiVlByb2dyZXNzQ2lyY3VsYXIiLCJnZXRTbG90Iiwia2V5Q29kZXMiLCJleHRlbmQiLCJuYW1lIiwiZGlyZWN0aXZlcyIsInByb3BzIiwiaW5zZXQiLCJCb29sZWFuIiwibG9hZGluZyIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZmxhdCIsImNvbXB1dGVkIiwiY2xhc3NlcyIsIm9wdGlvbnMiLCJjYWxsIiwiYXR0cnMiLCJpc0FjdGl2ZSIsImlzRGlzYWJsZWQiLCJyb2xlIiwidmFsaWRhdGlvblN0YXRlIiwiaGFzRXJyb3IiLCJzaG91bGRWYWxpZGF0ZSIsImhhc1N1Y2Nlc3MiLCJoYXNDb2xvciIsImNvbXB1dGVkQ29sb3IiLCJ1bmRlZmluZWQiLCJzd2l0Y2hEYXRhIiwic2V0VGV4dENvbG9yIiwiY2xhc3MiLCJ0aGVtZUNsYXNzZXMiLCJtZXRob2RzIiwiZ2VuRGVmYXVsdFNsb3QiLCJnZW5Td2l0Y2giLCJnZW5MYWJlbCIsInRpdGxlIiwic3dpdGNoQXR0cnMiLCJhdHRycyQiLCIkY3JlYXRlRWxlbWVudCIsInN0YXRpY0NsYXNzIiwiZ2VuSW5wdXQiLCJnZW5SaXBwbGUiLCJ2YWx1ZSIsImxlZnQiLCJvblN3aXBlTGVmdCIsInJpZ2h0Iiwib25Td2lwZVJpZ2h0IiwiZ2VuUHJvZ3Jlc3MiLCJjb2xvciIsInNpemUiLCJ3aWR0aCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsIm9uS2V5ZG93biIsImUiLCJrZXlDb2RlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63000\n\n}")},29918:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{/* harmony import */ var _base_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90929);\n/* eslint-disable class-methods-use-this */\n\nclass HesaCodesService extends _base_service__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .A {\n  get entity() {\n    return 'hesaCodes';\n  }\n  async getCodesByName(name) {\n    try {\n      const response = await this.request().get(`${this.entity}/${name}`);\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n  async getMultipleCodes(fields) {\n    try {\n      const response = await this.request().post(`${this.entity}`, {\n        fields\n      });\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n}\n/* harmony default export */ __webpack_exports__.A = (new HesaCodesService());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk5MTguanMiLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ3lDO
10FBRXpDLE1BQU1DLGdCQUFnQixTQUFTRCw4REFBVyxDQUFDO0VBQ3pDLElBQUlFLE1BQU1BLENBQUEsRUFBRztJQUNYLE9BQU8sV0FBVztFQUNwQjtFQUVBLE1BQU1DLGNBQWNBLENBQUNDLElBQUksRUFBRTtJQUN6QixJQUFJO01BQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNMLE1BQU0sSUFBSUUsSUFBSSxFQUFFLENBQUM7TUFDbkUsT0FBTyxJQUFJLENBQUNJLGVBQWUsQ0FBQ0gsUUFBUSxFQUFFQSxRQUFRLENBQUNJLElBQUksQ0FBQztJQUN0RCxDQUFDLENBQUMsT0FBT0MsS0FBSyxFQUFFO01BQ2QsTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsS0FBSyxDQUFDO0lBQ2hDO0VBQ0Y7RUFFQSxNQUFNRSxnQkFBZ0JBLENBQUNDLE1BQU0sRUFBRTtJQUM3QixJQUFJO01BQ0YsTUFBTVIsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNaLE1BQU0sRUFBRSxFQUFFO1FBQUNXO01BQU0sQ0FBQyxDQUFDO01BQ3RFLE9BQU8sSUFBSSxDQUFDTCxlQUFlLENBQUNILFFBQVEsRUFBRUEsUUFBUSxDQUFDSSxJQUFJLENBQUM7SUFDdEQsQ0FBQyxDQUFDLE9BQU9DLEtBQUssRUFBRTtNQUNkLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUNELEtBQUssQ0FBQztJQUNoQztFQUNGO0FBQ0Y7QUFFQSxzREFBZSxJQUFJVCxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY2Rtcy8uL3NyYy9zZXJ2aWNlcy9oZXNhQ29kZXMuc2VydmljZS5qcz8yOTViIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbmltcG9ydCBCYXNlU2VydmljZSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5cbmNsYXNzIEhlc2FDb2Rlc1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG4gIGdldCBlbnRpdHkoKSB7XG4gICAgcmV0dXJuICdoZXNhQ29kZXMnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29kZXNCeU5hbWUobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmdldChgJHt0aGlzLmVudGl0eX0vJHtuYW1lfWApO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldE11bHRpcGxlQ29kZXMoZmllbGRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KCkucG9zdChgJHt0aGlzLmVudGl0eX1gLCB7ZmllbGRzfSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBIZXNhQ29kZXNTZXJ2aWNlKCk7XG4iXSwibmFtZXMiOlsiQmFzZVNlcnZpY2UiLCJIZXNhQ29kZXNTZXJ2aWNlIiwiZW50aXR5IiwiZ2V0Q29kZXNCeU5hbWUiLCJuYW1lIiwicmVzcG9uc2UiLCJyZXF1ZXN0IiwiZ2V0IiwicmVzcG9uc2VXcmFwcGVyIiwiZGF0YSIsImVycm9yIiwiZXJyb3JXcmFwcGVyIiwiZ2V0TXVsdGlwbGVDb2RlcyIsImZpZWxkcyIsInBvc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29918\n\n}")},53046:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{/* harmony import */ var _http_v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27574);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37569);\n/**\n * V2 Programmes Service\n *\n * Provides access to programme CRUD operations via the V2 API.\n * Uses the V2 HTTP client (/api/v1/programmes).\n */\n\n\n\nclass ProgrammesV2Service {\n  request() {\n    return new _http_v2__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .A();\n  }\n  responseWrapper(...rest) {\n    return new _utils__WEBPACK_IMPORTED_MODULE_1__/* .ResponseWrapper */ .PR(...rest);\n  }\n  errorWrapper(...rest) {\n    return new _utils__WEBPACK_IMPORTED_MODULE_1__/* .ErrorWrapper */ .sr(...rest);\n  }\n\n  /**\n   * Get list of programmes\n   * V2 returns array directly if no pagination requested\n   * Or { data: [...], pagination: {...} } if pagination parameters provided\n   */\n  async getList(parameters = {}) {\n    try {\n      const response = await this.request().get('programmes', {\n        params: parameters\n      });\n      // If pagination used, response is {data: [...], pagination: {...}}\n      // Otherwise, response is the array directly\n      const programmes = Array.isArray(response.data) ? response.data : response.data?.data || [];\n      return this.responseWrapper(response, programmes);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n\n  /**\n   * Get a single programme by ID\n   */\n  async getById(id) {\n    try {\n      const response = await this.request().get(`programmes/${id}`);\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n\n  /**\n   * Create a new programme\n   */\n  async create(data) {\
1n    try {\n      const response = await this.request().post('programmes', data);\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n\n  /**\n   * Update an existing programme\n   */\n  async update(id, data) {\n    try {\n      const response = await this.request().put(`programmes/${id}`, data);\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n\n  /**\n   * Delete a programme\n   */\n  async remove(id) {\n    try {\n      const response = await this.request().delete(`programmes/${id}`);\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n\n  /**\n   * Get aggregated intakes across all programmes\n   * Returns intakes grouped by value+label with applicable programme list\n   */\n  async getIntakes() {\n    try {\n      const response = await this.request().get('programmes/intakes');\n      return this.responseWrapper(response, response.data);\n    } catch (error) {\n      throw this.errorWrapper(error);\n    }\n  }\n}\n/* harmony default export */ __webpack_exports__.A = (new ProgrammesV2Service());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBb0IsQ0FBQztNQUMvRCxPQUFPLElBQUksQ0FBQ04sZUFBZSxDQUFDSyxRQUFRLEVBQUVBLFFBQVEsQ0FBQ00sSUFBSSxDQUFDO0lBQ3RELENBQUMsQ0FBQyxPQUFPQyxLQUFLLEVBQUU7TUFDZCxNQUFNLElBQUksQ0FBQ1YsWUFBWSxDQUFDVSxLQUFLLENBQUM7SUFDaEM7RUFDRjtBQUNGO0FBRUEsc0RBQWUsSUFBSWQsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2NkbXMvLi9zcmMvc2VydmljZXMvcHJvZ3JhbW1lcy52Mi5zZXJ2aWNlLmpzPzBjNzEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWMiBQcm9ncmFtbWVzIFNlcnZpY2VcbiAqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gcHJvZ3JhbW1lIENSVUQgb3BlcmF0aW9ucyB2aWEgdGhlIFYyIEFQSS5cbiAqIFVzZXMgdGhlIFYyIEhUVFAgY2xpZW50ICgvYXBpL3YxL3Byb2dyYW1tZXMpLlxuICovXG5cbmltcG9ydCBIdHRwVjIgZnJvbSAnLi9odHRwLnYyJztcbmltcG9ydCB7UmVzcG9uc2VXcmFwcGVyLCBFcnJvcldyYXBwZXJ9IGZyb20gJy4vdXRpbHMnO1xuXG5jbGFzcyBQcm9ncmFtbWVzVjJTZXJ2aWNlIHtcbiAgcmVxdWVzdCgpIHtcbiAgICByZXR1cm4gbmV3IEh0dHBWMigpO1xuICB9XG5cbiAgcmVzcG9uc2VXcmFwcGVyKC4uLnJlc3QpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlV3JhcHBlciguLi5yZXN0KTtcbiAgfVxuXG4gIGVycm9yV3JhcHBlciguLi5yZXN0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcldyYXBwZXIoLi4ucmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgcHJvZ3JhbW1lc1xuICAgKiBWMiByZXR1cm5zIGFycmF5IGRpcmVjdGx5IGlmIG5vIHBhZ2luYXRpb24gcmVxdWVzdGVkXG4gICAqIE9yIHsgZGF0YTogWy4uLl0sIHBhZ2luYXRpb246IHsuLi59IH0gaWYgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBnZXRMaXN0KHBhcmFtZXRlcnMgPSB7fSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmdldCgncHJvZ3JhbW1lcycsIHtwYXJhbXM6IHBhcmFtZXRlcnN9KTtcbiAgICAgIC8vIElmIHBhZ2luYXRpb24gdXNlZCwgcmVzcG9uc2UgaXMge2RhdGE6IFsuLi5dLCBwYWdpbmF0aW9uOiB7Li4ufX1cbiAgICAgIC8vIE90aGVyd2lzZSwgcmVzcG9uc2UgaXMgdGhlIGFycmF5IGRpcmVjdGx5XG4gICAgICBjb25zdCBwcm9ncmFtbWVzID0gQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhKSA/IHJlc3BvbnNlLmRhdGEgOiAocmVzcG9uc2UuZGF0YT8uZGF0YSB8fCBbXSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHByb2dyYW1tZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZSBwcm9ncmFtbWUgYnkgSURcbiAgICovXG4gIGFzeW5jIGdldEJ5SWQoaWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoKS5nZXQoYHByb2dyYW1tZXMvJHtpZH1gKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlV3JhcHBlcihyZXNwb25zZSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZXJyb3JXcmFwcGVyKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByb2dyYW1tZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGRhdGEpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoKS5wb3N0KCdwcm9ncmFtbWVzJywgZGF0YSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBwcm9ncmFtbWVcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZCwgZGF0YSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLnB1dChgcHJvZ3JhbW1lcy8ke2lkfWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBwcm9ncmFtbWVcbiAgICovXG4gIGFzeW5jIHJlbW92ZShpZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmRlbGV0ZShgcHJvZ3JhbW1lcy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWdncmVnYXRlZCBpbnRha2VzIGFjcm9zcyBhbGwgcHJvZ3JhbW1lc1xuICAgKiBSZXR1cm5zIGludGFrZXMgZ3JvdXBlZCBieSB2YWx1ZStsYWJlbC
1B3aXRoIGFwcGxpY2FibGUgcHJvZ3JhbW1lIGxpc3RcbiAgICovXG4gIGFzeW5jIGdldEludGFrZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KCkuZ2V0KCdwcm9ncmFtbWVzL2ludGFrZXMnKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlV3JhcHBlcihyZXNwb25zZSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZXJyb3JXcmFwcGVyKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFByb2dyYW1tZXNWMlNlcnZpY2UoKTtcbiJdLCJuYW1lcyI6WyJIdHRwVjIiLCJSZXNwb25zZVdyYXBwZXIiLCJFcnJvcldyYXBwZXIiLCJQcm9ncmFtbWVzVjJTZXJ2aWNlIiwicmVxdWVzdCIsInJlc3BvbnNlV3JhcHBlciIsInJlc3QiLCJlcnJvcldyYXBwZXIiLCJnZXRMaXN0IiwicGFyYW1ldGVycyIsInJlc3BvbnNlIiwiZ2V0IiwicGFyYW1zIiwicHJvZ3JhbW1lcyIsIkFycmF5IiwiaXNBcnJheSIsImRhdGEiLCJlcnJvciIsImdldEJ5SWQiLCJpZCIsImNyZWF0ZSIsInBvc3QiLCJ1cGRhdGUiLCJwdXQiLCJyZW1vdmUiLCJkZWxldGUiLCJnZXRJbnRha2VzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53046\n\n}")}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.