PageSourceSearch

https://wilkeyops.replit.app/src/pages/dashboard.tsx

js wilkeyops.replit.app collected 2026-10-03 03:55:13 UTC 51,350 bytes, 217 lines download raw bytes

1import __vite__cjsImport0_react_jsxRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-runtime.js?v=3bc92834"; const jsx = __vite__cjsImport0_react_jsxRuntime["jsx"]; const jsxs = __vite__cjsImport0_react_jsxRuntime["jsxs"];
2import { useQuery } from "/@fs/home/runner/workspace/node_modules/.vite/deps/@tanstack_react-query.js?v=9abba70f";
3import __vite__cjsImport2_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=3bc92834"; const useState = __vite__cjsImport2_react["useState"]; const useEffect = __vite__cjsImport2_react["useEffect"];
4import ThreatRadar from "/src/components/threat-radar.tsx";
5import ConsoleOutput from "/src/components/console-output.tsx";
6import MissionStatus from "/src/components/mission-status.tsx";
7import TargetAcquisition from "/src/components/target-acquisition.tsx";
8import RiskAssessment from "/src/components/risk-assessment.tsx";
9import SleekHeader from "/src/components/sleek-header.tsx";
10import ProfileSidebar from "/src/components/profile-sidebar.tsx";
11import ScanResultsSummary from "/src/components/scan-results-summary.tsx";
12import { Link } from "/@fs/home/runner/workspace/node_modules/.vite/deps/wouter.js?v=6437b7f4";
13const userImage = "/user-photo.jpg";
14console.log("User image path:", userImage);
15export default function Dashboard() {
16  const [wsConnected, setWsConnected] = useState(false);
17  const { data: stats } = useQuery({
18    queryKey: ["/api/stats"],
19    refetchInterval: 2e3
20  });
21  const { data: defconData } = useQuery({
22    queryKey: ["/api/defcon"],
23    refetchInterval: 5 * 60 * 1e3
24    // 5 minutes
25  });
26  const { data: consoleOutput = [] } = useQuery({
27    queryKey: ["/api/console"],
28    refetchInterval: 2e3
29  });
30  const { data: scans = [] } = useQuery({
31    queryKey: ["/api/scans"],
32    refetchInterval: 2e3
33  });
34  const { data: threatIntelligence = [] } = useQuery({
35    queryKey: ["/api/threat-intelligence"],
36    refetchInterval: 3e4
37    // Update every 30 seconds
38  });
39  const { data: liveThreats = [] } = useQuery({
40    queryKey: ["/api/threat-intelligence/live"],
41    refetchInterval: 3e4
42    // Update every 30 seconds
43  });
44  useEffect(() => {
45    try {
46      const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
47      const ws = new WebSocket(`${protocol}//${window.location.host}/api/ws`);
48      ws.onopen = () => {
49        console.log("WebSocket connected");
50        setWsConnected(true);
51      };
52      ws.onclose = () => {
53        console.log("WebSocket disconnected");
54        setWsConnected(false);
55      };
56      ws.onerror = (error) => {
57        console.error("WebSocket error:", error);
58        setWsConnected(false);
59      };
60      return () => {
61        ws.close();
62      };
63    } catch (error) {
64      console.error("Failed to initialize WebSocket:", error);
65      setWsConnected(false);
66    }
67  }, []);
68  return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-black relative overflow-hidden", children: [
69    /* @__PURE__ */ jsxs("div", { className: "absolute inset-0", children: [
70      /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black", children: Array.from({ length: 100 }).map((_, i) => /* @__PURE__ */ jsx(
71        "div",
72        {
73          className: "absolute rounded-full animate-pulse",
74          style: {
75            left: `${Math.random() * 100}%`,
76            top: `${Math.random() * 100}%`,
77            width: `${Math.random() * 3 + 1}px`,
78            height: `${Math.random() * 3 + 1}px`,
79            backgroundColor: i % 3 === 0 ? "#60A5FA" : i % 3 === 1 ? "#FFFFFF" : "#A78BFA",
80            opacity: Math.random() * 0.8 + 0.2,
81            animationDelay: `${Math.random() * 3}s`,
82            animationDuration: `${Math.random() * 2 + 2}s`
83          }
84        },
85        i
86      )) }),
87      /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-900/10 via-transparent to-purple-900/10" })
88    ] }),
89    /* @__PURE__ */ jsx(SleekHeader, {}),
90    /* @__PURE__ */ jsx(ProfileSidebar, {}),
91    /* @__PURE__ */ jsxs("div", { className: "relative z-10 pt-16 sm:pt-20 pl-4 sm:pl-24 p-3 sm:p-6", children: [
92      /* @__PURE__ */ jsx("div", { className: "mb-4 sm:mb-6 p-3 sm:p-4 bg-gradient-to-r from-blue-500/15 to-purple-500/15 border border-blue-400/40 rounded-lg mobile-glow mobile-fade-in", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 sm:gap-4 text-center", children: [
93        /* @__PURE__ */ jsx("h3", { className: "text-blue-400 font-bold text-base sm:text-lg mb-1 mobile-tactical-text", children: "🚀 UNLOCK FULL FUNCTIONALITY" }),
94        /* @__PURE__ */ jsx("p", { className: "text-slate-300 text-xs sm:text-sm px-2", children: "Subscribe to access advanced threat intelligence, real-time scanning, and professional security reports" }),
95        /* @__PURE__ */ jsx(Link, { href: "/subscription", className: "w-full sm:w-auto", children: /* @__PURE__ */ jsx("button", { className: "w-full sm:w-auto px-4 sm:px-6 py-3 mobile-tactical-button bg-gradient-to-r from-blue-600/20 to-purple-600/20 backdrop-blur-sm hover:from-blue-500/30 hover:to-purple-500/30 text-white font-bold rounded-lg border border-blue-400/50 hover:border-blue-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base", children: "Subscribe Now" }) })
96      ] }) }),
97      /* @__PURE__ */ jsxs("div", { className: "mb-4 sm:mb-6 p-3 sm:p-4 bg-orange-500/15 border border-orange-500/40 rounded-lg mobile-glow mobile-fade-in", children: [
98        /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center space-x-2 mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-orange-400 font-bold text-sm sm:text-lg mobile-tactical-text", children: "⚠️ SIMULATED DATA ⚠️" }) }),
99        /* @__PURE__ */ jsx("p", { className: "text-center text-orange-300 text-xs sm:text-sm px-2", children: "Vulnerability scans generate simulated data for research purposes. Risk assessments use real data from completed scans." })
100      ] }),
101      /* @__PURE__ */ jsx("div", { className: "mb-4 sm:mb-6 bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-4 mobile-glow mobile-fade-in", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 sm:gap-4", children: [
102        /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row items-center gap-2 sm:gap-6", children: [
103          /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
104            /* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full mobile-status-indicator ${wsConnected ? "bg-green-400 animate-pulse shadow-lg shadow-green-400/50" : "bg-red-400 shadow-lg shadow-red-400/50"}` }),
105            /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: wsConnected ? "TACTICAL LINK ACTIVE" : "TACTICAL LINK DOWN" })
106          ] }),
107          /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
108            /* @__PURE__ */ jsx("div", { className: "w-3 h-3 bg-blue-400 rounded-full animate-pulse mobile-status-indicator shadow-lg shadow-blue-400/50" }),
109            /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "SCANNING SYSTEMS ONLINE" })
110          ] })
111        ] }),
112        /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center sm:justify-between gap-2", children: [
113          /* @__PURE__ */ jsxs("div", { className: "text-xs sm:text-sm text-slate-400 mobile-tactical-text text-center", children: [
114            "DEFCON ",
115            defconData?.level || "?",
116            " - ",
117            defconData?.name || "UNKNOWN"
118          ] }),
119          /* @__PURE__ */ jsx("div", { className: `px-3 py-1 rounded-full text-xs font-bold mobile-glow ${defconData?.level === 1 ? "bg-red-500/30 text-red-400 shadow-lg shadow-red-500/30" : defconData?.level === 2 ? "bg-red-400/30 text-red-300 shadow-lg shadow-red-400/30" : defconData?.level === 3 ? "bg-yellow-500/30 text-yellow-400 shadow-lg shadow-yellow-500/30" : defconData?.level === 4 ? "bg-green-500/30 text-green-400 shadow-lg shadow-green-500/30" : "bg-blue-500/30 text-blue-400 shadow-lg shadow-blue-500/30"}`, children: defconData?.color || "UNKNOWN" })
120        ] })
121      ] }) }),
122      /* @__PURE__ */ jsxs("div", { className: "mobile-grid grid grid-cols-1 xl:grid-cols-12 gap-3 sm:gap-6", children: [
123        /* @__PURE__ */ jsxs("div", { className: "xl:col-span-8 space-y-3 sm:space-y-6", children: [
124          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
125            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "TARGET ACQUISITION" }),
126            /* @__PURE__ */ jsx(TargetAcquisition, {})
127          ] }),
128          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
129            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "MISSION MODULES" }),
130            /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3", children: [
131              /* @__PURE__ */ jsx(Link, { href: "/third-party-risks", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-orange-600/20 to-red-600/20 backdrop-blur-sm hover:from-orange-500/30 hover:to-red-500/30 text-white font-bold rounded-lg border border-orange-400/50 hover:border-orange-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
132                /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
133                  /* @__PURE__ */ jsx("span", { children: "🛡️" }),
134                  /* @__PURE__ */ jsx("span", { children: "THIRD PARTY RISKS" })
135                ] }),
136                /* @__PURE__ */ jsx("div", { className: "text-xs text-orange-300 mt-1", children: "Assess vendor security threats" })
137              ] }) }),
138              /* @__PURE__ */ jsx(Link, { href: "/wordpress-scanning", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-blue-600/20 to-cyan-600/20 backdrop-blur-sm hover:from-blue-500/30 hover:to-cyan-500/30 text-white font-bold rounded-lg border border-blue-400/50 hover:border-blue-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
139                /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
140                  /* @__PURE__ */ jsx("span", { children: "🔍" }),
141                  /* @__PURE__ */ jsx("span", { children: "WORDPRESS SECURITY" })
142                ] }),
143                /* @__PURE__ */ jsx("div", { className: "text-xs text-cyan-300 mt-1", children: "Real vulnerability scanning" })
144              ] }) }),
145              /* @__PURE__ */ jsx(Link, { href: "/network-monitor", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-green-600/20 to-emerald-600/20 backdrop-blur-sm hover:from-green-500/30 hover:to-emerald-500/30 text-white font-bold rounded-lg border border-green-400/50 hover:border-green-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
146                /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
147                  /* @__PURE__ */ jsx("span", { children: "📡" }),
148                  /* @__PURE__ */ jsx("span", { children: "NETWORK MONITOR" })
149                ] }),
150                /* @__PURE__ */ jsx("div", { className: "text-xs text-green-300 mt-1", children: "Device & connection analysis" })
151              ] }) }),
152              /* @__PURE__ */ jsx(Link, { href: "/data-management", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-purple-600/20 to-pink-600/20 backdrop-blur-sm hover:from-purple-500/30 hover:to-pink-500/30 text-white font-bold rounded-lg border border-purple-400/50 hover:border-purple-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
153                /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
154                  /* @__PURE__ */ jsx("span", { children: "📊" }),
155                  /* @__PURE__ */ jsx("span", { children: "DATA MANAGEMENT" })
156                ] }),
157                /* @__PURE__ */ jsx("div", { className: "text-xs text-purple-300 mt-1", children: "Export reports & manage data" })
158              ] }) })
159            ] })
160          ] }),
161          /* @__PURE__ */ jsx("div", { className: "mobile-fade-in", children: /* @__PURE__ */ jsx(ScanResultsSummary, { scans, hideAiAnalysis: true }) }),
162          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
163            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "THREAT RADAR" }),
164            /* @__PURE__ */ jsx("div", { className: "mobile-cosmic-bg rounded-lg", children: /* @__PURE__ */ jsx(ThreatRadar, { threatIntelligence, liveThreats, scans }) })
165          ] }),
166          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
167            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "RISK ASSESSMENT" }),
168            /* @__PURE__ */ jsx(RiskAssessment, { scans })
169          ] })
170        ] }),
171        /* @__PURE__ */ jsxs("div", { className: "xl:col-span-4 space-y-3 sm:space-y-6", children: [
172          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
173            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "MISSION STATUS" }),
174            /* @__PURE__ */ jsx(MissionStatus, { stats, missionStartTime: /* @__PURE__ */ new Date() })
175          ] }),
176          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
177            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "QUICK ACCESS" }),
178            /* @__PURE__ */ jsx(Link, { href: "/third-party-risks", className: "block w-full", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-orange-600/20 to-red-600/20 backdrop-blur-sm hover:from-orange-500/30 hover:to-red-500/30 text-white font-bold rounded-lg border border-orange-400/50 hover:border-orange-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
179              /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
180                /* @__PURE__ */ jsx("span", { children: "🛡️" }),
181                /* @__PURE__ */ jsx("span", { children: "THIRD PARTY RISKS" })
182              ] }),
183              /* @__PURE__ */ jsx("div", { className: "text-xs text-orange-300 mt-1", children: "Assess vendor security threats" })
184            ] }) })
185          ] }),
186          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
187            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "TACTICAL CONSOLE" }),
188            /* @__PURE__ */ jsx("div", { className: "mobile-console-output", children: /* @__PURE__ */ jsx(ConsoleOutput, { consoleOutput }) })
189          ] }),
190          /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
191            /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "OPERATIONAL STATS" }),
192            /* @__PURE__ */ jsxs("div", { className: "space-y-3 sm:space-y-4", children: [
193              /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
194                /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Active Scans" }),
195                /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-orange-400 mobile-glow", children: stats?.activeScans || 0 })
196              ] }),
197              /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
198                /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Completed Scans" }),
199                /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-green-400 mobile-glow", children: stats?.completedScans || 0 })
200              ] }),
201              /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
202                /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Total Threats" }),
203                /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-red-400 mobile-glow", children: stats?.totalVulnerabilities || 0 })
204              ] }),
205              /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
206                /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Critical Threats" }),
207                /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-red-500 mobile-glow animate-pulse", children: stats?.criticalVulnerabilities || 0 })
208              ] })
209            ] })
210          ] })
211        ] })
212      ] })
213    ] })
214  ] });
215}
216
217//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYW
217N0XCI7XG5pbXBvcnQgVGhyZWF0UmFkYXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvdGhyZWF0LXJhZGFyXCI7XG5pbXBvcnQgQ29uc29sZU91dHB1dCBmcm9tIFwiLi4vY29tcG9uZW50cy9jb25zb2xlLW91dHB1dFwiO1xuaW1wb3J0IE1pc3Npb25TdGF0dXMgZnJvbSBcIi4uL2NvbXBvbmVudHMvbWlzc2lvbi1zdGF0dXNcIjtcbmltcG9ydCBUYXJnZXRBY3F1aXNpdGlvbiBmcm9tIFwiLi4vY29tcG9uZW50cy90YXJnZXQtYWNxdWlzaXRpb25cIjtcbmltcG9ydCBSaXNrQXNzZXNzbWVudCBmcm9tIFwiLi4vY29tcG9uZW50cy9yaXNrLWFzc2Vzc21lbnRcIjtcbmltcG9ydCBTbGVla0hlYWRlciBmcm9tIFwiLi4vY29tcG9uZW50cy9zbGVlay1oZWFkZXJcIjtcbmltcG9ydCBQcm9maWxlU2lkZWJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9wcm9maWxlLXNpZGViYXJcIjtcbmltcG9ydCBTY2FuUmVzdWx0c1N1bW1hcnkgZnJvbSBcIi4uL2NvbXBvbmVudHMvc2Nhbi1yZXN1bHRzLXN1bW1hcnlcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwid291dGVyXCI7XG4vLyBVc2UgcHVibGljIGRpcmVjdG9yeSBmb3IgZGlyZWN0IGltYWdlIGFjY2Vzc1xuY29uc3QgdXNlckltYWdlID0gXCIvdXNlci1waG90by5qcGdcIjtcblxuLy8gRGVidWcgbG9nIHRvIGNoZWNrIGlmIGltYWdlIGlzIGxvYWRpbmdcbmNvbnNvbGUubG9nKFwiVXNlciBpbWFnZSBwYXRoOlwiLCB1c2VySW1hZ2UpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoKSB7XG4gIGNvbnN0IFt3c0Nvbm5lY3RlZCwgc2V0V3NDb25uZWN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBcbiAgY29uc3QgeyBkYXRhOiBzdGF0cyB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3N0YXRzXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMjAwMCxcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiBkZWZjb25EYXRhIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvZGVmY29uXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogNSAqIDYwICogMTAwMCwgLy8gNSBtaW51dGVzXG4gIH0pO1xuXG4gIGNvbnN0IHsgZGF0YTogY29uc29sZU91dHB1dCA9IFtdIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvY29uc29sZVwiXSxcbiAgICByZWZldGNoSW50ZXJ2YWw6IDIwMDAsXG4gIH0pO1xuXG4gIGNvbnN0IHsgZGF0YTogc2NhbnMgPSBbXSB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3NjYW5zXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMjAwMCxcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiB0aHJlYXRJbnRlbGxpZ2VuY2UgPSBbXSB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3RocmVhdC1pbnRlbGxpZ2VuY2VcIl0sXG4gICAgcmVmZXRjaEludGVydmFsOiAzMDAwMCwgLy8gVXBkYXRlIGV2ZXJ5IDMwIHNlY29uZHNcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiBsaXZlVGhyZWF0cyA9IFtdIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvdGhyZWF0LWludGVsbGlnZW5jZS9saXZlXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMzAwMDAsIC8vIFVwZGF0ZSBldmVyeSAzMCBzZWNvbmRzXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSBcImh0dHBzOlwiID8gXCJ3c3M6XCIgOiBcIndzOlwiO1xuICAgICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KGAke3Byb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vYXBpL3dzYCk7XG4gICAgICBcbiAgICAgIHdzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJXZWJTb2NrZXQgY29ubmVjdGVkXCIpO1xuICAgICAgICBzZXRXc0Nvbm5lY3RlZCh0cnVlKTtcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHdzLm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2ViU29ja2V0IGRpc2Nvbm5lY3RlZFwiKTtcbiAgICAgICAgc2V0V3NDb25uZWN0ZWQoZmFsc2UpO1xuICAgICAgfTtcbiAgICAgIFxuICAgICAgd3Mub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiV2ViU29ja2V0IGVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgIHNldFdzQ29ubmVjdGVkKGZhbHNlKTtcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdzLmNsb3NlKCk7XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgV2ViU29ja2V0OlwiLCBlcnJvcik7XG4gICAgICBzZXRXc0Nvbm5lY3RlZChmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIHsvKiBTdGFycnkgQW5pbWF0aW9uIEJhY2tncm91bmQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTBcIj5cbiAgICAgICAgey8qIEFuaW1hdGVkIHN0YXJmaWVsZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrXCI+XG4gICAgICAgICAgey8qIENyZWF0ZSBtdWx0aXBsZSBsYXllcnMgb2Ygc3RhcnMgKi99XG4gICAgICAgICAge0FycmF5LmZyb20oe2xlbmd0aDogMTAwfSkubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGxlZnQ6IGAke01hdGgucmFuZG9tKCkgKiAxMDB9JWAsXG4gICAgICAgICAgICAgICAgdG9wOiBgJHtNYXRoLnJhbmRvbSgpICogMTAwfSVgLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBgJHtNYXRoLnJhbmRvbSgpICogMyArIDF9cHhgLFxuICAgICAgICAgICAgICAgIGhlaWdodDogYCR7TWF0aC5yYW5kb20oKSAqIDMgKyAxfXB4YCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
217Q29sb3I6IGkgJSAzID09PSAwID8gJyM2MEE1RkEnIDogaSAlIDMgPT09IDEgPyAnI0ZGRkZGRicgOiAnI0E3OEJGQScsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogTWF0aC5yYW5kb20oKSAqIDAuOCArIDAuMixcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogYCR7TWF0aC5yYW5kb20oKSAqIDN9c2AsXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGAke01hdGgucmFuZG9tKCkgKiAyICsgMn1zYFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvKiBTdWJ0bGUgZ3JhZGllbnQgb3ZlcmxheSBmb3IgcmVhZGFiaWxpdHkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by1iciBmcm9tLWJsdWUtOTAwLzEwIHZpYS10cmFuc3BhcmVudCB0by1wdXJwbGUtOTAwLzEwXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgPFNsZWVrSGVhZGVyIC8+XG4gICAgICA8UHJvZmlsZVNpZGViYXIgLz5cbiAgICAgIFxuICAgICAgey8qIE1haW4gZGFzaGJvYXJkIGNvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHotMTAgcHQtMTYgc206cHQtMjAgcGwtNCBzbTpwbC0yNCBwLTMgc206cC02XCI+XG4gICAgICAgIHsvKiBTdWJzY3JpcHRpb24gQ2FsbC10by1BY3Rpb24gLSBNb2JpbGUgT3B0aW1pemVkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTQgc206bWItNiBwLTMgc206cC00IGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMC8xNSB0by1wdXJwbGUtNTAwLzE1IGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcm91bmRlZC1sZyBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTMgc206Z2FwLTQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNDAwIGZvbnQtYm9sZCB0ZXh0LWJhc2Ugc206dGV4dC1sZyBtYi0xIG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+8J+agCBVTkxPQ0sgRlVMTCBGVU5DVElPTkFMSVRZPC9oMz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtMzAwIHRleHQteHMgc206dGV4dC1zbSBweC0yXCI+XG4gICAgICAgICAgICAgIFN1YnNjcmliZSB0byBhY2Nlc3MgYWR2YW5jZWQgdGhyZWF0IGludGVsbGlnZW5jZSwgcmVhbC10aW1lIHNjYW5uaW5nLCBhbmQgcHJvZmVzc2lvbmFsIHNlY3VyaXR5IHJlcG9ydHNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvc3Vic2NyaXB0aW9uXCIgY2xhc3NOYW1lPVwidy1mdWxsIHNtOnctYXV0b1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBzbTp3LWF1dG8gcHgtNCBzbTpweC02IHB5LTMgbW9iaWxlLXRhY3RpY2FsLWJ1dHRvbiBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAvMjAgdG8tcHVycGxlLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tYmx1ZS01MDAvMzAgaG92ZXI6dG8tcHVycGxlLTUwMC8zMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNTAgaG92ZXI6Ym9yZGVyLWJsdWUtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgICAgU3Vic2NyaWJlIE5vd1xuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIFNpbXVsYXRlZCBEYXRhIFdhcm5pbmcgLSBNb2JpbGUgT3B0aW1pemVkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTQgc206bWItNiBwLTMgc206cC00IGJnLW9yYW5nZS01MDAvMTUgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNTAwLzQwIHJvdW5kZWQtbGcgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtMiBtYi0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW9yYW5nZS00MDAgZm9udC1ib2xkIHRleHQtc20gc206dGV4dC1sZyBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPuKaoO+4jyBTSU1VTEFURUQgREFUQSDimqDvuI88L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgdGV4dC1vcmFuZ2UtMzAwIHRleHQteHMgc206dGV4dC1zbSBweC0yXCI+XG4gICAgICAgICAgICBWdWxuZXJhYmlsaXR5IHNjYW5zIGdlbmVyYXRlIHNpbXVsYXRlZCBkYXRhIGZvciByZXNlYXJjaCBwdXJwb3Nlcy4g
217UmlzayBhc3Nlc3NtZW50cyB1c2UgcmVhbCBkYXRhIGZyb20gY29tcGxldGVkIHNjYW5zLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvKiBTdGF0dXMgYmFyIC0gTW9iaWxlIE9wdGltaXplZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00IHNtOm1iLTYgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNCBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpnYXAtNFwiPlxuICAgICAgICAgICAgey8qIENvbm5lY3Rpb24gU3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBzbTpnYXAtNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0zIGgtMyByb3VuZGVkLWZ1bGwgbW9iaWxlLXN0YXR1cy1pbmRpY2F0b3IgJHt3c0Nvbm5lY3RlZCA/ICdiZy1ncmVlbi00MDAgYW5pbWF0ZS1wdWxzZSBzaGFkb3ctbGcgc2hhZG93LWdyZWVuLTQwMC81MCcgOiAnYmctcmVkLTQwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC00MDAvNTAnfWB9PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgc206dGV4dC1zbSB0ZXh0LXNsYXRlLTMwMCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAge3dzQ29ubmVjdGVkID8gJ1RBQ1RJQ0FMIExJTksgQUNUSVZFJyA6ICdUQUNUSUNBTCBMSU5LIERPV04nfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy1ibHVlLTQwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZSBtb2JpbGUtc3RhdHVzLWluZGljYXRvciBzaGFkb3ctbGcgc2hhZG93LWJsdWUtNDAwLzUwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBzbTp0ZXh0LXNtIHRleHQtc2xhdGUtMzAwIG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+U0NBTk5JTkcgU1lTVEVNUyBPTkxJTkU8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBERUZDT04gU3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS00MDAgbW9iaWxlLXRhY3RpY2FsLXRleHQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICBERUZDT04geyhkZWZjb25EYXRhIGFzIGFueSk/LmxldmVsIHx8ICc/J30gLSB7KGRlZmNvbkRhdGEgYXMgYW55KT8ubmFtZSB8fCAnVU5LTk9XTid9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHB4LTMgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC14cyBmb250LWJvbGQgbW9iaWxlLWdsb3cgJHtcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMSA/ICdiZy1yZWQtNTAwLzMwIHRleHQtcmVkLTQwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMiA/ICdiZy1yZWQtNDAwLzMwIHRleHQtcmVkLTMwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC00MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMyA/ICdiZy15ZWxsb3ctNTAwLzMwIHRleHQteWVsbG93LTQwMCBzaGFkb3ctbGcgc2hhZG93LXllbGxvdy01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gNCA/ICdiZy1ncmVlbi01MDAvMzAgdGV4dC1ncmVlbi00MDAgc2hhZG93LWxnIHNoYWRvdy1ncmVlbi01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAnYmctYmx1ZS01MDAvMzAgdGV4dC1ibHVlLTQwMCBzaGFkb3ctbGcgc2hhZG93LWJsdWUtNTAwLzMwJ1xuICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgeyhkZWZjb25EYXRhIGFzIGFueSk/LmNvbG9yIHx8ICdVTktOT1dOJ31cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICB7LyogTWFpbiBncmlkIGxheW91dCAtIE1vYmlsZSBPcHRpbWl6ZWQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9iaWxlLWdyaWQgZ3JpZCBncmlkLWNvbHMtMSB4bDpncmlkLWNvbHMtMTIgZ2FwLTMgc206Z2FwLTZcIj5cbiAgICAgICAgICB7LyogUHJpbWFyeSBvcGVyYXRpb25zIC0gRnVsbCB3aWR0aCBvbiBtb2JpbGUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ4bDpjb2wtc3Bhbi04IHNwYWNlLXktMyBzbTpzcGFjZS15LTZcIj5cbiAgICAgICAgICAgIHsvKiBUYXJnZXQgYWNxdWlzaXRpb24gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5UQVJHRVQgQUNRVUlTSVRJT048L2gyPlxuICAgICAgICAgICAgICA8VGFyZ2V0QWNxdWlzaXRpb24gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogTWlzc2lvbiBNb2R1bGVzIC0gUXVpY2sgQWNjZXNzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGh
217pYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+TUlTU0lPTiBNT0RVTEVTPC9oMj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi90aGlyZC1wYXJ0eS1yaXNrc1wiIGNsYXNzTmFtZT1cImJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLW9yYW5nZS02MDAvMjAgdG8tcmVkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tb3JhbmdlLTUwMC8zMCBob3Zlcjp0by1yZWQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNDAwLzUwIGhvdmVyOmJvcmRlci1vcmFuZ2UtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5uh77iPPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRISVJEIFBBUlRZIFJJU0tTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtb3JhbmdlLTMwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQXNzZXNzIHZlbmRvciBzZWN1cml0eSB0aHJlYXRzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvd29yZHByZXNzLXNjYW5uaW5nXCIgY2xhc3NOYW1lPVwiYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMyBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAvMjAgdG8tY3lhbi02MDAvMjAgYmFja2Ryb3AtYmx1ci1zbSBob3Zlcjpmcm9tLWJsdWUtNTAwLzMwIGhvdmVyOnRvLWN5YW4tNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC81MCBob3Zlcjpib3JkZXItYmx1ZS0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMDUgbW9iaWxlLWdsb3cgdGV4dC1zbSBzbTp0ZXh0LWJhc2UgbW9iaWxlLXRhY3RpY2FsLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCflI08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+V09SRFBSRVNTIFNFQ1VSSVRZPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtY3lhbi0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFJlYWwgdnVsbmVyYWJpbGl0eSBzY2FubmluZ1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL25ldHdvcmstbW9uaXRvclwiIGNsYXNzTmFtZT1cImJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTYwMC8yMCB0by1lbWVyYWxkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tZ3JlZW4tNTAwLzMwIGhvdmVyOnRvLWVtZXJhbGQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmVlbi00MDAvNTAgaG92ZXI6Ym9yZGVyLWdyZWVuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgdHJhbnNmb3JtIGhvdmVyOnNjYWxlLTEwNSBtb2JpbGUtZ2xvdyB0ZXh0LXNtIHNtOnRleHQtYmFzZSBtb2JpbGUtdGFjdGljYWwtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+8J+ToTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ORVRXT1JLIE1PTklUT1I8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmVlbi0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIERldmljZSAmIGNvbm5lY3Rpb24gYW5hbHlzaXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXRhLW1hbmFnZW1lbnRcIiBjbGFzc05hbWU9XCJibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNCBweS0zIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1wdXJwbGUtNjAwLzIwIHRvLXBpbmstNjAwLzIwIGJhY2tkcm9wLWJsdXItc20gaG92ZXI6ZnJvbS1wdXJwbGUtNTAwLzMwIGhvdmVyOnRvLXBpbmstNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1wdXJwbGUtNDAwLzUwIGhvdmVyOmJvcmRlci1wdXJwbGUtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5OKPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkRBVEEgTUFOQUdFTUVOVDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXB1cnBsZS0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCByZXBvcnRzICYgbWFuYWdlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgI
217HsvKiBTY2FuIFJlc3VsdHMgU3VtbWFyeSAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICAgICAgPFNjYW5SZXN1bHRzU3VtbWFyeSBzY2Fucz17c2NhbnMgYXMgYW55fSBoaWRlQWlBbmFseXNpcz17dHJ1ZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogVGhyZWF0IHJhZGFyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGhpYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+VEhSRUFUIFJBREFSPC9oMj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2JpbGUtY29zbWljLWJnIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICA8VGhyZWF0UmFkYXIgdGhyZWF0SW50ZWxsaWdlbmNlPXt0aHJlYXRJbnRlbGxpZ2VuY2UgYXMgYW55fSBsaXZlVGhyZWF0cz17bGl2ZVRocmVhdHMgYXMgYW55fSBzY2Fucz17c2NhbnMgYXMgYW55fSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogUmlzayBhc3Nlc3NtZW50IHN1bW1hcnkgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5SSVNLIEFTU0VTU01FTlQ8L2gyPlxuICAgICAgICAgICAgICA8Umlza0Fzc2Vzc21lbnQgc2NhbnM9e3NjYW5zIGFzIGFueX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBNb25pdG9yaW5nIGFuZCBzdGF0dXMgLSBSZXNwb25zaXZlIGxheW91dCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInhsOmNvbC1zcGFuLTQgc3BhY2UteS0zIHNtOnNwYWNlLXktNlwiPlxuICAgICAgICAgICAgey8qIE1pc3Npb24gc3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGhpYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+TUlTU0lPTiBTVEFUVVM8L2gyPlxuICAgICAgICAgICAgICA8TWlzc2lvblN0YXR1cyBzdGF0cz17c3RhdHMgYXMgYW55fSBtaXNzaW9uU3RhcnRUaW1lPXtuZXcgRGF0ZSgpfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBRdWljayBBY2Nlc3MgLSBUaGlyZCBQYXJ0eSBSaXNrcyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaG9sb2dyYXBoaWMtbW9iaWxlIGJnLWJsYWNrLzE1IGJhY2tkcm9wLWJsdXItbWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzQwIHAtMyBzbTpwLTYgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzbTp0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTMgc206bWItNCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlFVSUNLIEFDQ0VTUzwvaDI+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvdGhpcmQtcGFydHktcmlza3NcIiBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLW9yYW5nZS02MDAvMjAgdG8tcmVkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tb3JhbmdlLTUwMC8zMCBob3Zlcjp0by1yZWQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNDAwLzUwIGhvdmVyOmJvcmRlci1vcmFuZ2UtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfm6HvuI88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlRISVJEIFBBUlRZIFJJU0tTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1vcmFuZ2UtMzAwIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQXNzZXNzIHZlbmRvciBzZWN1cml0eSB0aHJlYXRzXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBDb25zb2xlIG91dHB1dCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaG9sb2dyYXBoaWMtbW9iaWxlIGJnLWJsYWNrLzE1IGJhY2tkcm9wLWJsdXItbWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzQwIHAtMyBzbTpwLTYgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj
2175cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzbTp0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTMgc206bWItNCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlRBQ1RJQ0FMIENPTlNPTEU8L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vYmlsZS1jb25zb2xlLW91dHB1dFwiPlxuICAgICAgICAgICAgICAgIDxDb25zb2xlT3V0cHV0IGNvbnNvbGVPdXRwdXQ9e2NvbnNvbGVPdXRwdXQgYXMgYW55fSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogUXVpY2sgc3RhdHMgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5PUEVSQVRJT05BTCBTVEFUUzwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zIHNtOnNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5BY3RpdmUgU2NhbnM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHNtOnRleHQtbGcgZm9udC1ib2xkIHRleHQtb3JhbmdlLTQwMCBtb2JpbGUtZ2xvd1wiPnsoc3RhdHMgYXMgYW55KT8uYWN0aXZlU2NhbnMgfHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgc206dGV4dC1zbSB0ZXh0LXNsYXRlLTMwMCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPkNvbX
217BsZXRlZCBTY2Fuczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gc206dGV4dC1sZyBmb250LWJvbGQgdGV4dC1ncmVlbi00MDAgbW9iaWxlLWdsb3dcIj57KHN0YXRzIGFzIGFueSk/LmNvbXBsZXRlZFNjYW5zIHx8IDB9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5Ub3RhbCBUaHJlYXRzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBzbTp0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LXJlZC00MDAgbW9iaWxlLWdsb3dcIj57KHN0YXRzIGFzIGFueSk/LnRvdGFsVnVsbmVyYWJpbGl0aWVzIHx8IDB9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5Dcml0aWNhbCBUaHJlYXRzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBzbTp0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LXJlZC01MDAgbW9iaWxlLWdsb3cgYW5pbWF0ZS1wdWxzZVwiPnsoc3RhdHMgYXMgYW55KT8uY3JpdGljYWxWdWxuZXJhYmlsaXRpZXMgfHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59Il0sIm1hcHBpbmdzIjoiQUFrRk0sU0FLTSxLQUxOO0FBbEZOLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsVUFBVSxpQkFBaUI7QUFDcEMsT0FBTyxpQkFBaUI7QUFDeEIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyx1QkFBdUI7QUFDOUIsT0FBTyxvQkFBb0I7QUFDM0IsT0FBTyxpQkFBaUI7QUFDeEIsT0FBTyxvQkFBb0I7QUFDM0IsT0FBTyx3QkFBd0I7QUFDL0IsU0FBUyxZQUFZO0FBRXJCLE1BQU0sWUFBWTtBQUdsQixRQUFRLElBQUksb0JBQW9CLFNBQVM7QUFFekMsd0JBQXdCLFlBQVk7QUFDbEMsUUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFJLFNBQVMsS0FBSztBQUVwRCxRQUFNLEVBQUUsTUFBTSxNQUFNLElBQUksU0FBUztBQUFBLElBQy9CLFVBQVUsQ0FBQyxZQUFZO0FBQUEsSUFDdkIsaUJBQWlCO0FBQUEsRUFDbkIsQ0FBQztBQUVELFFBQU0sRUFBRSxNQUFNLFdBQVcsSUFBSSxTQUFTO0FBQUEsSUFDcEMsVUFBVSxDQUFDLGFBQWE7QUFBQSxJQUN4QixpQkFBaUIsSUFBSSxLQUFLO0FBQUE7QUFBQSxFQUM1QixDQUFDO0FBRUQsUUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsRUFBRSxJQUFJLFNBQVM7QUFBQSxJQUM1QyxVQUFVLENBQUMsY0FBYztBQUFBLElBQ3pCLGlCQUFpQjtBQUFBLEVBQ25CLENBQUM7QUFFRCxRQUFNLEVBQUUsTUFBTSxRQUFRLENBQUMsRUFBRSxJQUFJLFNBQVM7QUFBQSxJQUNwQyxVQUFVLENBQUMsWUFBWTtBQUFBLElBQ3ZCLGlCQUFpQjtBQUFBLEVBQ25CLENBQUM7QUFFRCxRQUFNLEVBQUUsTUFBTSxxQkF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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.