1import { bf as useSizeProps, G as createComponent, bg as useSize, c as computed, h, bh as hMergeSlotSafely, g as getCurrentInstance, _ as _export_sfc, b6 as mergeModels, E as useModel, r as ref, m as openBlock, n as createElementBlock, p as createBaseVNode, q as normalizeClass, a0 as normalizeStyle, F as Fragment, y as renderList, t as toDisplayString } from "./index.6f7a794b.js"; 2import { b as between } from "./format.054b8074.js"; 3const useCircularCommonProps = { 4 ...useSizeProps, 5 min: { 6 type: Number, 7 default: 0 8 }, 9 max: { 10 type: Number, 11 default: 100 12 }, 13 color: String, 14 centerColor: String, 15 trackColor: String, 16 fontSize: String, 17 rounded: Boolean, 18 thickness: { 19 type: Number, 20 default: 0.2, 21 validator: (v) => v >= 0 && v <= 1 22 }, 23 angle: { 24 type: Number, 25 default: 0 26 }, 27 showValue: Boolean, 28 reverse: Boolean, 29 instantFeedback: Boolean 30}; 31const radius = 50, diameter = 2 * radius, circumference = diameter * Math.PI, strokeDashArray = Math.round(circumference * 1e3) / 1e3; 32var QCircularProgress = createComponent({ 33 name: "QCircularProgress", 34 props: { 35 ...useCircularCommonProps, 36 value: { 37 type: Number, 38 default: 0 39 }, 40 animationSpeed: { 41 type: [String, Number], 42 default: 600 43 }, 44 indeterminate: Boolean 45 }, 46 setup(props, { slots }) { 47 const { proxy: { $q } } = getCurrentInstance(); 48 const sizeStyle = useSize(props); 49 const svgStyle = computed(() => { 50 const angle = ($q.lang.rtl === true ? -1 : 1) * props.angle; 51 return { 52 transform: props.reverse !== ($q.lang.rtl === true) ? `scale3d(-1, 1, 1) rotate3d(0, 0, 1, ${-90 - angle}deg)` : `rotate3d(0, 0, 1, ${angle - 90}deg)` 53 }; 54 }); 55 const circleStyle = computed(() => props.instantFeedback !== true && props.indeterminate !== true ? { transition: `stroke-dashoffset ${props.animationSpeed}ms ease 0s, stroke ${props.animationSpeed}ms ease` } : ""); 56 const viewBox = computed(() => diameter / (1 - props.thickness / 2)); 57 const viewBoxAttr = computed( 58 () => `${viewBox.value / 2} ${viewBox.value / 2} ${viewBox.value} ${viewBox.value}` 59 ); 60 const normalized = computed(() => between(props.value, props.min, props.max)); 61 const range = computed(() => props.max - props.min); 62 const strokeWidth = computed(() => props.thickness / 2 * viewBox.value); 63 const strokeDashOffset = computed(() => { 64 const dashRatio = (props.max - normalized.value) / range.value; 65 const dashGap = props.rounded === true && normalized.value < props.max && dashRatio < 0.25 ? strokeWidth.value / 2 * (1 - dashRatio / 0.25) : 0; 66 return circumference * dashRatio + dashGap; 67 }); 68 function getCircle({ thickness, offset, color, cls, rounded }) { 69 return h("circle", { 70 class: "q-circular-progress__" + cls + (color !== void 0 ? ` text-${color}` : ""), 71 style: circleStyle.value, 72 fill: "transparent", 73 stroke: "currentColor", 74 "stroke-width": thickness, 75 "stroke-dasharray": strokeDashArray, 76 "stroke-dashoffset": offset, 77 "stroke-linecap": rounded, 78 cx: viewBox.value, 79 cy: viewBox.value, 80 r: radius 81 }); 82 } 83 return () => { 84 const svgChild = []; 85 props.centerColor !== void 0 && props.centerColor !== "transparent" && svgChild.push( 86 h("circle", { 87 class: `q-circular-progress__center text-${props.centerColor}`, 88 fill: "currentColor", 89 r: radius - strokeWidth.value / 2, 90 cx: viewBox.value, 91 cy: viewBox.value 92 }) 93 ); 94 props.trackColor !== void 0 && props.trackColor !== "transparent" && svgChild.push( 95 getCircle({ 96 cls: "track", 97 thickness: strokeWidth.value, 98 offset: 0, 99 color: props.trackColor 100 }) 101 ); 102 svgChild.push( 103 getCircle({ 104 cls: "circle", 105 thickness: strokeWidth.value, 106 offset: strokeDashOffset.value, 107 color: props.color, 108 rounded: props.rounded === true ? "round" : void 0 109 }) 110 ); 111 const child = [ 112 h("svg", { 113 class: "q-circular-progress__svg", 114 style: svgStyle.value,
115 viewBox: viewBoxAttr.value, 116 "aria-hidden": "true" 117 }, svgChild) 118 ]; 119 props.showValue === true && child.push( 120 h("div", { 121 class: "q-circular-progress__text absolute-full row flex-center content-center", 122 style: { fontSize: props.fontSize } 123 }, slots.default !== void 0 ? slots.default() : [h("div", normalized.value)]) 124 ); 125 return h("div", { 126 class: `q-circular-progress q-circular-progress--${props.indeterminate === true ? "in" : ""}determinate`, 127 style: sizeStyle.value, 128 role: "progressbar", 129 "aria-valuemin": props.min, 130 "aria-valuemax": props.max, 131 "aria-valuenow": props.indeterminate === true ? void 0 : normalized.value 132 }, hMergeSlotSafely(slots.internal, child)); 133 }; 134 } 135}); 136var RatingBar_vue_vue_type_style_index_0_scoped_true_lang = ""; 137const _hoisted_1 = { class: "rating-bar" }; 138const _hoisted_2 = { class: "rating-points" }; 139const _hoisted_3 = ["onClick"]; 140const _sfc_main = { 141 __name: "RatingBar", 142 props: /* @__PURE__ */ mergeModels({ 143 maxRating: { 144 type: Number, 145 default: 5 146 }, 147 ratingColor: { 148 type: String, 149 default: "primary" 150 }, 151 question: { 152 type: Object, 153 default: new Object({}) 154 } 155 }, { 156 "modelValue": { default: 0 }, 157 "modelModifiers": {} 158 }), 159 emits: ["update:modelValue"], 160 setup(__props) { 161 const props = __props; 162 const currentRating = useModel(__props, "modelValue"); 163 ref(props.ratingColor); 164 const setRating = (rating) => { 165 currentRating.value = rating; 166 }; 167 const activeColorClass = (n) => { 168 return n <= currentRating.value ? `bg-${props.ratingColor}` : ""; 169 }; 170 const colorClass = computed(() => { 171 return `bg-${props.ratingColor}`; 172 }); 173 const lineProgress = computed(() => { 174 if (currentRating.value < 2) { 175 return "0%"; 176 } else { 177 return `${(currentRating.value - 1) / (props.maxRating - 1) * 100}%`; 178 } 179 }); 180 return (_ctx, _cache) => { 181 return openBlock(), createElementBlock("div", _hoisted_1, [ 182 _cache[0] || (_cache[0] = createBaseVNode("div", { class: "rating-line background-line" }, null, -1)), 183 createBaseVNode("div", { 184 class: normalizeClass(["rating-line", colorClass.value]), 185 style: normalizeStyle({ width: lineProgress.value }) 186 }, null, 6), 187 createBaseVNode("div", _hoisted_2, [ 188 (openBlock(true), createElementBlock(Fragment, null, renderList(__props.maxRating, (n) => { 189 return openBlock(), createElementBlock("div", { 190 key: n, 191 class: "rating-point", 192 onClick: ($event) => setRating(n) 193 }, [ 194 createBaseVNode("div", { 195 class: normalizeClass([ 196 "circle", 197 { active: n <= currentRating.value }, 198 activeColorClass(n) 199 ]), 200 style: normalizeStyle({ 201 backgroundColor: n <= currentRating.value ? "#ccc" : void 0 202 }) 203 }, toDisplayString(n), 7) 204 ], 8, _hoisted_3); 205 }), 128)) 206 ]) 207 ]); 208 }; 209 } 210}; 211var RatingBar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-39adbc69"], ["__file", "RatingBar.vue"]]); 212export { QCircularProgress as Q, RatingBar as R }; 213//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmF0aW5nQmFyLjJmYTY1NjIwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcXVhc2FyL3NyYy9jb21wb25lbnRzL2NpcmN1bGFyLXByb2dyZXNzL2NpcmN1bGFyLXByb2dyZXNzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3F1YXNhci9zcmMvY29tcG9uZW50cy9jaXJjdWxhci1wcm9ncmVzcy9RQ2lyY3VsYXJQcm9ncmVzcy5qcyIsIi4uLy4uLy4uL3NyYy9wYWdlcy9za2lsbHMvY29tcG9uZW50cy9SYXRpbmdCYXIudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVNpemVQcm9wcyB9IGZyb20gJy4uLy4uL2NvbXBvc2FibGVzL3ByaXZhdGUudXNlLXNpemUvdXNlLXNpemUuanMnXG5cbi8vIGFsc28gdXNlZCBieSBRS25vYlxuZXhwb3J0IGNvbnN0IHVzZUNpcmN1bGFyQ29tbW9uUHJvcHMgPSB7XG4gIC4uLnVzZVNpemVQcm9wcyxcblxuICBtaW46IHtcbiAgICB0eX
213BlOiBOdW1iZXIsXG4gICAgZGVmYXVsdDogMFxuICB9LFxuICBtYXg6IHtcbiAgICB0eXBlOiBOdW1iZXIsXG4gICAgZGVmYXVsdDogMTAwXG4gIH0sXG5cbiAgY29sb3I6IFN0cmluZyxcbiAgY2VudGVyQ29sb3I6IFN0cmluZyxcbiAgdHJhY2tDb2xvcjogU3RyaW5nLFxuXG4gIGZvbnRTaXplOiBTdHJpbmcsXG4gIHJvdW5kZWQ6IEJvb2xlYW4sXG5cbiAgLy8gcmF0aW9cbiAgdGhpY2tuZXNzOiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIGRlZmF1bHQ6IDAuMixcbiAgICB2YWxpZGF0b3I6IHYgPT4gdiA+PSAwICYmIHYgPD0gMVxuICB9LFxuXG4gIGFuZ2xlOiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIGRlZmF1bHQ6IDBcbiAgfSxcblxuICBzaG93VmFsdWU6IEJvb2xlYW4sXG4gIHJldmVyc2U6IEJvb2xlYW4sXG5cbiAgaW5zdGFudEZlZWRiYWNrOiBCb29sZWFuXG59XG4iLCJpbXBvcnQgeyBoLCBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlIH0gZnJvbSAndnVlJ1xuXG5pbXBvcnQgdXNlU2l6ZSBmcm9tICcuLi8uLi9jb21wb3NhYmxlcy9wcml2YXRlLnVzZS1zaXplL3VzZS1zaXplLmpzJ1xuaW1wb3J0IHsgdXNlQ2lyY3VsYXJDb21tb25Qcm9wcyB9IGZyb20gJy4vY2lyY3VsYXItcHJvZ3Jlc3MuanMnXG5cbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3ByaXZhdGUuY3JlYXRlL2NyZWF0ZS5qcydcbmltcG9ydCB7IGhNZXJnZVNsb3RTYWZlbHkgfSBmcm9tICcuLi8uLi91dGlscy9wcml2YXRlLnJlbmRlci9yZW5kZXIuanMnXG5pbXBvcnQgeyBiZXR3ZWVuIH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0L2Zvcm1hdC5qcydcblxuY29uc3RcbiAgcmFkaXVzID0gNTAsXG4gIGRpYW1ldGVyID0gMiAqIHJhZGl1cyxcbiAgY2lyY3VtZmVyZW5jZSA9IGRpYW1ldGVyICogTWF0aC5QSSxcbiAgc3Ryb2tlRGFzaEFycmF5ID0gTWF0aC5yb3VuZChjaXJjdW1mZXJlbmNlICogMTAwMCkgLyAxMDAwXG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNvbXBvbmVudCh7XG4gIG5hbWU6ICdRQ2lyY3VsYXJQcm9ncmVzcycsXG5cbiAgcHJvcHM6IHtcbiAgICAuLi51c2VDaXJjdWxhckNvbW1vblByb3BzLFxuXG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuXG4gICAgYW5pbWF0aW9uU3BlZWQ6IHtcbiAgICAgIHR5cGU6IFsgU3RyaW5nLCBOdW1iZXIgXSxcbiAgICAgIGRlZmF1bHQ6IDYwMFxuICAgIH0sXG5cbiAgICBpbmRldGVybWluYXRlOiBCb29sZWFuXG4gIH0sXG5cbiAgc2V0dXAgKHByb3BzLCB7IHNsb3RzIH0pIHtcbiAgICBjb25zdCB7IHByb3h5OiB7ICRxIH0gfSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpXG4gICAgY29uc3Qgc2l6ZVN0eWxlID0gdXNlU2l6ZShwcm9wcylcblxuICAgIGNvbnN0IHN2Z1N0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgYW5nbGUgPSAoJHEubGFuZy5ydGwgPT09IHRydWUgPyAtMSA6IDEpICogcHJvcHMuYW5nbGVcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBwcm9wcy5yZXZlcnNlICE9PSAoJHEubGFuZy5ydGwgPT09IHRydWUpXG4gICAgICAgICAgPyBgc2NhbGUzZCgtMSwgMSwgMSkgcm90YXRlM2QoMCwgMCwgMSwgJHsgLTkwIC0gYW5nbGUgfWRlZylgXG4gICAgICAgICAgOiBgcm90YXRlM2QoMCwgMCwgMSwgJHsgYW5nbGUgLSA5MCB9ZGVnKWBcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgY2lyY2xlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoXG4gICAgICBwcm9wcy5pbnN0YW50RmVlZGJhY2sgIT09IHRydWUgJiYgcHJvcHMuaW5kZXRlcm1pbmF0ZSAhPT0gdHJ1ZVxuICAgICAgICA/IHsgdHJhbnNpdGlvbjogYHN0cm9rZS1kYXNob2Zmc2V0ICR7IHByb3BzLmFuaW1hdGlvblNwZWVkIH1tcyBlYXNlIDBzLCBzdHJva2UgJHsgcHJvcHMuYW5pbWF0aW9uU3BlZWQgfW1zIGVhc2VgIH1cbiAgICAgICAgOiAnJ1xuICAgICkpXG5cbiAgICBjb25zdCB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4gZGlhbWV0ZXIgLyAoMSAtIHByb3BzLnRoaWNrbmVzcyAvIDIpKVxuXG4gICAgY29uc3Qgdmlld0JveEF0dHIgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgYCR7IHZpZXdCb3gudmFsdWUgLyAyIH0gJHsgdmlld0JveC52YWx1ZSAvIDIgfSAkeyB2aWV3Qm94LnZhbHVlIH0gJHsgdmlld0JveC52YWx1ZSB9YFxuICAgIClcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb21wdXRlZCgoKSA9PiBiZXR3ZWVuKHByb3BzLnZhbHVlLCBwcm9wcy5taW4sIHByb3BzLm1heCkpXG5cbiAgICBjb25zdCByYW5nZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm1heCAtIHByb3BzLm1pbilcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnRoaWNrbmVzcyAvIDIgKiB2aWV3Qm94LnZhbHVlKVxuICAgIGNvbnN0IHN0cm9rZURhc2hPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXNoUmF0aW8gPSAocHJvcHMubWF4IC0gbm9ybWFsaXplZC52YWx1ZSkgLyByYW5nZS52YWx1ZVxuICAgICAgY29uc3QgZGFzaEdhcCA9IHByb3BzLnJvdW5kZWQgPT09IHRydWUgJiYgbm9ybWFsaXplZC52YWx1ZSA8IHByb3BzLm1heCAmJiBkYXNoUmF0aW8gPCAwLjI1XG4gICAgICAgID8gc3Ryb2tlV2lkdGgudmFsdWUgLyAyICogKDEgLSBkYXNoUmF0aW8gLyAwLjI1KVxuICAgICAgICA6IDBcblxuICAgICAgcmV0dXJuIGNpcmN1bWZlcmVuY2UgKiBkYXNoUmF0aW8gKyBkYXNoR2FwXG4gICAgfSlcblxuICAgIGZ1bmN0aW9uIGdldENpcmNsZSAoeyB0aGlja25lc3MsIG9mZnNldCwgY29sb3IsIGNscywgcm91bmRlZCB9KSB7XG4gICAgICByZXR1cm4gaCgnY2lyY2xlJywge1xuICAgICAgICBjbGFzczogJ3EtY2lyY3VsYXItcHJvZ3Jlc3NfXycgKyBjbHMgKyAoY29sb3IgIT09IHZvaWQgMCA/IGAgdGV4dC0keyBjb2xvciB9YCA6ICcnKSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLnZhbHVlLFxuICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAnc3Ryb2tlLXdpZHRoJzogdGh
213pY2tuZXNzLFxuICAgICAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IHN0cm9rZURhc2hBcnJheSxcbiAgICAgICAgJ3N0cm9rZS1kYXNob2Zmc2V0Jzogb2Zmc2V0LFxuICAgICAgICAnc3Ryb2tlLWxpbmVjYXAnOiByb3VuZGVkLFxuICAgICAgICBjeDogdmlld0JveC52YWx1ZSxcbiAgICAgICAgY3k6IHZpZXdCb3gudmFsdWUsXG4gICAgICAgIHI6IHJhZGl1c1xuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc3ZnQ2hpbGQgPSBbXVxuXG4gICAgICBwcm9wcy5jZW50ZXJDb2xvciAhPT0gdm9pZCAwICYmIHByb3BzLmNlbnRlckNvbG9yICE9PSAndHJhbnNwYXJlbnQnICYmIHN2Z0NoaWxkLnB1c2goXG4gICAgICAgIGgoJ2NpcmNsZScsIHtcbiAgICAgICAgICBjbGFzczogYHEtY2lyY3VsYXItcHJvZ3Jlc3NfX2NlbnRlciB0ZXh0LSR7IHByb3BzLmNlbnRlckNvbG9yIH1gLFxuICAgICAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAgIHI6IHJhZGl1cyAtIHN0cm9rZVdpZHRoLnZhbHVlIC8gMixcbiAgICAgICAgICBjeDogdmlld0JveC52YWx1ZSxcbiAgICAgICAgICBjeTogdmlld0JveC52YWx1ZVxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICBwcm9wcy50cmFja0NvbG9yICE9PSB2b2lkIDAgJiYgcHJvcHMudHJhY2tDb2xvciAhPT0gJ3RyYW5zcGFyZW50JyAmJiBzdmdDaGlsZC5wdXNoKFxuICAgICAgICBnZXRDaXJjbGUoe1xuICAgICAgICAgIGNsczogJ3RyYWNrJyxcbiAgICAgICAgICB0aGlja25lc3M6IHN0cm9rZVdpZHRoLnZhbHVlLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjb2xvcjogcHJvcHMudHJhY2tDb2xvclxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICBzdmdDaGlsZC5wdXNoKFxuICAgICAgICBnZXRDaXJjbGUoe1xuICAgICAgICAgIGNsczogJ2NpcmNsZScsXG4gICAgICAgICAgdGhpY2tuZXNzOiBzdHJva2VXaWR0aC52YWx1ZSxcbiAgICAgICAgICBvZmZzZXQ6IHN0cm9rZURhc2hPZmZzZXQudmFsdWUsXG4gICAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yLFxuICAgICAgICAgIHJvdW5kZWQ6IHByb3BzLnJvdW5kZWQgPT09IHRydWUgPyAncm91bmQnIDogdm9pZCAwXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNoaWxkID0gW1xuICAgICAgICBoKCdzdmcnLCB7XG4gICAgICAgICAgY2xhc3M6ICdxLWNpcmN1bGFyLXByb2dyZXNzX19zdmcnLFxuICAgICAgICAgIHN0eWxlOiBzdmdTdHlsZS52YWx1ZSxcbiAgICAgICAgICB2aWV3Qm94OiB2aWV3Qm94QXR0ci52YWx1ZSxcbiAgICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgICAgfSwgc3ZnQ2hpbGQpXG4gICAgICBdXG5cbiAgICAgIHByb3BzLnNob3dWYWx1ZSA9PT0gdHJ1ZSAmJiBjaGlsZC5wdXNoKFxuICAgICAgICBoKCdkaXYnLCB7XG4gICAgICAgICAgY2xhc3M6ICdxLWNpcmN1bGFyLXByb2dyZXNzX190ZXh0IGFic29sdXRlLWZ1bGwgcm93IGZsZXgtY2VudGVyIGNvbnRlbnQtY2VudGVyJyxcbiAgICAgICAgICBzdHlsZTogeyBmb250U2l6ZTogcHJvcHMuZm9udFNpemUgfVxuICAgICAgICB9LCBzbG90cy5kZWZh
213dWx0ICE9PSB2b2lkIDAgPyBzbG90cy5kZWZhdWx0KCkgOiBbIGgoJ2RpdicsIG5vcm1hbGl6ZWQudmFsdWUpIF0pXG4gICAgICApXG5cbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIGNsYXNzOiBgcS1jaXJjdWxhci1wcm9ncmVzcyBxLWNpcmN1bGFyLXByb2dyZXNzLS0keyBwcm9wcy5pbmRldGVybWluYXRlID09PSB0cnVlID8gJ2luJyA6ICcnIH1kZXRlcm1pbmF0ZWAsXG4gICAgICAgIHN0eWxlOiBzaXplU3R5bGUudmFsdWUsXG4gICAgICAgIHJvbGU6ICdwcm9ncmVzc2JhcicsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogcHJvcHMubWluLFxuICAgICAgICAnYXJpYS12YWx1ZW1heCc6IHByb3BzLm1heCxcbiAgICAgICAgJ2FyaWEtdmFsdWVub3cnOiBwcm9wcy5pbmRldGVybWluYXRlID09PSB0cnVlID8gdm9pZCAwIDogbm9ybWFsaXplZC52YWx1ZVxuICAgICAgfSwgaE1lcmdlU2xvdFNhZmVseShzbG90cy5pbnRlcm5hbCwgY2hpbGQpKSAvLyBcImludGVybmFsXCIgaXMgdXNlZCBieSBRS25vYlxuICAgIH1cbiAgfVxufSlcbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInJhdGluZy1iYXJcIj5cbiAgICA8IS0tIERlZmF1bHQgbGluZSBjb3ZlcmluZyB0aGUgZW50aXJlIHJhdGluZyB3aWR0aCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicmF0aW5nLWxpbmUgYmFja2dyb3VuZC1saW5lXCI+PC9kaXY+XG4gICAgPCEtLSBEeW5hbWljIGxpbmUgdGhhdCBncm93cyBiYXNlZCBvbiB0aGUgcmF0aW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsncmF0aW5nLWxpbmUnLCBjb2xvckNsYXNzXVwiXG4gICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBsaW5lUHJvZ3Jlc3MgfVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyYXRpbmctcG9pbnRzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtZm9yPVwibiBpbiBtYXhSYXRpbmdcIlxuICAgICAgICA6a2V5PVwiblwiXG4gICAgICAgIGNsYXNzPVwicmF0aW5nLXBvaW50XCJcbiAgICAgICAgQGNsaWNrPVwic2V0UmF0aW5nKG4pXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICdjaXJjbGUnLFxuICAgICAgICAgICAgeyBhY3RpdmU6IG4gPD0gY3VycmVudFJhdGluZyB9LFxuICAgICAgICAgICAgYWN0aXZlQ29sb3JDbGFzcyhuKSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG4gPD0gY3VycmVudFJhdGluZyA/ICcjY2NjJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgb25Nb3VudGVkIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGdldENzc1ZhciB9IGZyb20gXCJxdWFzYXJcIjtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gIG1heFJhdGluZzoge1xuICAgIHR5cGU6IE51bWJlcixcbiAgICBkZWZhdWx0OiA1LFxuICB9LFxuICByYXRpbmdDb2xvcjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcInByaW1hcnlcIiwgLy8gRGVmYXVsdCBjb2xvciwgY2FuIGJlIHNldCB0byBhbnkgQ1NTIGNvbG9yXG4gIH0sXG5cbiAgcXVlc3Rpb246IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgZGVmYXVsdDogbmV3IE9iamVjdCh7fSksXG4gIH0sXG59KTtcblxuY29uc3QgY3VycmVudFJhdGluZyA9IGRlZmluZU1vZGVsKHsgZGVmYXVsdDogMCB9KTtcbmNvbnN0IGN1cnJlbnRSYXRpbmdDb2xvciA9IHJlZihwcm9wcy5yYXRpbmdDb2xvcik7XG5cbmNvbnN0IHNldFJhdGluZyA9IChyYXRpbmcpID0+IHtcbiAgY3VycmVudFJhdGluZy52YWx1ZSA9IHJhdGluZztcblxuICAvLyBpZiAocmF0aW5nID4gMCkge1xuICAvLyAgIGVtaXRzKFwicmF0aW5nRG9uZVwiLCBwcm9wcy5xdWVzdGlvbi5pZCk7XG4gIC8vIH1cbn07XG5cbmNvbnN0IGFjdGl2ZUNvbG9yQ2xhc3MgPSAobikgPT4ge1xuICByZXR1cm4gbiA8PSBjdXJyZW50UmF0aW5nLnZhbHVlID8gYGJnLSR7cHJvcHMucmF0aW5nQ29sb3J9YCA6IFwiXCI7XG59O1xuXG5jb25zdCBjb2xvckNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gYGJnLSR7cHJvcHMucmF0aW5nQ29sb3J9YDtcbn0pO1xuXG4vLyBBZGp1c3RpbmcgdGhlIGxpbmVQcm9ncmVzcyBjYWxjdWxhdGlvbiB0byBzdGFydCBncm93aW5nIHRoZSBsaW5lIGZyb20gcmF0aW5nIDJcbmNvbnN0IGxpbmVQcm9ncmVzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKGN1cnJlbnRSYXRpbmcudmFsdWUgPCAyKSB7XG4gICAgcmV0dXJuIFwiMCVcIjsgLy8gTm8gbGluZSBzaG93biBpZiB0aGUgcmF0aW5nIGlzIGxlc3MgdGhhbiAyXG4gIH0gZWxzZSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSB3aWR0aCBzdGFydGluZyBmcm9tIDIgdG8gbWF4UmF0aW5nXG4gICAgcmV0dXJuIGAkeygoY3VycmVudFJhdGluZy52YWx1ZSAtIDEpIC8gKHByb3BzLm1heFJhdGluZyAtIDEpKSAqIDEwMH0lYDtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5yYXRpbmctYmFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDEuM3JlbSAwO1xufVxuXG4ucmF0aW5nLWxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMC4yNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgei1pbmRleDogMDsgLyogRW5zdXJlIHRoZSBsaW5lIGlzIGJlaGluZCB0aGUgY2lyY2xlcyAqL1xufVxuXG4uYmFja2dyb3VuZC1saW5lIHtcbiAgb3BhY2l0eTogMC4zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyAvKiBEZWZhdWx0IGNvbG9yIGZvciB0aGUgZnVsbCBsaW5lICovXG59XG5cbi5yYXRpbmctcG9pbnRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnJhdGluZy1wb2ludCB7XG4gIHotaW5kZXg6IDI7IC8qIEhpZ2hlciB0aGFuIHRoZSBsaW5lICovXG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNpcmNsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IC8qIERlZmF1bHQgaW5hY3RpdmUgY29sb3IgKi9cbiAgY29sb3I6IGJsYWNrO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGNvbG9yIDAuM3M7XG59XG5cbi5jaXJjbGUuYWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICNkZmRmZGY7XG4gIGNvbG9yOiB3aGl0ZTsgLyogQWRqdXN0IHRleHQgY29sb3IgZm9yIGJldHRlciB2aXN
213pYmlsaXR5IG9uIGFjdGl2ZSAqL1xufVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJfdXNlTW9kZWwiLCJfb3BlbkJsb2NrIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfRnJhZ21lbnQiLCJfcmVuZGVyTGlzdCIsIl9ub3JtYWxpemVDbGFzcyIsIl9ub3JtYWxpemVTdHlsZSJdLCJtYXBwaW5ncyI6Ijs7QUFHTyxNQUFNLHlCQUF5QjtBQUFBLEVBQ3BDLEdBQUc7QUFBQSxFQUVILEtBQUs7QUFBQSxJQUNILE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxFQUNWO0FBQUEsRUFDRCxLQUFLO0FBQUEsSUFDSCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDVjtBQUFBLEVBRUQsT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBRVosVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBR1QsV0FBVztBQUFBLElBQ1QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLElBQ1QsV0FBVyxPQUFLLEtBQUssS0FBSyxLQUFLO0FBQUEsRUFDaEM7QUFBQSxFQUVELE9BQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxFQUNWO0FBQUEsRUFFRCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFFVCxpQkFBaUI7QUFDbkI7QUM3QkEsTUFDRSxTQUFTLElBQ1QsV0FBVyxJQUFJLFFBQ2YsZ0JBQWdCLFdBQVcsS0FBSyxJQUNoQyxrQkFBa0IsS0FBSyxNQUFNLGdCQUFnQixHQUFJLElBQUk7QUFFdkQsSUFBQSxvQkFBZSxnQkFBZ0I7QUFBQSxFQUM3QixNQUFNO0FBQUEsRUFFTixPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsSUFFSCxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsSUFDVjtBQUFBLElBRUQsZ0JBQWdCO0FBQUEsTUFDZCxNQUFNLENBQUUsUUFBUSxNQUFRO0FBQUEsTUFDeEIsU0FBUztBQUFBLElB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
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.