PageSourceSearch

https://www.ibf.com.kh/assets/RatingBar.2fa65620.js

js ibf.com.kh collected 2026-10-09 21:45:04 UTC 25,256 bytes, 213 lines download raw bytes

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.