1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/pages/Conferences.jsx");const useEffect = __vite__cjsImport0_react["useEffect"]; const useMemo = __vite__cjsImport0_react["useMemo"]; const useRef = __vite__cjsImport0_react["useRef"]; const useState = __vite__cjsImport0_react["useState"];const _jsxDEV = __vite__cjsImport9_react_jsxDevRuntime["jsxDEV"];import __vite__cjsImport0_react from "/node_modules/.vite/deps/react.js?v=57f70dd4"; 2import { motion } from "/node_modules/.vite/deps/framer-motion.js?v=57f70dd4"; 3import { Link } from "/node_modules/.vite/deps/react-router-dom.js?v=57f70dd4"; 4import { CalendarDays, ChevronDown, ChevronLeft, ChevronRight, Loader2, MapPin, Search } from "/node_modules/.vite/deps/lucide-react.js?v=57f70dd4"; 5import confBg from "/src/assets/images/technical-journals-academic-research-conferences.webp?import"; 6import conferenceCta from "/src/assets/images/technical-journals-conference-calendar-partnership-cta.webp?import"; 7import { fetchConferences } from "/src/services/conferenceService.js"; 8import { resolveImageUrl } from "/src/services/api.js"; 9import useDebounce from "/src/hooks/useDebounce.js"; 10var _jsxFileName = "/var/opt/Technical-Journals/src/pages/Conferences.jsx"; 11import __vite__cjsImport9_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=57f70dd4"; 12var _s = $RefreshSig$(), _s2 = $RefreshSig$(); 13/* ========================================================= 14CONFIG 15========================================================= */ 16const PAGE_SIZE = 5; 17const colorStyles = [ 18 "from-[#064391] to-[#075fc9]", 19 "from-[#168646] to-[#28ae61]", 20 "from-[#6841b4] to-[#945ad9]", 21 "from-[#f06416] to-[#ff8a24]", 22 "from-[#0495a8] to-[#10bac1]" 23]; 24/* ========================================================= 25HELPERS 26========================================================= */ 27function text(value) { 28 return String(value ?? "").trim(); 29} 30function list(value) { 31 if (!value) { 32 return []; 33 } 34 if (Array.isArray(value)) { 35 return value.map(text).filter(Boolean); 36 } 37 const raw = text(value); 38 if (!raw) { 39 return []; 40 } 41 if (raw.startsWith("[") && raw.endsWith("]")) { 42 try { 43 const parsed = JSON.parse(raw); 44 if (Array.isArray(parsed)) { 45 return parsed.map(text).filter(Boolean); 46 } 47 } catch {} 48 } 49 return raw.split(/[,;\n]/).map((item) => item.trim()).filter(Boolean); 50} 51/* ========================================================= 52NORMALIZE BACKEND DATA 53========================================================= */ 54function normalizeConference(row) { 55 return { 56 ...row, 57 type: row.conference_type || row.type || "", 58 subject: row.subject_area || row.subject || "", 59 date: row.display_date || row.start_date || "", 60 detailsUrl: `/conferences/${encodeURIComponent(row.slug || row.id)}`, 61 image: resolveImageUrl(row.image || row.cover_image) 62 }; 63} 64/* ========================================================= 65DISPLAY HELPERS 66========================================================= */ 67function conferenceType(conference) { 68 return text(conference.type || conference.conference_type) || "Academic Conference"; 69} 70function conferenceSubject(conference) { 71 return text(conference.subject || conference.subject_area) || "Multidisciplinary Research"; 72} 73function conferenceDate(conference) { 74 return text(conference.display_date || conference.date || conference.start_date) || "Date to be announced"; 75} 76function conferenceLocation(conference) { 77 return text(conference.location || conference.venue || conference.city) || "Location to be announced"; 78} 79function conferenceOrganizer(conference) { 80 return text(conference.organizer || conference.organized_by || conference.university) || "Technical Journals"; 81} 82/* ========================================================= 83CONFERENCE COVER IMAGE 84 85Proper portrait conference poster ratio. 86========================================================= */ 87function ConferenceImage({ conference, code, index }) { 88 _s(); 89 const [imageError, setImageError] = useState(false); 90 const showImage = Boolean(conference.image) && !imageError; 91 return /* @__PURE__ */ _jsxDEV("div", { 92 className: "\n relative\n mx-auto\n aspect-[0.72/1]\n w-[130px]\n shrink-0\n overflow-hidden\n rounded-[7px]\n border\n border-[#DDE4ED]\n bg-white\n shadow-[0_4px_14px_rgba(9,35,75,0.08)]\n\n min-[420px]:w-[138px]\n\n sm:mx-0\n sm:w-[122px]\n\n md:w-[128px]\n\n lg:w-[132px]\n\n xl:w-[132px]\n ",
93 children: showImage ? /* @__PURE__ */ _jsxDEV("img", { 94 src: conference.image, 95 alt: conference.title ? `${conference.title} conference cover` : "Conference cover", 96 loading: "lazy", 97 draggable: "false", 98 onError: () => setImageError(true), 99 className: "\n h-full\n w-full\n bg-white\n object-contain\n " 100 }, void 0, false, { 101 fileName: _jsxFileName, 102 lineNumber: 254, 103 columnNumber: 9 104 }, this) : /* @__PURE__ */ _jsxDEV("div", { 105 className: ` 106 grid 107 h-full 108 w-full 109 place-items-center 110 bg-gradient-to-br 111 px-3 112 text-center 113 text-white 114 115 ${colorStyles[index % colorStyles.length]} 116 `, 117 children: /* @__PURE__ */ _jsxDEV("div", { 118 className: "min-w-0", 119 children: [ 120 /* @__PURE__ */ _jsxDEV("p", { 121 className: "\n break-words\n text-[14px]\n font-bold\n leading-5\n ", 122 children: code.split(" ").slice(0, 2).join(" ") 123 }, void 0, false, { 124 fileName: _jsxFileName, 125 lineNumber: 298, 126 columnNumber: 13 127 }, this), 128 /* @__PURE__ */ _jsxDEV("div", { className: "\n mx-auto\n mt-2\n h-[2px]\n w-7\n rounded-full\n bg-white/50\n " }, void 0, false, { 129 fileName: _jsxFileName, 130 lineNumber: 315, 131 columnNumber: 13 132 }, this), 133 /* @__PURE__ */ _jsxDEV("p", { 134 className: "\n mt-2\n text-[9px]\n font-medium\n uppercase\n tracking-[0.08em]\n text-white/75\n ", 135 children: "Conference" 136 }, void 0, false, { 137 fileName: _jsxFileName, 138 lineNumber: 326, 139 columnNumber: 13 140 }, this) 141 ] 142 }, void 0, true, { 143 fileName: _jsxFileName, 144 lineNumber: 297, 145 columnNumber: 11 146 }, this) 147 }, void 0, false, { 148 fileName: _jsxFileName, 149 lineNumber: 278, 150 columnNumber: 9 151 }, this) 152 }, void 0, false, { 153 fileName: _jsxFileName, 154 lineNumber: 227, 155 columnNumber: 5 156 }, this); 157} 158_s(ConferenceImage, "RJT49Ib2xpWrccfGWrukXGlUBG0="); 159_c = ConferenceImage; 160/* ========================================================= 161PAGE 162========================================================= */ 163export default function Conferences() { 164 _s2(); 165 const resultsRef = useRef(null); 166 const [keyword, setKeyword] = useState(""); 167 const [sortBy, setSortBy] = useState("upcoming"); 168 const [page, setPage] = useState(1); 169 const [pageItems, setPageItems] = useState([]); 170 const [totalItems, setTotalItems] = useState(0); 171 const [totalPages, setTotalPages] = useState(1); 172 const [loading, setLoading] = useState(true); 173 const [loadError, setLoadError] = useState(""); 174 const [reloadKey, setReloadKey] = useState(0); 175 const debouncedKeyword = useDebounce(keyword, 350); 176 /* ======================================================= 177 PAGE TITLE 178 ======================================================= */ 179 useEffect(() => { 180 document.title = "Conferences | Technical Journals"; 181 }, []); 182 /* ======================================================= 183 FETCH CONFERENCES 184 185 NO FILTERS 186 ======================================================= */ 187 useEffect(() => { 188 const controller = new AbortController(); 189 async function loadConferences() { 190 try { 191 setLoading(true); 192 setLoadError(""); 193 const params = { 194 page, 195 limit: PAGE_SIZE, 196 search: debouncedKeyword || undefined, 197 sort: sortBy 198 }; 199 const response = await fetchConferences(params, controller.signal); 200 if (controller.signal.aborted) { 201 return; 202 } 203 const rows = Array.isArray(response?.conferences) ? response.conferences : Array.isArray(response?.data) ? response.data : Array.isArray(response) ? response : []; 204 const normalized = rows.map(normalizeConference); 205 const pagination = response?.pagination || {}; 206 const nextTotalItems = Number(pagination.totalItems ?? pagination.total ?? normalized.length) || 0; 207 const nextTotalPages = Math.max(1, Number(pagination.totalPages ?? pagination.pages ?? 1) || 1
207); 208 setPageItems(normalized); 209 setTotalItems(nextTotalItems); 210 setTotalPages(nextTotalPages); 211 } catch (error) { 212 if (error?.name === "AbortError" || controller.signal.aborted) { 213 return; 214 } 215 console.error("Conference loading error:", error); 216 setLoadError("Unable to load conferences. Please try again."); 217 setPageItems([]); 218 setTotalItems(0); 219 setTotalPages(1); 220 } finally { 221 if (!controller.signal.aborted) { 222 setLoading(false); 223 } 224 } 225 } 226 loadConferences(); 227 return () => controller.abort(); 228 }, [ 229 page, 230 sortBy, 231 debouncedKeyword, 232 reloadKey 233 ]); 234 /* ======================================================= 235 PAGE VALIDATION 236 ======================================================= */ 237 useEffect(() => { 238 if (page > totalPages) { 239 setPage(totalPages); 240 } 241 }, [page, totalPages]); 242 /* ======================================================= 243 RESULT RANGE 244 ======================================================= */ 245 const firstResult = totalItems > 0 ? (page - 1) * PAGE_SIZE + 1 : 0; 246 const lastResult = Math.min(page * PAGE_SIZE, totalItems); 247 /* ======================================================= 248 PAGINATION 249 ======================================================= */ 250 const visiblePages = useMemo(() => { 251 if (totalPages <= 5) { 252 return Array.from({ length: totalPages }, (_, index) => index + 1); 253 } 254 if (page <= 3) { 255 return [ 256 1, 257 2, 258 3, 259 4, 260 "end-ellipsis", 261 totalPages 262 ]; 263 } 264 if (page >= totalPages - 2) { 265 return [ 266 1, 267 "start-ellipsis", 268 totalPages - 3, 269 totalPages - 2, 270 totalPages - 1, 271 totalPages 272 ]; 273 } 274 return [ 275 1, 276 "start-ellipsis", 277 page - 1, 278 page, 279 page + 1, 280 "end-ellipsis", 281 totalPages 282 ]; 283 }, [page, totalPages]); 284 /* ======================================================= 285 CHANGE PAGE 286 ======================================================= */ 287 function changePage(nextPage) { 288 const safePage = Math.min(Math.max(nextPage, 1), totalPages); 289 setPage(safePage); 290 requestAnimationFrame(() => { 291 resultsRef.current?.scrollIntoView({ 292 behavior: "smooth", 293 block: "start" 294 }); 295 }); 296 } 297 /* ======================================================= 298 CLEAR SEARCH 299 ======================================================= */ 300 function clearSearch() { 301 setKeyword(""); 302 setPage(1); 303 } 304 /* ======================================================= 305 UI 306 ======================================================= */ 307 return /* @__PURE__ */ _jsxDEV("main", { 308 className: "\n overflow-x-hidden\n bg-white\n ", 309 children: [ 310 /* @__PURE__ */ _jsxDEV("section", { 311 className: "\n relative\n isolate\n min-h-[330px]\n overflow-hidden\n bg-[#03183F]\n text-white\n\n sm:min-h-[350px]\n\n lg:min-h-[360px]\n ", 312 style: { 313 backgroundImage: ` 314 linear-gradient( 315 90deg, 316 rgba(3,18,49,.98) 0%, 317 rgba(3,18,49,.91) 36%, 318 rgba(3,18,49,.22) 72%, 319 rgba(3,18,49,.04) 100% 320 ), 321 url(${confBg}) 322 `, 323 backgroundPosition: "center", 324 backgroundRepeat: "no-repeat", 325 backgroundSize: "cover" 326 }, 327 children: [/* @__PURE__ */ _jsxDEV("div", { className: "\n pointer-events-none\n absolute\n inset-0\n -z-10\n bg-[#03183F]/15\n\n md:bg-transparent\n " }, void 0, false, { 328 fileName: _jsxFileName, 329 lineNumber: 745, 330 columnNumber: 9 331 }, this), /* @__PURE__ */ _jsxDEV("div", { 332 className: "\n mx-auto\n flex\n min-h-[330px]\n w-full\n max-w-[1440px]\n items-center\n px-4\n py-9\n\n sm:min-h-[350px]\n sm:px-8\n\n lg:min-h-[360px]\n lg:px-16\n\n xl:px-20\n ", 333 children: /* @__PURE__ */ _jsxDEV("div", { 334 className: "\n w-full\n max-w-[650px]\n ", 335 children: [/* @__PURE__ */ _jsxDEV(motion.h1, { 336 initial: { 337 opacity: 0, 338 y: 18 339 }, 340 animate: { 341 opacity: 1, 342 y: 0 343 }, 344 transition: { duration: .55 }, 345 className: "\n text-[30px]\n font-[600]\n tracking-[-0.02em]\n\n sm:text-[38px]\n ", 346 children: "Conferences" 347 }, void 0, false, { 348 fileName: _jsxFileName, 349 lineNumber: 783, 350 columnNumber: 13 351 }
351, this), /* @__PURE__ */ _jsxDEV(motion.p, { 352 initial: { 353 opacity: 0, 354 y: 14 355 }, 356 animate: { 357 opacity: 1, 358 y: 0 359 }, 360 transition: { 361 duration: .55, 362 delay: .08 363 }, 364 className: "\n mt-3\n max-w-[520px]\n text-[13px]\n leading-6\n text-white/90\n\n sm:text-[15px]\n sm:leading-7\n ", 365 children: "Discover and participate in leading conferences associated with Technical Journals. Share your research, connect with experts, and contribute to advancing knowledge." 366 }, void 0, false, { 367 fileName: _jsxFileName, 368 lineNumber: 807, 369 columnNumber: 13 370 }, this)] 371 }, void 0, true, { 372 fileName: _jsxFileName, 373 lineNumber: 777, 374 columnNumber: 11 375 }, this) 376 }, void 0, false, { 377 fileName: _jsxFileName, 378 lineNumber: 757, 379 columnNumber: 9 380 }, this)] 381 }, void 0, true, { 382 fileName: _jsxFileName, 383 lineNumber: 710, 384 columnNumber: 7 385 }, this), 386 /* @__PURE__ */ _jsxDEV("section", { 387 ref: resultsRef, 388 className: "\n scroll-mt-24\n py-8\n\n sm:py-10\n ", 389 children: /* @__PURE__ */ _jsxDEV("div", { 390 className: "\n mx-auto\n w-full\n max-w-[1280px]\n px-4\n\n sm:px-6\n\n md:px-8\n\n lg:px-10\n\n xl:px-12\n ", 391 children: [ 392 /* @__PURE__ */ _jsxDEV("div", { 393 className: "\n mb-5\n grid\n grid-cols-1\n gap-3\n\n md:grid-cols-[minmax(0,1fr)_auto]\n md:items-center\n md:gap-5\n ", 394 children: [/* @__PURE__ */ _jsxDEV("div", { 395 className: "\n relative\n w-full\n max-w-[620px]\n ", 396 children: [/* @__PURE__ */ _jsxDEV(Search, { className: "\n absolute\n right-3.5\n top-1/2\n h-4\n w-4\n -translate-y-1/2\n text-[#173E7D]\n " }, void 0, false, { 397 fileName: _jsxFileName, 398 lineNumber: 899, 399 columnNumber: 15 400 }, this), /* @__PURE__ */ _jsxDEV("input", { 401 value: keyword, 402 onChange: (event) => { 403 setKeyword(event.target.value); 404 setPage(1); 405 }, 406 placeholder: "Search conferences by title, keyword, or location...", 407 className: "\n h-11\n w-full\n rounded-[7px]\n border\n border-[#DCE3ED]\n bg-white\n px-4\n pr-10\n text-[12px]\n text-[#263C60]\n outline-none\n transition\n placeholder:text-[#8A98AA]\n\n focus:border-[#0756CF]\n focus:ring-2\n focus:ring-[#0756CF]/10\n " 408 }, void 0, false, { 409 fileName: _jsxFileName, 410 lineNumber: 911, 411 columnNumber: 15 412 }, this)] 413 }, void 0, true, { 414 fileName: _jsxFileName, 415 lineNumber: 892, 416 columnNumber: 13 417 }, this), /* @__PURE__ */ _jsxDEV("div", { 418 className: "\n flex\n flex-col\n gap-2.5\n\n min-[460px]:flex-row\n min-[460px]:items-center\n min-[460px]:justify-between\n\n md:justify-end\n ", 419 children: [/* @__PURE__ */ _jsxDEV("p", { 420 className: "\n whitespace-nowrap\n text-[11px]\n font-medium\n text-[#536680]\n\n sm:text-[12px]\n ", 421 children: [ 422 "Showing", 423 " ", 424 /* @__PURE__ */ _jsxDEV("span", { 425 className: "font-semibold text-[#17345F]", 426 children: [ 427 firstResult, 428 "â", 429 lastResult 430 ] 431 }, void 0, true, { 432 fileName: _jsxFileName, 433 lineNumber: 975, 434 columnNumber: 17 435 }, this), 436 " ", 437 "of", 438 " ",
439 /* @__PURE__ */ _jsxDEV("span", { 440 className: "font-semibold text-[#17345F]", 441 children: totalItems 442 }, void 0, false, { 443 fileName: _jsxFileName, 444 lineNumber: 985, 445 columnNumber: 17 446 }, this), 447 " ", 448 "conferences" 449 ] 450 }, void 0, true, { 451 fileName: _jsxFileName, 452 lineNumber: 964, 453 columnNumber: 15 454 }, this), /* @__PURE__ */ _jsxDEV("div", { 455 className: "\n relative\n shrink-0\n ", 456 children: [/* @__PURE__ */ _jsxDEV("select", { 457 value: sortBy, 458 onChange: (event) => { 459 setSortBy(event.target.value); 460 setPage(1); 461 }, 462 className: "\n h-10\n w-full\n min-w-[155px]\n appearance-none\n rounded-[7px]\n border\n border-[#DCE3ED]\n bg-white\n pl-3\n pr-8\n text-[11px]\n font-medium\n text-[#263C60]\n outline-none\n\n focus:border-[#0756CF]\n\n min-[460px]:w-[160px]\n\n sm:text-[12px]\n ", 463 children: [ 464 /* @__PURE__ */ _jsxDEV("option", { 465 value: "upcoming", 466 children: "Sort: Upcoming" 467 }, void 0, false, { 468 fileName: _jsxFileName, 469 lineNumber: 1037, 470 columnNumber: 19 471 }, this), 472 /* @__PURE__ */ _jsxDEV("option", { 473 value: "newest", 474 children: "Sort: Newest" 475 }, void 0, false, { 476 fileName: _jsxFileName, 477 lineNumber: 1041, 478 columnNumber: 19 479 }, this), 480 /* @__PURE__ */ _jsxDEV("option", { 481 value: "title", 482 children: "Sort: Title" 483 }, void 0, false, { 484 fileName: _jsxFileName, 485 lineNumber: 1045, 486 columnNumber: 19 487 }, this), 488 /* @__PURE__ */ _jsxDEV("option", { 489 value: "location", 490 children: "Sort: Location" 491 }, void 0, false, { 492 fileName: _jsxFileName, 493 lineNumber: 1049, 494 columnNumber: 19 495 }, this) 496 ] 497 }, void 0, true, { 498 fileName: _jsxFileName, 499 lineNumber: 999, 500 columnNumber: 17 501 }, this), /* @__PURE__ */ _jsxDEV(ChevronDown, { className: "\n pointer-events-none\n absolute\n right-2.5\n top-1/2\n h-3.5\n w-3.5\n -translate-y-1/2\n text-[#435775]\n " }, void 0, false, { 502 fileName: _jsxFileName, 503 lineNumber: 1054, 504 columnNumber: 17 505 }, this)] 506 }, void 0, true, { 507 fileName: _jsxFileName, 508 lineNumber: 993, 509 columnNumber: 15 510 }, this)] 511 }, void 0, true, { 512 fileName: _jsxFileName, 513 lineNumber: 951, 514 columnNumber: 13 515 }, this)] 516 }, void 0, true, { 517 fileName: _jsxFileName, 518 lineNumber: 877, 519 columnNumber: 11 520 }, this),
521 loading ? /* @__PURE__ */ _jsxDEV("div", { 522 className: "\n flex\n min-h-[300px]\n flex-col\n items-center\n justify-center\n rounded-[10px]\n border\n border-dashed\n border-[#CCD7E5]\n bg-[#F8FAFD]\n px-5\n text-center\n ", 523 children: [/* @__PURE__ */ _jsxDEV(Loader2, { className: "\n h-8\n w-8\n animate-spin\n text-[#0756CF]\n " }, void 0, false, { 524 fileName: _jsxFileName, 525 lineNumber: 1091, 526 columnNumber: 15 527 }, this), /* @__PURE__ */ _jsxDEV("p", { 528 className: "\n mt-3\n text-[13px]\n font-medium\n text-[#687991]\n ", 529 children: "Loading conferences..." 530 }, void 0, false, { 531 fileName: _jsxFileName, 532 lineNumber: 1100, 533 columnNumber: 15 534 }, this)] 535 }, void 0, true, { 536 fileName: _jsxFileName, 537 lineNumber: 1075, 538 columnNumber: 13 539 }, this) : loadError ? /* @__PURE__ */ _jsxDEV( 540 "div", 541 /* ============================================= 542 ERROR 543 ============================================= */ 544 { 545 className: "\n flex\n min-h-[260px]\n flex-col\n items-center\n justify-center\n rounded-[10px]\n border\n border-dashed\n border-red-200\n bg-red-50\n px-5\n text-center\n ", 546 children: [/* @__PURE__ */ _jsxDEV("p", { 547 className: "\n text-[14px]\n font-semibold\n text-red-700\n ", 548 children: loadError 549 }, void 0, false, { 550 fileName: _jsxFileName, 551 lineNumber: 1133, 552 columnNumber: 15 553 }, this), /* @__PURE__ */ _jsxDEV("button", { 554 type: "button", 555 onClick: () => setReloadKey((current) => current + 1), 556 className: "\n mt-4\n min-h-[40px]\n rounded-[5px]\n bg-[#0756CF]\n px-5\n text-[12px]\n font-semibold\n text-white\n transition\n\n hover:bg-[#064AB4]\n ", 557 children: "Try Again" 558 }, void 0, false, { 559 fileName: _jsxFileName, 560 lineNumber: 1143, 561 columnNumber: 15 562 }, this)] 563 }, 564 void 0, 565 true, 566 { 567 fileName: _jsxFileName, 568 lineNumber: 1117, 569 columnNumber: 13 570 }, 571 this 572 ) : pageItems.length === 0 ? /* @__PURE__ */ _jsxDEV( 573 "div", 574 /* ============================================= 575 EMPTY 576 ============================================= */ 577 { 578 className: "\n flex\n min-h-[280px]\n flex-col\n items-center\n justify-center\n rounded-[10px]\n border\n border-dashed\n border-[#CCD7E5]\n bg-[#F8FAFD]\n px-5\n text-center\n ", 579 children: [ 580 /* @__PURE__ */ _jsxDEV(Search, { className: "\n h-9\n w-9\n text-[#9AA8BA]\n " }, void 0, false, { 581 fileName: _jsxFileName, 582 lineNumber: 1194, 583 columnNumber: 15 584 }, this), 585 /* @__PURE__ */ _jsxDEV("h2", { 586 className: "\n mt-4\n text-[17px]\n font-[600]\n text-[#17345F]\n\n sm:text-[18px]\n ", 587 children: "No conferences found" 588 }, void 0, false, { 589 fileName: _jsxFileName, 590 lineNumber: 1202, 591 columnNumber: 15 592 }, this),
593 /* @__PURE__ */ _jsxDEV("p", { 594 className: "\n mt-2\n max-w-[420px]\n text-[12px]\n leading-5\n text-[#687991]\n ", 595 children: "Try another title, keyword, or location." 596 }, void 0, false, { 597 fileName: _jsxFileName, 598 lineNumber: 1215, 599 columnNumber: 15 600 }, this), 601 keyword && /* @__PURE__ */ _jsxDEV("button", { 602 type: "button", 603 onClick: clearSearch, 604 className: "\n mt-5\n min-h-[40px]\n rounded-[5px]\n bg-[#0756CF]\n px-5\n text-[12px]\n font-semibold\n text-white\n ", 605 children: "View All Conferences" 606 }, void 0, false, { 607 fileName: _jsxFileName, 608 lineNumber: 1228, 609 columnNumber: 17 610 }, this) 611 ] 612 }, 613 void 0, 614 true, 615 { 616 fileName: _jsxFileName, 617 lineNumber: 1178, 618 columnNumber: 13 619 }, 620 this 621 ) : 622 /* ============================================= 623 CONFERENCE CARDS 624 ============================================= */ 625 /* @__PURE__ */ _jsxDEV("div", { 626 className: "\n space-y-4\n ", 627 children: pageItems.map((conference, index) => { 628 const topics = list(conference.topics || conference.tags || conference.keywords); 629 const code = text(conference.code || conference.shortName) || `CONF ${new Date().getFullYear()}`; 630 const organizer = conferenceOrganizer(conference); 631 const title = text(conference.title) || "Academic Conference"; 632 const description = text(conference.description) || "Explore current research, exchange knowledge, and connect with researchers and professionals."; 633 return /* @__PURE__ */ _jsxDEV(motion.article, { 634 initial: { 635 opacity: 0, 636 y: 12 637 }, 638 animate: { 639 opacity: 1, 640 y: 0 641 }, 642 transition: { 643 duration: .3, 644 delay: index * .04 645 }, 646 whileHover: { y: -2 }, 647 className: "\n group\n grid\n min-w-0\n grid-cols-1\n gap-4\n overflow-hidden\n rounded-[10px]\n border\n border-[#E1E7EF]\n bg-white\n p-4\n transition-all\n duration-300\n\n hover:border-[#B5CBEA]\n hover:shadow-[0_10px_28px_rgba(10,39,82,0.07)]\n\n sm:grid-cols-[122px_minmax(0,1fr)]\n sm:items-start\n sm:gap-5\n\n md:grid-cols-[128px_minmax(0,1fr)]\n\n lg:grid-cols-[132px_minmax(0,1fr)]\n\n xl:grid-cols-[136px_minmax(0,1fr)_210px]\n xl:gap-6\n ", 648 children: [ 649 /* @__PURE__ */ _jsxDEV(ConferenceImage, { 650 conference, 651 code, 652 index 653 }, void 0, false, { 654 fileName: _jsxFileName, 655 lineNumber: 1353, 656 columnNumber: 23 657 }, this), 658 /* @__PURE__ */ _jsxDEV("div", { 659 className: "\n min-w-0\n py-0.5\n ", 660 children: [ 661 /* @__PURE__ */ _jsxDEV("span", { 662 className: "\n inline-flex\n max-w-full\n rounded-[4px]\n bg-[#EAF2FF]\n px-2.5\n py-1\n text-[9.5px]\n font-semibold\n text-[#0756C
662F]\n\n sm:text-[10px]\n ", 663 children: conferenceType(conference) 664 }, void 0, false, { 665 fileName: _jsxFileName, 666 lineNumber: 1378, 667 columnNumber: 25 668 }, this), 669 /* @__PURE__ */ _jsxDEV("h2", { 670 className: "\n mt-2\n break-words\n text-[15px]\n font-[600]\n leading-[1.4]\n text-[#071C46]\n\n sm:text-[15.5px]\n\n md:text-[16px]\n\n lg:text-[16.5px]\n ", 671 children: title 672 }, void 0, false, { 673 fileName: _jsxFileName, 674 lineNumber: 1400, 675 columnNumber: 25 676 }, this), 677 /* @__PURE__ */ _jsxDEV("p", { 678 className: "\n mt-1.5\n break-words\n text-[11px]\n leading-5\n text-[#415675]\n\n sm:text-[11.5px]\n ", 679 children: [ 680 /* @__PURE__ */ _jsxDEV("span", { 681 className: "\n font-semibold\n text-[#2B4265]\n ", 682 children: "Organized by:" 683 }, void 0, false, { 684 fileName: _jsxFileName, 685 lineNumber: 1432, 686 columnNumber: 27 687 }, this), 688 " ", 689 organizer 690 ] 691 }, void 0, true, { 692 fileName: _jsxFileName, 693 lineNumber: 1421, 694 columnNumber: 25 695 }, this), 696 /* @__PURE__ */ _jsxDEV("p", { 697 className: "\n mt-1.5\n line-clamp-3\n text-[11px]\n leading-[1.65]\n text-[#66758A]\n\n sm:line-clamp-2\n sm:text-[11.5px]\n ", 698 children: description 699 }, void 0, false, { 700 fileName: _jsxFileName, 701 lineNumber: 1445, 702 columnNumber: 25 703 }, this), 704 /* @__PURE__ */ _jsxDEV("div", { 705 className: "\n mt-2.5\n flex\n flex-wrap\n items-center\n gap-1.5\n ", 706 children: [/* @__PURE__ */ _jsxDEV("span", { 707 className: "\n text-[10.5px]\n font-semibold\n text-[#354B6B]\n ", 708 children: "Topics:" 709 }, void 0, false, { 710 fileName: _jsxFileName, 711 lineNumber: 1471, 712 columnNumber: 27 713 }, this), (topics.length ? topics : [conferenceSubject(conference)]).slice(0, 4).map((topic) => /* @__PURE__ */ _jsxDEV("span", { 714 className: "\n max-w-full\n break-words\n rounded-full\n bg-[#F0F4F9]\n px-2\n py-1\n text-[9.5px]\n font-medium\n leading-4\n text-[#405879]\n\n sm:text-[10px]\n ", 715 children: topic 716 }, topic, false, { 717 fileName: _jsxFileName, 718 lineNumber: 1497, 719 columnNumber: 33 720 }, this))] 721 }, void 0, true, { 722 fileName: _jsxFileName, 723 lineNumber: 1462, 724 columnNumber: 25 725 }, this) 726 ] 727 }, void 0, true, { 728 fileName: _jsxFileName, 729 lineNumber: 1369, 730 columnNumber: 23 731 }, this),
732 /* @__PURE__ */ _jsxDEV("div", { 733 className: "\n flex\n min-w-0\n flex-col\n gap-4\n border-t\n border-[#E7EBF2]\n pt-4\n\n sm:col-span-2\n sm:flex-row\n sm:items-center\n sm:justify-between\n\n xl:col-span-1\n xl:border-l\n xl:border-t-0\n xl:pl-5\n xl:pt-1\n xl:flex-col\n xl:items-stretch\n xl:justify-between\n ", 734 children: [/* @__PURE__ */ _jsxDEV("div", { 735 className: "\n grid\n min-w-0\n grid-cols-1\n gap-3\n\n min-[460px]:grid-cols-2\n\n sm:flex\n sm:flex-wrap\n sm:gap-x-5\n\n xl:grid\n xl:grid-cols-1\n ", 736 children: [/* @__PURE__ */ _jsxDEV("p", { 737 className: "\n flex\n min-w-0\n items-start\n gap-2.5\n text-[11px]\n font-medium\n leading-5\n text-[#30496D]\n\n sm:text-[11.5px]\n ", 738 children: [/* @__PURE__ */ _jsxDEV(CalendarDays, { className: "\n mt-[2px]\n h-4\n w-4\n shrink-0\n text-[#2455A3]\n " }, void 0, false, { 739 fileName: _jsxFileName, 740 lineNumber: 1586, 741 columnNumber: 29 742 }, this), /* @__PURE__ */ _jsxDEV("span", { 743 className: "break-words", 744 children: conferenceDate(conference) 745 }, void 0, false, { 746 fileName: _jsxFileName, 747 lineNumber: 1596, 748 columnNumber: 29 749 }, this)] 750 }, void 0, true, { 751 fileName: _jsxFileName, 752 lineNumber: 1572, 753 columnNumber: 27 754 }, this), /* @__PURE__ */ _jsxDEV("p", { 755 className: "\n flex\n min-w-0\n items-start\n gap-2.5\n text-[11px]\n font-medium\n leading-5\n text-[#30496D]\n\n sm:text-[11.5px]\n ", 756 children: [/* @__PURE__ */ _jsxDEV(MapPin, { className: "\n mt-[2px]\n h-4\n w-4\n shrink-0\n text-[#2455A3]\n " }, void 0, false, { 757 fileName: _jsxFileName, 758 lineNumber: 1619, 759 columnNumber: 29 760 }, this), /* @__PURE__ */ _jsxDEV("span", { 761 className: "break-words", 762 children: conferenceLocation(conference) 763 }, void 0, false, { 764 fileName: _jsxFileName, 765 lineNumber: 1629, 766 columnNumber: 29 767 }, this)] 768 }, void 0, true, { 769 fileName: _jsxFileName, 770 lineNumber: 1605, 771 columnNumber: 27 772 }, this)] 773 }, void 0, true, { 774 fileName: _jsxFileName, 775 lineNumber: 1552, 776 columnNumber: 25 777 }
777, this), /* @__PURE__ */ _jsxDEV(Link, { 778 to: conference.detailsUrl, 779 className: "\n inline-flex\n min-h-[38px]\n w-full\n shrink-0\n items-center\n justify-center\n rounded-[5px]\n border\n border-[#0756CF]\n px-4\n text-[11.5px]\n font-semibold\n text-[#0756CF]\n transition\n\n hover:bg-[#0756CF]\n hover:text-white\n\n sm:w-[150px]\n\n xl:mt-4\n xl:w-full\n ", 780 children: "View Details" 781 }, void 0, false, { 782 fileName: _jsxFileName, 783 lineNumber: 1639, 784 columnNumber: 25 785 }, this)] 786 }, void 0, true, { 787 fileName: _jsxFileName, 788 lineNumber: 1527, 789 columnNumber: 23 790 }, this) 791 ] 792 }, conference.id || conference.slug || `${code}-${index}`, true, { 793 fileName: _jsxFileName, 794 lineNumber: 1296, 795 columnNumber: 21 796 }, this); 797 }) 798 }, void 0, false, { 799 fileName: _jsxFileName, 800 lineNumber: 1254, 801 columnNumber: 13 802 }, this), 803 !loading && !loadError && totalItems > PAGE_SIZE && totalPages > 1 && /* @__PURE__ */ _jsxDEV("nav", { 804 "aria-label": "Conference pagination", 805 className: "\n mt-7\n flex\n flex-wrap\n items-center\n justify-center\n gap-2\n ", 806 children: [ 807 /* @__PURE__ */ _jsxDEV("button", { 808 type: "button", 809 onClick: () => changePage(page - 1), 810 disabled: page === 1, 811 "aria-label": "Previous page", 812 className: "\n grid\n h-8\n w-8\n place-items-center\n rounded-[5px]\n border\n border-[#DCE3ED]\n text-[#234A87]\n transition\n\n hover:border-[#0756CF]\n hover:text-[#0756CF]\n\n disabled:cursor-not-allowed\n disabled:opacity-30\n ", 813 children: /* @__PURE__ */ _jsxDEV(ChevronLeft, { className: "h-4 w-4" }, void 0, false, { 814 fileName: _jsxFileName, 815 lineNumber: 1730, 816 columnNumber: 19 817 }, this) 818 }, void 0, false, { 819 fileName: _jsxFileName, 820 lineNumber: 1700, 821 columnNumber: 17 822 }, this), 823 visiblePages.map((item) => typeof item === "number" ? /* @__PURE__ */ _jsxDEV("button", { 824 type: "button", 825 onClick: () => changePage(item), 826 "aria-current": page === item ? "page" : undefined, 827 className: ` 828 h-8 829 min-w-8 830 rounded-[5px] 831 px-2 832 text-[11px] 833 font-semibold 834 transition 835 836 ${page === item ? ` 837 bg-[#0756CF] 838 text-white 839 shadow-[0_4px_10px_rgba(7,86,207,.24)] 840 ` : ` 841 border 842 border-[#DCE3ED] 843 text-[#405675] 844 845 hover:border-[#0756CF] 846 hover:text-[#0756CF] 847 `} 848 `, 849 children: item 850 }, item, false, { 851 fileName: _jsxFileName, 852 lineNumber: 1739, 853 columnNumber: 23 854 }, this) : /* @__PURE__ */ _jsxDEV("span", { 855 className: "\n grid\n h-8\n min-w-6\n place-items-center\n text-[12px]\n text-[#60718A]\n ", 856 children: "â¦" 857 }, item, false, { 858 fileName: _jsxFileName, 859 lineNumber: 1786, 860 columnNumber: 23 861 }, this)),
862 /* @__PURE__ */ _jsxDEV("button", { 863 type: "button", 864 onClick: () => changePage(page + 1), 865 disabled: page === totalPages, 866 "aria-label": "Next page", 867 className: "\n grid\n h-8\n w-8\n place-items-center\n rounded-[5px]\n border\n border-[#DCE3ED]\n text-[#234A87]\n transition\n\n hover:border-[#0756CF]\n hover:text-[#0756CF]\n\n disabled:cursor-not-allowed\n disabled:opacity-30\n ", 868 children: /* @__PURE__ */ _jsxDEV(ChevronRight, { className: "h-4 w-4" }, void 0, false, { 869 fileName: _jsxFileName, 870 lineNumber: 1835, 871 columnNumber: 19 872 }, this) 873 }, void 0, false, { 874 fileName: _jsxFileName, 875 lineNumber: 1804, 876 columnNumber: 17 877 }, this) 878 ] 879 }, void 0, true, { 880 fileName: _jsxFileName, 881 lineNumber: 1688, 882 columnNumber: 15 883 }, this) 884 ] 885 }, void 0, true, { 886 fileName: _jsxFileName, 887 lineNumber: 856, 888 columnNumber: 9 889 }, this) 890 }, void 0, false, { 891 fileName: _jsxFileName, 892 lineNumber: 845, 893 columnNumber: 7 894 }, this), 895 /* @__PURE__ */ _jsxDEV("section", { 896 className: "\n mx-auto\n w-full\n max-w-[1440px]\n px-4\n pb-8\n\n sm:px-8\n\n lg:px-16\n\n xl:px-20\n ", 897 children: /* @__PURE__ */ _jsxDEV(motion.div, { 898 initial: { 899 opacity: 0, 900 y: 18 901 }, 902 whileInView: { 903 opacity: 1, 904 y: 0 905 }, 906 viewport: { 907 once: true, 908 amount: .3 909 }, 910 className: "\n relative\n overflow-hidden\n rounded-[11px]\n bg-[linear-gradient(100deg,#031B47,#063B80)]\n text-white\n shadow-[0_10px_26px_rgba(3,24,63,.15)]\n ", 911 children: /* @__PURE__ */ _jsxDEV("div", { 912 className: "\n grid\n min-h-[110px]\n items-center\n\n md:grid-cols-[180px_minmax(0,1fr)]\n\n lg:grid-cols-[190px_minmax(0,1fr)]\n ", 913 children: [/* @__PURE__ */ _jsxDEV("div", { 914 className: "\n relative\n hidden\n h-full\n overflow-hidden\n\n md:block\n ", 915 children: /* @__PURE__ */ _jsxDEV("img", { 916 src: conferenceCta, 917 alt: "Conference calendar", 918 loading: "lazy", 919 className: "\n absolute\n inset-0\n h-full\n w-full\n object-contain\n p-3\n " 920 }, void 0, false, { 921 fileName: _jsxFileName, 922 lineNumber: 1907, 923 columnNumber: 15 924 }, this) 925 }, void 0, false, { 926 fileName: _jsxFileName, 927 lineNumber: 1897, 928 columnNumber: 13 929 }, this), /* @__PURE__ */ _jsxDEV("div", { 930 className: "\n grid\n items-center\n gap-6\n px-5\n py-7\n\n sm:px-6\n\n lg:grid-cols-[minmax(0,1fr)_auto]\n lg:px-9\n ", 931 children: [/* @__PURE__ */ _jsxDEV("div", { children: [/* @__PURE__ */ _jsxDEV("h2", { 932 className: "\n text-[19px]\n font-[550]\n\n sm:text-[22px]\n\n lg:text-[23px]\n ", 933 children: "Organize Your Conference with Us" 934 }, void 0, false, { 935 fileName: _jsxFileName, 936 lineNumber: 1941, 937 columnNumber: 17 938 }, this), /* @__PURE__ */ _jsxDEV("p", { 939 className: "\n mt-2\n max-w-[430px]\n text-[12px]\n leading-5\n text-white/85\n\n sm:text-[13px]\n\n lg:text-[14px]\n ", 940 children: "Partner with Technical Journals to host your conference and reach a global audience of researchers and professionals." 941 }, void 0, false, { 942 fileName: _jsxFileName, 943 lineNumber: 1954, 944 columnNumber: 17 945 }, this)] }, void 0, true, { 946 fileName: _jsxFileName, 947 lineNumber: 1940, 948 columnNumber: 15 949 }
949, this), /* @__PURE__ */ _jsxDEV("div", { 950 className: "\n flex\n flex-col\n gap-2.5\n\n min-[430px]:flex-row\n min-[430px]:flex-wrap\n ", 951 children: [/* @__PURE__ */ _jsxDEV(Link, { 952 to: "/contact", 953 className: "\n inline-flex\n h-11\n w-full\n min-w-[150px]\n items-center\n justify-center\n rounded-[6px]\n bg-white\n px-5\n text-[12px]\n font-semibold\n text-[#0756CF]\n transition\n\n hover:bg-[#EDF4FF]\n\n min-[430px]:w-auto\n\n sm:text-[13px]\n ", 954 children: "Partner With Us" 955 }, void 0, false, { 956 fileName: _jsxFileName, 957 lineNumber: 1982, 958 columnNumber: 17 959 }, this), /* @__PURE__ */ _jsxDEV(Link, { 960 to: "/services", 961 className: "\n inline-flex\n h-11\n w-full\n min-w-[140px]\n items-center\n justify-center\n rounded-[6px]\n border\n border-white/75\n px-5\n text-[12px]\n font-semibold\n text-white\n transition\n\n hover:bg-white/10\n\n min-[430px]:w-auto\n\n sm:text-[13px]\n ", 962 children: "Learn More" 963 }, void 0, false, { 964 fileName: _jsxFileName, 965 lineNumber: 2009, 966 columnNumber: 17 967 }, this)] 968 }, void 0, true, { 969 fileName: _jsxFileName, 970 lineNumber: 1972, 971 columnNumber: 15 972 }, this)] 973 }, void 0, true, { 974 fileName: _jsxFileName, 975 lineNumber: 1926, 976 columnNumber: 13 977 }, this)] 978 }, void 0, true, { 979 fileName: _jsxFileName, 980 lineNumber: 1883, 981 columnNumber: 11 982 }, this) 983 }, void 0, false, { 984 fileName: _jsxFileName, 985 lineNumber: 1861, 986 columnNumber: 9 987 }, this) 988 }, void 0, false, { 989 fileName: _jsxFileName, 990 lineNumber: 1846, 991 columnNumber: 7 992 }, this) 993 ] 994 }, void 0, true, { 995 fileName: _jsxFileName, 996 lineNumber: 699, 997 columnNumber: 5 998 }, this); 999} 1000_s2(Conferences, "ypo9zuUcN00ZnwhAyvQJ3xGOePc=", false, function() { 1001 return [useDebounce]; 1002}); 1003_c2 = Conferences; 1004var _c, _c2; 1005$RefreshReg$(_c, "ConferenceImage"); 1006$RefreshReg$(_c2, "Conferences"); 1007import * as RefreshRuntime from "/@react-refresh"; 1008const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; 1009import * as __vite_react_currentExports from "/src/pages/Conferences.jsx"; 1010if (import.meta.hot && !inWebWorker) { 1011 if (!window.$RefreshReg$) { 1012 throw new Error( 1013 "@vitejs/plugin-react can't detect preamble. Something is wrong." 1014 ); 1015 } 1016 1017 const currentExports = __vite_react_currentExports; 1018 queueMicrotask(() => { 1019 RefreshRuntime.registerExportsForReactRefresh("/var/opt/Technical-Journals/src/pages/Conferences.jsx", currentExports); 1020 import.meta.hot.accept((nextExports) => { 1021 if (!nextExports) return; 1022 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/var/opt/Technical-Journals/src/pages/Conferences.jsx", currentExports, nextExports); 1023 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 1024 }); 1025 }); 1026} 1027function $RefreshReg$(type, id) { return RefreshRuntime.register(type, "/var/opt/Technical-Journals/src/pages/Conferences.jsx" + ' ' + id); } 1028function $RefreshSig$() { return RefreshRuntime.createSignatureFunctionForTransform(); } 1029 1030//# sourceMappingURL=data:application/json;base64,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XQUFVO2VBU1Ysd0JBQUMsT0FBRDtNQUNFLFdBQVU7Z0JBRFosQ0FjRSx3QkFBQyxPQUFEO09BQ0UsV0FBVTtpQkFTVix3QkFBQyxPQUFEO1FBQ0UsS0FDRTtRQUVGLEtBQUk7UUFDSixTQUFRO1FBQ1IsV0FBVTtPQVFYOzs7OztNQUNFOzs7O2dCQUlMLHdCQUFDLE9BQUQ7T0FDRSxXQUFVO2lCQURaLENBY0Usd0JBQUMsT0FBRCxhQUNFLHdCQUFDLE1BQUQ7UUFDRSxXQUFVO2tCQVFYO09BRUc7Ozs7aUJBRUosd0JBQUMsS0FBRDtRQUNFLFdBQVU7a0JBV1g7T0FHRTs7OztlQUNBOzs7O2lCQUVMLHdCQUFDLE9BQUQ7UUFDRSxXQUFVO2tCQURaLENBVUUsd0JBQUMsTUFBRDtTQUNFLElBQUc7U0FDSCxXQUFVO21CQXFCWDtRQUVLOzs7O2tCQUVOLHdCQUFDLE1BQUQ7U0FDRSxJQUFHO1NBQ0gsV0FBVTttQkFzQlg7UUFFSzs7OztnQkFDSDs7Ozs7ZUFDRjs7Ozs7Y0F
1030DRjs7Ozs7O0lBQ0s7Ozs7O0dBQ0w7Ozs7O0VBQ0w7Ozs7OztBQUVWIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIkNvbmZlcmVuY2VzLmpzeCJdLCJ2ZXJzaW9uIjozLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJmcmFtZXItbW90aW9uXCI7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcblxuaW1wb3J0IHtcbiAgQ2FsZW5kYXJEYXlzLFxuICBDaGV2cm9uRG93bixcbiAgQ2hldnJvbkxlZnQsXG4gIENoZXZyb25SaWdodCxcbiAgTG9hZGVyMixcbiAgTWFwUGluLFxuICBTZWFyY2gsXG59IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IGNvbmZCZyBmcm9tIFwiLi4vYXNzZXRzL2ltYWdlcy90ZWNobmljYWwtam91cm5hbHMtYWNhZGVtaWMtcmVzZWFyY2gtY29uZmVyZW5jZXMud2VicFwiO1xuaW1wb3J0IGNvbmZlcmVuY2VDdGEgZnJvbSBcIi4uL2Fzc2V0cy9pbWFnZXMvdGVjaG5pY2FsLWpvdXJuYWxzLWNvbmZlcmVuY2UtY2FsZW5kYXItcGFydG5lcnNoaXAtY3RhLndlYnBcIjtcblxuaW1wb3J0IHtcbiAgZmV0Y2hDb25mZXJlbmNlcyxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL2NvbmZlcmVuY2VTZXJ2aWNlXCI7XG5cbmltcG9ydCB7XG4gIHJlc29sdmVJbWFnZVVybCxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL2FwaVwiO1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSBcIi4uL2hvb2tzL3VzZURlYm91bmNlXCI7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09ORklHXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuY29uc3QgUEFHRV9TSVpFID0gNTtcblxuY29uc3QgY29sb3JTdHlsZXMgPSBbXG4gIFwiZnJvbS1bIzA2NDM5MV0gdG8tWyMwNzVmYzldXCIsXG4gIFwiZnJvbS1bIzE2ODY0Nl0gdG8tWyMyOGFlNjFdXCIsXG4gIFwiZnJvbS1bIzY4NDFiNF0gdG8tWyM5NDVhZDldXCIsXG4gIFwiZnJvbS1bI2YwNjQxNl0gdG8tWyNmZjhhMjRdXCIsXG4gIFwiZnJvbS1bIzA0OTVhOF0gdG8tWyMxMGJhYzFdXCIsXG5dO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFTFBFUlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5mdW5jdGlvbiB0ZXh0KHZhbHVlKSB7XG4gIHJldHVybiBTdHJpbmcoXG4gICAgdmFsdWUgPz8gXCJcIixcbiAgKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGxpc3QodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLm1hcCh0ZXh0KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGNvbnN0IHJhdyA9XG4gICAgdGV4dCh2YWx1ZSk7XG5cbiAgaWYgKCFyYXcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoXG4gICAgcmF3LnN0YXJ0c1dpdGgoXCJbXCIpICYmXG4gICAgcmF3LmVuZHNXaXRoKFwiXVwiKVxuICApIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID1cbiAgICAgICAgSlNPTi5wYXJzZShyYXcpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkocGFyc2VkKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXJzZWRcbiAgICAgICAgICAubWFwKHRleHQpXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIENvbnRpbnVlIHdpdGggbm9ybWFsIHBhcnNpbmcuXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJhd1xuICAgIC5zcGxpdCgvWyw7XFxuXS8pXG4gICAgLm1hcCgoaXRlbSkgPT5cbiAgICAgIGl0ZW0udHJpbSgpLFxuICAgIClcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE5PUk1BTElaRSBCQUNLRU5EIERBVEFcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVDb25mZXJlbmNlKFxuICByb3csXG4pIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yb3csXG5cbiAgICB0eXBlOlxuICAgICAgcm93LmNvbmZlcmVuY2VfdHlwZSB8fFxuICAgICAgcm93LnR5cGUgfHxcbiAgICAgIFwiXCIsXG5cbiAgICBzdWJqZWN0OlxuICAgICAgcm93LnN1YmplY3RfYXJlYSB8fFxuICAgICAgcm93LnN1YmplY3QgfHxcbiAgICAgIFwiXCIsXG5cbiAgICBkYXRlOlxuICAgICAgcm93LmRpc3BsYXlfZGF0ZSB8fFxuICAgICAgcm93LnN0YXJ0X2RhdGUgfHxcbiAgICAgIFwiXCIsXG5cbiAgICBkZXRhaWxzVXJsOlxuICAgICAgYC9jb25mZXJlbmNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgcm93LnNsdWcgfHxcbiAgICAgICAgICByb3cuaWQsXG4gICAgICApfWAsXG5cbiAgICBpbWFnZTpcbiAgICAgIHJlc29sdmVJbWFnZVVybChcbiAgICAgICAgcm93LmltYWdlIHx8XG4gICAgICAgICAgcm93LmNvdmVyX2ltYWdlLFxuICAgICAgKSxcbiAgfTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBESVNQTEFZIEhFTFBFUlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5mdW5jdGlvbiBjb25mZXJlbmNlVHlwZShcbiAgY29uZmVyZW5jZSxcbikge1xuICByZXR1cm4gKFxuICAgIHRleHQoXG4gICAgICBjb25mZXJlbmNlLnR5cGUgfHxcbiAgICAgICAgY29uZmVyZW5jZS5jb25mZXJlbmNlX3R5cGUsXG4gICAgKSB8fFxuICAgIFwiQWNhZGVtaWMgQ29uZmVyZW5jZVwiXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbmZlcmVuY2VTdWJqZWN0KFxuICBjb25mZXJlbmNlLFxuKSB7XG4gIHJldHVybiAoXG4gICAgdGV4dChcbiAgICAgIGNvbmZlcmVuY2Uuc3ViamVjdCB8fFxuICAgICAgICBjb25mZXJlbmNlLnN1YmplY3RfYXJlYSxcbiAgICApIHx8XG4gICAgXCJNdWx0aWRpc2NpcGxpbmFyeSBSZXNlYXJjaFwiXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbmZlcmVuY2VEYXRlKFxuICBjb25mZXJlbmNlLFxuKSB7XG4gIHJldHVybiAoXG4gICAgdGV4dChcbiAgICAgIGNvbmZlcmVuY2UuZGlzcGxheV9kYXRlIHx8XG4gICAgICAgIGNvbmZlcmVuY2UuZGF0ZSB8fFxuICAgICAgICBjb25mZXJlbmNlLnN0YXJ0X2RhdGUsXG4gICAgKSB8fFxuICAgIFwiRGF0ZSB0byBiZSBhbm5vdW5jZWRcIlxuICApO
10301xufVxuXG5mdW5jdGlvbiBjb25mZXJlbmNlTG9jYXRpb24oXG4gIGNvbmZlcmVuY2UsXG4pIHtcbiAgcmV0dXJuIChcbiAgICB0ZXh0KFxuICAgICAgY29uZmVyZW5jZS5sb2NhdGlvbiB8fFxuICAgICAgICBjb25mZXJlbmNlLnZlbnVlIHx8XG4gICAgICAgIGNvbmZlcmVuY2UuY2l0eSxcbiAgICApIHx8XG4gICAgXCJMb2NhdGlvbiB0byBiZSBhbm5vdW5jZWRcIlxuICApO1xufVxuXG5mdW5jdGlvbiBjb25mZXJlbmNlT3JnYW5pemVyKFxuICBjb25mZXJlbmNlLFxuKSB7XG4gIHJldHVybiAoXG4gICAgdGV4dChcbiAgICAgIGNvbmZlcmVuY2Uub3JnYW5pemVyIHx8XG4gICAgICAgIGNvbmZlcmVuY2Uub3JnYW5pemVkX2J5IHx8XG4gICAgICAgIGNvbmZlcmVuY2UudW5pdmVyc2l0eSxcbiAgICApIHx8XG4gICAgXCJUZWNobmljYWwgSm91cm5hbHNcIlxuICApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTkZFUkVOQ0UgQ09WRVIgSU1BR0VcblxuICAgUHJvcGVyIHBvcnRyYWl0IGNvbmZlcmVuY2UgcG9zdGVyIHJhdGlvLlxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmZ1bmN0aW9uIENvbmZlcmVuY2VJbWFnZSh7XG4gIGNvbmZlcmVuY2UsXG4gIGNvZGUsXG4gIGluZGV4LFxufSkge1xuICBjb25zdCBbXG4gICAgaW1hZ2VFcnJvcixcbiAgICBzZXRJbWFnZUVycm9yLFxuICBdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IHNob3dJbWFnZSA9XG4gICAgQm9vbGVhbihcbiAgICAgIGNvbmZlcmVuY2UuaW1hZ2UsXG4gICAgKSAmJlxuICAgICFpbWFnZUVycm9yO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgIHJlbGF0aXZlXG4gICAgICAgIG14LWF1dG9cbiAgICAgICAgYXNwZWN0LVswLjcyLzFdXG4gICAgICAgIHctWzEzMHB4XVxuICAgICAgICBzaHJpbmstMFxuICAgICAgICBvdmVyZmxvdy1oaWRkZW5cbiAgICAgICAgcm91bmRlZC1bN3B4XVxuICAgICAgICBib3JkZXJcbiAgICAgICAgYm9yZGVyLVsjRERFNEVEXVxuICAgICAgICBiZy13aGl0ZVxuICAgICAgICBzaGFkb3ctWzBfNHB4XzE0cHhfcmdiYSg5LDM1LDc1LDAuMDgpXVxuXG4gICAgICAgIG1pbi1bNDIwcHhdOnctWzEzOHB4XVxuXG4gICAgICAgIHNtOm14LTBcbiAgICAgICAgc206dy1bMTIycHhdXG5cbiAgICAgICAgbWQ6dy1bMTI4cHhdXG5cbiAgICAgICAgbGc6dy1bMTMycHhdXG5cbiAgICAgICAgeGw6dy1bMTMycHhdXG4gICAgICBcIlxuICAgID5cbiAgICAgIHtzaG93SW1hZ2UgPyAoXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBzcmM9e1xuICAgICAgICAgICAgY29uZmVyZW5jZS5pbWFnZVxuICAgICAgICAgIH1cbiAgICAgICAgICBhbHQ9e1xuICAgICAgICAgICAgY29uZmVyZW5jZS50aXRsZVxuICAgICAgICAgICAgICA/IGAke2NvbmZlcmVuY2UudGl0bGV9IGNvbmZlcmVuY2UgY292ZXJgXG4gICAgICAgICAgICAgIDogXCJDb25mZXJlbmNlIGNvdmVyXCJcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICBvbkVycm9yPXsoKSA9PlxuICAgICAgICAgICAgc2V0SW1hZ2VFcnJvcihcbiAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICBoLWZ1bGxcbiAgICAgICAgICAgIHctZnVsbFxuICAgICAgICAgICAgYmctd2hpdGVcbiAgICAgICAgICAgIG9iamVjdC1jb250YWluXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2BcbiAgICAgICAgICAgIGdyaWRcbiAgICAgICAgICAgIGgtZnVsbFxuICAgICAgICAgICAgdy1mdWxsXG4gICAgICAgICAgICBwbGFjZS1pdGVtcy1jZW50ZXJcbiAgICAgICAgICAgIGJnLWdyYWRpZW50LXRvLWJyXG4gICAgICAgICAgICBweC0zXG4gICAgICAgICAgICB0ZXh0LWNlbnRlclxuICAgICAgICAgICAgdGV4dC13aGl0ZVxuXG4gICAgICAgICAgICAke1xuICAgICAgICAgICAgICBjb2xvclN0eWxlc1tcbiAgICAgICAgICAgICAgICBpbmRleCAlXG4gICAgICAgICAgICAgICAgICBjb2xvclN0eWxlcy5sZW5ndGhcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgIGJyZWFrLXdvcmRzXG4gICAgICAgICAgICAgICAgdGV4dC1bMTRweF1cbiAgICAgICAgICAgICAgICBmb250LWJvbGRcbiAgICAgICAgICAgICAgICBsZWFkaW5nLTVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2NvZGVcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAgICAgLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKX1cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICBteC1hdXRvXG4gICAgICAgICAgICAgICAgbXQtMlxuICAgICAgICAgICAgICAgIGgtWzJweF1cbiAgICAgICAgICAgICAgICB3LTdcbiAgICAgICAgICAgICAgICByb3VuZGVkLWZ1bGxcbiAgICAgICAgICAgICAgICBiZy13aGl0ZS81MFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgbXQtMlxuICAgICAgICAgICAgICAgIHRleHQtWzlweF1cbiAgICAgICAgICAgICAgICBmb250LW1lZGl1bVxuICAgICAgICAgICAgICAgI
1030HVwcGVyY2FzZVxuICAgICAgICAgICAgICAgIHRyYWNraW5nLVswLjA4ZW1dXG4gICAgICAgICAgICAgICAgdGV4dC13aGl0ZS83NVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDb25mZXJlbmNlXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQQUdFXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29uZmVyZW5jZXMoKSB7XG4gIGNvbnN0IHJlc3VsdHNSZWYgPVxuICAgIHVzZVJlZihudWxsKTtcblxuICBjb25zdCBbXG4gICAga2V5d29yZCxcbiAgICBzZXRLZXl3b3JkLFxuICBdID0gdXNlU3RhdGUoXCJcIik7XG5cbiAgY29uc3QgW1xuICAgIHNvcnRCeSxcbiAgICBzZXRTb3J0QnksXG4gIF0gPSB1c2VTdGF0ZShcbiAgICBcInVwY29taW5nXCIsXG4gICk7XG5cbiAgY29uc3QgW1xuICAgIHBhZ2UsXG4gICAgc2V0UGFnZSxcbiAgXSA9IHVzZVN0YXRlKDEpO1xuXG4gIGNvbnN0IFtcbiAgICBwYWdlSXRlbXMsXG4gICAgc2V0UGFnZUl0ZW1zLFxuICBdID0gdXNlU3RhdGUoW10pO1xuXG4gIGNvbnN0IFtcbiAgICB0b3RhbEl0ZW1zLFxuICAgIHNldFRvdGFsSXRlbXMsXG4gIF0gPSB1c2VTdGF0ZSgwKTtcblxuICBjb25zdCBbXG4gICAgdG90YWxQYWdlcyxcbiAgICBzZXRUb3RhbFBhZ2VzLFxuICBdID0gdXNlU3RhdGUoMSk7XG5cbiAgY29uc3QgW1xuICAgIGxvYWRpbmcsXG4gICAgc2V0TG9hZGluZyxcbiAgXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIGNvbnN0IFtcbiAgICBsb2FkRXJyb3IsXG4gICAgc2V0TG9hZEVycm9yLFxuICBdID0gdXNlU3RhdGUoXCJcIik7XG5cbiAgY29uc3QgW1xuICAgIHJlbG9hZEtleSxcbiAgICBzZXRSZWxvYWRLZXksXG4gIF0gPSB1c2VTdGF0ZSgwKTtcblxuICBjb25zdCBkZWJvdW5jZWRLZXl3b3JkID1cbiAgICB1c2VEZWJvdW5jZShcbiAgICAgIGtleXdvcmQsXG4gICAgICAzNTAsXG4gICAgKTtcblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFBBR0UgVElUTEVcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQudGl0bGUgPVxuICAgICAgXCJDb25mZXJlbmNlcyB8IFRlY2huaWNhbCBKb3VybmFsc1wiO1xuICB9LCBbXSk7XG5cbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBGRVRDSCBDT05GRVJFTkNFU1xuXG4gICAgIE5PIEZJTFRFUlNcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9XG4gICAgICBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmVyZW5jZXMoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRMb2FkRXJyb3IoXCJcIik7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgbGltaXQ6XG4gICAgICAgICAgICBQQUdFX1NJWkUsXG5cbiAgICAgICAgICBzZWFyY2g6XG4gICAgICAgICAgICBkZWJvdW5jZWRLZXl3b3JkIHx8XG4gICAgICAgICAgICB1bmRlZmluZWQsXG5cbiAgICAgICAgICBzb3J0OlxuICAgICAgICAgICAgc29ydEJ5LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID1cbiAgICAgICAgICBhd2FpdCBmZXRjaENvbmZlcmVuY2VzKFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY29udHJvbGxlclxuICAgICAgICAgICAgLnNpZ25hbFxuICAgICAgICAgICAgLmFib3J0ZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm93cyA9XG4gICAgICAgICAgQXJyYXkuaXNBcnJheShcbiAgICAgICAgICAgIHJlc3BvbnNlPy5jb25mZXJlbmNlcyxcbiAgICAgICAgICApXG4gICAgICAgICAgICA/IHJlc3BvbnNlLmNvbmZlcmVuY2VzXG4gICAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoXG4gICAgICAgICAgICAgICAgICByZXNwb25zZT8uZGF0YSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgID8gcmVzcG9uc2UuZGF0YVxuICAgICAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgID8gcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPVxuICAgICAgICAgIHJvd3MubWFwKFxuICAgICAgICAgICAgbm9ybWFsaXplQ29uZmVyZW5jZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPVxuICAgICAgICAgIHJlc3BvbnNlPy5wYWdpbmF0aW9uIHx8XG4gICAgICAgICAge307XG5cbiAgICAgICAgY29uc3QgbmV4dFRvdGFsSXRlbXMgPVxuICAgICAgICAgIE51bWJlcihcbiAgICAgICAgICAgIHBhZ2luYXRpb24udG90YWxJdGVtcyA/P1xuICAgICAgICAgICAgICBwYWdpbmF0aW9uLnRvdGFsID8/XG4gICAgICAgICAgICAgIG5vcm1hbGl6ZWQubGVuZ3RoLFxuICAgICAgICAgICkgfHwgMDtcblxuICAgICAgICBjb25zdCBuZXh0VG90YWxQYWdlcyA9XG4gICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAgTnVtYmVyKFxuICAgICAgICAgICAgICBwYWdpbmF0aW9uLnRvdGFsUGFnZXMgPz9cbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uLnBhZ2VzID8/XG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICkgfHwgMSxcbiAgICAgICAgICApO1xuXG4gICAgICAgI
1030HNldFBhZ2VJdGVtcyhcbiAgICAgICAgICBub3JtYWxpemVkLFxuICAgICAgICApO1xuXG4gICAgICAgIHNldFRvdGFsSXRlbXMoXG4gICAgICAgICAgbmV4dFRvdGFsSXRlbXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgc2V0VG90YWxQYWdlcyhcbiAgICAgICAgICBuZXh0VG90YWxQYWdlcyxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBlcnJvcj8ubmFtZSA9PT1cbiAgICAgICAgICAgIFwiQWJvcnRFcnJvclwiIHx8XG4gICAgICAgICAgY29udHJvbGxlclxuICAgICAgICAgICAgLnNpZ25hbFxuICAgICAgICAgICAgLmFib3J0ZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkNvbmZlcmVuY2UgbG9hZGluZyBlcnJvcjpcIixcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRMb2FkRXJyb3IoXG4gICAgICAgICAgXCJVbmFibGUgdG8gbG9hZCBjb25mZXJlbmNlcy4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRQYWdlSXRlbXMoW10pO1xuICAgICAgICBzZXRUb3RhbEl0ZW1zKDApO1xuICAgICAgICBzZXRUb3RhbFBhZ2VzKDEpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250cm9sbGVyXG4gICAgICAgICAgICAuc2lnbmFsXG4gICAgICAgICAgICAuYWJvcnRlZFxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRDb25mZXJlbmNlcygpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gIH0sIFtcbiAgICBwYWdlLFxuICAgIHNvcnRCeSxcbiAgICBkZWJvdW5jZWRLZXl3b3JkLFxuICAgIHJlbG9hZEtleSxcbiAgXSk7XG5cbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBQQUdFIFZBTElEQVRJT05cbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcGFnZSA+XG4gICAgICB0b3RhbFBhZ2VzXG4gICAgKSB7XG4gICAgICBzZXRQYWdlKFxuICAgICAgICB0b3RhbFBhZ2VzLFxuICAgICAgKTtcbiAgICB9XG4gIH0sIFtcbiAgICBwYWdlLFxuICAgIHRvdGFsUGFnZXMsXG4gIF0pO1xuXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgUkVTVUxUIFJBTkdFXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICBjb25zdCBmaXJzdFJlc3VsdCA9XG4gICAgdG90YWxJdGVtcyA+IDBcbiAgICAgID8gKHBhZ2UgLSAxKSAqXG4gICAgICAgICAgUEFHRV9TSVpFICtcbiAgICAgICAgMVxuICAgICAgOiAwO1xuXG4gIGNvbnN0IGxhc3RSZXN1bHQgPVxuICAgIE1hdGgubWluKFxuICAgICAgcGFnZSAqXG4gICAgICAgIFBBR0VfU0laRSxcbiAgICAgIHRvdGFsSXRlbXMsXG4gICAgKTtcblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFBBR0lOQVRJT05cbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIGNvbnN0IHZpc2libGVQYWdlcyA9XG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRvdGFsUGFnZXMgPD1cbiAgICAgICAgNVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxlbmd0aDpcbiAgICAgICAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIChfLCBpbmRleCkgPT5cbiAgICAgICAgICAgIGluZGV4ICsgMSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBwYWdlIDw9IDNcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIDEsXG4gICAgICAgICAgMixcbiAgICAgICAgICAzLFxuICAgICAgICAgIDQsXG4gICAgICAgICAgXCJlbmQtZWxsaXBzaXNcIixcbiAgICAgICAgICB0b3RhbFBhZ2VzLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHBhZ2UgPj1cbiAgICAgICAgdG90YWxQYWdlcyAtIDJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIDEsXG4gICAgICAgICAgXCJzdGFydC1lbGxpcHNpc1wiLFxuICAgICAgICAgIHRvdGFsUGFnZXMgLSAzLFxuICAgICAgICAgIHRvdGFsUGFnZXMgLSAyLFxuICAgICAgICAgIHRvdGFsUGFnZXMgLSAxLFxuICAgICAgICAgIHRvdGFsUGFnZXMsXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIDEsXG4gICAgICAgIFwic3RhcnQtZWxsaXBzaXNcIixcbiAgICAgICAgcGFnZSAtIDEsXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBhZ2UgKyAxLFxuICAgICAgICBcImVuZC1lbGxpcHNpc1wiLFxuICAgICAgICB0b3RhbFBhZ2VzLFxuICAgICAgXTtcbiAgICB9LCBbXG4gICAgICBwYWdlLFxuICAgICAgdG90YWxQYWdlcyxcbiAgICBdKTtcblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIENIQU5HRSBQQUdFXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICBmdW5jdGlvbiBjaGFuZ2VQYWdlKFxuICAgIG5leHRQYWdlLFxuICApIHtcbiAgICBjb25zdCBzYWZlUGFnZSA9XG4gICAgICBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgbmV4dFBhZ2UsXG4gICAgICAgICAgMSxcbiAgICAgICAgKSxcbiAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICk7XG5cbiAgICBzZXRQYWdlKFxuICAgICAgc2FmZVBhZ2UsXG4gICAgKTtcblxuICAgI
1030HJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmVzdWx0c1JlZi5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWhhdmlvcjpcbiAgICAgICAgICAgICAgXCJzbW9vdGhcIixcbiAgICAgICAgICAgIGJsb2NrOlxuICAgICAgICAgICAgICBcInN0YXJ0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgQ0xFQVIgU0VBUkNIXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICBmdW5jdGlvbiBjbGVhclNlYXJjaCgpIHtcbiAgICBzZXRLZXl3b3JkKFwiXCIpO1xuICAgIHNldFBhZ2UoMSk7XG4gIH1cblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFVJXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICByZXR1cm4gKFxuICAgIDxtYWluXG4gICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgb3ZlcmZsb3cteC1oaWRkZW5cbiAgICAgICAgYmctd2hpdGVcbiAgICAgIFwiXG4gICAgPlxuXG4gICAgICB7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgIEhFUk9cbiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi99XG5cbiAgICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgIHJlbGF0aXZlXG4gICAgICAgICAgaXNvbGF0ZVxuICAgICAgICAgIG1pbi1oLVszMzBweF1cbiAgICAgICAgICBvdmVyZmxvdy1oaWRkZW5cbiAgICAgICAgICBiZy1bIzAzMTgzRl1cbiAgICAgICAgICB0ZXh0LXdoaXRlXG5cbiAgICAgICAgICBzbTptaW4taC1bMzUwcHhdXG5cbiAgICAgICAgICBsZzptaW4taC1bMzYwcHhdXG4gICAgICAgIFwiXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgXG4gICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgICAgICByZ2JhKDMsMTgsNDksLjk4KSAwJSxcbiAgICAgICAgICAgICAgcmdiYSgzLDE4LDQ5LC45MSkgMzYlLFxuICAgICAgICAgICAgICByZ2JhKDMsMTgsNDksLjIyKSA3MiUsXG4gICAgICAgICAgICAgIHJnYmEoMywxOCw0OSwuMDQpIDEwMCVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB1cmwoJHtjb25mQmd9KVxuICAgICAgICAgIGAsXG5cbiAgICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246XG4gICAgICAgICAgICBcImNlbnRlclwiLFxuXG4gICAgICAgICAgYmFja2dyb3VuZFJlcGVhdDpcbiAgICAgICAgICAgIFwibm8tcmVwZWF0XCIsXG5cbiAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTpcbiAgICAgICAgICAgIFwiY292ZXJcIixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHMtbm9uZVxuICAgICAgICAgICAgYWJzb2x1dGVcbiAgICAgICAgICAgIGluc2V0LTBcbiAgICAgICAgICAgIC16LTEwXG4gICAgICAgICAgICBiZy1bIzAzMTgzRl0vMTVcblxuICAgICAgICAgICAgbWQ6YmctdHJhbnNwYXJlbnRcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgIG14LWF1dG9cbiAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgIG1pbi1oLVszMzBweF1cbiAgICAgICAgICAgIHctZnVsbFxuICAgICAgICAgICAgbWF4LXctWzE0NDBweF1cbiAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgcHgtNFxuICAgICAgICAgICAgcHktOVxuXG4gICAgICAgICAgICBzbTptaW4taC1bMzUwcHhdXG4gICAgICAgICAgICBzbTpweC04XG5cbiAgICAgICAgICAgIGxnOm1pbi1oLVszNjBweF1cbiAgICAgICAgICAgIGxnOnB4LTE2XG5cbiAgICAgICAgICAgIHhsOnB4LTIwXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICAgICAgbWF4LXctWzY1MHB4XVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bW90aW9uLmgxXG4gICAgICAgICAgICAgIGluaXRpYWw9e3tcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIHk6IDE4LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246XG4gICAgICAgICAgICAgICAgICAwLjU1LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICB0ZXh0LVszMHB4XVxuICAgICAgICAgICAgICAgIGZvbnQtWzYwMF1cbiAgICAgICAgICAgICAgICB0cmFja2luZy1bLTAuMDJlbV1cblxuICAgICAgICAgICAgICAgIHNtOnRleHQtWzM4cHhdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENvbmZlcmVuY2VzXG4gICAgICAgICAgICA8L21vdGlvbi5oMT5cblxuICAgICAgICAgICAgPG1vdGlvbi5wXG4gICAgICAgICAgICAgIGluaXRpYWw9e3tcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIHk6IDE0LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246XG4gICAgICAgICAgICAgICAgICAwLjU1LFxuICAgICAgICAgICAgICAgIGRlbGF5OlxuICAgICAgICAgICAgICAgICAgMC4wOCxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgbXQtM1xuICAgICAgICAgICAgICAgIG1heC13LVs1MjBweF1cbiAgICAgICAgICAgICAgICB0ZXh0LVsxM3B4XVxuICAgICAgICAgICAgICAgIGxlYWRpbmctNlxuICAgICAgICAgICAgICAgI
1030HRleHQtd2hpdGUvOTBcblxuICAgICAgICAgICAgICAgIHNtOnRleHQtWzE1cHhdXG4gICAgICAgICAgICAgICAgc206bGVhZGluZy03XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIERpc2NvdmVyIGFuZCBwYXJ0aWNpcGF0ZSBpbiBsZWFkaW5nIGNvbmZlcmVuY2VzIGFzc29jaWF0ZWQgd2l0aFxuICAgICAgICAgICAgICBUZWNobmljYWwgSm91cm5hbHMuIFNoYXJlIHlvdXIgcmVzZWFyY2gsIGNvbm5lY3Qgd2l0aCBleHBlcnRzLCBhbmRcbiAgICAgICAgICAgICAgY29udHJpYnV0ZSB0byBhZHZhbmNpbmcga25vd2xlZGdlLlxuICAgICAgICAgICAgPC9tb3Rpb24ucD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgQ09ORkVSRU5DRSBTRUNUSU9OXG4gICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovfVxuXG4gICAgICA8c2VjdGlvblxuICAgICAgICByZWY9e1xuICAgICAgICAgIHJlc3VsdHNSZWZcbiAgICAgICAgfVxuICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICBzY3JvbGwtbXQtMjRcbiAgICAgICAgICBweS04XG5cbiAgICAgICAgICBzbTpweS0xMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICBteC1hdXRvXG4gICAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICAgIG1heC13LVsxMjgwcHhdXG4gICAgICAgICAgICBweC00XG5cbiAgICAgICAgICAgIHNtOnB4LTZcblxuICAgICAgICAgICAgbWQ6cHgtOFxuXG4gICAgICAgICAgICBsZzpweC0xMFxuXG4gICAgICAgICAgICB4bDpweC0xMlxuICAgICAgICAgIFwiXG4gICAgICAgID5cblxuICAgICAgICAgIHsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgVE9QIEJBUlxuICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL31cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICBtYi01XG4gICAgICAgICAgICAgIGdyaWRcbiAgICAgICAgICAgICAgZ3JpZC1jb2xzLTFcbiAgICAgICAgICAgICAgZ2FwLTNcblxuICAgICAgICAgICAgICBtZDpncmlkLWNvbHMtW21pbm1heCgwLDFmcilfYXV0b11cbiAgICAgICAgICAgICAgbWQ6aXRlbXMtY2VudGVyXG4gICAgICAgICAgICAgIG1kOmdhcC01XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cblxuICAgICAgICAgICAgey8qIFNFQVJDSCAqL31cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVxuICAgICAgICAgICAgICAgIHctZnVsbFxuICAgICAgICAgICAgICAgIG1heC13LVs2MjBweF1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFNlYXJjaFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgYWJzb2x1dGVcbiAgICAgICAgICAgICAgICAgIHJpZ2h0LTMuNVxuICAgICAgICAgICAgICAgICAgdG9wLTEvMlxuICAgICAgICAgICAgICAgICAgaC00XG4gICAgICAgICAgICAgICAgICB3LTRcbiAgICAgICAgICAgICAgICAgIC10cmFuc2xhdGUteS0xLzJcbiAgICAgICAgICAgICAgICAgIHRleHQtWyMxNzNFN0RdXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB2YWx1ZT17XG4gICAgICAgICAgICAgICAgICBrZXl3b3JkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoXG4gICAgICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEtleXdvcmQoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgLnRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgIHNldFBhZ2UoMSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb25mZXJlbmNlcyBieSB0aXRsZSwga2V5d29yZCwgb3IgbG9jYXRpb24uLi5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgaC0xMVxuICAgICAgICAgICAgICAgICAgdy1mdWxsXG4gICAgICAgICAgICAgICAgICByb3VuZGVkLVs3cHhdXG4gICAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICAgIGJvcmRlci1bI0RDRTNFRF1cbiAgICAgICAgICAgICAgICAgIGJnLXdoaXRlXG4gICAgICAgICAgICAgICAgICBweC00XG4gICAgICAgICAgICAgICAgICBwci0xMFxuICAgICAgICAgICAgICAgICAgdGV4dC1bMTJweF1cbiAgICAgICAgICAgICAgICAgIHRleHQtWyMyNjNDNjBdXG4gICAgICAgICAgICAgICAgICBvdXRsaW5lLW5vbmVcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOnRleHQtWyM4QTk4QUFdXG5cbiAgICAgICAgICAgICAgICAgIGZvY3VzOmJvcmRlci1bIzA3NTZDRl1cbiAgICAgICAgICAgICAgICAgIGZvY3VzOnJpbmctMlxuICAgICAgICAgICAgICAgICAgZm9jdXM6cmluZy1bIzA3NTZDRl0vMTBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBSRVNVTFQgKyBTT1JUICovfVxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICBmbGV4LWNvbFxuICAgICAgICAgICAgICAgIGdhcC0yLjVcblxuICAgICAgICAgICAgICAgIG1pbi1bNDYwcHhdOmZsZXgtcm93XG4gICAgICAgICAgICAgICAgbWluLVs0NjBweF06aXRlbXMtY2VudGVyXG4gICAgICAgICAgICAgICAgbWluLVs0NjBweF06anVzdGlmeS1iZXR3ZWVuXG5cbiAgICAgICAgICAgICAgICBtZDpqdXN0aWZ5LWVuZFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgd2hpdGVzcGFjZS1ub3dyYXBcbiAgICAgICAgICAgICAgICAgI
1030HRleHQtWzExcHhdXG4gICAgICAgICAgICAgICAgICBmb250LW1lZGl1bVxuICAgICAgICAgICAgICAgICAgdGV4dC1bIzUzNjY4MF1cblxuICAgICAgICAgICAgICAgICAgc206dGV4dC1bMTJweF1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgU2hvd2luZ3tcIiBcIn1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtWyMxNzM0NUZdXCI+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdWx0XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICDigJNcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFJlc3VsdFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj57XCIgXCJ9XG4gICAgICAgICAgICAgICAgb2Z7XCIgXCJ9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LVsjMTczNDVGXVwiPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPntcIiBcIn1cbiAgICAgICAgICAgICAgICBjb25mZXJlbmNlc1xuICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgcmVsYXRpdmVcbiAgICAgICAgICAgICAgICAgIHNocmluay0wXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtcbiAgICAgICAgICAgICAgICAgICAgc29ydEJ5XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KFxuICAgICAgICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRTb3J0QnkoXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC50YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlKDEpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICBoLTEwXG4gICAgICAgICAgICAgICAgICAgIHctZnVsbFxuICAgICAgICAgICAgICAgICAgICBtaW4tdy1bMTU1cHhdXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2Utbm9uZVxuICAgICAgICAgICAgICAgICAgICByb3VuZGVkLVs3cHhdXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItWyNEQ0UzRURdXG4gICAgICAgICAgICAgICAgICAgIGJnLXdoaXRlXG4gICAgICAgICAgICAgICAgICAgIHBsLTNcbiAgICAgICAgICAgICAgICAgICAgcHItOFxuICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMXB4XVxuICAgICAgICAgICAgICAgICAgICBmb250LW1lZGl1bVxuICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjMjYzQzYwXVxuICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLW5vbmVcblxuICAgICAgICAgICAgICAgICAgICBmb2N1czpib3JkZXItWyMwNzU2Q0ZdXG5cbiAgICAgICAgICAgICAgICAgICAgbWluLVs0NjBweF06dy1bMTYwcHhdXG5cbiAgICAgICAgICAgICAgICAgICAgc206dGV4dC1bMTJweF1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInVwY29taW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIFNvcnQ6IFVwY29taW5nXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5ld2VzdFwiPlxuICAgICAgICAgICAgICAgICAgICBTb3J0OiBOZXdlc3RcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgU29ydDogVGl0bGVcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibG9jYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgU29ydDogTG9jYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgPENoZXZyb25Eb3duXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHMtbm9uZVxuICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZVxuICAgICAgICAgICAgICAgICAgICByaWdodC0yLjVcbiAgICAgICAgICAgICAgICAgICAgdG9wLTEvMlxuICAgICAgICAgICAgICAgICAgICBoLTMuNVxuICAgICAgICAgICAgICAgICAgICB3LTMuNVxuICAgICAgICAgICAgICAgICAgICAtdHJhbnNsYXRlLXktMS8yXG4gICAgICAgICAgICAgICAgICAgIHRleHQtWyM0MzU3NzVdXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgIExPQURJTkdcbiAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi99XG5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgIG1pbi1oLVszMDBweF1cbiAgICAgICAgICAgICAgICBmbGV4LWNvbFxuICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgIGp1c3RpZnktY2VudGVyXG4gICAgICAgICAgICAgICAgcm91bmRlZC1bMTBweF1cbiAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICBib3JkZXItZGFzaGVkXG4gICAgICAgICAgICAgICAgYm9yZGVyLVsjQ0NEN0U1XVxuICAgICAgICAgICAgICAgIGJnLVsjRjhGQUZEXVxuICAgICAgICAgICAgICAgI
1030HB4LTVcbiAgICAgICAgICAgICAgICB0ZXh0LWNlbnRlclxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGVyMlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgaC04XG4gICAgICAgICAgICAgICAgICB3LThcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGUtc3BpblxuICAgICAgICAgICAgICAgICAgdGV4dC1bIzA3NTZDRl1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICBtdC0zXG4gICAgICAgICAgICAgICAgICB0ZXh0LVsxM3B4XVxuICAgICAgICAgICAgICAgICAgZm9udC1tZWRpdW1cbiAgICAgICAgICAgICAgICAgIHRleHQtWyM2ODc5OTFdXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExvYWRpbmcgY29uZmVyZW5jZXMuLi5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IGxvYWRFcnJvciA/IChcblxuICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICBFUlJPUlxuICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgIG1pbi1oLVsyNjBweF1cbiAgICAgICAgICAgICAgICBmbGV4LWNvbFxuICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgIGp1c3RpZnktY2VudGVyXG4gICAgICAgICAgICAgICAgcm91bmRlZC1bMTBweF1cbiAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICBib3JkZXItZGFzaGVkXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJlZC0yMDBcbiAgICAgICAgICAgICAgICBiZy1yZWQtNTBcbiAgICAgICAgICAgICAgICBweC01XG4gICAgICAgICAgICAgICAgdGV4dC1jZW50ZXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgIHRleHQtWzE0cHhdXG4gICAgICAgICAgICAgICAgICBmb250LXNlbWlib2xkXG4gICAgICAgICAgICAgICAgICB0ZXh0LXJlZC03MDBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2xvYWRFcnJvcn1cbiAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgc2V0UmVsb2FkS2V5KFxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgK1xuICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgbXQtNFxuICAgICAgICAgICAgICAgICAgbWluLWgtWzQwcHhdXG4gICAgICAgICAgICAgICAgICByb3VuZGVkLVs1cHhdXG4gICAgICAgICAgICAgICAgICBiZy1bIzA3NTZDRl1cbiAgICAgICAgICAgICAgICAgIHB4LTVcbiAgICAgICAgICAgICAgICAgIHRleHQtWzEycHhdXG4gICAgICAgICAgICAgICAgICBmb250LXNlbWlib2xkXG4gICAgICAgICAgICAgICAgICB0ZXh0LXdoaXRlXG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uXG5cbiAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLVsjMDY0QUI0XVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUcnkgQWdhaW5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogcGFnZUl0ZW1zLmxlbmd0aCA9PT1cbiAgICAgICAgICAgIDAgPyAoXG5cbiAgICAgICAgICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgICAgICAgRU1QVFlcbiAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICBtaW4taC1bMjgwcHhdXG4gICAgICAgICAgICAgICAgZmxleC1jb2xcbiAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNlbnRlclxuICAgICAgICAgICAgICAgIHJvdW5kZWQtWzEwcHhdXG4gICAgICAgICAgICAgICAgYm9yZGVyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWRhc2hlZFxuICAgICAgICAgICAgICAgIGJvcmRlci1bI0NDRDdFNV1cbiAgICAgICAgICAgICAgICBiZy1bI0Y4RkFGRF1cbiAgICAgICAgICAgICAgICBweC01XG4gICAgICAgICAgICAgICAgdGV4dC1jZW50ZXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFNlYXJjaFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgaC05XG4gICAgICAgICAgICAgICAgICB3LTlcbiAgICAgICAgICAgICAgICAgIHRleHQtWyM5QUE4QkFdXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgIG10LTRcbiAgICAgICAgICAgICAgICAgIHRleHQtWzE3cHhdXG4gICAgICAgICAgICAgICAgICBmb250LVs2MDBdXG4gICAgICAgICAgICAgICAgICB0ZXh0LVsjMTczNDVGXVxuXG4gICAgICAgICAgICAgICAgICBzbTp0ZXh0LVsxOHB4XVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBObyBjb25mZXJlbmNlcyBmb3VuZFxuICAgICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICBtdC0yXG4gICAgICAgICAgICAgICAgICBtYXgtdy1bNDIwcHhdXG4gICAgICAgICAgICAgICAgICB0ZXh0LVsxMnB4XVxuICAgICAgICAgICAgICAgICAgbGVhZGluZy01XG4gICAgICAgICAgICAgICAgICB0ZXh0LVsjNjg3OTkxXVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUcnkgYW5vdGhlciB0aXRsZSwga2V5d29yZCwgb3IgbG9jYXRpb24uXG4gICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICB7a2V5d29yZCAmJiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJTZWFyY2hcbiAgICAgICAgICAgICAgICAgI
1030H1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICBtdC01XG4gICAgICAgICAgICAgICAgICAgIG1pbi1oLVs0MHB4XVxuICAgICAgICAgICAgICAgICAgICByb3VuZGVkLVs1cHhdXG4gICAgICAgICAgICAgICAgICAgIGJnLVsjMDc1NkNGXVxuICAgICAgICAgICAgICAgICAgICBweC01XG4gICAgICAgICAgICAgICAgICAgIHRleHQtWzEycHhdXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2VtaWJvbGRcbiAgICAgICAgICAgICAgICAgICAgdGV4dC13aGl0ZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBWaWV3IEFsbCBDb25mZXJlbmNlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcblxuICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICBDT05GRVJFTkNFIENBUkRTXG4gICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICBzcGFjZS15LTRcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3BhZ2VJdGVtcy5tYXAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdG9waWNzID1cbiAgICAgICAgICAgICAgICAgICAgbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLnRvcGljcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZS50YWdzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLmtleXdvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb2RlID1cbiAgICAgICAgICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLmNvZGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2Uuc2hvcnROYW1lLFxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgIGBDT05GICR7bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfWA7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZ2FuaXplciA9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2VPcmdhbml6ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2UudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgXCJBY2FkZW1pYyBDb25mZXJlbmNlXCI7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgIFwiRXhwbG9yZSBjdXJyZW50IHJlc2VhcmNoLCBleGNoYW5nZSBrbm93bGVkZ2UsIGFuZCBjb25uZWN0IHdpdGggcmVzZWFyY2hlcnMgYW5kIHByb2Zlc3Npb25hbHMuXCI7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uYXJ0aWNsZVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLmlkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLnNsdWcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2NvZGV9LSR7aW5kZXh9YFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogMTIsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAwLjA0LFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17e1xuICAgICAgICAgICAgICAgICAgICAgICAgeTogLTIsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4tdy0wXG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHMtMVxuICAgICAgICAgICAgICAgICAgICAgICAgZ2FwLTRcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1bMTBweF1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLVsjRTFFN0VGXVxuICAgICAgICAgICAgICAgICAgICAgICAgYmctd2hpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgI
1030HAtNFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uLTMwMFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcjpib3JkZXItWyNCNUNCRUFdXG4gICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjpzaGFkb3ctWzBfMTBweF8yOHB4X3JnYmEoMTAsMzksODIsMC4wNyldXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNtOmdyaWQtY29scy1bMTIycHhfbWlubWF4KDAsMWZyKV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNtOml0ZW1zLXN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICBzbTpnYXAtNVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBtZDpncmlkLWNvbHMtWzEyOHB4X21pbm1heCgwLDFmcildXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxnOmdyaWQtY29scy1bMTMycHhfbWlubWF4KDAsMWZyKV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgeGw6Z3JpZC1jb2xzLVsxMzZweF9taW5tYXgoMCwxZnIpXzIxMHB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgeGw6Z2FwLTZcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogQ09WRVIgKi99XG5cbiAgICAgICAgICAgICAgICAgICAgICA8Q29uZmVyZW5jZUltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgey8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1BSU4gREVUQUlMU1xuICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi13LTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHktMC41XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRZUEUgKi99XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZS1mbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXctZnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kZWQtWzRweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZy1bI0VBRjJGRl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBweC0yLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBweS0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bOS41cHhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zZW1pYm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtWyMwNzU2Q0ZdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbTp0ZXh0LVsxMHB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmVyZW5jZVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRJVExFICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXQtMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrLXdvcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bMTVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LVs2MDBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZy1bMS40XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtWyMwNzFDNDZdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbTp0ZXh0LVsxNS41cHhdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDp0ZXh0LVsxNnB4XVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGc6dGV4dC1bMTYuNXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogT1JHQU5JWkVSICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdC0xLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhay13b3Jkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtWzExcHhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZy01XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzQxNTY3NV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzExLjVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2VtaWJvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
1030HRleHQtWyMyQjQyNjVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZ2FuaXplZCBieTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge29yZ2FuaXplcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIERFU0NSSVBUSU9OICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdC0xLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWNsYW1wLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmctWzEuNjVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzY2NzU4QV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOmxpbmUtY2xhbXAtMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzExLjVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogVE9QSUNTICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10LTIuNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LXdyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXAtMS41XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMC41cHhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNlbWlib2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjMzU0QjZCXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3BpY3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KHRvcGljcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRvcGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlU3ViamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcGljLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcGljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXctZnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWstd29yZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kZWQtZnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmctWyNGMEY0RjldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweC0yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweS0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVs5LjVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtbWVkaXVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFkaW5nLTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtWyM0MDU4NzldXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzEwcHhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3BpY31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUQSBTSURFXG4gICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi99XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4tdy0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtY29sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdhcC00XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci10XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1bI0U3RUJGMl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHQtNFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgI
1030HNtOmNvbC1zcGFuLTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc206ZmxleC1yb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc206aXRlbXMtY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNtOmp1c3RpZnktYmV0d2VlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhsOmNvbC1zcGFuLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6Ym9yZGVyLWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6Ym9yZGVyLXQtMFxuICAgICAgICAgICAgICAgICAgICAgICAgICB4bDpwbC01XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhsOnB0LTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6ZmxleC1jb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6aXRlbXMtc3RyZXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICB4bDpqdXN0aWZ5LWJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluLXctMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29scy0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwLTNcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi1bNDYwcHhdOmdyaWQtY29scy0yXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbTpmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc206ZmxleC13cmFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc206Z2FwLXgtNVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6Z3JpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsOmdyaWQtY29scy0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIERBVEUgKi99XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi13LTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLXN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXAtMi41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1tZWRpdW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmctNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzMwNDk2RF1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc206dGV4dC1bMTEuNXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FsZW5kYXJEYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXQtWzJweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC00XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHctNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHJpbmstMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjMjQ1NUEzXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYnJlYWstd29yZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25mZXJlbmNlRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIExPQ0FUSU9OICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4tdy0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1zdGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwLTIuNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bMTFweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtbWVkaXVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFkaW5nLTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtWyMzMDQ5NkRdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzExLjVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1hcFBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10LVsycHhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgtNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3LTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hyaW5rLTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzI0NTVBM11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJyZWFrLXdvcmRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmVyZW5jZUxvY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogVklFVyBERVRBSUxTICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0bz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZS5kZXRhaWxzVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgI
1030H1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lLWZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4taC1bMzhweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHJpbmstMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1bNXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1bIzA3NTZDRl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBweC00XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bMTEuNXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2VtaWJvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjMDc1NkNGXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLVsjMDc1NkNGXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtd2hpdGVcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtOnctWzE1MHB4XVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGw6bXQtNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsOnctZnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uYXJ0aWNsZT5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgIFBBR0lOQVRJT05cbiAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi99XG5cbiAgICAgICAgICB7IWxvYWRpbmcgJiZcbiAgICAgICAgICAgICFsb2FkRXJyb3IgJiZcbiAgICAgICAgICAgIHRvdGFsSXRlbXMgPlxuICAgICAgICAgICAgICBQQUdFX1NJWkUgJiZcbiAgICAgICAgICAgIHRvdGFsUGFnZXMgPlxuICAgICAgICAgICAgICAxICYmIChcbiAgICAgICAgICAgICAgPG5hdlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb25mZXJlbmNlIHBhZ2luYXRpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgbXQtN1xuICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgZmxleC13cmFwXG4gICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnktY2VudGVyXG4gICAgICAgICAgICAgICAgICBnYXAtMlxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlUGFnZShcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlIC1cbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgcGFnZSA9PT0gMVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgIGdyaWRcbiAgICAgICAgICAgICAgICAgICAgaC04XG4gICAgICAgICAgICAgICAgICAgIHctOFxuICAgICAgICAgICAgICAgICAgICBwbGFjZS1pdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1bNXB4XVxuICAgICAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLVsjRENFM0VEXVxuICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjMjM0QTg3XVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgaG92ZXI6Ym9yZGVyLVsjMDc1NkNGXVxuICAgICAgICAgICAgICAgICAgICBob3Zlcjp0ZXh0LVsjMDc1NkNGXVxuXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDpvcGFjaXR5LTMwXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIHt2aXNpYmxlUGFnZXMubWFwKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbSA9PT1cbiAgICAgICAgICAgICAgICAgICAgXCJudW1iZXJcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZVBhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGgtOFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4tdy04XG4gICAgICAgICAgICAgICAgICAgICAgICAgI
1030HJvdW5kZWQtWzVweF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHgtMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMXB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNlbWlib2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnLVsjMDc1NkNGXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXdoaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy1bMF80cHhfMTBweF9yZ2JhKDcsODYsMjA3LC4yNCldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1bI0RDRTNFRF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzQwNTY3NV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Zlcjpib3JkZXItWyMwNzU2Q0ZdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtWyMwNzU2Q0ZdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGgtOFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4tdy02XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlLWl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMnB4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LVsjNjA3MThBXVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICDigKZcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlUGFnZShcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlICtcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgcGFnZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdG90YWxQYWdlc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5leHQgcGFnZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgZ3JpZFxuICAgICAgICAgICAgICAgICAgICBoLThcbiAgICAgICAgICAgICAgICAgICAgdy04XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlLWl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgICAgICByb3VuZGVkLVs1cHhdXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItWyNEQ0UzRURdXG4gICAgICAgICAgICAgICAgICAgIHRleHQtWyMyMzRBODddXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25cblxuICAgICAgICAgICAgICAgICAgICBob3Zlcjpib3JkZXItWyMwNzU2Q0ZdXG4gICAgICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtWyMwNzU2Q0ZdXG5cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOm9wYWNpdHktMzBcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgey8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICBDVEFcbiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi99XG5cbiAgICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgIG14LWF1dG9cbiAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICBtYXgtdy1bMTQ0MHB4XVxuICAgICAgICAgIHB4LTRcbiAgICAgICAgICBwYi04XG5cbiAgICAgICAgICBzbTpweC04XG5cbiAgICAgICAgICBsZzpweC0xNlxuXG4gICAgICAgICAgeGw6cHgtMjBcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBpbml0aWFsPXt7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgeTogMTgsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB3aGlsZUluVmlldz17e1xuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgI
1030Hk6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB2aWV3cG9ydD17e1xuICAgICAgICAgICAgb25jZTogdHJ1ZSxcbiAgICAgICAgICAgIGFtb3VudDogMC4zLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICByZWxhdGl2ZVxuICAgICAgICAgICAgb3ZlcmZsb3ctaGlkZGVuXG4gICAgICAgICAgICByb3VuZGVkLVsxMXB4XVxuICAgICAgICAgICAgYmctW2xpbmVhci1ncmFkaWVudCgxMDBkZWcsIzAzMUI0NywjMDYzQjgwKV1cbiAgICAgICAgICAgIHRleHQtd2hpdGVcbiAgICAgICAgICAgIHNoYWRvdy1bMF8xMHB4XzI2cHhfcmdiYSgzLDI0LDYzLC4xNSldXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICBncmlkXG4gICAgICAgICAgICAgIG1pbi1oLVsxMTBweF1cbiAgICAgICAgICAgICAgaXRlbXMtY2VudGVyXG5cbiAgICAgICAgICAgICAgbWQ6Z3JpZC1jb2xzLVsxODBweF9taW5tYXgoMCwxZnIpXVxuXG4gICAgICAgICAgICAgIGxnOmdyaWQtY29scy1bMTkwcHhfbWlubWF4KDAsMWZyKV1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuXG4gICAgICAgICAgICB7LyogQ1RBIElNQUdFICovfVxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgIHJlbGF0aXZlXG4gICAgICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICAgICAgaC1mdWxsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3ctaGlkZGVuXG5cbiAgICAgICAgICAgICAgICBtZDpibG9ja1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPXtcbiAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2VDdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWx0PVwiQ29uZmVyZW5jZSBjYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgYWJzb2x1dGVcbiAgICAgICAgICAgICAgICAgIGluc2V0LTBcbiAgICAgICAgICAgICAgICAgIGgtZnVsbFxuICAgICAgICAgICAgICAgICAgdy1mdWxsXG4gICAgICAgICAgICAgICAgICBvYmplY3QtY29udGFpblxuICAgICAgICAgICAgICAgICAgcC0zXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ1RBIENPTlRFTlQgKi99XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgZ3JpZFxuICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgIGdhcC02XG4gICAgICAgICAgICAgICAgcHgtNVxuICAgICAgICAgICAgICAgIHB5LTdcblxuICAgICAgICAgICAgICAgIHNtOnB4LTZcblxuICAgICAgICAgICAgICAgIGxnOmdyaWQtY29scy1bbWlubWF4KDAsMWZyKV9hdXRvXVxuICAgICAgICAgICAgICAgIGxnOnB4LTlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxOXB4XVxuICAgICAgICAgICAgICAgICAgICBmb250LVs1NTBdXG5cbiAgICAgICAgICAgICAgICAgICAgc206dGV4dC1bMjJweF1cblxuICAgICAgICAgICAgICAgICAgICBsZzp0ZXh0LVsyM3B4XVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBPcmdhbml6ZSBZb3VyIENvbmZlcmVuY2Ugd2l0aCBVc1xuICAgICAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiXG4gICAgICAgICAgICAgICAgICAgIG10LTJcbiAgICAgICAgICAgICAgICAgICAgbWF4LXctWzQzMHB4XVxuICAgICAgICAgICAgICAgICAgICB0ZXh0LVsxMnB4XVxuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nLTVcbiAgICAgICAgICAgICAgICAgICAgdGV4dC13aGl0ZS84NVxuXG4gICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzEzcHhdXG5cbiAgICAgICAgICAgICAgICAgICAgbGc6dGV4dC1bMTRweF1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgUGFydG5lciB3aXRoIFRlY2huaWNhbCBKb3VybmFscyB0byBob3N0IHlvdXIgY29uZmVyZW5jZSBhbmRcbiAgICAgICAgICAgICAgICAgIHJlYWNoIGEgZ2xvYmFsIGF1ZGllbmNlIG9mIHJlc2VhcmNoZXJzIGFuZCBwcm9mZXNzaW9uYWxzLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIlxuICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgZmxleC1jb2xcbiAgICAgICAgICAgICAgICAgIGdhcC0yLjVcblxuICAgICAgICAgICAgICAgICAgbWluLVs0MzBweF06ZmxleC1yb3dcbiAgICAgICAgICAgICAgICAgIG1pbi1bNDMwcHhdOmZsZXgtd3JhcFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgdG89XCIvY29udGFjdFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lLWZsZXhcbiAgICAgICAgICAgICAgICAgICAgaC0xMVxuICAgICAgICAgICAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICAgICAgICAgICAgbWluLXctWzE1MHB4XVxuICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1bNnB4XVxuICAgICAgICAgICAgICAgICAgICBiZy13aGl0ZVxuICAgICAgICAgICAgICAgICAgICBweC01XG4gICAgICAgICAgICAgICAgICAgI
1030HRleHQtWzEycHhdXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2VtaWJvbGRcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1bIzA3NTZDRl1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblxuXG4gICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLVsjRURGNEZGXVxuXG4gICAgICAgICAgICAgICAgICAgIG1pbi1bNDMwcHhdOnctYXV0b1xuXG4gICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzEzcHhdXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFBhcnRuZXIgV2l0aCBVc1xuICAgICAgICAgICAgICAgIDwvTGluaz5cblxuICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICB0bz1cIi9zZXJ2aWNlc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lLWZsZXhcbiAgICAgICAgICAgICAgICAgICAgaC0xMVxuICAgICAgICAgICAgICAgICAgICB3LWZ1bGxcbiAgICAgICAgICAgICAgICAgICAgbWluLXctWzE0MHB4XVxuICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1bNnB4XVxuICAgICAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXdoaXRlLzc1XG4gICAgICAgICAgICAgICAgICAgIHB4LTVcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1bMTJweF1cbiAgICAgICAgICAgICAgICAgICAgZm9udC1zZW1pYm9sZFxuICAgICAgICAgICAgICAgICAgICB0ZXh0LXdoaXRlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25cblxuICAgICAgICAgICAgICAgICAgICBob3ZlcjpiZy13aGl0ZS8xMFxuXG4gICAgICAgICAgICAgICAgICAgIG1pbi1bNDMwcHhdOnctYXV0b1xuXG4gICAgICAgICAgICAgICAgICAgIHNtOnRleHQtWzEzcHhdXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIExlYXJuIE1vcmVcbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG4gICk7XG59Il19
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.