PageSourceSearch

https://stkipahlussunnahbukittinggi.ac.id/src/pages/system/HealthLogPage.vue

js stkipahlussunnahbukittinggi.ac.id collected 2026-10-06 21:21:18 UTC 26,798 bytes, 201 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/pages/system/HealthLogPage.vue");import { ref, onMounted } from "/node_modules/.vite/deps/vue.js?v=825bfe78"
2import systemHealthService from "/src/services/systemHealthService.js"
3import SystemStatusBadge from "/src/components/system/SystemStatusBadge.vue"
4import LoadingSpinner from "/src/components/ui/LoadingSpinner.vue"
5import EmptyState from "/src/components/ui/EmptyState.vue"
6import BaseButton from "/src/components/ui/BaseButton.vue"
7
8
9const _sfc_main = {
10  __name: 'HealthLogPage',
11  setup(__props, { expose: __expose }) {
12  __expose();
13
14const loading = ref(false)
15const logs = ref([])
16const meta = ref({ current_page: 1, last_page: 1 })
17
18const fetchLogs = async (page = 1) => {
19  loading.value = true
20  try {
21    const res = await systemHealthService.getHistory({ page })
22    if (res.success && res.data) {
23      logs.value = res.data.data || []
24      meta.value = {
25        current_page: res.data.meta?.current_page || res.data.current_page || 1,
26        last_page: res.data.meta?.last_page || res.data.last_page || 1
27      }
28    }
29  } catch (error) {
30    console.error('Error fetching health history logs:', error)
31  } finally {
32    loading.value = false
33  }
34}
35
36const formatComponents = (components) => {
37  if (!components) return '-'
38  if (typeof components === 'string') return components
39  return Object.entries(components)
40    .map(([key, val]) => `${key.toUpperCase()}: ${val.status}`)
41    .join(', ')
42}
43
44onMounted(() => {
45  fetchLogs()
46})
47
48const __returned__ = { loading, logs, meta, fetchLogs, formatComponents, ref, onMounted, get systemHealthService() { return systemHealthService }, SystemStatusBadge, LoadingSpinner, EmptyState, BaseButton }
49Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })
50return __returned__
51}
52
53}
54import { createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString } from "/node_modules/.vite/deps/vue.js?v=825bfe78"
55
56const _hoisted_1 = { class: "space-y-6" }
57const _hoisted_2 = { class: "flex flex-col md:flex-row md:items-center justify-between pb-5 border-b border-slate-200" }
58const _hoisted_3 = { class: "mt-4 md:mt-0 flex space-x-2" }
59const _hoisted_4 = { class: "bg-white rounded-2xl border border-slate-200 shadow-xs overflow-hidden" }
60const _hoisted_5 = {
61  key: 0,
62  class: "flex justify-center py-12"
63}
64const _hoisted_6 = {
65  key: 1,
66  class: "py-12"
67}
68const _hoisted_7 = {
69  key: 2,
70  class: "overflow-x-auto"
71}
72const _hoisted_8 = { class: "w-full text-left text-xs border-collapse" }
73const _hoisted_9 = { class: "divide-y divide-slate-100 text-slate-650 font-medium" }
74const _hoisted_10 = { class: "py-3 px-5 whitespace-nowrap" }
75const _hoisted_11 = { class: "py-3 px-5" }
76const _hoisted_12 = ["title"]
77const _hoisted_13 = {
78  key: 3,
79  class: "p-4 border-t border-slate-100 flex items-center justify-between bg-slate-50/30"
80}
81const _hoisted_14 = { class: "text-xs text-slate-450" }
82const _hoisted_15 = { class: "flex items-center space-x-1.5" }
83
84function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
85  const _component_router_link = _resolveComponent("router-link")
86
87  return (_openBlock(), _createElementBlock("div", _hoisted_1, [
88    _createCommentVNode(" Header "),
89    _createElementVNode("div", _hoisted_2, [
90      _cache[3] || (_cache[3] = _createElementVNode("div", null, [
91        _createElementVNode("h1", { class: "text-xl font-bold text-slate-800 tracking-tight" }, "Log Riwayat Pemeriksaan Kesehatan"),
92        _createElementVNode("p", { class: "text-xs text-slate-500 mt-1" }, "Daftar rekaman historis pemantauan keandalan server dan database perguruan tinggi.")
93      ], -1 /* CACHED */)),
94      _createElementVNode("div", _hoisted_3, [
95        _createVNode(_component_router_link, {
96          to: "/settings/system/health",
97          class: "inline-flex items-center px-3 py-2 bg-white hover:bg-slate-50 border border-slate-300 text-slate-750 text-xs font-semibold rounded-lg transition-colors shadow-xs"
98        }, {
99          default: _withCtx(() => [...(_cache[2] || (_cache[2] = [
100            _createTextVNode(" ← Kembali ke Status Kesehatan ", -1 /* CACHED */)
101          ]))]),
102          _: 1 /* STABLE */
103        })
104      ])
105    ]),
106    _createCommentVNode(" Table Card "),
107    _createElementVNode("div", _hoisted_4, [
108      _createCommentVNode(" Loading and Table "),
109      ($setup.loading)
110        ? (_openBlock(), _createElementBlock("div", _hoisted_5, [
111            _createVNode($setup["LoadingSpinner"])
112          ]))
113        : ($setup.logs.length === 0)
114          ? (_openBlock(), _createElementBlock("div", _hoisted_6, [
115              _createVNode($setup["EmptyState"], {
116                title: "Tidak Ada Riwayat Pemeriksaan",
117                description: "Sistem belum merekam riwayat pemeriksaan manual kesehatan."
118              })
119            ]))
120          : (_openBlock(), _createElementBlock("div", _hoisted_7, [
121              _createElementVNode("table", _hoisted_8, [
122                _cache[4] || (_cache[4] = _createElementVNode("thead", null, [
123                  _createElementVNode("tr", { class: "bg-slate-50 text-slate-500 font-bold uppercase tracking-wider border-b border-slate-100" }, [
124                    _createElementVNode("th", { class: "py-3 px-5" }, "TANGGAL & WAKTU"),
125                    _createElementVNode("th", { class: "py-3 px-5" }, "STATUS KESELURUHAN"),
126                    _createElementVNode("th", { class: "py-3 px-5" }, "DETAIL KOMPONEN")
127                  ])
128                ], -1 /* CACHED */)),
129                _createElementVNode("tbody", _hoisted_9, [
130                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.logs, (log) => {
131                    return (_openBlock(), _createElementBlock("tr", {
132                      key: log.id,
133                      class: "hover:bg-slate-50/50 transition-colors"
134                    }, [
135                      _createElementVNode("td", _hoisted_10, _toDisplayString(log.created_at || log.checked_at), 1 /* TEXT */),
136                      _createElementVNode("td", _hoisted_11, [
137                        _createVNode($setup["SystemStatusBadge"], {
138                          status: log.status
139                        }, null, 8 /* PROPS */, ["status"])
140                      ]),
141                      _createElementVNode("td", {
142                        class: "py-3 px-5 max-w-[400px] truncate",
143                        title: $setup.formatComponents(log.components)
144                      }, _toDisplayString($setup.formatComponents(log.components)), 9 /* TEXT, PROPS */, _hoisted_12)
145                    ]))
146                  }), 128 /* KEYED_FRAGMENT */))
147                ])
148              ])
149            ])),
150      _createCommentVNode(" Pagination "),
151      ($setup.meta.last_page > 1)
152        ? (_openBlock(), _createElementBlock("div", _hoisted_13, [
153            _createElementVNode("span", _hoisted_14, " Menampilkan Halaman " + _toDisplayString($setup.meta.current_page) + " dari " + _toDisplayString($setup.meta.last_page), 1 /* TEXT */),
154            _createElementVNode("div", _hoisted_15, [
155              _createVNode($setup["BaseButton"], {
156                variant: "outline",
157                size: "xs",
158                disabled: $setup.meta.current_page === 1,
159                onClick: _cache[0] || (_cache[0] = $event => ($setup.fetchLogs($setup.meta.current_page - 1)))
160              }, {
161                default: _withCtx(() => [...(_cache[5] || (_cache[5] = [
162                  _createTextVNode(" Sebelumnya ", -1 /* CACHED */)
163                ]))]),
164                _: 1 /* STABLE */
165              }, 8 /* PROPS */, ["disabled"]),
166              _createVNode($setup["BaseButton"], {
167                variant: "outline",
168                size: "xs",
169                disabled: $setup.meta.current_page === $setup.meta.last_page,
170                onClick: _cache[1] || (_cache[1] = $event => ($setup.fetchLogs($setup.meta.current_page + 1)))
171              }, {
172                default: _withCtx(() => [...(_cache[6] || (_cache[6] = [
173                  _createTextVNode(" Selanjutnya ", -1 /* CACHED */)
174                ]))]),
175                _: 1 /* STABLE */
176              }, 8 /* PROPS */, ["disabled"])
177            ])
178          ]))
179        : _createCommentVNode("v-if", true)
180    ])
181  ]))
182}
183
184
185_sfc_main.__hmrId = "470a03d5"
186typeof __VUE_HMR_RUNTIME__ !== 'undefined' && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main)
187import.meta.hot.on('file-changed', ({ file }) => {
188  __VUE_HMR_RUNTIME__.CHANGED_FILE = file
189})
190import.meta.hot.accept(mod => {
191  if (!mod) return
192  const { default: updated, _rerender_only } = mod
193  if (_rerender_only) {
194    __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render)
195  } else {
196    __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated)
197  }
198})
199import _export_sfc from "/@id/__x00__plugin-vue:export-helper"
200export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',"G:/xampp82/
200htdocs/project/siakad-stkip-ahlussunnah/frontend/src/pages/system/HealthLogPage.vue"]])
201//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiSGVhbHRoTG9nUGFnZS52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic3BhY2UteS02XCI+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwYi01IGJvcmRlci1iIGJvcmRlci1zbGF0ZS0yMDBcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgZm9udC1ib2xkIHRleHQtc2xhdGUtODAwIHRyYWNraW5nLXRpZ2h0XCI+TG9nIFJpd2F5YXQgUGVtZXJpa3NhYW4gS2VzZWhhdGFuPC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwIG10LTFcIj5EYWZ0YXIgcmVrYW1hbiBoaXN0b3JpcyBwZW1hbnRhdWFuIGtlYW5kYWxhbiBzZXJ2ZXIgZGFuIGRhdGFiYXNlIHBlcmd1cnVhbiB0aW5nZ2kuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNCBtZDptdC0wIGZsZXggc3BhY2UteC0yXCI+XG4gICAgICAgIDxyb3V0ZXItbGlua1xuICAgICAgICAgIHRvPVwiL3NldHRpbmdzL3N5c3RlbS9oZWFsdGhcIlxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTMgcHktMiBiZy13aGl0ZSBob3ZlcjpiZy1zbGF0ZS01MCBib3JkZXIgYm9yZGVyLXNsYXRlLTMwMCB0ZXh0LXNsYXRlLTc1MCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWNvbG9ycyBzaGFkb3cteHNcIlxuICAgICAgICA+XG4gICAgICAgICAg4oaQIEtlbWJhbGkga2UgU3RhdHVzIEtlc2VoYXRhblxuICAgICAgICA8L3JvdXRlci1saW5rPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRhYmxlIENhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQtMnhsIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIHNoYWRvdy14cyBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIDwhLS0gTG9hZGluZyBhbmQgVGFibGUgLS0+XG4gICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHB5LTEyXCI+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgdi1lbHNlLWlmPVwibG9ncy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInB5LTEyXCI+XG4gICAgICAgIDxFbXB0eVN0YXRlIFxuICAgICAgICAgIHRpdGxlPVwiVGlkYWsgQWRhIFJpd2F5YXQgUGVtZXJpa3NhYW5cIiBcbiAgICAgICAgICBkZXNjcmlwdGlvbj1cIlNpc3RlbSBiZWx1bSBtZXJla2FtIHJpd2F5YXQgcGVtZXJpa3NhYW4gbWFudWFsIGtlc2VoYXRhbi5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwib3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInctZnVsbCB0ZXh0LWxlZnQgdGV4dC14cyBib3JkZXItY29sbGFwc2VcIj5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJiZy1zbGF0ZS01MCB0ZXh0LXNsYXRlLTUwMCBmb250LWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIGJvcmRlci1iIGJvcmRlci1zbGF0ZS0xMDBcIj5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicHktMyBweC01XCI+VEFOR0dBTCAmIFdBS1RVPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicHktMyBweC01XCI+U1RBVFVTIEtFU0VMVVJVSEFOPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicHktMyBweC01XCI+REVUQUlMIEtPTVBPTkVOPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtc2xhdGUtMTAwIHRleHQtc2xhdGUtNjUwIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICA8dHIgdi1mb3I9XCJsb2cgaW4gbG9nc1wiIDprZXk9XCJsb2cuaWRcIiBjbGFzcz1cImhvdmVyOmJnLXNsYXRlLTUwLzUwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB5LTMgcHgtNSB3aGl0ZXNwYWNlLW5vd3JhcFwiPnt7IGxvZy5jcmVhdGVkX2F0IHx8IGxvZy5jaGVja2VkX2F0IH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHktMyBweC01XCI+XG4gICAgICAgICAgICAgICAgPFN5c3RlbVN0YXR1c0JhZGdlIDpzdGF0dXM9XCJsb2cuc3RhdHVzXCIgLz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHktMyBweC01IG1heC13LVs0MDBweF0gdHJ1bmNhdGVcIiA6dGl0bGU9XCJmb3JtYXRDb21wb25lbnRzKGxvZy5jb21wb25lbnRzKVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdENvbXBvbmVudHMobG9nLmNvbXBvbmVudHMpIH19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgPGRpdiB2LWlmPVwibWV0YS5sYXN0X3BhZ2UgPiAxXCIgY2xhc3M9XCJwLTQgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTEwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYmctc2xhdGUtNTAvMzBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNDUwXCI+XG4gICAgICAgICAgTWVuYW1waWxrYW4gSGFsYW1hbiB7eyBtZXRhLmN1cnJlbnRfcGFnZSB9fSBkYXJpIHt7IG1ldGEubGFzdF9wYWdlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMS41XCI+XG4gICAgICAgICAgPEJhc2VCdXR0b24gXG4gICAgICAgICAgICB2Y
201XJpYW50PVwib3V0bGluZVwiIFxuICAgICAgICAgICAgc2l6ZT1cInhzXCIgXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJtZXRhLmN1cnJlbnRfcGFnZSA9PT0gMVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJmZXRjaExvZ3MobWV0YS5jdXJyZW50X3BhZ2UgLSAxKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2ViZWx1bW55YVxuICAgICAgICAgIDwvQmFzZUJ1dHRvbj5cbiAgICAgICAgICA8QmFzZUJ1dHRvbiBcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCIgXG4gICAgICAgICAgICBzaXplPVwieHNcIiBcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cIm1ldGEuY3VycmVudF9wYWdlID09PSBtZXRhLmxhc3RfcGFnZVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJmZXRjaExvZ3MobWV0YS5jdXJyZW50X3BhZ2UgKyAxKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VsYW5qdXRueWFcbiAgICAgICAgICA8L0Jhc2VCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IHJlZiwgb25Nb3VudGVkIH0gZnJvbSAndnVlJ1xuaW1wb3J0IHN5c3RlbUhlYWx0aFNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlcy9zeXN0ZW1IZWFsdGhTZXJ2aWNlJ1xuaW1wb3J0IFN5c3RlbVN0YXR1c0JhZGdlIGZyb20gJ0AvY29tcG9uZW50cy9zeXN0ZW0vU3lzdGVtU3RhdHVzQmFkZ2UudnVlJ1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ0AvY29tcG9uZW50cy91aS9Mb2FkaW5nU3Bpbm5lci52dWUnXG5pbXBvcnQgRW1wdHlTdGF0ZSBmcm9tICdAL2NvbXBvbmVudHMvdWkvRW1wdHlTdGF0ZS52dWUnXG5pbXBvcnQgQmFzZUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvdWkvQmFzZUJ1dHRvbi52dWUnXG5cbmNvbnN0IGxvYWRpbmcgPSByZWYoZmFsc2UpXG5jb25zdCBsb2dzID0gcmVmKFtdKVxuY29uc3QgbWV0YSA9IHJlZih7IGN1cnJlbnRfcGFnZTogMSwgbGFzdF9wYWdlOiAxIH0pXG5cbmNvbnN0IGZldGNoTG9ncyA9IGFzeW5jIChwYWdlID0gMSkgPT4ge1xuICBsb2FkaW5nLnZhbHVlID0gdHJ1ZVxuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHN5c3RlbUhlYWx0aFNlcnZpY2UuZ2V0SGlzdG9yeSh7IHBhZ2UgfSlcbiAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEpIHtcbiAgICAgIGxvZ3MudmFsdWUgPSByZXMuZGF0YS5kYXRhIHx8IFtdXG4gICAgICBtZXRhLnZhbHVlID0ge1xuICAgICAgICBjdXJyZW50X3BhZ2U6IHJlcy5kYXRhLm1ldGE/LmN1cnJlbnRfcGFnZSB8fCByZXMuZGF0YS5jdXJyZW50X3BhZ2UgfHwgMSxcbiAgICAgICAgbGFzdF9wYWdlOiByZXMuZGF0YS5tZXRhPy5sYXN0X3BhZ2UgfHwgcmVzLmRhdGEubGFzdF9wYWdlIHx8IDFcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgaGVhbHRoIGhpc3RvcnkgbG9nczonLCBlcnJvcilcbiAgfSBmaW5hbGx5IHtcbiAgICBsb2FkaW5nLnZhbHVlID0gZmFsc2VcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRDb21wb25lbnRzID0gKGNvbXBvbmVudHMpID0+IHtcbiAgaWYgKCFjb21wb25lbnRzKSByZXR1cm4gJy0nXG4gIGlmICh0eXBlb2YgY29tcG9uZW50cyA9PT0gJ3N0cmluZycpIHJldHVybiBjb21wb25lbnRzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhjb21wb25lbnRzKVxuICAgIC5tYXAoKFtrZXksIHZhbF0pID0+IGAke2tleS50b1VwcGVyQ2FzZSgpfTogJHt2YWwuc3RhdHVzfWApXG4gICAgLmpvaW4oJywgJylcbn1cblxub25Nb3VudGVkKCgpID0+IHtcbiAgZmV0Y2hMb2dzKClcbn0pXG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6IkFBb0ZBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7O0FBRXRELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQix
201DQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWxELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBQ0Y7O0FBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2Q7O0F
201BRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaLENBQUM7Ozs7Ozs7Ozs7cUJBMUhNLEtBQUssRUFBQyxXQUFXO3FCQUVmLEtBQUssRUFBQywwRkFBMEY7cUJBSzlGLEtBQUssRUFBQyw2QkFBNkI7cUJBV3JDLEtBQUssRUFBQyx3RUFBd0U7OztFQUU3RCxLQUFLLEVBQUMsMkJBQTJCOzs7O0VBSWxCLEtBQUssRUFBQyxPQUFPOzs7O0VBT3BDLEtBQUssRUFBQyxpQkFBaUI7O3FCQUMxQixLQUFLLEVBQUMsMENBQTBDO3FCQVE5QyxLQUFLLEVBQUMsc0RBQXNEO3NCQUUzRCxLQUFLLEVBQUMsNkJBQTZCO3NCQUNuQyxLQUFLLEVBQUMsV0FBVzs7OztFQVlFLEtBQUssRUFBQyxnRkFBZ0Y7O3NCQUM3RyxLQUFLLEVBQUMsd0JBQXdCO3NCQUcvQixLQUFLLEVBQUMsK0JBQStCOzs7Ozt3QkEzRGhELG9CQStFTSxPQS9FTixVQStFTTtJQTlFSiwrQkFBZTtJQUNmLG9CQWFNLE9BYk4sVUFhTTtnQ0FaSixvQkFHTTtRQUZKLG9CQUFrRyxRQUE5RixLQUFLLEVBQUMsaURBQWlELElBQUMsbUNBQWlDO1FBQzdGLG9CQUE2SCxPQUExSCxLQUFLLEVBQUMsNkJBQTZCLElBQUMsb0ZBQWtGOztNQUUzSCxvQkFPTSxPQVBOLFVBT007UUFOSixhQUtjO1VBSlosRUFBRSxFQUFDLHlCQUF5QjtVQUM1QixLQUFLLEVBQUMsbUtBQW1LOzs0QkFDMUssQ0FFRDs2QkFGQyxpQ0FFRDs7Ozs7O0lBSUosbUNBQW1CO0lBQ25CLG9CQTRETSxPQTVETixVQTRETTtNQTNESiwwQ0FBMEI7T0FDZixjQUFPO3lCQUFsQixvQkFFTSxPQUZOLFVBRU07WUFESixhQUFrQjs7V0FHSixXQUFJLENBQUMsTUFBTTsyQkFBM0Isb0JBS00sT0FMTixVQUtNO2NBSkosYUFHRTtnQkFGQSxLQUFLLEVBQUMsK0JBQStCO2dCQUNyQyxXQUFXLEVBQUMsNERBQTREOzs7MkJBSTVFLG9CQXFCTSxPQXJCTixVQXFCTTtjQXBCSixvQkFtQlEsU0FuQlIsVUFtQlE7MENBbEJOLG9CQU1RO2tCQUxOLG9CQUlLLFFBSkQsS0FBSyxFQUFDLHlGQUF5RjtvQkFDakcsb0JBQTBDLFFBQXRDLEtBQUssRUFBQyxXQUFXLElBQUMsaUJBQWU7b0JBQ3JDLG9CQUE2QyxRQUF6QyxLQUFLLEVBQUMsV0FBVyxJQUFDLG9CQUFrQjtvQkFDeEMsb0JBQTBDLFFBQXRDLEtBQUssRUFBQyxXQUFXLElBQUMsaUJBQWU7OztnQkFHekMsb0JBVVEsU0FWUixVQVVRO3FDQVROLG9CQVFLLDZCQVJhLFdBQUksR0FBWCxHQUFHOzBDQUFkLG9CQVFLO3NCQVJvQixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7c0JBQUUsS0FBSyxFQUFDLHdDQUF3Qzs7c0JBQ2xGLG9CQUFtRixNQUFuRixXQUFtRixtQkFBeEMsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVTtzQkFDM0Usb0JBRUssTUFGTCxXQUVLO3dCQURILGFBQTBDOzBCQUF0QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07OztzQkFFeEMsb0JBRUs7d0JBRkQsS0FBSyxFQUFDLGtDQUFrQzt3QkFBRSxLQUFLLEVBQUUsdUJBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVU7MENBQy9FLHVCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVOzs7Ozs7TUFPNUMsbUNBQW1CO09BQ1IsV0FBSSxDQUFDLFNBQVM7eUJBQXpCLG9CQXNCTSxPQXRCTixXQXNCTTtZQXJCSixvQkFFTyxRQUZQLFdBRU8sRUFGOEIsdUJBQ2Ysb0JBQUcsV0FBSSxDQUFDLFlBQVksSUFBRyxRQUFNLG9CQUFHLFdBQUksQ0FBQyxTQUFTO1lBRXBFLG9CQWlCTSxPQWpCTixXQWlCTTtjQWhCSixhQU9hO2dCQU5YLE9BQU8sRUFBQyxTQUFTO2dCQUNqQixJQUFJLEVBQUMsSUFBSTtnQkFDUixRQUFRLEVBQUUsV0FBSSxDQUFDLFlBQVk7Z0JBQzNCLE9BQUssdUNBQUUsZ0JBQVMsQ0FBQyxXQUFJLENBQUMsWUFBWTs7a0NBQ3BDLENBRUQ7bUNBRkMsY0FFRDs7OztjQUNBLGFBT2E7Z0JBTlgsT0FBTyxFQUFDLFNBQVM7Z0JBQ2pCLElBQUksRUFBQyxJQUFJO2dCQUNSLFFBQVEsRUFBRSxXQUFJLENBQUMsWUFBWSxLQUFLLFdBQUksQ0FBQyxTQUFTO2dCQUM5QyxPQUFLLHVDQUFFLGdCQUFTLENBQUMsV0FBSSxDQUFDLFlBQVk7O2tDQUNwQyxDQUVEO21DQUZDLGVBRUQiLCJpZ25vcmVMaXN0IjpbXX0=

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.