{"id":11055,"date":"2026-10-26T15:31:44","date_gmt":"2026-10-26T14:31:44","guid":{"rendered":"https:\/\/dorelaiepan.com\/good-seeds-fr\/"},"modified":"2026-10-26T15:31:44","modified_gmt":"2026-10-26T14:31:44","slug":"good-seeds","status":"publish","type":"page","link":"https:\/\/dorelaiepan.com\/fr\/good-seeds\/","title":{"rendered":"Good Seeds"},"content":{"rendered":"<title>Good Seeds<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Alegreya:ital,wght@0,500;0,700;1,500&#038;family=Nunito+Sans:opsz,wght@6..12,400;6..12,600;6..12,700&#038;display=swap\"><style>#sb button,#sb input,#sb textarea{font:inherit;color:inherit;margin:0;box-shadow:none;text-transform:none;letter-spacing:normal;text-shadow:none;min-height:0;min-width:0;line-height:inherit}\n#sb button{background:none;border:0;border-radius:0;padding:0}\n#sb h1,#sb h2,#sb h3,#sb h4,#sb strong,#sb b{color:inherit;letter-spacing:normal;text-transform:none;padding:0}\n#sb a{box-shadow:none}\nbody.admin-bar #sb{height:calc(100dvh - 46px);margin-top:0}\n@media (min-width:783px){body.admin-bar #sb{height:calc(100dvh - 32px)}}\n\/* Good Seeds: sister of Semin\u021be Bune. Same shell; palette moved to deep lagoon teal + terracotta on warm ivory, brand pink only as a tiny accent. *\/\n:root{\n  --bg:#F6F2EC; --surface:#FFFFFF; --ink:#22313A; --muted:#66727A; --line:#E3DCD2;\n  --moss:#2E6E73; --moss-soft:#DCEBEA; --soil:#B35E39; --soil-soft:#F5E5DA;\n  --header:#1D383E; --on-header:#F6F2EC; --danger:#A1422F; --accent:#FC1370;\n  color-scheme:only light;\n  --display:\"Alegreya\", Georgia, \"Times New Roman\", serif;\n  --body:\"Nunito Sans\", \"Segoe UI\", system-ui, -apple-system, sans-serif;\n}\nhtml{color-scheme:only light;background:#F6F2EC;height:100%;overflow:hidden}\nhtml,body{height:100%}\nbody{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;margin:0;padding:0;overflow:hidden}\n[hidden]{display:none!important}\n*{box-sizing:border-box}\n#sb button,#sb input{font:inherit;color:inherit}\n#sb button{cursor:pointer;width:auto}\n:focus-visible{outline:2px solid var(--moss);outline-offset:2px}\n#sb .brand .seed{fill:var(--accent);stroke:none}\n#sb .hd-actions{display:flex;gap:8px;align-items:center}\n#sb .langbtn{background:transparent;color:var(--on-header);border:1px solid color-mix(in srgb,var(--on-header) 40%,transparent);border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:700;letter-spacing:.06em;display:inline-flex;align-items:center;gap:6px}\n#sb .langlist{display:flex;flex-direction:column;gap:8px}\n#sb .langlist button{display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:14px 16px;font-size:1rem}\n#sb .langlist button[aria-pressed=\"true\"]{background:var(--moss-soft);border-color:var(--moss);font-weight:700}\n#sb .langlist button[disabled]{opacity:.55;cursor:default}\n#sb .langlist small{font-size:.75rem;color:var(--muted);font-weight:600}\n#sb .objpanel.short{height:auto;max-height:78%}\n#sb nav.bar button[aria-current=\"page\"]::after{content:\"\";width:4px;height:4px;border-radius:50%;background:var(--accent);margin-top:1px}\n#sb nav.bar .plant[aria-current=\"page\"]::after{display:none}\n#sb{color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;height:100vh;height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));margin-top:env(safe-area-inset-top,0px);display:flex;flex-direction:column;max-width:560px;margin:0 auto;background:var(--bg)}\n#sb header.top{background:var(--header);color:var(--on-header);padding:14px 16px 16px;display:flex;align-items:center;gap:12px}\n#sb .brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}\n#sb .brand svg{flex:none}\n#sb .brand h1{font-family:var(--display);font-weight:700;font-size:clamp(1.05rem,5.2vw,1.35rem);margin:0;line-height:1.1;text-wrap:balance}\n#sb .brand small{display:block;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;opacity:.75}\n#sb .sbback{color:var(--on-header);text-decoration:none;font-size:.8rem;font-weight:600;border:1px solid color-mix(in srgb,var(--on-header) 40%,transparent);border-radius:999px;padding:6px 12px;white-space:nowrap}\n#sb main{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb .view{padding-inline:16px;padding-block:20px 32px;display:flex;flex-direction:column;gap:18px}\n#sb h2{font-family:var(--display);font-weight:700;font-size:1.6rem;line-height:1.15;margin:0;text-wrap:balance}\n#sb h3{font-family:var(--display);font-weight:700;font-size:1.15rem;margin:0}\n#sb .lead{color:var(--muted);margin:4px 0 0}\n#sb .eyebrow{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}\n#sb .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n#sb .stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 10px;text-align:center}\n#sb .stat b{display:block;font-family:var(--display);font-size:1.7rem;line-height:1;color:var(--moss);font-variant-numeric:tabular-nums}\n#sb .stat span{font-size:.75rem;color:var(--muted)}\n#sb .tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}\n#sb .tile:hover{border-color:var(--moss)}\n#sb .tile .hx{color:var(--moss)}\n#sb .tile strong{font-size:.95rem}\n#sb .tile em{font-style:normal;font-size:.75rem;color:var(--muted)}\n\/* chips *\/\n#sb .label{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:.04em}\n#sb .chips{display:flex;flex-wrap:wrap;gap:8px}\n#sb .chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font-size:.9rem;font-variant-numeric:tabular-nums}\n#sb .chip[aria-pressed=\"true\"]{background:var(--moss);border-color:var(--moss);color:var(--surface);font-weight:700}\n#sb .seg{display:grid;grid-template-columns:1fr 1fr;background:var(--moss-soft);border-radius:12px;padding:4px;gap:4px}\n#sb .seg button{border:0;background:transparent;border-radius:9px;padding:9px;font-weight:700;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:8px}\n#sb .seg button[aria-pressed=\"true\"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgb(0 0 0 \/ .12)}\n#sb input[type=text],#sb input[type=number],#sb input[type=date]{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px}\n#sb .row{display:flex;gap:8px;align-items:center}\n#sb .row input[type=number]{width:90px}\n#sb .btn{border:0;border-radius:12px;padding:13px 18px;font-weight:700;background:var(--moss);color:var(--surface);width:100%}\n#sb .btn.soft{background:var(--soil-soft);color:var(--soil)}\n#sb .btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}\n#sb .btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}\n#sb .btns{display:flex;gap:10px}\n#sb .btns .btn{flex:1}\n#sb .link{background:none;border:0;color:var(--soil);font-weight:700;padding:0;text-decoration:underline;text-underline-offset:3px}\n\/* timer *\/\n#sb .dial{position:relative;width:min(260px,72vw);aspect-ratio:1;max-width:100%;margin:4px auto 0}\n#sb .dial svg{width:100%;height:100%;transform:rotate(-90deg)}\n#sb .dial .track{stroke:var(--moss-soft)}\n#sb .dial .prog{stroke:var(--moss);transition:stroke-dashoffset .25s linear}\n#sb .dial.prep .prog{stroke:var(--soil)}\n#sb .dial .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}\n#sb .dial .phase{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .dial .clock{font-family:var(--display);font-size:3.2rem;line-height:1;font-variant-numeric:tabular-nums}\n#sb .dial .sub{font-size:.85rem;color:var(--muted)}\n#sb .note{font-size:.82rem;color:var(--muted);margin:0}\n#sb .done{background:var(--moss-soft);border-color:transparent}\n\/* journal *\/\n#sb .day{display:flex;flex-direction:column;gap:8px}\n#sb .day h4{margin:0;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between;gap:8px}\n#sb .entry{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:12px}\n#sb .entry .hx{color:var(--moss);flex:none}\n#sb .entry.yoga .hx,#sb .entry.recunostinte .hx{color:var(--soil)}\n#sb .entry .txt{flex:1 1 auto;min-width:0;width:auto}\n#sb .entry .txt b{display:block;font-size:.95rem;overflow-wrap:anywhere}\n#sb .entry .txt span{font-size:.8rem;color:var(--muted)}\n#sb .entry .min{font-family:var(--display);font-size:1.2rem;font-variant-numeric:tabular-nums;white-space:nowrap}\n#sb .entry .del{flex:none;width:auto;background:none;border:0;color:var(--muted);padding:4px 6px;font-size:1.1rem;line-height:1}\n#sb .confirm{display:flex;gap:8px;align-items:center;font-size:.85rem;flex-wrap:wrap}\n#sb .empty{text-align:center;color:var(--muted);padding:24px 8px;display:flex;flex-direction:column;align-items:center;gap:10px}\n#sb .empty .hx{color:var(--line)}\n#sb textarea{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px;min-height:84px;resize:vertical;font:inherit;color:inherit;line-height:1.45}\n#sb .q{display:flex;flex-direction:column;gap:6px}\n#sb .q label{font-weight:700;font-size:.95rem;line-height:1.35}\n#sb .q .num{font-family:var(--display);color:var(--soil);font-size:1.1rem;margin-right:4px}\n#sb .rrow{display:flex;flex-direction:column;gap:8px;padding-block:12px;border-top:1px solid var(--line)}\n#sb .rrow:first-of-type{border-top:0;padding-top:0}\n#sb .rrow .top{display:flex;gap:8px;align-items:center;justify-content:space-between}\n#sb .mini{display:inline-flex;background:var(--moss-soft);border-radius:999px;padding:3px;gap:2px}\n#sb .mini button{border:0;background:transparent;border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:700;color:var(--muted)}\n#sb .mini button[aria-pressed=\"true\"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgb(0 0 0 \/ .12)}\n#sb .mini button[data-rk=\"succes\"][aria-pressed=\"true\"]{color:var(--soil)}\n#sb .rm{background:none;border:0;color:var(--muted);font-size:.85rem;padding:4px}\n#sb .recap dt{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .recap dd{margin:2px 0 12px;white-space:pre-wrap;overflow-wrap:anywhere}\n#sb .recap dd:last-child{margin-bottom:0}\n#sb .vow{background:var(--moss-soft);border-radius:18px;padding:24px 20px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}\n#sb .vow .hx{color:var(--moss)}\n#sb .vow p{font-family:var(--display);font-size:1.18rem;line-height:1.6;margin:0;max-width:34ch;text-wrap:pretty}\n#sb .vow p.last{font-style:italic;color:var(--moss);font-size:1.25rem}\n#sb .breath{display:flex;flex-direction:column;align-items:center;gap:14px;padding-block:8px}\n#sb .orb{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 40% 35%,var(--surface),var(--moss-soft) 60%,var(--moss) 140%);transform:scale(.6);transition:transform 4s ease-in-out;display:grid;place-items:center}\n#sb .orb span{font-family:var(--display);font-size:1rem;color:var(--forest,var(--header))}\n#sb .breath .cue{font-family:var(--display);font-size:1.3rem;color:var(--soil);min-height:1.6em}\n#sb .items{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.88rem}\n#sb .items li{display:flex;gap:8px;align-items:baseline}\n#sb .items .tag{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--moss);white-space:nowrap}\n#sb .items .tag.succes{color:var(--soil)}\n#sb .entry.col{align-items:flex-start}\n#sb .entry.open{cursor:pointer}\n#sb .rinput{display:flex;align-items:center;gap:0;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding-left:12px}\n#sb .rinput .pre{white-space:nowrap;font-size:.9rem;color:var(--moss);font-weight:700}\n#sb .rinput.succes .pre{color:var(--soil)}\n#sb .rinput input{border:0!important;background:transparent!important;padding:10px 12px 10px 6px!important;min-width:0;flex:1}\n#sb .prev{display:flex;flex-direction:column;gap:6px}\n#sb .prev button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#sb .prev button[aria-pressed=\"true\"]{border-color:var(--moss);background:var(--moss-soft);font-weight:700}\n#sb .todo-btn{align-self:flex-start;border:1px dashed var(--moss);background:transparent;color:var(--moss);border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:700}\n#sb .todo-btn[disabled]{border-style:solid;opacity:.75;cursor:default}\n#sb .todo{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}\n#sb .todo .ck{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--moss);background:transparent;display:grid;place-items:center;color:var(--surface);margin-top:1px}\n#sb .todo.done .ck{background:var(--moss)}\n#sb .todo.done .tt b{text-decoration:line-through;color:var(--muted);font-weight:600}\n#sb .todo .tt{flex:1;min-width:0}\n#sb .todo .tt b{display:block;font-weight:600;overflow-wrap:anywhere;white-space:pre-wrap}\n#sb .todo .tt span{font-size:.75rem;color:var(--muted)}\n#sb .addrow{display:flex;gap:8px}\n#sb .addrow input{flex:1;min-width:0}\n#sb .addrow .btn{width:auto;padding-inline:16px}\n#sb .gen{background:var(--soil-soft);border-color:transparent}\n#sb .gen .btns .btn{padding:10px}\n#sb .foot{font-size:.8rem;color:var(--muted);text-align:center}\n#sb .objpick{display:flex;flex-direction:column;gap:8px}\n#sb .objtoggle{align-self:flex-start;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:700;color:var(--moss)}\n#sb .sheet-bg{position:fixed;inset:0;background:rgb(16 24 26 \/ .45);z-index:2000;display:flex;align-items:flex-end;justify-content:center}\n#sb .objpanel{background:var(--surface);width:100%;max-width:560px;height:78%;border-radius:20px 20px 0 0;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px;box-shadow:0 -6px 24px rgb(0 0 0 \/ .18)}\n#sb .objpanel .grab{width:44px;height:5px;border-radius:3px;background:var(--line);align-self:center}\n#sb .objpanel .top{display:flex;justify-content:space-between;align-items:center;gap:8px}\n#sb .objpanel .x{border:0;background:var(--moss-soft);border-radius:999px;width:34px;height:34px;font-size:1.1rem;line-height:1;color:var(--ink)}\n#sb .objlist{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb .objlist button{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:12px 14px;font-size:.95rem;line-height:1.4}\n#sb .objlist button[aria-pressed=\"true\"]{background:var(--moss-soft);font-weight:700}\n#sb .objlist .none{font-size:.85rem;color:var(--muted);padding:6px 4px}\n#sb .power{gap:10px}\n#sb .power .eyebrow{display:flex;justify-content:space-between;gap:8px}\n#sb .power .ptext{font-family:var(--display);font-size:1.05rem;line-height:1.55;margin:0;color:var(--ink)}\n#sb .power textarea{min-height:64px}\n#sb .variants{display:grid;grid-template-columns:1fr;gap:6px}\n#sb .variants .chip{text-align:left;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:10px;width:100%}\n#sb .variants .chip b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--moss-soft);color:var(--moss);font-size:.8rem;flex:none}\n#sb .variants .chip[aria-pressed=\"true\"] b{background:var(--surface);color:var(--moss)}\n#sb .variants .chip[disabled]{opacity:.5;cursor:default}\n#sb .ptext mark{background:var(--moss-soft);color:var(--ink);padding:0 3px;border-radius:4px;font-family:var(--body);font-size:.95rem;font-weight:600}\n#sb .precap{display:flex;flex-direction:column;gap:14px}\n#sb .precap h4{margin:0;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--soil)}\n#sb .next{background:var(--header);color:var(--on-header);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:12px;text-align:center;align-items:center}\n#sb .next h3{color:var(--on-header)}\n#sb .next .btn{background:var(--on-header);color:var(--header);max-width:280px}\n#sb .gate{align-items:center;text-align:center;padding:28px 20px;margin-top:8px}\n#sb .gate .hx{color:var(--moss)}\n#sb .tema-row{display:flex;gap:8px}\n#sb .tema-row input{flex:1;min-width:0}\n#sb .tema-row .btn{width:auto;padding-inline:14px}\n#sb .tag-tema{display:inline-block;background:var(--soil-soft);color:var(--soil);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:700;letter-spacing:.02em}\n#sb .exp-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .exp-row label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:700;color:var(--muted)}\n#sb .exp-item{display:flex;flex-direction:column;gap:12px}\n#sb .exp-item+.exp-item{border-top:1px dashed var(--line);padding-top:16px}\n#sb .journal-link{flex-direction:row;align-items:center;justify-content:space-between;text-align:left}\n#sb .slider{display:flex;flex-direction:column;gap:6px}\n#sb .slider .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}\n#sb .slider output{font-family:var(--display);font-size:1.4rem;color:var(--moss);font-variant-numeric:tabular-nums}\n#sb .slider .ends{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}\n#sb input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:30px;background:transparent;margin:0}\n#sb input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--moss) var(--fill,50%),var(--moss-soft) var(--fill,50%))}\n#sb input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:var(--moss-soft)}\n#sb input[type=range]::-moz-range-progress{height:6px;border-radius:3px;background:var(--moss)}\n#sb input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-10px;border-radius:50%;background:var(--surface);border:3px solid var(--moss);box-shadow:0 1px 4px rgb(0 0 0 \/ .2)}\n#sb input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--surface);border:3px solid var(--moss)}\n#sb input.prep-range::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--soil) var(--fill,50%),var(--soil-soft) var(--fill,50%))}\n#sb input.prep-range::-webkit-slider-thumb{border-color:var(--soil)}\n#sb input.prep-range::-moz-range-progress{background:var(--soil)}\n#sb input.prep-range::-moz-range-thumb{border-color:var(--soil)}\n#sb .slider.prep output{color:var(--soil)}\n#sb .soon{align-items:center;text-align:center;padding:28px 18px}\n#sb .soon .hx{color:var(--soil)}\n#sb .banner{font-size:.78rem;color:var(--soil);background:var(--soil-soft);border-radius:10px;padding:8px 12px}\n.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:.9rem;font-weight:600;z-index:3000;max-width:calc(100vw - 32px);text-align:center}\n\/* community *\/\n#sb .post{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 14px 10px;display:flex;flex-direction:column;gap:10px}\n#sb .post .who{display:flex;align-items:center;gap:10px}\n#sb .av{flex:none;width:38px;height:42px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss);font-family:var(--display);font-weight:700;font-size:1.05rem;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}\n#sb .av.me{background:var(--soil-soft);color:var(--soil)}\n#sb .post .who b{display:block;font-size:.95rem;line-height:1.2}\n#sb .post .who span{font-size:.75rem;color:var(--muted)}\n#sb .post .who .kind{margin-left:auto;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--soil);text-align:right}\n#sb .post .body{font-size:.95rem;line-height:1.5;overflow-wrap:anywhere}\n#sb .post .body p{margin:0 0 6px}\n#sb .post .body .ql{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700;margin:6px 0 2px}\n#sb .post .body .ptext{font-size:.98rem}\n#sb .post .body h4{margin:8px 0 2px;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil)}\n#sb .post .more{background:none;border:0;padding:0;color:var(--moss);font-weight:700;font-size:.85rem;align-self:flex-start}\n#sb .post .acts{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:8px}\n#sb .react{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--moss);background:transparent;color:var(--moss);border-radius:999px;padding:6px 12px;font-weight:700;font-size:.85rem}\n#sb .react[aria-pressed=\"true\"]{background:var(--moss);color:var(--surface)}\n#sb .post .count{font-size:.78rem;color:var(--muted)}\n#sb .post .dots{margin-left:auto;background:none;border:0;color:var(--muted);font-size:.82rem;padding:4px 2px;text-decoration:underline;text-underline-offset:3px}\n#sb .post .who .kind .lang-tag{display:inline-block;border:1px solid currentColor;border-radius:4px;padding:0 4px;margin-right:4px;font-size:.62rem;opacity:.8}\n#sb .shared-tag{display:inline-block;background:var(--moss-soft);color:var(--moss);border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:700;margin-left:6px;vertical-align:middle}\n#sb .inspo{background:var(--moss-soft);border:0;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:6px;text-align:left}\n#sb .inspo .eyebrow{color:var(--moss)}\n#sb .inspo p{margin:0;font-family:var(--display);font-size:1.05rem;line-height:1.45}\n#sb .inspo span{font-size:.78rem;color:var(--muted)}\n#sb .chk{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line);font-size:.92rem;line-height:1.4}\n#sb .chk:first-child{border-top:0}\n#sb .chk input{width:20px;height:20px;margin-top:1px;accent-color:var(--moss);flex:none}\n#sb .chk .ql{display:block;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .sharebox{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}\n#sb .namebox{display:flex;align-items:center;gap:10px;background:var(--bg);border-radius:12px;padding:10px 12px}\n\/* bottom nav *\/\n#sb nav.bar{background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);align-items:end;padding:6px 4px calc(8px + env(safe-area-inset-bottom,0px))}\n#sb nav.bar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.7rem;font-weight:600;color:var(--muted);padding:4px 0}\n#sb nav.bar button[aria-current=\"page\"]{color:var(--moss)}\n#sb nav.bar .plant{margin-top:-26px}\n#sb nav.bar .plant .hexbtn{width:58px;height:62px;display:grid;place-items:center;background:var(--moss);color:var(--surface);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}\n#sb nav.bar .plant[aria-current=\"page\"] .hexbtn{background:var(--soil)}\n\/* uneltele zilei *\/\n#sb .unelte .uhead{display:flex;align-items:center;justify-content:space-between;gap:8px}\n#sb .unelte .lock{color:var(--muted)}\n#sb .tpair{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .tcard{perspective:900px;min-height:190px}\n#sb .tcard .in{display:grid;height:100%;transition:transform .7s cubic-bezier(.3,.7,.2,1);transform-style:preserve-3d}\n#sb .tcard.flipped .in{transform:rotateY(180deg)}\n#sb .tcard .face{grid-area:1\/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}\n#sb .tcard .back{background:var(--header);color:var(--on-header);align-items:center;justify-content:center;text-align:center;font-family:var(--display);font-size:.95rem;\n  background-image:radial-gradient(circle at 30% 20%,rgb(255 255 255 \/ .08),transparent 50%),repeating-linear-gradient(60deg,rgb(255 255 255 \/ .04) 0 2px,transparent 2px 12px)}\n#sb .tcard .back .hx{color:var(--on-header)}\n#sb .tcard .front{transform:rotateY(180deg);background:var(--ts);border:2px solid var(--tc);color:var(--ink)}\n#sb .tcard .th{display:flex;align-items:center;gap:8px;color:var(--ti)}\n#sb .tcard .th svg{color:var(--tc)}\n#sb .tcard .th svg{flex:none}\n#sb .tcard .set{display:block;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;font-weight:800;line-height:1.2}\n#sb .tcard .num{display:block;font-size:.72rem;color:var(--muted)}\n#sb .tcard .tt{margin:0;font-size:.9rem;line-height:1.45;overflow-wrap:anywhere}\n#sb .tcard .tt b{color:var(--ti);font-weight:650}\n#sb .tcard .sub{margin:0;font-size:.72rem;color:var(--muted);font-style:italic}\n#sb .tcard .ex{margin:0;font-size:.8rem;line-height:1.45;color:var(--muted)}\n#sb .prow small{display:block;font-weight:400;font-size:.78rem;color:var(--muted)}\n#sb .asteps .kl{margin:8px 0 4px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--moss)}\n#sb .asteps ul.kc{margin:0 0 8px;padding-left:18px;line-height:1.5}.asteps ul.kc li{margin:2px 0}\n#sb .kgroup{margin:4px 0 -8px;font-size:.78rem;letter-spacing:.12em;color:var(--soil)}\n#sb .kdom{display:flex;flex-direction:column;gap:12px}.kdom>div{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px}\n#sb .kdom b{font-family:var(--display);font-size:1.05rem}.kdom span{display:flex;gap:8px;align-items:center;font-size:.9rem}.kdom i{font-style:normal;flex:none;width:24px;height:26px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss);font-weight:700;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);font-size:.8rem}\n#sb .asteps .seed{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700}\n@media (max-width:380px){.tpair{grid-template-columns:1fr}}\n#sb .tsets{display:flex;gap:8px;flex-wrap:wrap}\n#sb .tsets span{color:var(--tc);opacity:.9}\n#sb .lockmsg{margin:0;font-weight:700;color:var(--soil);font-size:.9rem}\n#sb .unote{margin:6px 0 0;font-size:.88rem;white-space:pre-wrap;overflow-wrap:anywhere;border-left:3px solid var(--line);padding-left:8px}\n\/* profil *\/\n#sb .phead{display:flex;align-items:center;gap:14px}\n#sb .phead h2{font-size:1.4rem}\n#sb .stats.four{grid-template-columns:repeat(4,1fr)}\n#sb .stats.four .stat b{font-size:1.4rem}\n#sb .plist{padding:4px 16px;gap:0}\n#sb .prow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 0;border:0;border-bottom:1px solid var(--line);background:none;color:inherit;text-decoration:none;font-weight:600;width:100%;text-align:left}\n#sb .prow:last-child{border-bottom:0}\n#sb .prow .pv{color:var(--muted);font-weight:400;font-size:.85rem}\n#sb .avgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:6px 0 14px;border-bottom:1px solid var(--line)}\n#sb .avgrid button{background:none;border:2px solid transparent;border-radius:12px;padding:4px;display:grid;place-items:center}\n#sb .avgrid button[aria-pressed=\"true\"]{border-color:var(--moss);background:var(--moss-soft)}\n\/* introducere \u0219i despre *\/\n#sb .ovl{position:fixed;inset:0;z-index:2500;display:flex;justify-content:center;background:rgb(20 25 18 \/ .5)}\n#sb .ovl .slide{width:100%;max-width:560px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:32px 24px calc(28px + env(safe-area-inset-bottom,0px));text-align:center;position:relative;color:#1E2A17}\n#sb .ovl .slide h2{font-size:1.7rem}\n#sb .ovl .slide p{font-size:1.05rem;line-height:1.6;max-width:34ch;margin:0}\n#sb .ovl .x{position:absolute;top:14px;right:14px;border:0;background:rgb(255 255 255 \/ .6);border-radius:999px;width:36px;height:36px;font-size:1.2rem;color:#1E2A17}\n#sb .hexnum{width:64px;height:70px;display:grid;place-items:center;background:var(--moss);color:#fff;font-family:var(--display);font-size:2rem;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);flex:none}\n#sb .hexnum.sm{width:40px;height:44px;font-size:1.25rem}\n#sb .ovl .dots{display:flex;gap:8px}.ovl .dots span{width:8px;height:8px;border-radius:50%;background:rgb(0 0 0 \/ .2)}.ovl .dots span.on{background:var(--moss)}\n#sb .ovl .slide .btns{width:100%;max-width:340px}\n#sb .ovl .about{width:100%;max-width:560px;height:100%;background:var(--bg);display:flex;flex-direction:column}\n#sb .ovl .atop{display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--header);color:var(--on-header)}\n#sb .ovl .atop .x{position:static;background:rgb(255 255 255 \/ .15);color:var(--on-header)}\n#sb .asteps{flex:1;overflow-y:auto;padding:20px 16px 40px;display:flex;flex-direction:column;gap:22px}\n#sb .asteps section{display:flex;gap:14px;align-items:flex-start}\n#sb .asteps h3{margin:6px 0 6px}\n#sb .asteps p{margin:0 0 8px;line-height:1.55}\n@media print{\n  html,body{height:auto!important;overflow:visible!important;background:#fff!important}\n  .app,#sb{height:auto!important;max-width:none!important}\n  main{overflow:visible!important}\n  header.top,nav.bar,.btn,.btns,.breath,.next,.banner,.toast,.note,.link,.exp-row{display:none!important}\n  .card,.vow{border:0!important;break-inside:avoid}\n}\n@media (prefers-reduced-motion: reduce){*{transition:none!important}}\n\/* Aspect identic cu Detox 21 (func\u021bioneaz\u0103 \u00een aplica\u021bia de telefon): \u00een\u0103l\u021bime fix\u0103, zona din mijloc se deruleaz\u0103, meniul jos *\/\n#sb{display:flex!important;flex-direction:column;height:100vh!important;height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;overflow:hidden;margin-top:0!important}\nbody.admin-bar #sb{height:calc(100vh - 46px)!important;height:calc(100dvh - 46px)!important}\n@media (min-width:783px){body.admin-bar #sb{height:calc(100vh - 32px)!important;height:calc(100dvh - 32px)!important}}\n#sb header.top{flex:none}\n#sb main{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb nav.bar{position:relative;flex:none;z-index:1000}\n\/* Aplica\u021bia de telefon \u00eencarc\u0103 Framework7, care are reguli pentru .view \u0219i .card; le anul\u0103m aici *\/\n#sb .view{position:static!important;height:auto!important;overflow:visible!important;z-index:auto!important;width:auto!important}\n#sb .card{margin:0!important;box-shadow:none!important}\n#sb .chip{height:auto!important;line-height:1.3!important;font-weight:inherit;color:inherit}\n#sb .chip[aria-pressed=\"true\"]{color:var(--surface)!important}\n<\/style><div class=\"app\" id=\"sb\" translate=\"no\" data-no-translation>\n  <header class=\"top\">\n    <div class=\"brand\">\n      <svg width=\"34\" height=\"38\" viewBox=\"0 0 34 38\" aria-hidden=\"true\"><path d=\"M17 2 32 10.5v17L17 36 2 27.5v-17Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><path d=\"M17 28V17M17 20c0-4-3-6-7-6 0 4 3 6 7 6ZM17 17c0-4 3-6.5 7-6.5 0 4-3 6.5-7 6.5Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><path d=\"M10 28h14\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-dasharray=\"1 3\"\/><circle class=\"seed\" cx=\"17\" cy=\"29.6\" r=\"1.7\"\/><\/svg>\n      <div><small>Dorela Iepan<\/small><h1 id=\"appName\">Good Seeds<\/h1><\/div>\n    <\/div>\n    <div class=\"hd-actions\">\n      <button class=\"langbtn\" id=\"langBtn\" type=\"button\" aria-haspopup=\"dialog\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M3 12h18M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z\"\/><\/svg><span id=\"langCode\">EN<\/span><\/button>\n      <a class=\"sbback external\" id=\"backLink\" href=\"#\" target=\"_top\">My courses<\/a>\n    <\/div>\n  <\/header>\n  <main id=\"main\"><\/main>\n  <nav class=\"bar\" id=\"nav\">\n    <button data-tab=\"azi\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M4 11 12 4l8 7v9h-5v-6H9v6H4Z\"\/><\/svg><span data-i=\"navToday\"><\/span><\/button>\n    <button data-tab=\"jurnal\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M6 3.5h11a1.5 1.5 0 0 1 1.5 1.5v15H7.5A2 2 0 0 1 5.5 18V4a.5.5 0 0 1 .5-.5Z\"\/><path d=\"M5.5 18a2 2 0 0 1 2-2h11M9 7.5h6M9 10.5h4\"\/><\/svg><span data-i=\"navJournal\"><\/span><\/button>\n    <button data-tab=\"practica\" class=\"plant\"><span class=\"hexbtn\"><svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"><path d=\"M12 3c3 3.5 5 6.5 5 10a5 5 0 0 1-10 0c0-3.5 2-6.5 5-10Z\"\/><path d=\"M12 10c1.5 1.8 2.2 3.2 2.2 4.6a2.2 2.2 0 0 1-4.4 0c0-1.4.7-2.8 2.2-4.6Z\"\/><\/svg><\/span><span data-i=\"navPractice\"><\/span><\/button>\n    <button data-tab=\"todo\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"3.5\" width=\"16\" height=\"17\" rx=\"2.5\"\/><path d=\"m8 9 1.5 1.5L12.5 7.5M8 15.5l1.5 1.5 3-3M15 9.5h1.5M15 16h1.5\"\/><\/svg><span data-i=\"navTodo\"><\/span><\/button>\n    <button data-tab=\"profil\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M12 2.8 19.8 7.3v9.4L12 21.2 4.2 16.7V7.3Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.6\"\/><path d=\"M7.6 16.6c.9-2 2.5-3 4.4-3s3.5 1 4.4 3\"\/><\/svg><span data-i=\"navProfile\"><\/span><\/button>\n  <\/nav>\n<\/div><script>window.GRADINA_CONFIG={\"api\": null, \"coursesUrl\": \"https:\/\/dorelaiepan.com\/my-courses\/\", \"loginGate\": true, \"loginUrl\": \"https:\/\/dorelaiepan.com\/membership-profile\/?redirect_to=https:\/\/dorelaiepan.com\/good-seeds\/\", \"registerUrl\": null, \"subsUrl\": \"https:\/\/dorelaiepan.com\/membership-account\/subscriptions\/\", \"pageLang\": true};window.GRADINA_CONFIG.api=window.SB_API||null;(function(){var b=atob(\"Ci8qID09PT09PT09PT09PSBDb25maWcgKGZpbGxlZCBpbiB3aGVuIHB1Ymxpc2hlZCBvbiB0aGUgc2l0ZSkgPT09PT09PT09PT09ICovCmNvbnN0IENPTkZJRyA9IHdpbmRvdy5HUkFESU5BX0NPTkZJRyB8fCB7CiAgYXBpOiBudWxsLAogIGNvdXJzZXNVcmw6ICdodHRwczovL3d3dy5kb3JlbGFpZXBhbi5jb20vJywKICBzdWJzVXJsOiAnaHR0cHM6Ly9kb3JlbGFpZXBhbi5jb20vbWVtYmVyc2hpcC1hY2NvdW50L3N1YnNjcmlwdGlvbnMvJywKICBsb2dpbkdhdGU6IGZhbHNlLCBsb2dpblVybDogbnVsbCwgcmVnaXN0ZXJVcmw6IG51bGwKfTsKCi8qID09PT09PT09PT09PSBMYW5ndWFnZXMgPT09PT09PT09PT09CiAgIEFsbCBpbnRlcmZhY2UgdGV4dCBsaXZlcyBpbiBVSVtsYW5nXTsgYWxsIHByYWN0aWNlIHRleHRzICh2b3dzLCA0IHBvd2VycykgaW4gVFhbbGFuZ10uCiAgIFdoYXQgdGhlIHBlcnNvbiB3cml0ZXMgaXMgc3RvcmVkIG9uY2UsIHVudHJhbnNsYXRlZCwgc28gc3dpdGNoaW5nIGxhbmd1YWdlIG5ldmVyIGxvc2VzIGFueXRoaW5nOgogICBvbmx5IHRoZSBzdXJyb3VuZGluZyB0ZXh0cyBjaGFuZ2UuIEJhc2UgdGhlbWVzIGFyZSBzdG9yZWQgYXMga2V5cyAoQG1vbmV5KSBhbmQgc2hvd24gdHJhbnNsYXRlZC4gKi8KY29uc3QgTEFOR1MgPSBbIFsnZW4nLCdFbmdsaXNoJywnRU4nXSwgWydmcicsJ0ZyYW7Dp2FpcycsJ0ZSJ10sIFsnaXQnLCdJdGFsaWFubycsJ0lUJ10sIFsncm8nLCdSb23Dom7EgycsJ1JPJ10gXTsKY29uc3QgUkVBRFkgPSBbJ2VuJywnZnInLCdpdCcsJ3JvJ107CmNvbnN0IE5FRURTX0dFTkRFUiA9IFsnZnInLCdpdCcsJ3JvJ107ICAgICAvLyBFbmdsaXNoIGhhcyBubyBncmFtbWF0aWNhbCBnZW5kZXIsIHNvIHdlIGRvbid0IGFzawpjb25zdCBMT0NBTEUgPSB7IGVuOidlbi1HQicsIGZyOidmci1GUicsIGl0OidpdC1JVCcsIHJvOidyby1STycgfTsKCmNvbnN0IFVJID0geyBlbjp7CiAgYXBwTmFtZTonR29vZCBTZWVkcycsIGNvdXJzZXM6J015IGNvdXJzZXMnLCBsYW5ndWFnZTonTGFuZ3VhZ2UnLCBzb29uOidjb21pbmcgc29vbicsIGNsb3NlOidDbG9zZScsCiAgbmF2VG9kYXk6J1RvZGF5JywgbmF2Sm95OidKb3knLCBuYXZQcmFjdGljZTonUHJhY3RpY2UnLCBuYXZUb2RvOidUbyBEbycsIG5hdlBvd2VyczonNCBQb3dlcnMnLCBtZW51OidNZW51JywKICBzYXZlRmFpbDoiQ291bGRuJ3Qgc2F2ZS4gQ2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uLiIsIGxvYWRGYWlsOiJDb3VsZG4ndCBsb2FkIHlvdXIgZGF0YS4iLAogIHRvZGF5OidUb2RheScsIHllc3RlcmRheTonWWVzdGVyZGF5JywKICBraW5kOnsgbWVkaXRhdGllOidNZWRpdGF0aW9uJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J0pveSBtZWRpdGF0aW9uJywgcmVjdW5vc3RpbnRlOidHcmF0aXR1ZGUgJiBzdWNjZXNzZXMnLCBwdXRlcmk6J1RoZSA0IHBvd2VycycgfSwKICB0ZXN0QmFubmVyOidUZXN0IHZlcnNpb246IHlvdXIgZW50cmllcyBhcmUga2VwdCBvbmx5IG9uIHRoaXMgZGV2aWNlLiBPbiB0aGUgc2l0ZSB0aGV5IHdpbGwgYmUgc2F2ZWQgdG8geW91ciBhY2NvdW50LicsCiAgZ2VuUTonSG93IHdvdWxkIHlvdSBsaWtlIG1lIHRvIGFkZHJlc3MgeW91PycsIGdlbk5vdGU6J1NvIHRoZSB0ZXh0cyBzb3VuZCBuYXR1cmFsLicsIGZlbTonRmVtaW5pbmUnLCBtYXNjOidNYXNjdWxpbmUnLAogIGdlbkZvb3Q6Zz0+YEFkZHJlc3NpbmcgeW91IGluIHRoZSAke2c9PT0nbSc\/J21hc2N1bGluZSc6J2ZlbWluaW5lJ31gLCBjaGFuZ2U6J2NoYW5nZScsCiAgaGVhZGxpbmU6J1doYXQgYXJlIHlvdSBwbGFudGluZyB0b2RheT8nLCBzdHJlYWs6J2RheXMgaW4gYSByb3cnLCBtaW5Ub2RheTonbWludXRlcyB0b2RheScsIHByYWN0VG9kYXk6J3ByYWN0aWNlcyB0b2RheScsIG5Ub2RheTpuPT5gJHtufSB0b2RheWAsCiAgdGlsZU1lZDonTWVkaXRhdGlvbiAvIFlvZ2EnLCB0aWxlUmVjOidHcmF0aXR1ZGUgLyBTdWNjZXNzZXMnLCB0aWxlSm95OidKb3kgbWVkaXRhdGlvbicsIHRpbGVQb3c6J1RoZSA0IHBvd2VycycsCiAgam91cm5hbDonTXkgam91cm5hbCcsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J2VudHJ5JzonZW50cmllcyd9YCwKICBqb3lUaXRsZTonSm95IG1lZGl0YXRpb24nLCBqb3lMZWFkOidGaWxsIGluIHRoZSB0aHJlZSBhbnN3ZXJzLCB0aGVuIHNhdmUuJywgYnJlYXRoZUN1ZTonQnJlYXRoZSBpbiBhbmQgb3V0IGRlZXBseSAzIHRpbWVzJywgYnJlYXRoZUJ0bjonQnJlYXRoZSB3aXRoIG1lJywKICBhZGRIZWxwVG9kbzonKyBBZGQgdG8gVG8gRG86IHdobyBJIGhlbHAnLCBuZXdKb3k6J0EgbmV3IGpveSBtZWRpdGF0aW9uJywgc2F2ZTonU2F2ZScsCiAgcGlja1ByZXY6bj0+YENob29zZSBhIHByZXZpb3VzIGdvYWwgKCR7bn0pYCwgbXlHb2FsczonTXkgZ29hbHMnLCBzZWFyY2hHb2FsczonU2VhcmNoIG15IGdvYWxzJywgbm9Hb2FsOidObyBnb2FsIGZvdW5kLicsIG5ld0dvYWxQaDonb3Igd3JpdGUgYSBuZXcgZ29hbCcsCiAgYWRkVG9kbzonKyBBZGQgdG8gVG8gRG8nLCBhZGRlZFRvZG86J+KckyBBZGRlZCB0byBUbyBEbycsIHRvYXN0QWRkZWQ6J0FkZGVkIHRvIFRvIERvJywgZmlsbEFuc3dlcnM6J0ZpbGwgaW4gdGhlIGFuc3dlcnMuJywKICBpbmhhbGU6J0JyZWF0aGUgaW7igKYnLCBleGhhbGU6J0JyZWF0aGUgb3V04oCmJywgYWdhaW46J09uY2UgbW9yZScsIGRvbmVCcmVhdGhQOidZb3UgaGF2ZSBwcmFjdGlzZWQgdG8gZGVhY3RpdmF0ZSB0aGUgc2VlZC4nLCBkb25lQnJlYXRoSjonVGhlIHNlZWQgaGFzIGJlZW4gd2F0ZXJlZC4nLAogIHBvd1RpdGxlOidUaGUgNCBwb3dlcnMnLCBwb3dMZWFkOidDaG9vc2UgdGhlIHRoZW1lIGFuZCB3aGVyZSB5b3Ugc3RhcnQgZnJvbSwgZmlsbCBpbiBlYWNoIHBvd2VyLCB0aGVuIHNhdmUuJywgdGhlbWU6J1RIRU1FJywgdGhlbWVBcmlhOidUaGVtZScsCiAgZmV3ZXI6J1Nob3cgZmV3ZXInLCBhbGxUaGVtZXM6bj0+YEFsbCB0aGVtZXMgKCR7bn0pYCwgbmV3VGhlbWVQaDonb3IgYWRkIGEgbmV3IHRoZW1lJywgYWRkOidBZGQnLCBzdGFydDonV0hFUkUgWU9VIFNUQVJUIEZST00nLAogIHdoZW46J1doZW4nLCB6VG9kYXk6J1RvZGF5JywgelRvbW9ycm93OidUb21vcnJvdycsIGhvd0xvbmc6J0hvdyBsb25nJywKICBwNG5vdGU6J0FmdGVyIHNhdmluZywgeW91ciBwcm9taXNlIGdvZXMgdG8geW91ciBUbyBEbyBsaXN0IGF1dG9tYXRpY2FsbHkuJywgZmlsbFBvd2VyczonRmlsbCBpbiB0aGUgcG93ZXJzLicsIGV4cG9ydExpbms6J0V4cG9ydCB5b3VyIHByYWN0aWNlcyBmb3IgYSBwZXJpb2QnLAogIGluVG9kbzonV2hhdCB5b3UgcHJvbWlzZWQgaW4gdGhlIDR0aCBwb3dlciBpcyBpbiB5b3VyIFRvIERvIGxpc3QuJywgY29weTonQ29weSB0ZXh0JywgcGRmOidTYXZlIFBERicsCiAgZG9Kb3lOb3c6J0RvIHRoZSBqb3kgbWVkaXRhdGlvbiBub3cnLCBnb0pveTonR28gdG8gdGhlIGpveSBtZWRpdGF0aW9uJywgbmV3UG93ZXJzOidTdGFydCBhIG5ldyA0IFBvd2VycyBleGVyY2lzZScsCiAgY29waWVkOidUZXh0IGNvcGllZC4gWW91IGNhbiBwYXN0ZSBpdCBhbnl3aGVyZS4nLCBjb3B5RmFpbDoiQ291bGRuJ3QgY29weSBvbiB0aGlzIGRldmljZS4iLAogIGJhY2s6J+KAuSBCYWNrJywgZXhwVGl0bGU6J0V4cG9ydCB5b3VyIHByYWN0aWNlcycsIGV4cExlYWQ6J0Nob29zZSB0aGUgcGVyaW9kLiBZb3UgY2FuIGNvcHkgdGhlIHRleHQgb3Igc2F2ZSBpdCBhcyBhIFBERi4nLCBmcm9tOidGUk9NJywgdG86J1RPJywKICBuUHJhY3Q6bj0+YCR7bn0gJHtuPT09MT8ncHJhY3RpY2UnOidwcmFjdGljZXMnfSBpbiB0aGlzIHBlcmlvZC5gLCBub1ByYWN0OidZb3UgaGF2ZSBubyA0IHBvd2VycyBwcmFjdGljZXMgaW4gdGhpcyBwZXJpb2QuJywKICByZWNUaXRsZTonR3JhdGl0dWRlIC8gU3VjY2Vzc2VzJywgcmVjTGVhZDonV3JpdGUgYXMgbWFueSBhcyB5b3UgbGlrZS4gRWFjaCBsaW5lIGlzIGEgZ3JhdGl0dWRlIG9yIGEgc3VjY2Vzcy4nLAogIGdyYXRpdHVkZTonR3JhdGl0dWRlJywgc3VjY2VzczonU3VjY2VzcycsIHJvd1R5cGU6aT0+YFR5cGUgb2YgbGluZSAke2l9YCwgZGVsUm93OidEZWxldGUgbGluZScsIHJlbW92ZTonUmVtb3ZlJywgc3VjY2Vzc1BoOid3aGF0IEkgZGlkIHRvZGF5JywKICBhZGRSb3c6JysgQWRkIGFub3RoZXIgbGluZScsIHdyaXRlT25lOidXcml0ZSBhdCBsZWFzdCBvbmUgbGluZS4nLCBzYXZlZEo6J1NhdmVkIHRvIHlvdXIgam91cm5hbCcsCiAgcHJlRzooKT0+IkknbSBncmF0ZWZ1bCBmb3IiLCBwcmVTOigpPT4iSSdtIGhhcHB5IGFib3V0IiwKICBuUmVjOihucixucyk9Pltucj9ucisobnI9PT0xPycgZ3JhdGl0dWRlJzonIGdyYXRpdHVkZXMnKTonJywgbnM\/bnMrKG5zPT09MT8nIHN1Y2Nlc3MnOicgc3VjY2Vzc2VzJyk6JyddLmZpbHRlcihCb29sZWFuKS5qb2luKCcgwrcgJyksCiAgdG9kb1RpdGxlOidUbyBEbycsIHRvZG9MZWFkOidXaGF0IEkgbmVlZCB0byBkbyBzbyB0aGUgc2VlZHMgY2FuIGdyb3cuJywgdG9kb1BoOidBZGQgc29tZXRoaW5nIHRvIGRvJywKICBtYXJrRG9uZTonTWFyayBhcyBkb25lJywgbWFya1VuZG9uZTonTWFyayBhcyBub3QgZG9uZScsIGRlbDonRGVsZXRlJywgbm86J05vJywKICB0b2RvRW1wdHk6J05vdGhpbmcgdG8gZG8gcmlnaHQgbm93Ljxicj5XaGF0IHlvdSB3cml0ZSB1bmRlciDigJx3aG8gSSBoZWxw4oCdIGluIHRoZSBqb3kgbWVkaXRhdGlvbiBhbmQgaW4gdGhlIDR0aCBwb3dlciBjYW4gbGFuZCBoZXJlLicsCiAgc2hvd0RvbmU6KHMsbik9PmAke3M\/J0hpZGUnOidTaG93J30gd2hhdCBJJ3ZlIGRvbmUgKCR7bn0pYCwgc3JjOntidWN1cmllOidKb3kgbWVkaXRhdGlvbicscHV0ZXJpOidUaGUgNCBwb3dlcnMnLG1hbnVhbDonQWRkZWQgYnkgbWUnfSwgZG9uZVRvYXN0OidEb25lLiBXZWxsIGRvbmUhJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nVG9tb3Jyb3cgSSBwcm9taXNlIHRvJzonVG9kYXkgSSBwcm9taXNlIHRvJywKICBraW5kQXJpYTonVHlwZSBvZiBwcmFjdGljZScsIGRvbmVIOidEb25lLiBUaGUgc2VlZCBpcyBwbGFudGVkLicsIGRvbmVOb3RlOihrLG0pPT5gJHtrfSwgJHttfSBtaW4uIFNhdmVkIHRvIHlvdXIgam91cm5hbC5gLAogIHRpdGxlT3B0OidUaXRsZSAob3B0aW9uYWwpJywgcGhNb3JuaW5nOidlLmcuIE1vcm5pbmcgbWVkaXRhdGlvbicsIGFub3RoZXI6J0Fub3RoZXIgcHJhY3RpY2UnLAogIHN0b3BwZWRBZnRlcjptPT5gWW91IHN0b3BwZWQgYWZ0ZXIgJHttfSBtaW4uYCwgd2FudFNhdmU6J1NoYWxsIEkgYWRkIGl0IHRvIHlvdXIgam91cm5hbD8nLCBzYXZlTWluOm09PmBTYXZlICR7bX0gbWluYCwgZG9udFNhdmU6IkRvbid0IHNhdmUiLAogIHN0b3BwZWQ6J1RoZSBwcmFjdGljZSB3YXMgc3RvcHBlZC4nLCBiYWNrUGxhaW46J0JhY2snLCByZXN1bWU6J0NvbnRpbnVlJywgcGF1c2U6J1BhdXNlJywgc3RvcDonU3RvcCcsCiAgc2NyZWVuTm90ZToiS2VlcCB5b3VyIHNjcmVlbiBvbi4gSWYgeW91ciBwaG9uZSBsb2NrcywgdGhlIGZpbmFsIGJlbGwgbWF5IG5vdCByaW5nLCBidXQgdGhlIHByYWN0aWNlIGlzIHNhdmVkIHdoZW4geW91IGNvbWUgYmFjay4iLAogIGR1cmF0aW9uOidEVVJBVElPTicsIHByZXA6J1BSRVBBUkFUSU9OJywgc291bmQ6J1NPVU5EJywgYmVsbDonQmVsbCcsIGJvd2w6J1RpYmV0YW4gYm93bCcsIGxpc3RlbjonTGlzdGVuJywgdGl0bGVDYXA6J1RJVExFIChPUFRJT05BTCknLCBwaFNpbGVuY2U6J2UuZy4gNSBtaW51dGVzIG9mIHNpbGVuY2UnLAogIGJlZ2luOidCZWdpbicsIG1hbnVhbExpbms6J0kgcHJhY3Rpc2VkIHdpdGhvdXQgdGhlIHRpbWVyLCBJIGp1c3Qgd2FudCB0byBsb2cgaXQnLCBub1RpbWVyOidXaXRob3V0IHRoZSB0aW1lcicsIGxvZ1ByYWN0OidMb2cgYSBwcmFjdGljZScsIGRheTonREFZJywKICBwaEV2ZW5pbmc6J2UuZy4gRXZlbmluZyB5b2dhJywgc2F2ZUpvdXJuYWw6J1NhdmUgdG8gam91cm5hbCcsIGNhbmNlbDonQ2FuY2VsJywgbG9nZ2VkOidsb2dnZWQnLAogIHJlYWR5OidSZWFkeSB0byBiZWdpbicsIHByZXBQaGFzZTonUHJlcGFyYXRpb24nLCBiZWxsU3RhcnQ6J1RoZSBiZWxsIHJpbmdzIGF0IHRoZSBzdGFydCcsIG9mOidvZiAnLCBwYXVzZWQ6J1BhdXNlZCcsIHByZXNzQ29udDonUHJlc3MgQ29udGludWUnLAogIHBsdXNQcmVwOmw9PmArICR7bH0gcHJlcGFyYXRpb25gLCBub1ByZXA6J25vIHByZXBhcmF0aW9uJywgbm9uZTonTm9uZScsIHVuaXRNaW46J21pbicsIHVuaXRTZWM6J3NlYycsCiAgYWxsOidBbGwnLCBuUHJhY3RpY2VzOm49PmAke259ICR7bj09PTE\/J3ByYWN0aWNlJzoncHJhY3RpY2VzJ31gLCB0b3RNaW46bT0+YCDCtyAke219IG1pbnV0ZXMgaW4gdG90YWxgLAogIGpFbXB0eTonTm8gc2VlZHMgaGVyZSB5ZXQuPGJyPk1lZGl0YXRlIG9yIGxvZyBhIHByYWN0aWNlIGFuZCBpdCB3aWxsIHNob3cgdXAgaW4geW91ciBqb3VybmFsLicsIGdvUHJhY3RpY2U6J0dvIHRvIHByYWN0aWNlJywKICBkZWxROidEZWxldGUgdGhpcyBwcmFjdGljZT8nLCBkZWxldGVkOidEZWxldGVkJywKICBnYXRlTGVhZDonVGhlIGFwcCBpcyBmcmVlLiBTaWduIGluIHNvIHlvdXIgZW50cmllcyBzdGF5IHNhdmVkLicsIHNpZ25JbjonU2lnbiBpbicsIHJlZ2lzdGVyOiJEb24ndCBoYXZlIGFuIGFjY291bnQ\/IENyZWF0ZSBvbmUgZm9yIGZyZWUiCn19OwoKY29uc3QgVFggPSB7IGVuOnsKICB2b3dKb3k6WwogICAgJ0kgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2UgbXkgcmVhbGl0eSBpcyBkaWN0YXRlZCBieSB0aGUgc2VlZHMgSSBwbGFudCwgd2hpY2ggYXJlIHByb2plY3RlZCBvbnRvIHRoZSBlbXB0aW5lc3Mgb2YgYSByZWFsaXR5IHRoYXQgZG9lcyBub3QgY29tZSBmcm9tIGl0cyBvd24gc2lkZS4nLAogICAgJ0JlY2F1c2UgSSBoYXZlIHBsYW50ZWQgdGhlc2Ugc2VlZHMsIHdoaWNoIEkgYW0gbm93IGFsc28gd2F0ZXJpbmcsIEkgd2lsbCBzdWNjZWVkLicsCiAgICAnQmVjYXVzZSBJIHN1Y2NlZWQgdXNpbmcgdGhpcyBzeXN0ZW0sIHNvbWUgb2YgbXkgZnJpZW5kcyBhbmQgYWNxdWFpbnRhbmNlcyB3aWxsIGNvcHkgbWUgYW5kIHN1Y2NlZWQgaW4gdHVybi4gQmVjYXVzZSB0aGV5IHN1Y2NlZWQgdXNpbmcgdGhpcyBzeXN0ZW0sIHRoZWlyIGZyaWVuZHMgYW5kIGFjcXVhaW50YW5jZXMgd2lsbCBjb3B5IHRoZW0gaW4gdHVybi4nLAogICAgJ0luIHRoaXMgd2F5LCB0aHJvdWdoIG15IGV4YW1wbGUsIEkgc2V0IG9mZiBhIGNoYWluIHJlYWN0aW9uIHRoYXQgaW5zcGlyZXMgdGhvdXNhbmRzIGFuZCB0aG91c2FuZHMgb2YgcGVvcGxlIHRvIHVzZSB0aGlzIHN5c3RlbSBhbmQgc3VjY2VlZC4nXSwKICB2b3dKb3lMYXN0OidXaGljaCB3aWxsIG1ha2UgdGhlIHdvcmxkIGEgYmV0dGVyIGFuZCBtb3JlIGJlYXV0aWZ1bCBwbGFjZS4nLAogIHFKb3k6eyBvYmllY3RpdjonVGhlIGdvYWwgSSBkZWRpY2F0ZSB0aGlzIGpveSBtZWRpdGF0aW9uIHRvJywgc2VtaW50ZTonV2hhdCBzZWVkcyBJIGhhdmUgcGxhbnRlZCcsCiAgICAgICAgIGFqdXRvcjonV2hvIGRvIEkgaW50ZW5kIHRvIGhlbHAgZm9yIDEgaG91ciBhIHdlZWs\/IFdoZW4gZG8gSSB3YW50IHRvIGRvIGl0PyBXaGF0IHdpbGwgSSBkbyBmb3IgdGhpcyBwZXJzb24\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG93ZXIgMScsJ1JlbWVtYmVyaW5nIHRoZSBwZW4nXSwgcDI6WydQb3dlciAyJywnSW50ZWxsaWdlbnQgcmVncmV0J10sIHAzOlsnUG93ZXIgMycsJ1Jlc3RyYWludCddLCBwNDpbJ1Bvd2VyIDQnLCdUaGUgYW50aWRvdGUnXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0kgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2UgcmVhbGl0eSBpcyBkaWN0YXRlZCBieSB0aGUgc2VlZHMgSSBwbGFudCBhbmQgaXMgcHJvamVjdGVkIG9udG8gdGhlIGVtcHRpbmVzcyBvZiBhIHJlYWxpdHkgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gaXRzIG93biBzaWRlLicsCiAgICAnSWYgSSBwbGFudCBwb3NpdGl2ZSBzZWVkcywgSSBhbSBmb3JjZWQgdG8gcGVyY2VpdmUgYSBwb3NpdGl2ZSByZWFsaXR5LCBldmVuIGlmIHRoZSBwZW9wbGUgYXJvdW5kIG1lIHBlcmNlaXZlIGl0IGFzIG5lZ2F0aXZlLiBJZiBJIHBsYW50IG5lZ2F0aXZlIHNlZWRzLCBJIGFtIGZvcmNlZCB0byBwZXJjZWl2ZSBhIHJlYWxpdHkgdGhhdCBpcyB1bmZhdm91cmFibGUgdG8gbWUsIGV2ZW4gaWYgdGhlIHBlb3BsZSBhcm91bmQgbWUgcGVyY2VpdmUgaXQgYXMgcG9zaXRpdmUuJywKICAgICdTbyBJIGNob29zZSB0byBwbGFudCBwb3NpdGl2ZSBzZWVkcy4nLAogICAgJ0JlY2F1c2UgSSBzdWNjZWVkIHVzaW5nIHRoaXMgc3lzdGVtLCBzb21lIG9mIG15IGZyaWVuZHMgYW5kIGFjcXVhaW50YW5jZXMgd2lsbCBjb3B5IG1lIGFuZCBzdWNjZWVkIGluIHR1cm4uIEJlY2F1c2UgdGhleSBzdWNjZWVkLCB0aGVpciBmcmllbmRzIGFuZCBhY3F1YWludGFuY2VzIHdpbGwgY29weSB0aGVtIGFuZCBzdWNjZWVkLiddLAogIHZvd1Bvd0xhc3Q6J0luIHRoaXMgd2F5LCB0aGUgd29ybGQgYmVjb21lcyBhIGJldHRlciBhbmQgbW9yZSBiZWF1dGlmdWwgcGxhY2UuJywKICBwb3dIZWFkOidUSEUgNCBQT1dFUlMnLCBwb3dIZWFkQ2FzZTonVGhlIDQgcG93ZXJzJywKICB0aGVtZXM6eyAnQG1vbmV5JzonTW9uZXknLCAnQHJlbGF0aW9uc2hpcHMnOidSZWxhdGlvbnNoaXBzJywgJ0BoZWFsdGgnOidIZWFsdGgnIH0sCiAgZHVyOlsnNSBzZWNvbmRzJywnMSBtaW51dGUnLCc1IG1pbnV0ZXMnLCcxMCBtaW51dGVzJywnMSBob3VyJywndGhlIHdob2xlIGRheSddLAogIC8qIGNoaXBzIHVuZGVyIFBvd2VyIDM6ICJmb3IgYXQgbGVhc3QgWCIgaXMgYWRkZWQgdG8gKG9yIHJlcGxhY2VzIHRoZSBlbmQgb2YpIHdoYXQgdGhlIHBlcnNvbiB3cm90ZSAqLwogIGR1ckFwcGVuZDpkPT5kPT09J3RoZSB3aG9sZSBkYXknPydmb3IgdGhlIHdob2xlIGRheSc6J2ZvciBhdCBsZWFzdCAnK2QsCiAgZHVyU3RyaXA6L1xzKihmb3JccyspPyhhdCBsZWFzdFxzKyk\/KDUgc2Vjb25kc3wxIG1pbnV0ZXw1IG1pbnV0ZXN8MTAgbWludXRlc3wxIGhvdXJ8dGhlIHdob2xlIGRheSlccyokL2ksCiAgbGVhZDovXnRvXHMrL2ksICAgLy8gInRvIGNhbGwgbXkgbW90aGVyIiAtPiAiY2FsbCBteSBtb3RoZXIiIGFmdGVyICJJIHByb21pc2UgdG8iCiAgemk6ej0+ej09PSdtYWluZSc\/J3RvbW9ycm93JzondG9kYXknLAogIHRhaWxQMToiQW5kIHBlcmhhcHMgSSBkb24ndCBldmVuIGtub3cgeWV0IHdoYXQgb3RoZXIgc2VlZHMgSSBoYXZlIHBsYW50ZWQsIHN1cmVseSBtYW55IG90aGVycyB0aGF0IEkgZG9uJ3QgcmVtZW1iZXIgbm93LiBXaGF0ZXZlciBJIG1heSBoYXZlIHRob3VnaHQsIHNhaWQgb3IgZG9uZSwgSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlc2Ugc2VlZHMgbm93LiIsCiAgdGFpbFAyOiJJIGhhdmUgaHVydCBteXNlbGYgYW5kIHRoZSBwZW9wbGUgYXJvdW5kIG1lLiBJIGFtIHNvcnJ5LCBhbmQgSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlc2Ugc2VlZHMgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwgYWxvbmcgd2l0aCBhbGwgdGhlIGNoYWlucyBvZiBldmVudHMgdGhhdCBmb2xsb3cgZnJvbSB0aGVtLCBiZWNhdXNlIEkgbm93IHVuZGVyc3RhbmQgdGhhdCB0aGV5IGRvdWJsZSBldmVyeSAyNCBob3VycywgYW5kIHRoZSBzb29uZXIgSSBkZWFjdGl2YXRlIHRoZW0sIHRoZSBiZXR0ZXIhIiwKICBuaWdodDonQW5kIHRvbmlnaHQsIGNvbnNjaW91c2x5LCBmcm9tIHRoZSBtb21lbnQgSSBsYXkgbXkgaGVhZCBvbiB0aGUgcGlsbG93IGFuZCBmYWxsIGFzbGVlcCB1bnRpbCBJIHdha2UgdXAgaW4gdGhlIG1vcm5pbmcuJywKICBzdGQ6ewogICAgcDI6eyBmb3JtOigpPT5bWyd0JywnV2hhdCBiZW5lZml0cyBJIGhhdmUgaGFkJ10sWydwMicsJ21hdGVyaWFsIG9yIGVnbyBiZW5lZml0cyddXSwKICAgICAgICAgcmVjYXA6ZT0+YFdpdGggdGhlIGxldmVsIG9mIGF3YXJlbmVzcyBJIGhhZCBpbiB0aGUgeWVhcnMgd2hlbiBJIHRob3VnaHQgLyBzYWlkIC8gZGlkIHRoZXNlIHRoaW5ncywgdGhhdCB3YXMgYWxsIEkga25ldyBob3cgdG8gZG8uIEkgY2VydGFpbmx5IGhhZCBtYXRlcmlhbCBvciBlZ28gYmVuZWZpdHM6ICR7bWsoZS5wMil9LiBBbmQgcGVyaGFwcyBJIGFsc28gaGFkIG90aGVyIGJlbmVmaXRzIHRoYXQgSSBkb24ndCByZW1lbWJlciBub3cuIEkgbm93IHJlYWxpc2UgdGhhdCBJIGhhdmUgcGFpZCwgYW5kIGFtIHN0aWxsIHBheWluZywgZmFyIHRvbyBoaWdoIGEgcHJpY2UgZm9yIGFsbCB0aGVzZSBiZW5lZml0cy4gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICBwMzp7IGZvcm06KCk9PltbJ3QnLCdJIHByb21pc2XigKYnXSxbJ3AzJywnd2hhdCBJIHByb21pc2Ugbm90IHRvIGRvIGFueW1vcmUsIGFuZCBmb3IgaG93IGxvbmcsIGUuZy46IG5vdCB0byDigKYgZm9yIGF0IGxlYXN0IDEgbWludXRlJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBJIHByb21pc2UgJHttayhlLnAzKX0uICR7dHgoKS5uaWdodH1gIH0sCiAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgJHtwRHJhZnQuemk9PT0nbWFpbmUnPydUb21vcnJvdyc6J1RvZGF5J30gSSBwcm9taXNlIHRv4oCmYF0sWydwNCcsJ3doYXQgSSB3aWxsIGRvLCBhcyB0aGUgc2VlZCBvcHBvc2l0ZSB0byB0aGUgb25lIEkgd2FudCB0byBkZWFjdGl2YXRlJ11dLAogICAgICAgICByZWNhcDplPT5gQXMgYSBjb21wZW5zYXRpbmcgZ2VzdHVyZSwgSSBkZWRpY2F0ZSB0aGUgZmFjdCB0aGF0IEkgbm93IHVuZGVyc3RhbmQgdGhhdCB0aGUgcmVhbGl0eSBJIGV4cGVyaWVuY2UgY29tZXMgZnJvbSB0aGUgc2VlZHMgSSBwbGFudGVkIGluIHRoZSBwYXN0LCB3aGljaCBhcmUgcHJvamVjdGVkIG9udG8gdGhlIGVtcHRpbmVzcyBvZiBhIHJlYWxpdHkgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gaXRzIG93biBzaWRlLCBhbmQgJHt0eCgpLnppKGUuemkpfSBJIHByb21pc2UgdG8gJHttayhub0xlYWQoZS5wNCkpfS5gIH0KICB9LAogIHB2OnsKICAgIDE6eyBuYW1lOigpPT4nV2hhdCBJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlJywKICAgICAgICBwMTp7IGZvcm06KCk9PltbJ3QnLCdJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlIGluIG15IHJlYWxpdHnigKYnXSxbJ3AxYScsJ3doYXQgSSBhbSBleHBlcmllbmNpbmcgbm93J10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmYmVjYXVzZSBvZiBteSB0aG91Z2h0cywgd29yZHMgYW5kIGFjdGlvbnMgZnJvbSBteSBwYXN0LCBpbiB0aGlzIGxpZmUgb3IgaW4gYSBwcmV2aW91cyBsaWZlLCB3aGVu4oCmJ10sWydwMWInLCd3aGF0IHNlZWRzIEkgcGxhbnRlZCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlIGluIG15IHJlYWxpdHkgJHttayhlLnAxYSl9IGJlY2F1c2Ugb2YgbXkgdGhvdWdodHMsIHdvcmRzIGFuZCBhY3Rpb25zIGZyb20gbXkgcGFzdCwgaW4gdGhpcyBsaWZlIG9yIGluIGEgcHJldmlvdXMgbGlmZSwgd2hlbiAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICAyOnsgbmFtZTooKT0+J1doaWNoIHNlZWRzIEkgd2FudCB0byBjbGVhcicsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlIHNlZWRzIHBsYW50ZWQgd2hlbuKApiddLFsncDFiJywnd2hhdCBJIHRob3VnaHQsIHNhaWQgb3IgZGlkJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEkgd2FudCB0byBkZWFjdGl2YXRlIHRoZSBzZWVkcyBwbGFudGVkIHdoZW4gJHttayhlLnAxYil9LCBiZWNhdXNlIHRoZXkgZG91YmxlIGV2ZXJ5IDI0IGhvdXJzIGFuZCBJIG5vIGxvbmdlciB3YW50IHRoZXNlIHNlZWRzIHRvIGdyb3cuIFdoYXQncyBtb3JlLCBwZXJoYXBzIEkgaGF2ZSBhbHNvIHBsYW50ZWQgb3RoZXIgc2VlZHMgdGhhdCBJIGRvbid0IHJlbWVtYmVyIG5vdy4gV2hhdGV2ZXIgSSBtYXkgaGF2ZSB0aG91Z2h0LCBzYWlkIG9yIGRvbmUsIEkgd2FudCB0byBkZWFjdGl2YXRlIHRoZXNlIHNlZWRzIG5vdy5gIH0gfSwKICAgIDM6eyBuYW1lOigpPT4nSSBjbGVhciBhbiBlbW90aW9uJywKICAgICAgICBwMTp7IGZvcm06KCk9PltbJ3QnLCdJIHdhbnQgdG8gY2xlYXIgdGhlIHNlZWRzIG9m4oCmJ10sWydwMWUnLCd0aGUgZW1vdGlvbiBvciBwYXR0ZXJuOiBhbmdlciwgZW52eSwgZmVhcuKApiddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApnBsYW50ZWQgdGhyb3VnaCB0aG91Z2h0cywgd29yZHMgYW5kIGFjdGlvbnMgaW4gbXkgcGFzdCwgaW4gdGhpcyBsaWZlIG9yIGluIGEgcHJldmlvdXMgbGlmZSwgd2hpY2ggZm9yY2UgbWUgdG8gZXhwZXJpZW5jZeKApiddLFsncDFhJywndGhlIHNpdHVhdGlvbiBJIGFtIGxpdmluZyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ1doZW7igKYnXSxbJ3AxYicsJ3doYXQgSSB0aGluayBJIHBsYW50ZWQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSSB3YW50IHRvIGNsZWFyIHRoZSBzZWVkcyBvZiAke21rKGUucDFlKX0gcGxhbnRlZCB0aHJvdWdoIHRob3VnaHRzLCB3b3JkcyBhbmQgYWN0aW9ucyBpbiBteSBwYXN0LCBpbiB0aGlzIGxpZmUgb3IgaW4gYSBwcmV2aW91cyBsaWZlLCB3aGljaCBmb3JjZSBtZSB0byBleHBlcmllbmNlICR7bWsoZS5wMWEpfS4gV2hlbiAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICA0OnsgbmFtZTooKT0+IkkgZG9uJ3Qga25vdyB3aGF0IHNlZWRzIEkgcGxhbnRlZCIsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSSBoYXZlIG5vIGlkZWEgd2hhdCBJIGNvdWxkIGhhdmUgcGxhbnRlZCB0byBleHBlcmllbmNlIHRoaXMgc2l0dWF0aW9uOiddLFsncDFhJywndGhlIHNpdHVhdGlvbiBJIGFtIGxpdmluZyddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGhhdmUgbm8gaWRlYSB3aGF0IEkgY291bGQgaGF2ZSBwbGFudGVkIHRvIGV4cGVyaWVuY2UgdGhpcyBzaXR1YXRpb246ICR7bWsoZS5wMWEpfS4gQnV0IEkgbm93IHVuZGVyc3RhbmQgdGhhdCBpZiBJIGhhZCBub3QgcGxhbnRlZCB0aGUgc2VlZHMsIHRoaXMgc2l0dWF0aW9uIHdvdWxkIG5vdCBiZSBpbiBteSByZWFsaXR5LiBJIHdhbnQgdG8gZGVhY3RpdmF0ZSB0aGUgcGxhbnRlZCBzZWVkcyBub3cuYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ0lmIGEgZmV3IGJlbmVmaXRzIGNvbWUgdG8gbWluZCAob3B0aW9uYWwpJ10sWydwMicsJ3lvdSBjYW4gbGVhdmUgdGhpcyBibGFuayddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGNlcnRhaW5seSBoYWQgYmVuZWZpdHMsIGV2ZW4gaWYgSSBkb24ndCBrbm93IHdoYXQgc2VlZHMgSSBwbGFudGVkIG9yIHdoYXQgYmVuZWZpdHMgSSBoYWQuICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgUGVyaGFwcyAke21rKGUucDIpfSwgYW5kIHRoZXJlIGFyZSBzdXJlbHkgb3RoZXIgYmVuZWZpdHMgSSBtYXkgaGF2ZSBoYWQuYCA6ICdUaGVyZSBhcmUgc3VyZWx5IGJlbmVmaXRzIEkgbWF5IGhhdmUgaGFkLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ0kgcHJvbWlzZSBub3QgdG8gcGxhbnQgdGhlIHNhbWUgc2VlZHMgYWdhaW4gZm9yIGF0IGxlYXN04oCmJ10sWydwMycsJ2hvdyBsb25nLCBlLmcuOiAxIGhvdXInXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIHByb21pc2Ugbm90IHRvIHBsYW50IHRoZSBzYW1lIHNlZWRzIGFnYWluIGZvciBhdCBsZWFzdCAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQXMgYSBjb21wZW5zYXRpbmcgZ2VzdHVyZSwgJHtwRHJhZnQuemk9PT0nbWFpbmUnPyd0b21vcnJvdyc6J3RvZGF5J30gSSBwcm9taXNlIHRv4oCmYF0sWydwNCcsJ3doYXQgSSB3aWxsIGRvJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEFzIGEgY29tcGVuc2F0aW5nIGdlc3R1cmUsICR7dHgoKS56aShlLnppKX0gSSBwcm9taXNlIHRvICR7bWsobm9MZWFkKGUucDQpKX0uYCB9IH0KICB9Cn19OwoKLyogLS0tLS0tLS0tLSBjb21tdW5pdHkgdGV4dHMgKEVuZ2xpc2gpIC0tLS0tLS0tLS0gKi8KT2JqZWN0LmFzc2lnbihVSS5lbiwgewogIHBlcnNvbmFsOidQZXJzb25hbCcsIGNvbW11bml0eTonQ29tbXVuaXR5Jywgc2VnQXJpYTonV2hhdCB5b3Ugc2VlJywKICBjb21tVGl0bGU6J0NvbW11bml0eScsIGNvbW1MZWFkOiJXaGVuIHlvdSByZWpvaWNlIGluIG90aGVyIHBlb3BsZSdzIHN1Y2Nlc3NlcywgeW91IHdhdGVyIHRoZSBzZWVkcyBmb3IgeW91ciBvd24gZ29hbC4gV2hlbiB5b3UgcmVhZCBzb21lb25lJ3MgNCBwb3dlcnMsIHlvdSBjYW4gZ28gdGhyb3VnaCB0aGVtIGZvciB5b3Vyc2VsZiB0b28uIiwKICBjb21tVGVzdEJhbm5lcjonVGVzdCB2ZXJzaW9uOiB5b3Ugc2VlIGEgZmV3IGV4YW1wbGVzIGhlcmUuIE9uIHRoZSBzaXRlLCB0aGUgcmVhbCBwb3N0cyBvZiB0aG9zZSB3aG8gY2hvb3NlIHRvIHNoYXJlIHdpbGwgYXBwZWFyLicsCiAgY29tbUVtcHR5OidOb3RoaW5nIGhlcmUgeWV0LicsIGFwcGVhckluOm49PmBZb3UgYXBwZWFyIGluIHRoZSBjb21tdW5pdHkgYXMgPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidJIHJlam9pY2UnLCBjb3VudEpveToncmVqb2ljZWQnLCB0b2FzdEpveTonV2hlbiB5b3UgcmVqb2ljZSBmb3Igb3RoZXJzLCB5b3Ugd2F0ZXIgdGhlIHNlZWRzIGZvciB5b3VyIG93biBnb2FsLicsCiAgcmVhY3RQb3c6J0kgcmVhZCBpdCcsIGNvdW50UG93OidyZWFkIGl0JywgdG9hc3RQb3c6J1lvdeKAmXZlIHJlYWQgdGhlIDQgcG93ZXJzIGFzIHdlbGwuJywKICBnZXN0Tm90ZToiTWluZCB0aGUgY29tcGVuc2F0aW5nIGdlc3R1cmU6IGNob29zZSBhIHBlcnNvbmFsIG9uZSBhbmQgcHJhY3Rpc2UgaXQgdG8gZGVhY3RpdmF0ZSB0aGUgc2VlZHMuIEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSB3aGF0IHRoZSBvdGhlciBwZXJzb24gcHJvbWlzZWQuIiwKICBub2JvZHlZZXQ6J05vIG9uZSB5ZXQnLCB3aXRoZHJhdzonV2l0aGRyYXcnLCByZXBvcnQ6J1JlcG9ydCcsIHJlcG9ydEFnYWluOidUYXAgYWdhaW4gdG8gcmVwb3J0JywgcmVwb3J0ZWQ6J1RoYW5rIHlvdS4gVGhlIHBvc3QgaGFzIGJlZW4gaGlkZGVuIGFuZCB3aWxsIGJlIHJldmlld2VkLicsCiAgcmVhZEZ1bGw6J1JlYWQgYWxsIDQgcG93ZXJzIGluIGZ1bGwnLCBzaG93TGVzczonU2hvdyBsZXNzJywgeW91Oid5b3UnLAogIGluc3BvSGVhZDpuPT5gRnJvbSB0aGUgY29tbXVuaXR5IMK3ICR7bn1gLCBpbnNwb01vcmU6J1NlZSB3aGF0IG90aGVycyBoYXZlIHBsYW50ZWQg4oC6JywKICBzaGFyZUJ0bjonU2hhcmUgYW5vbnltb3VzbHkgd2l0aCB0aGUgY29tbXVuaXR5Jywgc2hhcmVkQnRuOidTaGFyZWQgaW4gdGhlIGNvbW11bml0eSDCtyB3aXRoZHJhdycsIHNoYXJlZFRhZzonaW4gdGhlIGNvbW11bml0eScsCiAgd2hvU2VlczonV0hPIFNFRVMgSVQnLCBvbmx5TWU6J09ubHkgbWUnLCBzaGFyZUFub246J1NoYXJlIGFub255bW91c2x5Jywgc2hhcmVBZnRlcjonQWZ0ZXIgc2F2aW5nLCB5b3UgY2hvb3NlIHdoYXQgYXBwZWFycyBpbiB0aGUgY29tbXVuaXR5IGFuZCB1bmRlciB3aGljaCBuYW1lLicsCiAgc2hlZXRTaGFyZWQ6J1NoYXJlZCBpbiB0aGUgY29tbXVuaXR5Jywgc2hlZXRTaGFyZWROb3RlOm49PmBUaGlzIGVudHJ5IGlzIHZpc2libGUgaW4gdGhlIGNvbW11bml0eSB1bmRlciB0aGUgbmFtZSA8Yj4ke259PC9iPi4gSWYgeW91IHdpdGhkcmF3IGl0LCBpdCBkaXNhcHBlYXJzIGZvciBldmVyeW9uZS4gSXQgc3RheXMgaW4geW91ciBqb3VybmFsLmAsCiAgYmxvY2tlZE5vdGU6J1NoYXJpbmcgaW4gdGhlIGNvbW11bml0eSBpcyBubyBsb25nZXIgYXZhaWxhYmxlIGZvciB5b3VyIGFjY291bnQuJywKICBuYW1lTGFiZWw6J1lvdXIgbmFtZSBpbiB0aGUgY29tbXVuaXR5JywgbmFtZVBoOidlLmcuIExpbmRlbiBCbG9zc29tJywgbmFtZU5vdGU6Ikl0IGRvZXNuJ3QgaGF2ZSB0byBiZSB5b3VyIHJlYWwgbmFtZS4gWW91IGNhbiBjaGFuZ2UgaXQgYW55dGltZS4iLAogIGFwcGVhcnNBczpuPT5gWW91IGFwcGVhciBhcyA8Yj4ke259PC9iPmAsIG90aGVyc1JlYWQ6J1RISVMgSVMgV0hBVCBPVEhFUlMgV0lMTCBSRUFEJywgY2hvb3NlU2hhcmU6J0NIT09TRSBXSEFUIFRPIFNIQVJFJywKICBwcml2YWN5Tm90ZTonQmVmb3JlIHNoYXJpbmcsIGNoZWNrIHRoYXQgbm8gbmFtZXMgb3IgZGV0YWlscyBhcHBlYXIgYnkgd2hpY2ggc29tZW9uZSBjb3VsZCBiZSByZWNvZ25pc2VkLicsCiAgd2l0aGRyYXdCdG46J1dpdGhkcmF3IGZyb20gdGhlIGNvbW11bml0eScsIHNoYXJlRG86J1NoYXJlJywgbmFtZVNob3J0OidDaG9vc2UgYSBuYW1lIG9mIGF0IGxlYXN0IDIgbGV0dGVycy4nLCBjaG9vc2VPbmU6J0Nob29zZSBhdCBsZWFzdCBvbmUgbGluZS4nLAogIHNoYXJlZFRvYXN0OidTaGFyZWQgd2l0aCB0aGUgY29tbXVuaXR5Jywgd2l0aGRyYXduOidXaXRoZHJhd24gZnJvbSB0aGUgY29tbXVuaXR5JywgbmFtZVNhdmVkOidOYW1lIHNhdmVkJywKICBuYW1lU2hlZXROb3RlOiJJdCBkb2Vzbid0IGhhdmUgdG8gYmUgeW91ciByZWFsIG5hbWUuIEl0IGFsc28gY2hhbmdlcyBvbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgc2hhcmVkLiIsCiAgZmlyc3RROidIb3cgZG8geW91IHdhbnQgdG8gYXBwZWFyIGluIHRoZSBjb21tdW5pdHk\/JywgZmlyc3ROb3RlOiJDaG9vc2UgYSBuYW1lIHRoYXQgZG9lc24ndCBoYXZlIHRvIGJlIHlvdXIgcmVhbCBvbmUuIFlvdSBvbmx5IHVzZSBpdCB3aGVuIHlvdSBjaG9vc2UgdG8gc2hhcmUgc29tZXRoaW5nLiBZb3UgY2FuIGNoYW5nZSBpdCBhbnl0aW1lLiIsCiAgbGF0ZXI6J0xhdGVyJywgd2VsY29tZTpuPT5gV2VsY29tZSwgJHtufSFgLCBhcGlGYWlsOiJDb3VsZG4ndCBjb25uZWN0IHRvIHRoZSBzaXRlLiIsCiAgZXJyOnsgYmxvY2F0OidTaGFyaW5nIGlzIG5vIGxvbmdlciBhdmFpbGFibGUgZm9yIHlvdXIgYWNjb3VudC4nLCBmYXJhX251bWU6J0ZpcnN0IGNob29zZSBhIG5hbWUgZm9yIHRoZSBjb21tdW5pdHkuJywgZ29sOidUaGVyZSBpcyBub3RoaW5nIHRvIHNoYXJlLicsCiAgICAgICAgcHJlYV9tdWx0ZToiWW91J3ZlIHNoYXJlZCBhIGxvdCB0b2RheS4gQ29tZSBiYWNrIHRvbW9ycm93LiIsIGx1YXQ6J1RoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiBDaG9vc2UgYW5vdGhlciBvbmUuJywgbnVtZTonVGhlIG5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMiBhbmQgMzAgbGV0dGVycy4nIH0KfSk7CgovKiAtLS0tLS0tLS0tIEZyYW7Dp2FpcyAtLS0tLS0tLS0tICovClVJLmZyID0gewogIGFwcE5hbWU6J0Jvbm5lcyBHcmFpbmVzJywgY291cnNlczonTWVzIGNvdXJzJywgbGFuZ3VhZ2U6J0xhbmd1ZScsIHNvb246J2JpZW50w7R0JywgY2xvc2U6J0Zlcm1lcicsCiAgbmF2VG9kYXk6IkF1am91cmQnaHVpIiwgbmF2Sm95OidCb25oZXVyJywgbmF2UHJhY3RpY2U6J1ByYXRpcXVlJywgbmF2VG9kbzonw4AgZmFpcmUnLCBuYXZQb3dlcnM6JzQgUG91dm9pcnMnLCBtZW51OidNZW51JywKICBzYXZlRmFpbDoiSW1wb3NzaWJsZSBkJ2VucmVnaXN0cmVyLiBWw6lyaWZpZSB0YSBjb25uZXhpb24gaW50ZXJuZXQuIiwgbG9hZEZhaWw6J0ltcG9zc2libGUgZGUgY2hhcmdlciB0ZXMgZG9ubsOpZXMuJywKICB0b2RheToiQXVqb3VyZCdodWkiLCB5ZXN0ZXJkYXk6J0hpZXInLAogIGtpbmQ6eyBtZWRpdGF0aWU6J03DqWRpdGF0aW9uJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J03DqWRpdGF0aW9uIGR1IGJvbmhldXInLCByZWN1bm9zdGludGU6J0dyYXRpdHVkZXMgZXQgc3VjY8OocycsIHB1dGVyaTonTGVzIDQgcG91dm9pcnMnIH0sCiAgdGVzdEJhbm5lcjoiVmVyc2lvbiBkZSB0ZXN0IDogdGVzIG5vdGVzIHJlc3RlbnQgc2V1bGVtZW50IHN1ciBjZXQgYXBwYXJlaWwuIFN1ciBsZSBzaXRlLCBlbGxlcyBzZXJvbnQgZW5yZWdpc3Ryw6llcyBkYW5zIHRvbiBjb21wdGUuIiwKICBnZW5ROidDb21tZW50IHByw6lmw6hyZXMtdHUgcXVlIGplIG3igJlhZHJlc3NlIMOgIHRvaSA\/JywgZ2VuTm90ZTonUG91ciBxdWUgbGVzIHRleHRlcyBzb25uZW50IG5hdHVyZWxzLCBwYXIgZXhlbXBsZSDCqyBKZSBzdWlzIHJlY29ubmFpc3NhbnRlIMK7IG91IMKrIEplIHN1aXMgcmVjb25uYWlzc2FudCDCuy4nLCBmZW06J0F1IGbDqW1pbmluJywgbWFzYzonQXUgbWFzY3VsaW4nLAogIGdlbkZvb3Q6Zz0+YEplIG3igJlhZHJlc3NlIMOgIHRvaSBhdSAke2c9PT0nbSc\/J21hc2N1bGluJzonZsOpbWluaW4nfWAsIGNoYW5nZTonY2hhbmdlcicsCiAgaGVhZGxpbmU6IlF1ZSBwbGFudGVzLXR1IGF1am91cmQnaHVpID8iLCBzdHJlYWs6J2pvdXJzIGRlIHN1aXRlJywgbWluVG9kYXk6Im1pbnV0ZXMgYXVqb3VyZCdodWkiLCBwcmFjdFRvZGF5OiJwcmF0aXF1ZXMgYXVqb3VyZCdodWkiLCBuVG9kYXk6bj0+YCR7bn0gYXVqb3VyZCdodWlgLAogIHRpbGVNZWQ6J03DqWRpdGF0aW9uIC8gWW9nYScsIHRpbGVSZWM6J0dyYXRpdHVkZXMgLyBTdWNjw6hzJywgdGlsZUpveTonTcOpZGl0YXRpb24gZHUgYm9uaGV1cicsIHRpbGVQb3c6J0xlcyA0IHBvdXZvaXJzJywKICBqb3VybmFsOidNb24gam91cm5hbCcsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J25vdGUnOidub3Rlcyd9YCwKICBqb3lUaXRsZTonTcOpZGl0YXRpb24gZHUgYm9uaGV1cicsIGpveUxlYWQ6J1JlbXBsaXMgbGVzIHRyb2lzIHLDqXBvbnNlcywgcHVpcyBlbnJlZ2lzdHJlLicsIGJyZWF0aGVDdWU6J0luc3BpcmUgZXQgZXhwaXJlIHByb2ZvbmTDqW1lbnQgMyBmb2lzJywgYnJlYXRoZUJ0bjonUmVzcGlyZSBhdmVjIG1vaScsCiAgYWRkSGVscFRvZG86JysgQWpvdXRlciDDoCBmYWlyZSA6IHF1aSBq4oCZYWlkZScsIG5ld0pveTonVW5lIG5vdXZlbGxlIG3DqWRpdGF0aW9uIGR1IGJvbmhldXInLCBzYXZlOidFbnJlZ2lzdHJlcicsCiAgcGlja1ByZXY6bj0+YENob2lzaXIgdW4gb2JqZWN0aWYgcHLDqWPDqWRlbnQgKCR7bn0pYCwgbXlHb2FsczonTWVzIG9iamVjdGlmcycsIHNlYXJjaEdvYWxzOidDaGVyY2hlciBkYW5zIG1lcyBvYmplY3RpZnMnLCBub0dvYWw6J0F1Y3VuIG9iamVjdGlmIHRyb3V2w6kuJywgbmV3R29hbFBoOidvdSDDqWNyaXMgdW4gbm91dmVsIG9iamVjdGlmJywKICBhZGRUb2RvOicrIEFqb3V0ZXIgw6AgZmFpcmUnLCBhZGRlZFRvZG86J+KckyBBam91dMOpIMOgIGZhaXJlJywgdG9hc3RBZGRlZDonQWpvdXTDqSDDoCBmYWlyZScsIGZpbGxBbnN3ZXJzOidSZW1wbGlzIGxlcyByw6lwb25zZXMuJywKICBpbmhhbGU6J0luc3BpcmXigKYnLCBleGhhbGU6J0V4cGlyZeKApicsIGFnYWluOidFbmNvcmUgdW5lIGZvaXMnLCBkb25lQnJlYXRoUDonVHUgYXMgcHJhdGlxdcOpIHBvdXIgZMOpc2FjdGl2ZXIgbGEgZ3JhaW5lLicsIGRvbmVCcmVhdGhKOidMYSBncmFpbmUgZXN0IGFycm9zw6llLicsCiAgcG93VGl0bGU6J0xlcyA0IHBvdXZvaXJzJywgcG93TGVhZDoiQ2hvaXNpcyBsZSB0aMOobWUgZXQgdG9uIHBvaW50IGRlIGTDqXBhcnQsIHJlbXBsaXMgY2hhcXVlIHBvdXZvaXIsIHB1aXMgZW5yZWdpc3RyZS4iLCB0aGVtZTonVEjDiE1FJywgdGhlbWVBcmlhOidUaMOobWUnLAogIGZld2VyOidNb2lucycsIGFsbFRoZW1lczpuPT5gVG91cyBsZXMgdGjDqG1lcyAoJHtufSlgLCBuZXdUaGVtZVBoOidvdSBham91dGUgdW4gbm91dmVhdSB0aMOobWUnLCBhZGQ6J0Fqb3V0ZXInLCBzdGFydDoiRCdPw5kgVFUgUEFSUyIsCiAgd2hlbjonUXVhbmQnLCB6VG9kYXk6IkF1am91cmQnaHVpIiwgelRvbW9ycm93OidEZW1haW4nLCBob3dMb25nOidDb21iaWVuIGRlIHRlbXBzJywKICBwNG5vdGU6J0FwcsOocyBs4oCZZW5yZWdpc3RyZW1lbnQsIHRhIHByb21lc3NlIHZhIGF1dG9tYXRpcXVlbWVudCBkYW5zIHRhIGxpc3RlIMOAIGZhaXJlLicsIGZpbGxQb3dlcnM6J1JlbXBsaXMgbGVzIHBvdXZvaXJzLicsIGV4cG9ydExpbms6J0V4cG9ydGVyIHRlcyBwcmF0aXF1ZXMgc3VyIHVuZSBww6lyaW9kZScsCiAgaW5Ub2RvOidDZSBxdWUgdHUgYXMgcHJvbWlzIGRhbnMgbGUgNGUgcG91dm9pciBlc3QgZGFucyB0YSBsaXN0ZSDDgCBmYWlyZS4nLCBjb3B5OidDb3BpZXIgbGUgdGV4dGUnLCBwZGY6J0VucmVnaXN0cmVyIGVuIFBERicsCiAgZG9Kb3lOb3c6J0ZhaXMgbGEgbcOpZGl0YXRpb24gZHUgYm9uaGV1ciBtYWludGVuYW50JywgZ29Kb3k6J0FsbGVyIMOgIGxhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXInLCBuZXdQb3dlcnM6J0NvbW1lbmNlciB1biBub3V2ZWwgZXhlcmNpY2UgZGVzIDQgcG91dm9pcnMnLAogIGNvcGllZDonVGV4dGUgY29wacOpLiBUdSBwZXV4IGxlIGNvbGxlciBvw7kgdHUgdmV1eC4nLCBjb3B5RmFpbDonSW1wb3NzaWJsZSBkZSBjb3BpZXIgc3VyIGNldCBhcHBhcmVpbC4nLAogIGJhY2s6J+KAuSBSZXRvdXInLCBleHBUaXRsZTonRXhwb3J0ZXIgdGVzIHByYXRpcXVlcycsIGV4cExlYWQ6J0Nob2lzaXMgbGEgcMOpcmlvZGUuIFR1IHBldXggY29waWVyIGxlIHRleHRlIG91IGzigJllbnJlZ2lzdHJlciBlbiBQREYuJywgZnJvbTonRFUnLCB0bzonQVUnLAogIG5QcmFjdDpuPT5gJHtufSAke249PT0xPydwcmF0aXF1ZSc6J3ByYXRpcXVlcyd9IHN1ciBjZXR0ZSBww6lyaW9kZS5gLCBub1ByYWN0OidUdSBu4oCZYXMgcGFzIGRlIHByYXRpcXVlIGRlcyA0IHBvdXZvaXJzIHN1ciBjZXR0ZSBww6lyaW9kZS4nLAogIHJlY1RpdGxlOidHcmF0aXR1ZGVzIC8gU3VjY8OocycsIHJlY0xlYWQ6J8OJY3Jpcy1lbiBhdXRhbnQgcXVlIHR1IHZldXguIENoYXF1ZSBsaWduZSBlc3QgdW5lIGdyYXRpdHVkZSBvdSB1biBzdWNjw6hzLicsCiAgZ3JhdGl0dWRlOidHcmF0aXR1ZGUnLCBzdWNjZXNzOidTdWNjw6hzJywgcm93VHlwZTppPT5gVHlwZSBkZSBsYSBsaWduZSAke2l9YCwgZGVsUm93OidTdXBwcmltZXIgbGEgbGlnbmUnLCByZW1vdmU6J1N1cHByaW1lcicsIHN1Y2Nlc3NQaDoiY2UgcXVlIGonYWkgZmFpdCBhdWpvdXJkJ2h1aSIsCiAgYWRkUm93OicrIEFqb3V0ZXIgdW5lIGxpZ25lJywgd3JpdGVPbmU6J8OJY3JpcyBhdSBtb2lucyB1bmUgbGlnbmUuJywgc2F2ZWRKOidFbnJlZ2lzdHLDqSBkYW5zIHRvbiBqb3VybmFsJywKICBwcmVHOkc9PmBKZSBzdWlzICR7RygncmVjb25uYWlzc2FudGUnLCdyZWNvbm5haXNzYW50Jyl9IHBvdXJgLCBwcmVTOkc9PmBKZSBzdWlzICR7RygnaGV1cmV1c2UnLCdoZXVyZXV4Jyl9IGRlYCwKICBuUmVjOihucixucyk9Pltucj9ucisobnI9PT0xPycgZ3JhdGl0dWRlJzonIGdyYXRpdHVkZXMnKTonJywgbnM\/bnMrJyBzdWNjw6hzJzonJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDCtyAnKSwKICB0b2RvVGl0bGU6J8OAIGZhaXJlJywgdG9kb0xlYWQ6J0NlIHF1ZSBq4oCZYWkgw6AgZmFpcmUgcG91ciBxdWUgbGVzIGdyYWluZXMgcG91c3NlbnQuJywgdG9kb1BoOidBam91dGVyIHF1ZWxxdWUgY2hvc2Ugw6AgZmFpcmUnLAogIG1hcmtEb25lOidNYXJxdWVyIGNvbW1lIGZhaXQnLCBtYXJrVW5kb25lOidNYXJxdWVyIGNvbW1lIG5vbiBmYWl0JywgZGVsOidTdXBwcmltZXInLCBubzonTm9uJywKICB0b2RvRW1wdHk6J1JpZW4gw6AgZmFpcmUgcG91ciBsZSBtb21lbnQuPGJyPkNlIHF1ZSB0dSDDqWNyaXMgw6AgwqsgcXVpIGrigJlhaWRlIMK7IGRhbnMgbGEgbcOpZGl0YXRpb24gZHUgYm9uaGV1ciBldCBkYW5zIGxlIDRlIHBvdXZvaXIgcGV1dCBhcnJpdmVyIGljaS4nLAogIHNob3dEb25lOihzLG4pPT5gJHtzPydNYXNxdWVyJzonQWZmaWNoZXInfSBjZSBxdWUgauKAmWFpIGZhaXQgKCR7bn0pYCwgc3JjOntidWN1cmllOidNw6lkaXRhdGlvbiBkdSBib25oZXVyJyxwdXRlcmk6J0xlcyA0IHBvdXZvaXJzJyxtYW51YWw6J0Fqb3V0w6kgcGFyIG1vaSd9LCBkb25lVG9hc3Q6J0ZhaXQuIEJyYXZvICEnLAogIHRvZG9Qcm9taXNlOno9Pno9PT0nbWFpbmUnPydEZW1haW4gamUgcHJvbWV0cyBkZSc6IkF1am91cmQnaHVpIGplIHByb21ldHMgZGUiLAogIGtpbmRBcmlhOidUeXBlIGRlIHByYXRpcXVlJywgZG9uZUg6J0ZpbmkuIExhIGdyYWluZSBlc3QgcGxhbnTDqWUuJywgZG9uZU5vdGU6KGssbSk9PmAke2t9LCAke219IG1pbi4gRW5yZWdpc3Ryw6kgZGFucyB0b24gam91cm5hbC5gLAogIHRpdGxlT3B0OidUaXRyZSAoZmFjdWx0YXRpZiknLCBwaE1vcm5pbmc6J3BhciBleC4gTcOpZGl0YXRpb24gZHUgbWF0aW4nLCBhbm90aGVyOidVbmUgYXV0cmUgcHJhdGlxdWUnLAogIHN0b3BwZWRBZnRlcjptPT5gVHUgYXMgYXJyw6p0w6kgYXByw6hzICR7bX0gbWluLmAsIHdhbnRTYXZlOidKZSBs4oCZYWpvdXRlIMOgIHRvbiBqb3VybmFsID8nLCBzYXZlTWluOm09PmBFbnJlZ2lzdHJlciAke219IG1pbmAsIGRvbnRTYXZlOidOZSBwYXMgZW5yZWdpc3RyZXInLAogIHN0b3BwZWQ6J0xhIHByYXRpcXVlIGEgw6l0w6kgYXJyw6p0w6llLicsIGJhY2tQbGFpbjonUmV0b3VyJywgcmVzdW1lOidDb250aW51ZXInLCBwYXVzZTonUGF1c2UnLCBzdG9wOidBcnLDqnRlcicsCiAgc2NyZWVuTm90ZToiR2FyZGUgbOKAmcOpY3JhbiBhbGx1bcOpLiBTaSB0b24gdMOpbMOpcGhvbmUgc2UgdmVycm91aWxsZSwgbGEgY2xvY2hlIGRlIGZpbiBwZXV0IG5lIHBhcyBzb25uZXIsIG1haXMgbGEgcHJhdGlxdWUgZXN0IGVucmVnaXN0csOpZSBxdWFuZCB0dSByZXZpZW5zLiIsCiAgZHVyYXRpb246J0RVUsOJRScsIHByZXA6J1BSw4lQQVJBVElPTicsIHNvdW5kOidTT04nLCBiZWxsOidDbG9jaGUnLCBib3dsOidCb2wgdGliw6l0YWluJywgbGlzdGVuOifDiWNvdXRlcicsIHRpdGxlQ2FwOidUSVRSRSAoRkFDVUxUQVRJRiknLCBwaFNpbGVuY2U6J3BhciBleC4gNSBtaW51dGVzIGRlIHNpbGVuY2UnLAogIGJlZ2luOidDb21tZW5jZXInLCBtYW51YWxMaW5rOidK4oCZYWkgcHJhdGlxdcOpIHNhbnMgbWludXRldXIsIGplIHZldXgganVzdGUgbGUgbm90ZXInLCBub1RpbWVyOidTYW5zIG1pbnV0ZXVyJywgbG9nUHJhY3Q6J05vdGVyIHVuZSBwcmF0aXF1ZScsIGRheTonSk9VUicsCiAgcGhFdmVuaW5nOidwYXIgZXguIFlvZ2EgZHUgc29pcicsIHNhdmVKb3VybmFsOidFbnJlZ2lzdHJlciBkYW5zIGxlIGpvdXJuYWwnLCBjYW5jZWw6J0FubnVsZXInLCBsb2dnZWQ6J25vdMOpZScsCiAgcmVhZHk6J1Byw6p0IMOgIGNvbW1lbmNlcicsIHByZXBQaGFzZTonUHLDqXBhcmF0aW9uJywgYmVsbFN0YXJ0OidMYSBjbG9jaGUgc29ubmUgYXUgZMOpYnV0Jywgb2Y6J3N1ciAnLCBwYXVzZWQ6J1BhdXNlJywgcHJlc3NDb250OidBcHB1aWUgc3VyIENvbnRpbnVlcicsCiAgcGx1c1ByZXA6bD0+YCsgJHtsfSBkZSBwcsOpcGFyYXRpb25gLCBub1ByZXA6J3NhbnMgcHLDqXBhcmF0aW9uJywgbm9uZTonQXVjdW5lJywgdW5pdE1pbjonbWluJywgdW5pdFNlYzoncycsCiAgYWxsOidUb3V0JywgblByYWN0aWNlczpuPT5gJHtufSAke249PT0xPydwcmF0aXF1ZSc6J3ByYXRpcXVlcyd9YCwgdG90TWluOm09PmAgwrcgJHttfSBtaW51dGVzIGF1IHRvdGFsYCwKICBqRW1wdHk6J0F1Y3VuZSBncmFpbmUgaWNpIHBvdXIgbOKAmWluc3RhbnQuPGJyPk3DqWRpdGUgb3Ugbm90ZSB1bmUgcHJhdGlxdWUgZXQgZWxsZSBhcHBhcmHDrnRyYSBkYW5zIHRvbiBqb3VybmFsLicsIGdvUHJhY3RpY2U6J0FsbGVyIMOgIGxhIHByYXRpcXVlJywKICBkZWxROidTdXBwcmltZXIgY2V0dGUgcHJhdGlxdWUgPycsIGRlbGV0ZWQ6J1N1cHByaW3DqScsCiAgZ2F0ZUxlYWQ6J0zigJlhcHBsaWNhdGlvbiBlc3QgZ3JhdHVpdGUuIENvbm5lY3RlLXRvaSBwb3VyIHF1ZSB0ZXMgbm90ZXMgcmVzdGVudCBlbnJlZ2lzdHLDqWVzLicsIHNpZ25JbjonU2UgY29ubmVjdGVyJywgcmVnaXN0ZXI6J1BhcyBkZSBjb21wdGUgPyBDcsOpZS1sZSBncmF0dWl0ZW1lbnQnLAogIHBlcnNvbmFsOidQZXJzb25uZWwnLCBjb21tdW5pdHk6J0NvbW11bmF1dMOpJywgc2VnQXJpYTonQ2UgcXVlIHR1IHZvaXMnLAogIGNvbW1UaXRsZTonQ29tbXVuYXV0w6knLCBjb21tTGVhZDonUXVhbmQgdHUgdGUgcsOpam91aXMgZGVzIHN1Y2PDqHMgZGVzIGF1dHJlcywgdHUgYXJyb3NlcyBsZXMgZ3JhaW5lcyBkZSB0b24gcHJvcHJlIG9iamVjdGlmLiBRdWFuZCB0dSBsaXMgbGVzIDQgcG91dm9pcnMgZGUgcXVlbHF14oCZdW4sIHR1IHBldXggbGVzIHBhcmNvdXJpciBwb3VyIHRvaSBhdXNzaS4nLAogIGNvbW1UZXN0QmFubmVyOidWZXJzaW9uIGRlIHRlc3QgOiB0dSB2b2lzIGljaSBxdWVscXVlcyBleGVtcGxlcy4gU3VyIGxlIHNpdGUgYXBwYXJhw650cm9udCBsZXMgdnJhaXMgcGFydGFnZXMgZGUgY2V1eCBxdWkgY2hvaXNpc3NlbnQgZGUgcGFydGFnZXIuJywKICBjb21tRW1wdHk6J1JpZW4gaWNpIHBvdXIgbOKAmWluc3RhbnQuJywgYXBwZWFySW46bj0+YFR1IGFwcGFyYWlzIGRhbnMgbGEgY29tbXVuYXV0w6kgc291cyBsZSBub20gPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidKZSBtZSByw6lqb3VpcycsIGNvdW50Sm95OidzZSBzb250IHLDqWpvdWlzJywgdG9hc3RKb3k6J1F1YW5kIHR1IHRlIHLDqWpvdWlzIHBvdXIgbGVzIGF1dHJlcywgdHUgYXJyb3NlcyBsZXMgZ3JhaW5lcyBkZSB0b24gb2JqZWN0aWYuJywKICByZWFjdFBvdzonSuKAmWFpIGx1JywgY291bnRQb3c6J2zigJlvbnQgbHUnLCB0b2FzdFBvdzonVHUgYXMgbHUgbGVzIDQgcG91dm9pcnMgw6AgdG9uIHRvdXIuJywKICBnZXN0Tm90ZTonQXR0ZW50aW9uIGF1IGdlc3RlIGRlIGNvbXBlbnNhdGlvbiA6IGNob2lzaXMtZW4gdW4gcGVyc29ubmVsIGV0IHByYXRpcXVlLWxlIHBvdXIgZMOpc2FjdGl2ZXIgbGVzIGdyYWluZXMuIENlIG7igJllc3QgcGFzIGZvcmPDqW1lbnQgY2UgcXVlIGzigJlhdXRyZSBwZXJzb25uZSBhIHByb21pcy4nLAogIG5vYm9keVlldDonUGVyc29ubmUgcG91ciBs4oCZaW5zdGFudCcsIHdpdGhkcmF3OidSZXRpcmVyJywgcmVwb3J0OidTaWduYWxlcicsIHJlcG9ydEFnYWluOidBcHB1aWUgZW5jb3JlIHBvdXIgc2lnbmFsZXInLCByZXBvcnRlZDonTWVyY2kuIExlIHBhcnRhZ2UgYSDDqXTDqSBtYXNxdcOpIGV0IHNlcmEgdsOpcmlmacOpLicsCiAgcmVhZEZ1bGw6J0xpcmUgbGVzIDQgcG91dm9pcnMgZW4gZW50aWVyJywgc2hvd0xlc3M6J01vaW5zJywgeW91Oid0b2knLAogIGluc3BvSGVhZDpuPT5gRGUgbGEgY29tbXVuYXV0w6kgwrcgJHtufWAsIGluc3BvTW9yZTonVm9pciBjZSBxdWUgbGVzIGF1dHJlcyBvbnQgcGxhbnTDqSDigLonLAogIHNoYXJlQnRuOidQYXJ0YWdlciBhbm9ueW1lbWVudCBhdmVjIGxhIGNvbW11bmF1dMOpJywgc2hhcmVkQnRuOidQYXJ0YWfDqSBkYW5zIGxhIGNvbW11bmF1dMOpIMK3IHJldGlyZXInLCBzaGFyZWRUYWc6J2RhbnMgbGEgY29tbXVuYXV0w6knLAogIHdob1NlZXM6J1FVSSBWT0lUJywgb25seU1lOidNb2kgc2V1bGVtZW50Jywgc2hhcmVBbm9uOidQYXJ0YWdlciBhbm9ueW1lbWVudCcsIHNoYXJlQWZ0ZXI6J0FwcsOocyBs4oCZZW5yZWdpc3RyZW1lbnQsIHR1IGNob2lzaXMgY2UgcXVpIGFwcGFyYcOudCBkYW5zIGxhIGNvbW11bmF1dMOpIGV0IHNvdXMgcXVlbCBub20uJywKICBzaGVldFNoYXJlZDonUGFydGFnw6kgZGFucyBsYSBjb21tdW5hdXTDqScsIHNoZWV0U2hhcmVkTm90ZTpuPT5gQ2V0dGUgbm90ZSBlc3QgdmlzaWJsZSBkYW5zIGxhIGNvbW11bmF1dMOpIHNvdXMgbGUgbm9tIDxiPiR7bn08L2I+LiBTaSB0dSBsYSByZXRpcmVzLCBlbGxlIGRpc3BhcmHDrnQgcG91ciB0b3V0IGxlIG1vbmRlLiBFbGxlIHJlc3RlIGRhbnMgdG9uIGpvdXJuYWwuYCwKICBibG9ja2VkTm90ZTonTGUgcGFydGFnZSBkYW5zIGxhIGNvbW11bmF1dMOpIG7igJllc3QgcGx1cyBkaXNwb25pYmxlIHBvdXIgdG9uIGNvbXB0ZS4nLAogIG5hbWVMYWJlbDonVG9uIG5vbSBkYW5zIGxhIGNvbW11bmF1dMOpJywgbmFtZVBoOidwYXIgZXguIEZsZXVyIGRlIHRpbGxldWwnLCBuYW1lTm90ZTonQ2UgbuKAmWVzdCBwYXMgZm9yY8OpbWVudCB0b24gdnJhaSBub20uIFR1IHBldXggbGUgY2hhbmdlciDDoCB0b3V0IG1vbWVudC4nLAogIGFwcGVhcnNBczpuPT5gVHUgYXBwYXJhaXMgc291cyBsZSBub20gPGI+JHtufTwvYj5gLCBvdGhlcnNSZWFkOidWT0lDSSBDRSBRVUUgTEVTIEFVVFJFUyBMSVJPTlQnLCBjaG9vc2VTaGFyZTonQ0hPSVNJUyBDRSBRVUUgVFUgUEFSVEFHRVMnLAogIHByaXZhY3lOb3RlOidBdmFudCBkZSBwYXJ0YWdlciwgdsOpcmlmaWUgcXXigJlpbCBu4oCZeSBhIHBhcyBkZSBub21zIG91IGRlIGTDqXRhaWxzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIHF1ZWxxdeKAmXVuLicsCiAgd2l0aGRyYXdCdG46J1JldGlyZXIgZGUgbGEgY29tbXVuYXV0w6knLCBzaGFyZURvOidQYXJ0YWdlcicsIG5hbWVTaG9ydDonQ2hvaXNpcyB1biBub20gZOKAmWF1IG1vaW5zIDIgbGV0dHJlcy4nLCBjaG9vc2VPbmU6J0Nob2lzaXMgYXUgbW9pbnMgdW5lIGxpZ25lLicsCiAgc2hhcmVkVG9hc3Q6J1BhcnRhZ8OpIGF2ZWMgbGEgY29tbXVuYXV0w6knLCB3aXRoZHJhd246J1JldGlyw6kgZGUgbGEgY29tbXVuYXV0w6knLCBuYW1lU2F2ZWQ6J05vbSBlbnJlZ2lzdHLDqScsCiAgbmFtZVNoZWV0Tm90ZTonQ2UgbuKAmWVzdCBwYXMgZm9yY8OpbWVudCB0b24gdnJhaSBub20uIElsIGNoYW5nZSBhdXNzaSBzdXIgY2UgcXVlIHR1IGFzIGTDqWrDoCBwYXJ0YWfDqS4nLAogIGZpcnN0UTonQ29tbWVudCB2ZXV4LXR1IGFwcGFyYcOudHJlIGRhbnMgbGEgY29tbXVuYXV0w6kgPycsIGZpcnN0Tm90ZTonQ2hvaXNpcyB1biBub20gcXVpIG7igJllc3QgcGFzIGZvcmPDqW1lbnQgdG9uIHZyYWkgbm9tLiBUdSBuZSBs4oCZdXRpbGlzZXMgcXVlIGxvcnNxdWUgdHUgY2hvaXNpcyBkZSBwYXJ0YWdlciBxdWVscXVlIGNob3NlLiBUdSBwZXV4IGxlIGNoYW5nZXIgw6AgdG91dCBtb21lbnQuJywKICBsYXRlcjonUGx1cyB0YXJkJywgd2VsY29tZTpuPT5gQmllbnZlbnVlLCAke259ICFgLCBhcGlGYWlsOidJbXBvc3NpYmxlIGRlIHNlIGNvbm5lY3RlciBhdSBzaXRlLicsCiAgZXJyOnsgYmxvY2F0OidMZSBwYXJ0YWdlIG7igJllc3QgcGx1cyBkaXNwb25pYmxlIHBvdXIgdG9uIGNvbXB0ZS4nLCBmYXJhX251bWU6J0Nob2lzaXMgZOKAmWFib3JkIHVuIG5vbSBwb3VyIGxhIGNvbW11bmF1dMOpLicsIGdvbDonSWwgbuKAmXkgYSByaWVuIMOgIHBhcnRhZ2VyLicsCiAgICAgICAgcHJlYV9tdWx0ZTonVHUgYXMgZMOpasOgIGJlYXVjb3VwIHBhcnRhZ8OpIGF1am91cmTigJlodWkuIFJldmllbnMgZGVtYWluLicsIGx1YXQ6J0NlIG5vbSBlc3QgZMOpasOgIHByaXMuIENob2lzaXMtZW4gdW4gYXV0cmUuJywgbnVtZTonTGUgbm9tIGRvaXQgYXZvaXIgZW50cmUgMiBldCAzMCBsZXR0cmVzLicgfQp9OwoKLyogLS0tLS0tLS0tLSBJdGFsaWFubyAtLS0tLS0tLS0tICovClVJLml0ID0gewogIGFwcE5hbWU6J1NlbWkgQnVvbmknLCBjb3Vyc2VzOidJIG1pZWkgY29yc2knLCBsYW5ndWFnZTonTGluZ3VhJywgc29vbjoncHJlc3RvJywgY2xvc2U6J0NoaXVkaScsCiAgbmF2VG9kYXk6J09nZ2knLCBuYXZKb3k6J0dpb2lhJywgbmF2UHJhY3RpY2U6J1ByYXRpY2EnLCBuYXZUb2RvOidEYSBmYXJlJywgbmF2UG93ZXJzOic0IFBvdGVyaScsIG1lbnU6J01lbnUnLAogIHNhdmVGYWlsOidJbXBvc3NpYmlsZSBzYWx2YXJlLiBDb250cm9sbGEgbGEgY29ubmVzc2lvbmUgaW50ZXJuZXQuJywgbG9hZEZhaWw6J0ltcG9zc2liaWxlIGNhcmljYXJlIGkgdHVvaSBkYXRpLicsCiAgdG9kYXk6J09nZ2knLCB5ZXN0ZXJkYXk6J0llcmknLAogIGtpbmQ6eyBtZWRpdGF0aWU6J01lZGl0YXppb25lJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJywgcmVjdW5vc3RpbnRlOidHcmF0aXR1ZGluaSBlIHN1Y2Nlc3NpJywgcHV0ZXJpOidJIDQgcG90ZXJpJyB9LAogIHRlc3RCYW5uZXI6J1ZlcnNpb25lIGRpIHByb3ZhOiBsZSB0dWUgbm90ZSByZXN0YW5vIHNvbG8gc3UgcXVlc3RvIGRpc3Bvc2l0aXZvLiBTdWwgc2l0byB2ZXJyYW5ubyBzYWx2YXRlIG5lbCB0dW8gYWNjb3VudC4nLAogIGdlblE6J0NvbWUgcHJlZmVyaXNjaSBjaGUgbWkgcml2b2xnYSBhIHRlPycsIGdlbk5vdGU6J1BlcmNow6kgaSB0ZXN0aSBzdW9uaW5vIG5hdHVyYWxpLCBhZCBlc2VtcGlvIMKrU29ubyBncmF0YcK7IG8gwqtTb25vIGdyYXRvwrsuJywgZmVtOidBbCBmZW1taW5pbGUnLCBtYXNjOidBbCBtYXNjaGlsZScsCiAgZ2VuRm9vdDpnPT5gTWkgcml2b2xnbyBhIHRlIGFsICR7Zz09PSdtJz8nbWFzY2hpbGUnOidmZW1taW5pbGUnfWAsIGNoYW5nZTonY2FtYmlhJywKICBoZWFkbGluZTonQ2hlIGNvc2EgcGlhbnRpIG9nZ2k\/Jywgc3RyZWFrOidnaW9ybmkgZGkgZmlsYScsIG1pblRvZGF5OidtaW51dGkgb2dnaScsIHByYWN0VG9kYXk6J3ByYXRpY2hlIG9nZ2knLCBuVG9kYXk6bj0+YCR7bn0gb2dnaWAsCiAgdGlsZU1lZDonTWVkaXRhemlvbmUgLyBZb2dhJywgdGlsZVJlYzonR3JhdGl0dWRpbmkgLyBTdWNjZXNzaScsIHRpbGVKb3k6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJywgdGlsZVBvdzonSSA0IHBvdGVyaScsCiAgam91cm5hbDonSWwgbWlvIGRpYXJpbycsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J25vdGEnOidub3RlJ31gLAogIGpveVRpdGxlOidNZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIGpveUxlYWQ6J0NvbXBpbGEgbGUgdHJlIHJpc3Bvc3RlLCBwb2kgc2FsdmEuJywgYnJlYXRoZUN1ZTonSW5zcGlyYSBlZCBlc3BpcmEgcHJvZm9uZGFtZW50ZSAzIHZvbHRlJywgYnJlYXRoZUJ0bjonUmVzcGlyYSBjb24gbWUnLAogIGFkZEhlbHBUb2RvOicrIEFnZ2l1bmdpIGEgRGEgZmFyZTogY2hpIGFpdXRvJywgbmV3Sm95OidVbmEgbnVvdmEgbWVkaXRhemlvbmUgZGVsbGEgZ2lvaWEnLCBzYXZlOidTYWx2YScsCiAgcGlja1ByZXY6bj0+YFNjZWdsaSB1biBvYmlldHRpdm8gcHJlY2VkZW50ZSAoJHtufSlgLCBteUdvYWxzOidJIG1pZWkgb2JpZXR0aXZpJywgc2VhcmNoR29hbHM6J0NlcmNhIG5laSBtaWVpIG9iaWV0dGl2aScsIG5vR29hbDonTmVzc3VuIG9iaWV0dGl2byB0cm92YXRvLicsIG5ld0dvYWxQaDonb3BwdXJlIHNjcml2aSB1biBudW92byBvYmlldHRpdm8nLAogIGFkZFRvZG86JysgQWdnaXVuZ2kgYSBEYSBmYXJlJywgYWRkZWRUb2RvOifinJMgQWdnaXVudG8gYSBEYSBmYXJlJywgdG9hc3RBZGRlZDonQWdnaXVudG8gYSBEYSBmYXJlJywgZmlsbEFuc3dlcnM6J0NvbXBpbGEgbGUgcmlzcG9zdGUuJywKICBpbmhhbGU6J0luc3BpcmHigKYnLCBleGhhbGU6J0VzcGlyYeKApicsIGFnYWluOidBbmNvcmEgdW5hIHZvbHRhJywgZG9uZUJyZWF0aFA6J0hhaSBwcmF0aWNhdG8gcGVyIGRpc2F0dGl2YXJlIGlsIHNlbWUuJywgZG9uZUJyZWF0aEo6J0lsIHNlbWUgw6ggaW5uYWZmaWF0by4nLAogIHBvd1RpdGxlOidJIDQgcG90ZXJpJywgcG93TGVhZDonU2NlZ2xpIGlsIHRlbWEgZSBpbCB0dW8gcHVudG8gZGkgcGFydGVuemEsIGNvbXBpbGEgb2duaSBwb3RlcmUsIHBvaSBzYWx2YS4nLCB0aGVtZTonVEVNQScsIHRoZW1lQXJpYTonVGVtYScsCiAgZmV3ZXI6J01lbm8nLCBhbGxUaGVtZXM6bj0+YFR1dHRpIGkgdGVtaSAoJHtufSlgLCBuZXdUaGVtZVBoOidvcHB1cmUgYWdnaXVuZ2kgdW4gbnVvdm8gdGVtYScsIGFkZDonQWdnaXVuZ2knLCBzdGFydDonREEgRE9WRSBQQVJUSScsCiAgd2hlbjonUXVhbmRvJywgelRvZGF5OidPZ2dpJywgelRvbW9ycm93OidEb21hbmknLCBob3dMb25nOidQZXIgcXVhbnRvIHRlbXBvJywKICBwNG5vdGU6J0RvcG8gaWwgc2FsdmF0YWdnaW8sIGxhIHR1YSBwcm9tZXNzYSB2YSBhdXRvbWF0aWNhbWVudGUgbmVsbGEgbGlzdGEgRGEgZmFyZS4nLCBmaWxsUG93ZXJzOidDb21waWxhIGkgcG90ZXJpLicsIGV4cG9ydExpbms6J0VzcG9ydGEgbGUgdHVlIHByYXRpY2hlIHBlciB1biBwZXJpb2RvJywKICBpblRvZG86J0Npw7IgY2hlIGhhaSBwcm9tZXNzbyBuZWwgNMKwIHBvdGVyZSDDqCBuZWxsYSB0dWEgbGlzdGEgRGEgZmFyZS4nLCBjb3B5OidDb3BpYSBpbCB0ZXN0bycsIHBkZjonU2FsdmEgaW4gUERGJywKICBkb0pveU5vdzonRmFpIG9yYSBsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIGdvSm95OidWYWkgYWxsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIG5ld1Bvd2VyczonSW5pemlhIHVuIG51b3ZvIGVzZXJjaXppbyBkZWkgNCBwb3RlcmknLAogIGNvcGllZDonVGVzdG8gY29waWF0by4gUHVvaSBpbmNvbGxhcmxvIGRvdmUgdnVvaS4nLCBjb3B5RmFpbDonSW1wb3NzaWJpbGUgY29waWFyZSBzdSBxdWVzdG8gZGlzcG9zaXRpdm8uJywKICBiYWNrOifigLkgSW5kaWV0cm8nLCBleHBUaXRsZTonRXNwb3J0YSBsZSB0dWUgcHJhdGljaGUnLCBleHBMZWFkOidTY2VnbGkgaWwgcGVyaW9kby4gUHVvaSBjb3BpYXJlIGlsIHRlc3RvIG8gc2FsdmFybG8gaW4gUERGLicsIGZyb206J0RBTCcsIHRvOidBTCcsCiAgblByYWN0Om49PmAke259ICR7bj09PTE\/J3ByYXRpY2EnOidwcmF0aWNoZSd9IGluIHF1ZXN0byBwZXJpb2RvLmAsIG5vUHJhY3Q6J05vbiBoYWkgcHJhdGljaGUgZGVpIDQgcG90ZXJpIGluIHF1ZXN0byBwZXJpb2RvLicsCiAgcmVjVGl0bGU6J0dyYXRpdHVkaW5pIC8gU3VjY2Vzc2knLCByZWNMZWFkOidTY3JpdmluZSBxdWFudGUgdnVvaS4gT2duaSByaWdhIMOoIHVuYSBncmF0aXR1ZGluZSBvIHVuIHN1Y2Nlc3NvLicsCiAgZ3JhdGl0dWRlOidHcmF0aXR1ZGluZScsIHN1Y2Nlc3M6J1N1Y2Nlc3NvJywgcm93VHlwZTppPT5gVGlwbyBkZWxsYSByaWdhICR7aX1gLCBkZWxSb3c6J0VsaW1pbmEgbGEgcmlnYScsIHJlbW92ZTonRWxpbWluYScsIHN1Y2Nlc3NQaDonY2nDsiBjaGUgaG8gZmF0dG8gb2dnaScsCiAgYWRkUm93OicrIEFnZ2l1bmdpIHVu4oCZYWx0cmEgcmlnYScsIHdyaXRlT25lOidTY3JpdmkgYWxtZW5vIHVuYSByaWdhLicsIHNhdmVkSjonU2FsdmF0byBuZWwgdHVvIGRpYXJpbycsCiAgcHJlRzpHPT5gU29ubyAke0coJ2dyYXRhJywnZ3JhdG8nKX0gcGVyYCwgcHJlUzooKT0+J1Nvbm8gZmVsaWNlIHBlcicsCiAgblJlYzoobnIsbnMpPT5bbnI\/bnIrKG5yPT09MT8nIGdyYXRpdHVkaW5lJzonIGdyYXRpdHVkaW5pJyk6JycsIG5zP25zKyhucz09PTE\/JyBzdWNjZXNzbyc6JyBzdWNjZXNzaScpOicnXS5maWx0ZXIoQm9vbGVhbikuam9pbignIMK3ICcpLAogIHRvZG9UaXRsZTonRGEgZmFyZScsIHRvZG9MZWFkOidDacOyIGNoZSBkZXZvIGZhcmUgcGVyY2jDqSBpIHNlbWkgY3Jlc2Nhbm8uJywgdG9kb1BoOidBZ2dpdW5naSBxdWFsY29zYSBkYSBmYXJlJywKICBtYXJrRG9uZTonU2VnbmEgY29tZSBmYXR0bycsIG1hcmtVbmRvbmU6J1NlZ25hIGNvbWUgbm9uIGZhdHRvJywgZGVsOidFbGltaW5hJywgbm86J05vJywKICB0b2RvRW1wdHk6J05pZW50ZSBkYSBmYXJlIHBlciBvcmEuPGJyPkNpw7IgY2hlIHNjcml2aSBpbiDCq2NoaSBhaXV0b8K7IG5lbGxhIG1lZGl0YXppb25lIGRlbGxhIGdpb2lhIGUgbmVsIDTCsCBwb3RlcmUgcHXDsiBhcnJpdmFyZSBxdWkuJywKICBzaG93RG9uZToocyxuKT0+YCR7cz8nTmFzY29uZGknOidNb3N0cmEnfSBjacOyIGNoZSBobyBmYXR0byAoJHtufSlgLCBzcmM6e2J1Y3VyaWU6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJyxwdXRlcmk6J0kgNCBwb3RlcmknLG1hbnVhbDonQWdnaXVudG8gZGEgbWUnfSwgZG9uZVRvYXN0OidGYXR0by4gQnJhdmEhJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nRG9tYW5pIHByb21ldHRvIGRpJzonT2dnaSBwcm9tZXR0byBkaScsCiAga2luZEFyaWE6J1RpcG8gZGkgcHJhdGljYScsIGRvbmVIOidGYXR0by4gSWwgc2VtZSDDqCBwaWFudGF0by4nLCBkb25lTm90ZTooayxtKT0+YCR7a30sICR7bX0gbWluLiBTYWx2YXRvIG5lbCB0dW8gZGlhcmlvLmAsCiAgdGl0bGVPcHQ6J1RpdG9sbyAoZmFjb2x0YXRpdm8pJywgcGhNb3JuaW5nOidlcy4gTWVkaXRhemlvbmUgZGVsIG1hdHRpbm8nLCBhbm90aGVyOidVbuKAmWFsdHJhIHByYXRpY2EnLAogIHN0b3BwZWRBZnRlcjptPT5gVGkgc2VpIGZlcm1hdGEgZG9wbyAke219IG1pbi5gLCB3YW50U2F2ZTonTGEgYWdnaXVuZ28gYWwgdHVvIGRpYXJpbz8nLCBzYXZlTWluOm09PmBTYWx2YSAke219IG1pbmAsIGRvbnRTYXZlOidOb24gc2FsdmFyZScsCiAgc3RvcHBlZDonTGEgcHJhdGljYSDDqCBzdGF0YSBpbnRlcnJvdHRhLicsIGJhY2tQbGFpbjonSW5kaWV0cm8nLCByZXN1bWU6J0NvbnRpbnVhJywgcGF1c2U6J1BhdXNhJywgc3RvcDonRmVybWEnLAogIHNjcmVlbk5vdGU6J1RpZW5pIGxvIHNjaGVybW8gYWNjZXNvLiBTZSBpbCB0ZWxlZm9ubyBzaSBibG9jY2EsIGxhIGNhbXBhbmEgZmluYWxlIHBvdHJlYmJlIG5vbiBzdW9uYXJlLCBtYSBsYSBwcmF0aWNhIHZpZW5lIHNhbHZhdGEgcXVhbmRvIHRvcm5pLicsCiAgZHVyYXRpb246J0RVUkFUQScsIHByZXA6J1BSRVBBUkFaSU9ORScsIHNvdW5kOidTVU9OTycsIGJlbGw6J0NhbXBhbmEnLCBib3dsOidDYW1wYW5hIHRpYmV0YW5hJywgbGlzdGVuOidBc2NvbHRhJywgdGl0bGVDYXA6J1RJVE9MTyAoRkFDT0xUQVRJVk8pJywgcGhTaWxlbmNlOidlcy4gNSBtaW51dGkgZGkgc2lsZW56aW8nLAogIGJlZ2luOidJbml6aWEnLCBtYW51YWxMaW5rOidIbyBwcmF0aWNhdG8gc2VuemEgdGltZXIsIHZvZ2xpbyBzb2xvIHNlZ25hcmxvJywgbm9UaW1lcjonU2VuemEgdGltZXInLCBsb2dQcmFjdDonU2VnbmEgdW5hIHByYXRpY2EnLCBkYXk6J0dJT1JOTycsCiAgcGhFdmVuaW5nOidlcy4gWW9nYSBkZWxsYSBzZXJhJywgc2F2ZUpvdXJuYWw6J1NhbHZhIG5lbCBkaWFyaW8nLCBjYW5jZWw6J0FubnVsbGEnLCBsb2dnZWQ6J3NlZ25hdGEnLAogIHJlYWR5OidQcm9udGEgcGVyIGluaXppYXJlJywgcHJlcFBoYXNlOidQcmVwYXJhemlvbmUnLCBiZWxsU3RhcnQ6J0xhIGNhbXBhbmEgc3VvbmEgYWxs4oCZaW5pemlvJywgb2Y6J3N1ICcsIHBhdXNlZDonUGF1c2EnLCBwcmVzc0NvbnQ6J1ByZW1pIENvbnRpbnVhJywKICBwbHVzUHJlcDpsPT5gKyAke2x9IGRpIHByZXBhcmF6aW9uZWAsIG5vUHJlcDonc2VuemEgcHJlcGFyYXppb25lJywgbm9uZTonTmVzc3VuYScsIHVuaXRNaW46J21pbicsIHVuaXRTZWM6J3MnLAogIGFsbDonVHV0dG8nLCBuUHJhY3RpY2VzOm49PmAke259ICR7bj09PTE\/J3ByYXRpY2EnOidwcmF0aWNoZSd9YCwgdG90TWluOm09PmAgwrcgJHttfSBtaW51dGkgaW4gdG90YWxlYCwKICBqRW1wdHk6J0FuY29yYSBuZXNzdW4gc2VtZSBxdWkuPGJyPk1lZGl0YSBvIHNlZ25hIHVuYSBwcmF0aWNhIGUgYXBwYXJpcsOgIG5lbCB0dW8gZGlhcmlvLicsIGdvUHJhY3RpY2U6J1ZhaSBhbGxhIHByYXRpY2EnLAogIGRlbFE6J0VsaW1pbmFyZSBxdWVzdGEgcHJhdGljYT8nLCBkZWxldGVkOidFbGltaW5hdG8nLAogIGdhdGVMZWFkOidM4oCZYXBwIMOoIGdyYXR1aXRhLiBBY2NlZGkgcGVyY2jDqSBsZSB0dWUgbm90ZSByZXN0aW5vIHNhbHZhdGUuJywgc2lnbkluOidBY2NlZGknLCByZWdpc3RlcjonTm9uIGhhaSB1biBhY2NvdW50PyBDcmVhbG8gZ3JhdGlzJywKICBwZXJzb25hbDonUGVyc29uYWxlJywgY29tbXVuaXR5OidDb211bml0w6AnLCBzZWdBcmlhOidDb3NhIHZlZGknLAogIGNvbW1UaXRsZTonQ29tdW5pdMOgJywgY29tbUxlYWQ6J1F1YW5kbyBnaW9pc2NpIGRlaSBzdWNjZXNzaSBkZWdsaSBhbHRyaSwgaW5uYWZmaSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8uIFF1YW5kbyBsZWdnaSBpIDQgcG90ZXJpIGRpIHF1YWxjdW5vLCBwdW9pIHBlcmNvcnJlcmxpIGFuY2hlIHBlciB0ZS4nLAogIGNvbW1UZXN0QmFubmVyOidWZXJzaW9uZSBkaSBwcm92YTogcXVpIHZlZGkgYWxjdW5pIGVzZW1waS4gU3VsIHNpdG8gYXBwYXJpcmFubm8gbGUgY29uZGl2aXNpb25pIHJlYWxpIGRpIGNoaSBzY2VnbGllIGRpIGNvbmRpdmlkZXJlLicsCiAgY29tbUVtcHR5OidBbmNvcmEgbmllbnRlIHF1aS4nLCBhcHBlYXJJbjpuPT5gQXBwYXJpIG5lbGxhIGNvbXVuaXTDoCBjb21lIDxiPiR7bn08L2I+YCwKICByZWFjdEpveTonR2lvaXNjbycsIGNvdW50Sm95OidoYW5ubyBnaW9pdG8nLCB0b2FzdEpveTonUXVhbmRvIGdpb2lzY2kgcGVyIGdsaSBhbHRyaSwgaW5uYWZmaSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8uJywKICByZWFjdFBvdzonSG8gbGV0dG8nLCBjb3VudFBvdzonbOKAmWhhbm5vIGxldHRvJywgdG9hc3RQb3c6J0hhaSBsZXR0byBpIDQgcG90ZXJpIGEgdHVhIHZvbHRhLicsCiAgZ2VzdE5vdGU6J0F0dGVuemlvbmUgYWwgZ2VzdG8gY29tcGVuc2F0aXZvOiBzY2VnbGluZSB1bm8gcGVyc29uYWxlIGUgcHJhdGljYWxvIHBlciBkaXNhdHRpdmFyZSBpIHNlbWkuIE5vbiBkZXZlIGVzc2VyZSBwZXIgZm9yemEgY2nDsiBjaGUgaGEgcHJvbWVzc28gbOKAmWFsdHJhIHBlcnNvbmEuJywKICBub2JvZHlZZXQ6J0FuY29yYSBuZXNzdW5vJywgd2l0aGRyYXc6J1JpdGlyYScsIHJlcG9ydDonU2VnbmFsYScsIHJlcG9ydEFnYWluOidQcmVtaSBkaSBudW92byBwZXIgc2VnbmFsYXJlJywgcmVwb3J0ZWQ6J0dyYXppZS4gTGEgY29uZGl2aXNpb25lIMOoIHN0YXRhIG5hc2Nvc3RhIGUgdmVycsOgIHZlcmlmaWNhdGEuJywKICByZWFkRnVsbDonTGVnZ2kgcGVyIGludGVybyBpIDQgcG90ZXJpJywgc2hvd0xlc3M6J01lbm8nLCB5b3U6J3R1JywKICBpbnNwb0hlYWQ6bj0+YERhbGxhIGNvbXVuaXTDoCDCtyAke259YCwgaW5zcG9Nb3JlOidHdWFyZGEgY29zYSBoYW5ubyBwaWFudGF0byBnbGkgYWx0cmkg4oC6JywKICBzaGFyZUJ0bjonQ29uZGl2aWRpIGluIGZvcm1hIGFub25pbWEgY29uIGxhIGNvbXVuaXTDoCcsIHNoYXJlZEJ0bjonQ29uZGl2aXNvIG5lbGxhIGNvbXVuaXTDoCDCtyByaXRpcmEnLCBzaGFyZWRUYWc6J25lbGxhIGNvbXVuaXTDoCcsCiAgd2hvU2VlczonQ0hJIFZFREUnLCBvbmx5TWU6J1NvbG8gaW8nLCBzaGFyZUFub246J0NvbmRpdmlkaSBpbiBmb3JtYSBhbm9uaW1hJywgc2hhcmVBZnRlcjonRG9wbyBpbCBzYWx2YXRhZ2dpbyBzY2VnbGkgY29zYSBhcHBhcmUgbmVsbGEgY29tdW5pdMOgIGUgY29uIHF1YWxlIG5vbWUuJywKICBzaGVldFNoYXJlZDonQ29uZGl2aXNvIG5lbGxhIGNvbXVuaXTDoCcsIHNoZWV0U2hhcmVkTm90ZTpuPT5gUXVlc3RhIG5vdGEgw6ggdmlzaWJpbGUgbmVsbGEgY29tdW5pdMOgIGNvbiBpbCBub21lIDxiPiR7bn08L2I+LiBTZSBsYSByaXRpcmksIHNjb21wYXJlIHBlciB0dXR0aS4gUmVzdGEgbmVsIHR1byBkaWFyaW8uYCwKICBibG9ja2VkTm90ZTonTGEgY29uZGl2aXNpb25lIG5lbGxhIGNvbXVuaXTDoCBub24gw6ggcGnDuSBkaXNwb25pYmlsZSBwZXIgaWwgdHVvIGFjY291bnQuJywKICBuYW1lTGFiZWw6J0lsIHR1byBub21lIG5lbGxhIGNvbXVuaXTDoCcsIG5hbWVQaDonZXMuIEZpb3JlIGRpIHRpZ2xpbycsIG5hbWVOb3RlOidOb24gZGV2ZSBlc3NlcmUgcGVyIGZvcnphIGlsIHR1byB2ZXJvIG5vbWUuIFB1b2kgY2FtYmlhcmxvIGluIHF1YWxzaWFzaSBtb21lbnRvLicsCiAgYXBwZWFyc0FzOm49PmBBcHBhcmkgY29tZSA8Yj4ke259PC9iPmAsIG90aGVyc1JlYWQ6J0VDQ08gQ09TQSBMRUdHRVJBTk5PIEdMSSBBTFRSSScsIGNob29zZVNoYXJlOidTQ0VHTEkgQ09TQSBDT05ESVZJREVSRScsCiAgcHJpdmFjeU5vdGU6J1ByaW1hIGRpIGNvbmRpdmlkZXJlLCBjb250cm9sbGEgY2hlIG5vbiBjb21wYWlhbm8gbm9taSBvIGRldHRhZ2xpIGRhIGN1aSBzaSBwb3NzYSByaWNvbm9zY2VyZSBxdWFsY3Vuby4nLAogIHdpdGhkcmF3QnRuOidSaXRpcmEgZGFsbGEgY29tdW5pdMOgJywgc2hhcmVEbzonQ29uZGl2aWRpJywgbmFtZVNob3J0OidTY2VnbGkgdW4gbm9tZSBkaSBhbG1lbm8gMiBsZXR0ZXJlLicsIGNob29zZU9uZTonU2NlZ2xpIGFsbWVubyB1bmEgcmlnYS4nLAogIHNoYXJlZFRvYXN0OidDb25kaXZpc28gY29uIGxhIGNvbXVuaXTDoCcsIHdpdGhkcmF3bjonUml0aXJhdG8gZGFsbGEgY29tdW5pdMOgJywgbmFtZVNhdmVkOidOb21lIHNhbHZhdG8nLAogIG5hbWVTaGVldE5vdGU6J05vbiBkZXZlIGVzc2VyZSBwZXIgZm9yemEgaWwgdHVvIHZlcm8gbm9tZS4gQ2FtYmlhIGFuY2hlIHN1IGNpw7IgY2hlIGhhaSBnacOgIGNvbmRpdmlzby4nLAogIGZpcnN0UTonQ29tZSB2dW9pIGFwcGFyaXJlIG5lbGxhIGNvbXVuaXTDoD8nLCBmaXJzdE5vdGU6J1NjZWdsaSB1biBub21lIGNoZSBub24gZGV2ZSBlc3NlcmUgcGVyIGZvcnphIHF1ZWxsbyB2ZXJvLiBMbyB1c2kgc29sbyBxdWFuZG8gc2NlZ2xpIGRpIGNvbmRpdmlkZXJlIHF1YWxjb3NhLiBQdW9pIGNhbWJpYXJsbyBpbiBxdWFsc2lhc2kgbW9tZW50by4nLAogIGxhdGVyOidQacO5IHRhcmRpJywgd2VsY29tZTpuPT5gQmVudmVudXRhLCAke259IWAsIGFwaUZhaWw6J0ltcG9zc2liaWxlIGNvbGxlZ2Fyc2kgYWwgc2l0by4nLAogIGVycjp7IGJsb2NhdDonTGEgY29uZGl2aXNpb25lIG5vbiDDqCBwacO5IGRpc3BvbmliaWxlIHBlciBpbCB0dW8gYWNjb3VudC4nLCBmYXJhX251bWU6J1NjZWdsaSBwcmltYSB1biBub21lIHBlciBsYSBjb211bml0w6AuJywgZ29sOidOb24gY+KAmcOoIG5pZW50ZSBkYSBjb25kaXZpZGVyZS4nLAogICAgICAgIHByZWFfbXVsdGU6J09nZ2kgaGFpIGdpw6AgY29uZGl2aXNvIG1vbHRvLiBUb3JuYSBkb21hbmkuJywgbHVhdDonUXVlc3RvIG5vbWUgw6ggZ2nDoCB1c2F0by4gU2NlZ2xpbmUgdW4gYWx0cm8uJywgbnVtZTonSWwgbm9tZSBkZXZlIGF2ZXJlIHRyYSAyIGUgMzAgbGV0dGVyZS4nIH0KfTsKLyogYSBmZXcgSXRhbGlhbi9GcmVuY2ggVUkgd29yZHMgZm9sbG93IHRoZSBwZXJzb24ncyBncmFtbWF0aWNhbCBnZW5kZXIgKi8KY29uc3QgR1VJID0gewogIGl0OnsgcmVhZHk6KCk9PkcoJ1Byb250YSBwZXIgaW5pemlhcmUnLCdQcm9udG8gcGVyIGluaXppYXJlJyksIHN0b3BwZWRBZnRlcjooKT0+bT0+YFRpIHNlaSAke0coJ2Zlcm1hdGEnLCdmZXJtYXRvJyl9IGRvcG8gJHttfSBtaW4uYCwgZG9uZVRvYXN0OigpPT5gRmF0dG8uICR7RygnQnJhdmEnLCdCcmF2bycpfSFgLCB3ZWxjb21lOigpPT5uPT5gJHtHKCdCZW52ZW51dGEnLCdCZW52ZW51dG8nKX0sICR7bn0hYCB9LAogIGZyOnsgcmVhZHk6KCk9PkcoJ1Byw6p0ZSDDoCBjb21tZW5jZXInLCdQcsOqdCDDoCBjb21tZW5jZXInKSB9Cn07CgovKiAtLS0tLS0tLS0tIHByYWN0aWNlIHRleHRzOiBGcmFuw6dhaXMgLS0tLS0tLS0tLSAqLwpjb25zdCBkZUZyID0gdiA9PiAvXlthZWlvdXlow6DDosOkw6nDqMOqw6vDrsOvw7TDtsO7w7nDvF0vaS50ZXN0KFN0cmluZyh2fHwnJykudHJpbSgpKSA\/ICJk4oCZIiA6ICdkZSAnOwpUWC5mciA9IHsKICB2b3dKb3k6WwogICAgJ0plIGZhaXMgY2VzIGNob3NlcyBwYXJjZSBxdWUgbWEgcsOpYWxpdMOpIGVzdCBkaWN0w6llIHBhciBsZXMgZ3JhaW5lcyBxdWUgamUgcGxhbnRlLCBxdWkgc2UgcHJvamV0dGVudCBzdXIgbGEgdmFjdWl0w6kgZOKAmXVuZSByw6lhbGl0w6kgcXVpIG5lIHZpZW50IHBhcyBk4oCZZWxsZS1tw6ptZS4nLAogICAgJ1BhcmNlIHF1ZSBq4oCZYWkgcGxhbnTDqSBjZXMgZ3JhaW5lcywgcXVlIGrigJlhcnJvc2UgbWFpbnRlbmFudCwgamUgdmFpcyByw6l1c3Npci4nLAogICAgJ1BhcmNlIHF1ZSBqZSByw6l1c3NpcyBlbiB1dGlsaXNhbnQgY2Ugc3lzdMOobWUsIHF1ZWxxdWVzLXVucyBkZSBtZXMgYW1pcyBldCBkZSBtZXMgY29ubmFpc3NhbmNlcyB2b250IG3igJlpbWl0ZXIgZXQgcsOpdXNzaXIgw6AgbGV1ciB0b3VyLiBQYXJjZSBxdeKAmWlscyByw6l1c3Npc3NlbnQgZW4gdXRpbGlzYW50IGNlIHN5c3TDqG1lLCBsZXVycyBhbWlzIGV0IGxldXJzIGNvbm5haXNzYW5jZXMgdm9udCBsZXMgaW1pdGVyIMOgIGxldXIgdG91ci4nLAogICAgJ0FpbnNpLCBwYXIgbW9uIGV4ZW1wbGUsIGplIGTDqWNsZW5jaGUgdW5lIHLDqWFjdGlvbiBlbiBjaGHDrm5lIHF1aSBpbnNwaXJlIGRlcyBtaWxsaWVycyBldCBkZXMgbWlsbGllcnMgZGUgcGVyc29ubmVzIMOgIHV0aWxpc2VyIGNlIHN5c3TDqG1lIGV0IMOgIHLDqXVzc2lyLiddLAogIHZvd0pveUxhc3Q6J0NlIHF1aSBmZXJhIGR1IG1vbmRlIHVuIGVuZHJvaXQgbWVpbGxldXIgZXQgcGx1cyBiZWF1LicsCiAgcUpveTp7IG9iaWVjdGl2OidM4oCZb2JqZWN0aWYgYXVxdWVsIGplIGTDqWRpZSBjZXR0ZSBtw6lkaXRhdGlvbiBkdSBib25oZXVyJywgc2VtaW50ZTonUXVlbGxlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMnLAogICAgICAgICBhanV0b3I6J1F1aSBhaS1qZSBs4oCZaW50ZW50aW9uIGTigJlhaWRlciAxIGhldXJlIHBhciBzZW1haW5lID8gUXVhbmQgZXN0LWNlIHF1ZSBqZSB2ZXV4IGxlIGZhaXJlID8gUXVlIHZhaXMtamUgZmFpcmUgcG91ciBjZXR0ZSBwZXJzb25uZSA\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG91dm9pciAxJywnU2Ugc291dmVuaXIgZHUgc3R5bG8nXSwgcDI6WydQb3V2b2lyIDInLCdMZSByZWdyZXQgaW50ZWxsaWdlbnQnXSwgcDM6WydQb3V2b2lyIDMnLCdMYSByZXN0cmljdGlvbiddLCBwNDpbJ1BvdXZvaXIgNCcsJ0zigJlhbnRpZG90ZSddIH0sCiAgdm93UG93OigpPT5bCiAgICAnSmUgZmFpcyBjZXMgY2hvc2VzIHBhcmNlIHF1ZSBsYSByw6lhbGl0w6kgZXN0IGRpY3TDqWUgcGFyIGxlcyBncmFpbmVzIHF1ZSBqZSBwbGFudGUgZXQgc2UgcHJvamV0dGUgc3VyIGxhIHZhY3VpdMOpIGTigJl1bmUgcsOpYWxpdMOpIHF1aSBuZSB2aWVudCBwYXMgZOKAmWVsbGUtbcOqbWUuJywKICAgIGBTaSBqZSBwbGFudGUgZHUgcG9zaXRpZiwgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSBwZXJjZXZvaXIgdW5lIHLDqWFsaXTDqSBwb3NpdGl2ZSwgbcOqbWUgc2kgY2V1eCBxdWkgbeKAmWVudG91cmVudCBsYSBwZXLDp29pdmVudCBjb21tZSBuw6lnYXRpdmUuIFNpIGplIHBsYW50ZSBkdSBuw6lnYXRpZiwgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSBwZXJjZXZvaXIgdW5lIHLDqWFsaXTDqSBxdWkgbeKAmWVzdCBkw6lmYXZvcmFibGUsIG3Dqm1lIHNpIGNldXggcXVpIG3igJllbnRvdXJlbnQgbGEgcGVyw6dvaXZlbnQgY29tbWUgcG9zaXRpdmUuYCwKICAgICdBbG9ycyBqZSBjaG9pc2lzIGRlIHBsYW50ZXIgZGVzIGdyYWluZXMgcG9zaXRpdmVzLicsCiAgICAnUGFyY2UgcXVlIGplIHLDqXVzc2lzIGVuIHV0aWxpc2FudCBjZSBzeXN0w6htZSwgcXVlbHF1ZXMtdW5zIGRlIG1lcyBhbWlzIGV0IGRlIG1lcyBjb25uYWlzc2FuY2VzIHZvbnQgbeKAmWltaXRlciBldCByw6l1c3NpciDDoCBsZXVyIHRvdXIuIFBhcmNlIHF14oCZaWxzIHLDqXVzc2lzc2VudCwgbGV1cnMgYW1pcyBldCBsZXVycyBjb25uYWlzc2FuY2VzIHZvbnQgbGVzIGltaXRlciBldCByw6l1c3Npci4nXSwKICB2b3dQb3dMYXN0OidBaW5zaSwgbGUgbW9uZGUgZGV2aWVudCB1biBlbmRyb2l0IG1laWxsZXVyIGV0IHBsdXMgYmVhdS4nLAogIHBvd0hlYWQ6J0xFUyA0IFBPVVZPSVJTJywgcG93SGVhZENhc2U6J0xlcyA0IHBvdXZvaXJzJywKICB0aGVtZXM6eyAnQG1vbmV5JzonQXJnZW50JywgJ0ByZWxhdGlvbnNoaXBzJzonUmVsYXRpb25zJywgJ0BoZWFsdGgnOidTYW50w6knIH0sCiAgZHVyOlsnNSBzZWNvbmRlcycsJzEgbWludXRlJywnNSBtaW51dGVzJywnMTAgbWludXRlcycsJzEgaGV1cmUnLCd0b3V0ZSBsYSBqb3VybsOpZSddLAogIGR1ckFwcGVuZDpkPT5kPT09J3RvdXRlIGxhIGpvdXJuw6llJz8ndG91dGUgbGEgam91cm7DqWUnOidwZW5kYW50IGF1IG1vaW5zICcrZCwKICBkdXJTdHJpcDovXHMqKHBlbmRhbnRccyspPyhhdSBtb2luc1xzKyk\/KDUgc2Vjb25kZXN8MSBtaW51dGV8NSBtaW51dGVzfDEwIG1pbnV0ZXN8MSBoZXVyZXx0b3V0ZSBsYSBqb3VybsOpZSlccyokL2ksCiAgbGVhZDovXihkZVxzK3xkWyfigJldXHMqKS9pLAogIHppOno9Pno9PT0nbWFpbmUnPydkZW1haW4nOidhdWpvdXJk4oCZaHVpJywKICB0YWlsUDE6J0V0IHBldXQtw6p0cmUgcXVlIGplIG5lIHNhaXMgbcOqbWUgcGFzIGVuY29yZSBxdWVsbGVzIGF1dHJlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMsIHPDu3JlbWVudCBiZWF1Y291cCBk4oCZYXV0cmVzIGRvbnQgamUgbmUgbWUgc291dmllbnMgcGFzIG1haW50ZW5hbnQuIFF1b2kgcXVlIGrigJlhaWUgcHUgcGVuc2VyLCBkaXJlIG91IGZhaXJlLCBqZSB2ZXV4IGTDqXNhY3RpdmVyIGNlcyBncmFpbmVzIG1haW50ZW5hbnQuJywKICB0YWlsUDI6J0plIG1lIHN1aXMgZmFpdCBkdSBtYWwgZXQgauKAmWFpIGZhaXQgZHUgbWFsIGF1eCBwZXJzb25uZXMgYXV0b3VyIGRlIG1vaS4gSmUgbGUgcmVncmV0dGUsIGV0IGplIHZldXggZMOpc2FjdGl2ZXIgY2VzIGdyYWluZXMgbGUgcGx1cyB2aXRlIHBvc3NpYmxlLCBhaW5zaSBxdWUgdG91dGVzIGxlcyBjaGHDrm5lcyBk4oCZw6l2w6luZW1lbnRzIHF1aSBlbiBkw6ljb3VsZW50LCBjYXIgamUgY29tcHJlbmRzIG1haW50ZW5hbnQgcXXigJllbGxlcyBkb3VibGVudCB0b3V0ZXMgbGVzIDI0IGhldXJlcywgZXQgcGx1cyB2aXRlIGplIGxlcyBkw6lzYWN0aXZlLCBtaWV1eCBj4oCZZXN0ICEnLAogIG5pZ2h0OidFdCBjZSBzb2lyLCBjb25zY2llbW1lbnQsIGRlcHVpcyBsZSBtb21lbnQgb8O5IGplIHBvc2UgbGEgdMOqdGUgc3VyIGzigJlvcmVpbGxlciBldCBt4oCZZW5kb3JzIGp1c3F14oCZw6AgbW9uIHLDqXZlaWwgbGUgbWF0aW4uJywKICBzdGQ6ewogICAgcDI6eyBmb3JtOigpPT5bWyd0JywnUXVlbHMgYsOpbsOpZmljZXMgauKAmWFpIGV1cyddLFsncDInLCdiw6luw6lmaWNlcyBtYXTDqXJpZWxzIG91IGTigJllZ28nXV0sCiAgICAgICAgIHJlY2FwOmU9PmBBdmVjIGxlIG5pdmVhdSBkZSBjb25zY2llbmNlIHF1ZSBq4oCZYXZhaXMgcGVuZGFudCBsZXMgYW5uw6llcyBvw7kgauKAmWFpIHBlbnPDqSAvIGRpdCAvIGZhaXQgY2VzIGNob3NlcywgY+KAmWVzdCB0b3V0IGNlIHF1ZSBqZSBzYXZhaXMgZmFpcmUuIErigJlhaSBjZXJ0YWluZW1lbnQgZXUgZGVzIGLDqW7DqWZpY2VzIG1hdMOpcmllbHMgb3UgZOKAmWVnbyA6ICR7bWsoZS5wMil9LiBFdCBwZXV0LcOqdHJlIGFpLWplIGV1IGF1c3NpIGTigJlhdXRyZXMgYsOpbsOpZmljZXMgZG9udCBqZSBuZSBtZSBzb3V2aWVucyBwYXMgbWFpbnRlbmFudC4gSmUgbWUgcmVuZHMgY29tcHRlIG1haW50ZW5hbnQgcXVlIGrigJlhaSBwYXnDqSwgZXQgcXVlIGplIHBhaWUgZW5jb3JlLCB1biBwcml4IGJpZW4gdHJvcCDDqWxldsOpIHBvdXIgdG91cyBjZXMgYsOpbsOpZmljZXMuICR7dHgoKS50YWlsUDJ9YCB9LAogICAgcDM6eyBmb3JtOigpPT5bWyd0JywnSmUgcHJvbWV0c+KApiddLFsncDMnLCdjZSBxdWUgamUgcHJvbWV0cyBkZSBuZSBwbHVzIGZhaXJlLCBldCBwZW5kYW50IGNvbWJpZW4gZGUgdGVtcHMsIHBhciBleC4gOiBkZSBuZSBwbHVzIOKApiBwZW5kYW50IGF1IG1vaW5zIDEgbWludXRlJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBKZSBwcm9tZXRzICR7bWsoZS5wMyl9LiAke3R4KCkubmlnaHR9YCB9LAogICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYCR7cERyYWZ0LnppPT09J21haW5lJz8nRGVtYWluJzonQXVqb3VyZOKAmWh1aSd9IGplIHByb21ldHMgZGXigKZgXSxbJ3A0JywnY2UgcXVlIGplIHZhaXMgZmFpcmUsIGNvbW1lIGdyYWluZSBvcHBvc8OpZSDDoCBjZWxsZSBxdWUgamUgdmV1eCBkw6lzYWN0aXZlciddXSwKICAgICAgICAgcmVjYXA6ZT0+YEVuIGdlc3RlIGRlIGNvbXBlbnNhdGlvbiwgamUgZMOpZGllIGxlIGZhaXQgZGUgY29tcHJlbmRyZSBtYWludGVuYW50IHF1ZSBsYSByw6lhbGl0w6kgcXVlIGplIHZpcyB2aWVudCBkZXMgZ3JhaW5lcyBxdWUgauKAmWFpIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqSwgcXVpIHNlIHByb2pldHRlbnQgc3VyIGxhIHZhY3VpdMOpIGTigJl1bmUgcsOpYWxpdMOpIHF1aSBuZSB2aWVudCBwYXMgZOKAmWVsbGUtbcOqbWUsIGV0ICR7dHgoKS56aShlLnppKX0gamUgcHJvbWV0cyAke2RlRnIobm9MZWFkKGUucDQpKX0ke21rKG5vTGVhZChlLnA0KSl9LmAgfQogIH0sCiAgcHY6ewogICAgMTp7IG5hbWU6KCk9PmBDZSBxdWUgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSB2aXZyZWAsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JyxgSmUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSB2aXZyZSBkYW5zIG1hIHLDqWFsaXTDqeKApmBdLFsncDFhJywnY2UgcXVlIGplIHZpcyBtYWludGVuYW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmw6AgY2F1c2UgZGUgbWVzIHBlbnPDqWVzLCBwYXJvbGVzIGV0IGFjdGVzIGRlIG1vbiBwYXNzw6ksIGRhbnMgY2V0dGUgdmllIG91IGRhbnMgdW5lIHZpZSBhbnTDqXJpZXVyZSwgcXVhbmTigKYnXSxbJ3AxYicsJ3F1ZWxsZXMgZ3JhaW5lcyBq4oCZYWkgcGxhbnTDqWVzJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEplIHN1aXMgJHtHKCdvYmxpZ8OpZScsJ29ibGlnw6knKX0gZGUgdml2cmUgZGFucyBtYSByw6lhbGl0w6kgJHttayhlLnAxYSl9IMOgIGNhdXNlIGRlIG1lcyBwZW5zw6llcywgcGFyb2xlcyBldCBhY3RlcyBkZSBtb24gcGFzc8OpLCBkYW5zIGNldHRlIHZpZSBvdSBkYW5zIHVuZSB2aWUgYW50w6lyaWV1cmUsIHF1YW5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDI6eyBuYW1lOigpPT4nUXVlbGxlcyBncmFpbmVzIGplIHZldXggbmV0dG95ZXInLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0plIHZldXggZMOpc2FjdGl2ZXIgbGVzIGdyYWluZXMgcGxhbnTDqWVzIHF1YW5k4oCmJ10sWydwMWInLCdjZSBxdWUgauKAmWFpIHBlbnPDqSwgZGl0IG91IGZhaXQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSmUgdmV1eCBkw6lzYWN0aXZlciBsZXMgZ3JhaW5lcyBwbGFudMOpZXMgcXVhbmQgJHttayhlLnAxYil9LCBjYXIgZWxsZXMgZG91YmxlbnQgdG91dGVzIGxlcyAyNCBoZXVyZXMgZXQgamUgbmUgdmV1eCBwbHVzIHF1ZSBjZXMgZ3JhaW5lcyBncmFuZGlzc2VudC4gRGUgcGx1cywgcGV1dC3DqnRyZSBhaS1qZSBhdXNzaSBwbGFudMOpIGTigJlhdXRyZXMgZ3JhaW5lcyBkb250IGplIG5lIG1lIHNvdXZpZW5zIHBhcyBtYWludGVuYW50LiBRdW9pIHF1ZSBq4oCZYWllIHB1IHBlbnNlciwgZGlyZSBvdSBmYWlyZSwgamUgdmV1eCBkw6lzYWN0aXZlciBjZXMgZ3JhaW5lcyBtYWludGVuYW50LmAgfSB9LAogICAgMzp7IG5hbWU6KCk9PidKZSBuZXR0b2llIHVuZSDDqW1vdGlvbicsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSmUgdmV1eCBuZXR0b3llciBsZXMgZ3JhaW5lcyBkZeKApiddLFsncDFlJywnbOKAmcOpbW90aW9uIG91IGxlIHNjaMOpbWEgOiBjb2zDqHJlLCBlbnZpZSwgcGV1cuKApiddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApnBsYW50w6llcyBwYXIgZGVzIHBlbnPDqWVzLCBwYXJvbGVzIGV0IGFjdGVzIGRhbnMgbW9uIHBhc3PDqSwgZGFucyBjZXR0ZSB2aWUgb3UgZGFucyB1bmUgdmllIGFudMOpcmlldXJlLCBxdWkgbeKAmW9ibGlnZW50IMOgIHZpdnJl4oCmJ10sWydwMWEnLCdsYSBzaXR1YXRpb24gcXVlIGplIHZpcyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ1F1YW5k4oCmJ10sWydwMWInLCdjZSBxdWUgamUgcGVuc2UgYXZvaXIgcGxhbnTDqSddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBKZSB2ZXV4IG5ldHRveWVyIGxlcyBncmFpbmVzIGRlICR7bWsoZS5wMWUpfSBwbGFudMOpZXMgcGFyIGRlcyBwZW5zw6llcywgcGFyb2xlcyBldCBhY3RlcyBkYW5zIG1vbiBwYXNzw6ksIGRhbnMgY2V0dGUgdmllIG91IGRhbnMgdW5lIHZpZSBhbnTDqXJpZXVyZSwgcXVpIG3igJlvYmxpZ2VudCDDoCB2aXZyZSAke21rKGUucDFhKX0uIFF1YW5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDQ6eyBuYW1lOigpPT4nSmUgbmUgc2FpcyBwYXMgcXVlbGxlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0plIG7igJlhaSBhdWN1bmUgaWTDqWUgZGUgY2UgcXVlIGrigJlhaSBwdSBwbGFudGVyIHBvdXIgdml2cmUgY2V0dGUgc2l0dWF0aW9uIDonXSxbJ3AxYScsJ2xhIHNpdHVhdGlvbiBxdWUgamUgdmlzJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEplIG7igJlhaSBhdWN1bmUgaWTDqWUgZGUgY2UgcXVlIGrigJlhaSBwdSBwbGFudGVyIHBvdXIgdml2cmUgY2V0dGUgc2l0dWF0aW9uIDogJHttayhlLnAxYSl9LiBNYWlzIGplIGNvbXByZW5kcyBtYWludGVuYW50IHF1ZSwgc2kgamUgbuKAmWF2YWlzIHBhcyBwbGFudMOpIGNlcyBncmFpbmVzLCBjZXR0ZSBzaXR1YXRpb24gbmUgc2VyYWl0IHBhcyBkYW5zIG1hIHLDqWFsaXTDqS4gSmUgdmV1eCBkw6lzYWN0aXZlciBtYWludGVuYW50IGxlcyBncmFpbmVzIHBsYW50w6llcy5gIH0sCiAgICAgICAgcDI6eyBmb3JtOigpPT5bWyd0JywnU2kgcXVlbHF1ZXMgYsOpbsOpZmljZXMgbWUgdmllbm5lbnQgw6AgbOKAmWVzcHJpdCAoZmFjdWx0YXRpZiknXSxbJ3AyJywndHUgcGV1eCBsYWlzc2VyIHZpZGUnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSuKAmWFpIGNlcnRhaW5lbWVudCBldSBkZXMgYsOpbsOpZmljZXMsIG3Dqm1lIHNpIGplIG5lIHNhaXMgcGFzIHF1ZWxsZXMgZ3JhaW5lcyBq4oCZYWkgcGxhbnTDqWVzIG5pIHF1ZWxzIGLDqW7DqWZpY2VzIGrigJlhaSBldXMuICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgUGV1dC3DqnRyZSAke21rKGUucDIpfSwgZXQgaWwgeSBhIHPDu3JlbWVudCBk4oCZYXV0cmVzIGLDqW7DqWZpY2VzIHF1ZSBq4oCZYWkgcHUgYXZvaXIuYCA6ICdJbCB5IGEgc8O7cmVtZW50IGRlcyBiw6luw6lmaWNlcyBxdWUgauKAmWFpIHB1IGF2b2lyLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ0plIHByb21ldHMgZGUgbmUgcGx1cyBwbGFudGVyIGxlcyBtw6ptZXMgZ3JhaW5lcyBwZW5kYW50IGF1IG1vaW5z4oCmJ10sWydwMycsJ2NvbWJpZW4gZGUgdGVtcHMsIHBhciBleC4gOiAxIGhldXJlJ10sWydkdXInLCdzZXQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSmUgcHJvbWV0cyBkZSBuZSBwbHVzIHBsYW50ZXIgbGVzIG3Dqm1lcyBncmFpbmVzIHBlbmRhbnQgYXUgbW9pbnMgJHttayhlLnAzKX0uICR7dHgoKS5uaWdodH1gIH0sCiAgICAgICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYEVuIGdlc3RlIGRlIGNvbXBlbnNhdGlvbiwgJHtwRHJhZnQuemk9PT0nbWFpbmUnPydkZW1haW4nOidhdWpvdXJk4oCZaHVpJ30gamUgcHJvbWV0cyBkZeKApmBdLFsncDQnLCdjZSBxdWUgamUgdmFpcyBmYWlyZSddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBFbiBnZXN0ZSBkZSBjb21wZW5zYXRpb24sICR7dHgoKS56aShlLnppKX0gamUgcHJvbWV0cyAke2RlRnIobm9MZWFkKGUucDQpKX0ke21rKG5vTGVhZChlLnA0KSl9LmAgfSB9CiAgfQp9OwoKLyogLS0tLS0tLS0tLSBwcmFjdGljZSB0ZXh0czogSXRhbGlhbm8gLS0tLS0tLS0tLSAqLwpUWC5pdCA9IHsKICB2b3dKb3k6WwogICAgJ0ZhY2NpbyBxdWVzdGUgY29zZSBwZXJjaMOpIGxhIG1pYSByZWFsdMOgIMOoIGRldHRhdGEgZGFpIHNlbWkgY2hlIHBpYW50bywgY2hlIHNpIHByb2lldHRhbm8gc3VsbGEgdmFjdWl0w6AgZGkgdW5hIHJlYWx0w6AgY2hlIG5vbiB2aWVuZSBkYSBzw6kgc3Rlc3NhLicsCiAgICAnUG9pY2jDqSBobyBwaWFudGF0byBxdWVzdGkgc2VtaSwgY2hlIG9yYSBzdG8gYW5jaGUgaW5uYWZmaWFuZG8sIGF2csOyIHN1Y2Nlc3NvLicsCiAgICAnUG9pY2jDqSBobyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGFsY3VuaSBkZWkgbWllaSBhbWljaSBlIGNvbm9zY2VudGkgbWkgaW1pdGVyYW5ubyBlIGF2cmFubm8gc3VjY2Vzc28gYSBsb3JvIHZvbHRhLiBQb2ljaMOpIGxvcm8gYXZyYW5ubyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGkgbG9ybyBhbWljaSBlIGNvbm9zY2VudGkgbGkgaW1pdGVyYW5ubyBhIGxvcm8gdm9sdGEuJywKICAgICdJbiBxdWVzdG8gbW9kbywgY29uIGlsIG1pbyBlc2VtcGlvLCBhdnZpbyB1bmEgcmVhemlvbmUgYSBjYXRlbmEgY2hlIGlzcGlyYSBtaWdsaWFpYSBlIG1pZ2xpYWlhIGRpIHBlcnNvbmUgYSB1c2FyZSBxdWVzdG8gc2lzdGVtYSBlIGFkIGF2ZXJlIHN1Y2Nlc3NvLiddLAogIHZvd0pveUxhc3Q6J0lsIGNoZSByZW5kZXLDoCBpbCBtb25kbyB1biBwb3N0byBtaWdsaW9yZSBlIHBpw7kgYmVsbG8uJywKICBxSm95Onsgb2JpZWN0aXY6J0zigJlvYmlldHRpdm8gYSBjdWkgZGVkaWNvIHF1ZXN0YSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIHNlbWludGU6J1F1YWxpIHNlbWkgaG8gcGlhbnRhdG8nLAogICAgICAgICBhanV0b3I6J0NoaSBtaSBwcm9wb25nbyBkaSBhaXV0YXJlIDEgb3JhIGFsbGEgc2V0dGltYW5hPyBRdWFuZG8gdm9nbGlvIGZhcmxvPyBDaGUgY29zYSBmYXLDsiBwZXIgcXVlc3RhIHBlcnNvbmE\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG90ZXJlIDEnLCdSaWNvcmRhcmUgbGEgcGVubmEnXSwgcDI6WydQb3RlcmUgMicsJ0lsIHJpbXBpYW50byBpbnRlbGxpZ2VudGUnXSwgcDM6WydQb3RlcmUgMycsJ0xhIHJlc3RyaXppb25lJ10sIHA0OlsnUG90ZXJlIDQnLCdM4oCZYW50aWRvdG8nXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0ZhY2NpbyBxdWVzdGUgY29zZSBwZXJjaMOpIGxhIHJlYWx0w6Agw6ggZGV0dGF0YSBkYWkgc2VtaSBjaGUgcGlhbnRvIGUgc2kgcHJvaWV0dGEgc3VsbGEgdmFjdWl0w6AgZGkgdW5hIHJlYWx0w6AgY2hlIG5vbiB2aWVuZSBkYSBzw6kgc3Rlc3NhLicsCiAgICBgU2UgcGlhbnRvIHBvc2l0aXZvLCBzb25vICR7RygnY29zdHJldHRhJywnY29zdHJldHRvJyl9IGEgcGVyY2VwaXJlIHVuYSByZWFsdMOgIHBvc2l0aXZhLCBhbmNoZSBzZSBjaGkgbWkgc3RhIGludG9ybm8gbGEgcGVyY2VwaXNjZSBjb21lIG5lZ2F0aXZhLiBTZSBwaWFudG8gbmVnYXRpdm8sIHNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSBwZXJjZXBpcmUgdW5hIHJlYWx0w6AgYSBtZSBzZmF2b3Jldm9sZSwgYW5jaGUgc2UgY2hpIG1pIHN0YSBpbnRvcm5vIGxhIHBlcmNlcGlzY2UgY29tZSBwb3NpdGl2YS5gLAogICAgJ0Nvc8OsIHNjZWxnbyBkaSBwaWFudGFyZSBzZW1pIHBvc2l0aXZpLicsCiAgICAnUG9pY2jDqSBobyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGFsY3VuaSBkZWkgbWllaSBhbWljaSBlIGNvbm9zY2VudGkgbWkgaW1pdGVyYW5ubyBlIGF2cmFubm8gc3VjY2Vzc28gYSBsb3JvIHZvbHRhLiBQb2ljaMOpIGxvcm8gYXZyYW5ubyBzdWNjZXNzbywgaSBsb3JvIGFtaWNpIGUgY29ub3NjZW50aSBsaSBpbWl0ZXJhbm5vIGUgYXZyYW5ubyBzdWNjZXNzby4nXSwKICB2b3dQb3dMYXN0OidDb3PDrCBpbCBtb25kbyBkaXZlbnRhIHVuIHBvc3RvIG1pZ2xpb3JlIGUgcGnDuSBiZWxsby4nLAogIHBvd0hlYWQ6J0kgNCBQT1RFUkknLCBwb3dIZWFkQ2FzZTonSSA0IHBvdGVyaScsCiAgdGhlbWVzOnsgJ0Btb25leSc6J1NvbGRpJywgJ0ByZWxhdGlvbnNoaXBzJzonUmVsYXppb25pJywgJ0BoZWFsdGgnOidTYWx1dGUnIH0sCiAgZHVyOlsnNSBzZWNvbmRpJywnMSBtaW51dG8nLCc1IG1pbnV0aScsJzEwIG1pbnV0aScsJzEgb3JhJywndHV0dG8gaWwgZ2lvcm5vJ10sCiAgZHVyQXBwZW5kOmQ9PmQ9PT0ndHV0dG8gaWwgZ2lvcm5vJz8ncGVyIHR1dHRvIGlsIGdpb3Jubyc6J3BlciBhbG1lbm8gJytkLAogIGR1clN0cmlwOi9ccyoocGVyXHMrKT8oYWxtZW5vXHMrKT8odHV0dG8gaWwgZ2lvcm5vfDUgc2Vjb25kaXwxIG1pbnV0b3w1IG1pbnV0aXwxMCBtaW51dGl8MSBvcmEpXHMqJC9pLAogIGxlYWQ6L15kaVxzKy9pLAogIHppOno9Pno9PT0nbWFpbmUnPydkb21hbmknOidvZ2dpJywKICB0YWlsUDE6J0UgZm9yc2Ugbm9uIHNvIGFuY29yYSBxdWFsaSBhbHRyaSBzZW1pIGhvIHBpYW50YXRvLCBzaWN1cmFtZW50ZSBtb2x0aSBhbHRyaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBRdWFsdW5xdWUgY29zYSBpbyBhYmJpYSBwZW5zYXRvLCBkZXR0byBvIGZhdHRvLCB2b2dsaW8gZGlzYXR0aXZhcmUgb3JhIHF1ZXN0aSBzZW1pLicsCiAgZ2V0IHRhaWxQMigpeyByZXR1cm4gYEhvIGZhdHRvIGRlbCBtYWxlIGEgbWUgJHtHKCdzdGVzc2EnLCdzdGVzc28nKX0gZSBhbGxlIHBlcnNvbmUgaW50b3JubyBhIG1lLiBNaSBkaXNwaWFjZSwgZSB2b2dsaW8gZGlzYXR0aXZhcmUgcXVlc3RpIHNlbWkgaWwgcHJpbWEgcG9zc2liaWxlLCBpbnNpZW1lIGEgdHV0dGUgbGUgY2F0ZW5lIGRpIGV2ZW50aSBjaGUgbmUgZGVyaXZhbm8sIHBlcmNow6kgb3JhIGNhcGlzY28gY2hlIHNpIHJhZGRvcHBpYW5vIG9nbmkgMjQgb3JlLCBlIHByaW1hIGxpIGRpc2F0dGl2bywgbWVnbGlvIMOoIWAgfSwKICBuaWdodDonRSBzdGFzZXJhLCBjb25zYXBldm9sbWVudGUsIGRhbCBtb21lbnRvIGluIGN1aSBwb3NvIGxhIHRlc3RhIHN1bCBjdXNjaW5vIGUgbWkgYWRkb3JtZW50byBmaW5vIGEgcXVhbmRvIG1pIHN2ZWdsaW8gYWwgbWF0dGluby4nLAogIHN0ZDp7CiAgICBwMjp7IGZvcm06KCk9PltbJ3QnLCdRdWFsaSBiZW5lZmljaSBobyBhdnV0byddLFsncDInLCdiZW5lZmljaSBtYXRlcmlhbGkgbyBkZWxs4oCZZWdvJ11dLAogICAgICAgICByZWNhcDplPT5gQ29uIGlsIGxpdmVsbG8gZGkgY29uc2FwZXZvbGV6emEgY2hlIGF2ZXZvIG5lZ2xpIGFubmkgaW4gY3VpIGhvIHBlbnNhdG8gLyBkZXR0byAvIGZhdHRvIHF1ZXN0ZSBjb3NlLCBlcmEgdHV0dG8gY2nDsiBjaGUgc2FwZXZvIGZhcmUuIERpIHNpY3VybyBobyBhdnV0byBiZW5lZmljaSBtYXRlcmlhbGkgbyBkZWxs4oCZZWdvOiAke21rKGUucDIpfS4gRSBmb3JzZSBobyBhdnV0byBhbmNoZSBhbHRyaSBiZW5lZmljaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBPcmEgbWkgcmVuZG8gY29udG8gZGkgYXZlciBwYWdhdG8sIGUgZGkgcGFnYXJlIGFuY29yYSwgdW4gcHJlenpvIHRyb3BwbyBhbHRvIHBlciB0dXR0aSBxdWVzdGkgYmVuZWZpY2kuICR7dHgoKS50YWlsUDJ9YCB9LAogICAgcDM6eyBmb3JtOigpPT5bWyd0JywnUHJvbWV0dG\/igKYnXSxbJ3AzJywnY29zYSBwcm9tZXR0byBkaSBub24gZmFyZSBwacO5LCBlIHBlciBxdWFudG8gdGVtcG8sIGFkIGVzLjogZGkgbm9uIOKApiBwZXIgYWxtZW5vIDEgbWludXRvJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBQcm9tZXR0byAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgIHA0OnsgZm9ybTooKT0+W1snemknXSxbJ3QnLGAke3BEcmFmdC56aT09PSdtYWluZSc\/J0RvbWFuaSc6J09nZ2knfSBwcm9tZXR0byBkaeKApmBdLFsncDQnLCdjb3NhIGZhcsOyLCBjb21lIHNlbWUgb3Bwb3N0byBhIHF1ZWxsbyBjaGUgdm9nbGlvIGRpc2F0dGl2YXJlJ11dLAogICAgICAgICByZWNhcDplPT5gQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sIGRlZGljbyBpbCBmYXR0byBkaSBjb21wcmVuZGVyZSBvcmEgY2hlIGxhIHJlYWx0w6AgY2hlIHZpdm8gdmllbmUgZGFpIHNlbWkgY2hlIGhvIHBpYW50YXRvIGluIHBhc3NhdG8sIGNoZSBzaSBwcm9pZXR0YW5vIHN1bGxhIHZhY3VpdMOgIGRpIHVuYSByZWFsdMOgIGNoZSBub24gdmllbmUgZGEgc8OpIHN0ZXNzYSwgZSAke3R4KCkuemkoZS56aSl9IHByb21ldHRvIGRpICR7bWsobm9MZWFkKGUucDQpKX0uYCB9CiAgfSwKICBwdjp7CiAgICAxOnsgbmFtZTooKT0+YENpw7IgY2hlIHNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSB2aXZlcmVgLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsYFNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSB2aXZlcmUgbmVsbGEgbWlhIHJlYWx0w6DigKZgXSxbJ3AxYScsJ2Npw7IgY2hlIHZpdm8gb3JhJ10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmYSBjYXVzYSBkZWkgbWllaSBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIGRlbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBxdWFuZG\/igKYnXSxbJ3AxYicsJ3F1YWxpIHNlbWkgaG8gcGlhbnRhdG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gU29ubyAke0coJ2Nvc3RyZXR0YScsJ2Nvc3RyZXR0bycpfSBhIHZpdmVyZSBuZWxsYSBtaWEgcmVhbHTDoCAke21rKGUucDFhKX0gYSBjYXVzYSBkZWkgbWllaSBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIGRlbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBxdWFuZG8gJHttayhlLnAxYil9LiAke3R4KCkudGFpbFAxfWAgfSB9LAogICAgMjp7IG5hbWU6KCk9PidRdWFsaSBzZW1pIHZvZ2xpbyBwdWxpcmUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZvZ2xpbyBkaXNhdHRpdmFyZSBpIHNlbWkgcGlhbnRhdGkgcXVhbmRv4oCmJ10sWydwMWInLCdjb3NhIGhvIHBlbnNhdG8sIGRldHRvIG8gZmF0dG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gVm9nbGlvIGRpc2F0dGl2YXJlIGkgc2VtaSBwaWFudGF0aSBxdWFuZG8gJHttayhlLnAxYil9LCBwZXJjaMOpIHNpIHJhZGRvcHBpYW5vIG9nbmkgMjQgb3JlIGUgbm9uIHZvZ2xpbyBwacO5IGNoZSBxdWVzdGkgc2VtaSBjcmVzY2Fuby4gSW5vbHRyZSwgZm9yc2UgaG8gcGlhbnRhdG8gYW5jaGUgYWx0cmkgc2VtaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBRdWFsdW5xdWUgY29zYSBpbyBhYmJpYSBwZW5zYXRvLCBkZXR0byBvIGZhdHRvLCB2b2dsaW8gZGlzYXR0aXZhcmUgb3JhIHF1ZXN0aSBzZW1pLmAgfSB9LAogICAgMzp7IG5hbWU6KCk9PidQdWxpc2NvIHVu4oCZZW1vemlvbmUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZvZ2xpbyBwdWxpcmUgaSBzZW1pIGRp4oCmJ10sWydwMWUnLCds4oCZZW1vemlvbmUgbyBsbyBzY2hlbWE6IHJhYmJpYSwgaW52aWRpYSwgcGF1cmHigKYnXSwKICAgICAgICAgICAgICAgICAgICAgICBbJ3QnLCfigKZwaWFudGF0aSBjb24gcGVuc2llcmksIHBhcm9sZSBlIGF6aW9uaSBuZWwgbWlvIHBhc3NhdG8sIGluIHF1ZXN0YSB2aXRhIG8gaW4gdW5hIHZpdGEgcHJlY2VkZW50ZSwgY2hlIG1pIGNvc3RyaW5nb25vIGEgdml2ZXJl4oCmJ10sWydwMWEnLCdsYSBzaXR1YXppb25lIGNoZSB2aXZvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0JywnUXVhbmRv4oCmJ10sWydwMWInLCdjb3NhIHBlbnNvIGRpIGF2ZXIgcGlhbnRhdG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gVm9nbGlvIHB1bGlyZSBpIHNlbWkgZGkgJHttayhlLnAxZSl9IHBpYW50YXRpIGNvbiBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIG5lbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBjaGUgbWkgY29zdHJpbmdvbm8gYSB2aXZlcmUgJHttayhlLnAxYSl9LiBRdWFuZG8gJHttayhlLnAxYil9LiAke3R4KCkudGFpbFAxfWAgfSB9LAogICAgNDp7IG5hbWU6KCk9PidOb24gc28gcXVhbGkgc2VtaSBobyBwaWFudGF0bycsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnTm9uIGhvIGlkZWEgZGkgY29zYSBpbyBhYmJpYSBwb3R1dG8gcGlhbnRhcmUgcGVyIHZpdmVyZSBxdWVzdGEgc2l0dWF6aW9uZTonXSxbJ3AxYScsJ2xhIHNpdHVhemlvbmUgY2hlIHZpdm8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gTm9uIGhvIGlkZWEgZGkgY29zYSBpbyBhYmJpYSBwb3R1dG8gcGlhbnRhcmUgcGVyIHZpdmVyZSBxdWVzdGEgc2l0dWF6aW9uZTogJHttayhlLnAxYSl9LiBNYSBvcmEgY2FwaXNjbyBjaGUsIHNlIG5vbiBhdmVzc2kgcGlhbnRhdG8gcXVlaSBzZW1pLCBxdWVzdGEgc2l0dWF6aW9uZSBub24gc2FyZWJiZSBuZWxsYSBtaWEgcmVhbHTDoC4gVm9nbGlvIGRpc2F0dGl2YXJlIG9yYSBpIHNlbWkgcGlhbnRhdGkuYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ1NlIG1pIHZlbmdvbm8gaW4gbWVudGUgYWxjdW5pIGJlbmVmaWNpIChmYWNvbHRhdGl2byknXSxbJ3AyJywncHVvaSBsYXNjaWFyZSB2dW90byddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBEaSBzaWN1cm8gaG8gYXZ1dG8gZGVpIGJlbmVmaWNpLCBhbmNoZSBzZSBub24gc28gcXVhbGkgc2VtaSBobyBwaWFudGF0byBuw6kgcXVhbGkgYmVuZWZpY2kgaG8gYXZ1dG8uICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgRm9yc2UgJHttayhlLnAyKX0sIGUgY2kgc29ubyBzaWN1cmFtZW50ZSBhbHRyaSBiZW5lZmljaSBjaGUgaG8gcG90dXRvIGF2ZXJlLmAgOiAnQ2kgc29ubyBzaWN1cmFtZW50ZSBiZW5lZmljaSBjaGUgaG8gcG90dXRvIGF2ZXJlLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ1Byb21ldHRvIGRpIG5vbiBwaWFudGFyZSBwacO5IGdsaSBzdGVzc2kgc2VtaSBwZXIgYWxtZW5v4oCmJ10sWydwMycsJ3BlciBxdWFudG8gdGVtcG8sIGFkIGVzLjogMSBvcmEnXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBQcm9tZXR0byBkaSBub24gcGlhbnRhcmUgcGnDuSBnbGkgc3Rlc3NpIHNlbWkgcGVyIGFsbWVubyAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sICR7cERyYWZ0LnppPT09J21haW5lJz8nZG9tYW5pJzonb2dnaSd9IHByb21ldHRvIGRp4oCmYF0sWydwNCcsJ2Nvc2EgZmFyw7InXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sICR7dHgoKS56aShlLnppKX0gcHJvbWV0dG8gZGkgJHttayhub0xlYWQoZS5wNCkpfS5gIH0gfQogIH0KfTsKCi8qIC0tLS0tLS0tLS0gUm9tw6JuxIMgLS0tLS0tLS0tLSAqLwovKiBudW1lcmVsZSBkZSBsYSAyMCDDrm4gc3VzICjImWkgMTAwLCAyMDDigKYpIGNlciDigJ5kZeKAnTogMjAgZGUgbWludXRlLCAxIHByYWN0aWPEgywgNSBwcmFjdGljaSAqLwpjb25zdCBkZVJvID0gbiA9PiAobj49MjAgJiYgKG4lMTAwPT09MCB8fCBuJTEwMD49MjApKSA\/ICdkZSAnIDogJyc7CmNvbnN0IHJvTiA9IChuLHMscCkgPT4gbj09PTEgPyBgMSAke3N9YCA6IGAke259ICR7ZGVSbyhuKX0ke3B9YDsKVUkucm8gPSB7CiAgYXBwTmFtZTonU2VtaW7Im2UgQnVuZScsIGNvdXJzZXM6J0N1cnN1cmlsZSBtZWxlJywgbGFuZ3VhZ2U6J0xpbWJhJywgc29vbjonw65uIGN1csOibmQnLCBjbG9zZTonw45uY2hpZGUnLAogIG5hdlRvZGF5OidBemknLCBuYXZKb3k6J0J1Y3VyaWUnLCBuYXZQcmFjdGljZTonUHJhY3RpY8SDJywgbmF2VG9kbzonVG8gRG8nLCBuYXZQb3dlcnM6JzQgUHV0ZXJpJywgbWVudTonTWVuaXUnLAogIHNhdmVGYWlsOidOdSBzLWEgcHV0dXQgc2FsdmEuIFZlcmlmaWPEgyBpbnRlcm5ldHVsLicsIGxvYWRGYWlsOidOdSBzLWF1IHB1dHV0IMOubmPEg3JjYSBkYXRlbGUuJywKICB0b2RheTonQXppJywgeWVzdGVyZGF5OidJZXJpJywKICBraW5kOnsgbWVkaXRhdGllOidNZWRpdGHIm2llJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J01lZGl0YcibaWEgYnVjdXJpZWknLCByZWN1bm9zdGludGU6J1JlY3Vub8iZdGluyJtlIMiZaSBzdWNjZXNlJywgcHV0ZXJpOidDZWxlIDQgcHV0ZXJpJyB9LAogIHRlc3RCYW5uZXI6J1ZhcmlhbnTEgyBkZSB0ZXN0OiDDrm5zZW1uxINyaWxlIHNlIHDEg3N0cmVhesSDIGRvYXIgcGUgYWNlc3QgZGlzcG96aXRpdi4gUGUgc2l0ZSBzZSB2b3Igc2FsdmEgw65uIGNvbnR1bCB0xIN1LicsCiAgZ2VuUTonQ3VtIHByZWZlcmkgc8SDIMOuyJtpIHZvcmJlc2M\/JywgZ2VuTm90ZTonQ2EgdGV4dGVsZSBzxIMgc3VuZSBmaXJlc2MsIGRlIGV4ZW1wbHUg4oCeU3VudCByZWN1bm9zY8SDdG9hcmXigJ0gc2F1IOKAnlN1bnQgcmVjdW5vc2PEg3RvcuKAnS4nLCBmZW06J0ZlbWluaW4nLCBtYXNjOidNYXNjdWxpbicsCiAgZ2VuRm9vdDpnPT5gw47Im2kgdm9yYmVzYyBsYSAke2c9PT0nbSc\/J21hc2N1bGluJzonZmVtaW5pbid9YCwgY2hhbmdlOidzY2hpbWLEgycsCiAgaGVhZGxpbmU6J0NlIHBsYW50ZXppIGF6aT8nLCBzdHJlYWs6J3ppbGUgbGEgcsOibmQnLCBtaW5Ub2RheTonbWludXRlIGF6aScsIHByYWN0VG9kYXk6J3ByYWN0aWNpIGF6aScsIG5Ub2RheTpuPT5gJHtufSBhemlgLAogIHRpbGVNZWQ6J01lZGl0YcibaWUgLyBZb2dhJywgdGlsZVJlYzonUmVjdW5vyJl0aW7Im2UgLyBTdWNjZXNlJywgdGlsZUpveTonTWVkaXRhyJtpYSBidWN1cmllaScsIHRpbGVQb3c6J0NlbGUgNCBwdXRlcmknLAogIGpvdXJuYWw6J0p1cm5hbHVsIG1ldScsIG5FbnRyaWVzOm49Pm49PT0xPycxIMOubnNlbW5hcmUnOmAke259ICR7ZGVSbyhuKX3Drm5zZW1uxINyaWAsCiAgam95VGl0bGU6J01lZGl0YcibaWEgYnVjdXJpZWknLCBqb3lMZWFkOidDb21wbGV0ZWF6xIMgY2VsZSB0cmVpIHLEg3NwdW5zdXJpLCBhcG9pIHNhbHZlYXrEgy4nLCBicmVhdGhlQ3VlOidJbnNwaXLEgyDImWkgZXhwaXLEgyBwcm9mdW5kIGRlIDMgb3JpJywgYnJlYXRoZUJ0bjonUmVzcGlyxIMgY3UgbWluZScsCiAgYWRkSGVscFRvZG86JysgQWRhdWfEgyDDrm4gVG8gRG86IHBlIGNpbmUgYWp1dCcsIG5ld0pveTonTyBub3XEgyBtZWRpdGHIm2llIGEgYnVjdXJpZWknLCBzYXZlOidTYWx2ZWF6xIMnLAogIHBpY2tQcmV2Om49PmBBbGVnZSB1biBvYmllY3RpdiBkZSBkaW5haW50ZSAoJHtufSlgLCBteUdvYWxzOidPYmllY3RpdmVsZSBtZWxlJywgc2VhcmNoR29hbHM6J0NhdXTEgyDDrm4gb2JpZWN0aXZlbGUgbWVsZScsIG5vR29hbDonTmljaXVuIG9iaWVjdGl2IGfEg3NpdC4nLCBuZXdHb2FsUGg6J3NhdSBzY3JpZSB1biBvYmllY3RpdiBub3UnLAogIGFkZFRvZG86JysgQWRhdWfEgyDDrm4gVG8gRG8nLCBhZGRlZFRvZG86J+KckyBBZMSDdWdhdCDDrm4gVG8gRG8nLCB0b2FzdEFkZGVkOidBZMSDdWdhdCDDrm4gVG8gRG8nLCBmaWxsQW5zd2VyczonQ29tcGxldGVhesSDIHLEg3NwdW5zdXJpbGUuJywKICBpbmhhbGU6J0luc3BpcsSD4oCmJywgZXhoYWxlOidFeHBpcsSD4oCmJywgYWdhaW46J8OObmPEgyBvIGRhdMSDJywgZG9uZUJyZWF0aFA6J0FpIHByYWN0aWNhdCBwZW50cnUgYSBkZXphY3RpdmEgc8SDbcOibsibYS4nLCBkb25lQnJlYXRoSjonU8SDbcOibsibYSBlIHVkYXTEgy4nLAogIHBvd1RpdGxlOidDZWxlIDQgcHV0ZXJpJywgcG93TGVhZDonQWxlZ2UgdGVtYSDImWkgZGUgdW5kZSBwb3JuZciZdGksIGNvbXBsZXRlYXrEgyBmaWVjYXJlIHB1dGVyZSwgYXBvaSBzYWx2ZWF6xIMuJywgdGhlbWU6J1RFTUEnLCB0aGVtZUFyaWE6J1RlbWEnLAogIGZld2VyOidNYWkgcHXIm2luZScsIGFsbFRoZW1lczpuPT5gVG9hdGUgdGVtZWxlICgke259KWAsIG5ld1RoZW1lUGg6J3NhdSBhZGF1Z8SDIG8gdGVtxIMgbm91xIMnLCBhZGQ6J0FkYXVnxIMnLCBzdGFydDonREUgVU5ERSBQT1JORciYVEknLAogIHdoZW46J0PDom5kJywgelRvZGF5OidBc3TEg3ppJywgelRvbW9ycm93OidNw6JpbmUnLCBob3dMb25nOidDw6J0IHRpbXAnLAogIHA0bm90ZTonRHVwxIMgc2FsdmFyZSwgcHJvbWlzaXVuZWEgYWp1bmdlIGF1dG9tYXQgw65uIFRvIERvLicsIGZpbGxQb3dlcnM6J0NvbXBsZXRlYXrEgyBwdXRlcmlsZS4nLCBleHBvcnRMaW5rOidFeHBvcnTEgyBwcmFjdGljaWxlIHBlIG8gcGVyaW9hZMSDJywKICBpblRvZG86J0NlIGFpIHByb21pcyBsYSBwdXRlcmVhIGEgNC1hIGUgw65uIGxpc3RhIFRvIERvLicsIGNvcHk6J0NvcGlhesSDIHRleHQnLCBwZGY6J1NhbHZlYXrEgyBQREYnLAogIGRvSm95Tm93OidGxIMgbWVkaXRhyJtpYSBidWN1cmllaSBhY3VtJywgZ29Kb3k6J01lcmdpIGxhIG1lZGl0YcibaWEgYnVjdXJpZWknLCBuZXdQb3dlcnM6J8OObmNlcGUgdW4gbm91IGV4ZXJjacibaXUgNCBQdXRlcmknLAogIGNvcGllZDonVGV4dCBjb3BpYXQuIMOObCBwb8ibaSBsaXBpIHVuZGUgdnJlaS4nLCBjb3B5RmFpbDonTnUgYW0gcHV0dXQgY29waWEgcGUgYWNlc3QgZGlzcG96aXRpdi4nLAogIGJhY2s6J+KAuSDDjm5hcG9pJywgZXhwVGl0bGU6J0V4cG9ydMSDIHByYWN0aWNpbGUnLCBleHBMZWFkOidBbGVnZSBwZXJpb2FkYS4gUG\/Im2kgY29waWEgdGV4dHVsIHNhdSDDrmwgcG\/Im2kgc2FsdmEgY2EgUERGLicsIGZyb206J0RFIExBJywgdG86J1DDgk7EgiBMQScsCiAgblByYWN0Om49PmAke3JvTihuLCdwcmFjdGljxIMnLCdwcmFjdGljaScpfSDDrm4gYWNlYXN0xIMgcGVyaW9hZMSDLmAsIG5vUHJhY3Q6J051IGFpIHByYWN0aWNpIGN1IGNlbGUgNCBwdXRlcmkgw65uIGFjZWFzdMSDIHBlcmlvYWTEgy4nLAogIHJlY1RpdGxlOidSZWN1bm\/ImXRpbsibZSAvIFN1Y2Nlc2UnLCByZWNMZWFkOidTY3JpZSBjw6J0ZSB2cmVpLiBGaWVjYXJlIHLDom5kIGUgbyByZWN1bm\/ImXRpbsibxIMgc2F1IHVuIHN1Y2Nlcy4nLAogIGdyYXRpdHVkZTonUmVjdW5vyJl0aW7Im8SDJywgc3VjY2VzczonU3VjY2VzJywgcm93VHlwZTppPT5gVGlwdWwgcsOibmR1bHVpICR7aX1gLCBkZWxSb3c6J8iYdGVyZ2UgcsOibmR1bCcsIHJlbW92ZTonyJh0ZXJnZScsIHN1Y2Nlc3NQaDonY2UgYW0gcmV1yJlpdCBhemknLAogIGFkZFJvdzonKyDDjm5jxIMgdW4gcsOibmQnLCB3cml0ZU9uZTonU2NyaWUgY2VsIHB1yJtpbiB1biByw6JuZC4nLCBzYXZlZEo6J1NhbHZhdCDDrm4ganVybmFsJywKICBwcmVHOkc9PmBTdW50ICR7RygncmVjdW5vc2PEg3RvYXJlJywncmVjdW5vc2PEg3RvcicpfSBwZW50cnVgLCBwcmVTOkc9PmBTdW50ICR7RygnYnVjdXJvYXPEgycsJ2J1Y3Vyb3MnKX0gcGVudHJ1YCwKICBuUmVjOihucixucyk9Pltucj9yb04obnIsJ3JlY3Vub8iZdGluyJvEgycsJ3JlY3Vub8iZdGluyJtlJyk6JycsIG5zP3JvTihucywnc3VjY2VzJywnc3VjY2VzZScpOicnXS5maWx0ZXIoQm9vbGVhbikuam9pbignIMK3ICcpLAogIHRvZG9UaXRsZTonVG8gRG8nLCB0b2RvTGVhZDonQ2UgYW0gZGUgZsSDY3V0IGNhIHNlbWluyJtlbGUgc8SDIGNyZWFzY8SDLicsIHRvZG9QaDonQWRhdWfEgyBjZXZhIGRlIGbEg2N1dCcsCiAgbWFya0RvbmU6J01hcmNoZWF6xIMgY2EgZsSDY3V0JywgbWFya1VuZG9uZTonTWFyY2hlYXrEgyBjYSBuZWbEg2N1dCcsIGRlbDonyJh0ZXJnZScsIG5vOidOdScsCiAgdG9kb0VtcHR5OidOaW1pYyBkZSBmxINjdXQgYWN1bS48YnI+Q2Ugc2NyaWkgbGEg4oCeUGUgY2luZSBhanV04oCdIMOubiBtZWRpdGHIm2lhIGJ1Y3VyaWVpIMiZaSBsYSBwdXRlcmVhIGEgNC1hIHBvYXRlIGFqdW5nZSBhaWNpLicsCiAgc2hvd0RvbmU6KHMsbik9PmAke3M\/J0FzY3VuZGUnOidBcmF0xIMnfSBjZSBhbSBmxINjdXQgKCR7bn0pYCwgc3JjOntidWN1cmllOidNZWRpdGHIm2lhIGJ1Y3VyaWVpJyxwdXRlcmk6J0NlbGUgNCBwdXRlcmknLG1hbnVhbDonQWTEg3VnYXQgZGUgbWluZSd9LCBkb25lVG9hc3Q6J0bEg2N1dC4gQnJhdm8hJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nTcOiaW5lIHByb21pdCBzxIMnOidBc3TEg3ppIHByb21pdCBzxIMnLAogIGtpbmRBcmlhOidUaXB1bCBwcmFjdGljaWknLCBkb25lSDonR2F0YS4gU8SDbcOibsibYSBlIHBsYW50YXTEgy4nLCBkb25lTm90ZTooayxtKT0+YCR7a30sICR7bX0gbWluLiBTYWx2YXQgw65uIGp1cm5hbC5gLAogIHRpdGxlT3B0OidUaXRsdSAob3DIm2lvbmFsKScsIHBoTW9ybmluZzonZXguIE1lZGl0YcibaWEgZGUgZGltaW5lYcibxIMnLCBhbm90aGVyOifDjm5jxIMgbyBwcmFjdGljxIMnLAogIHN0b3BwZWRBZnRlcjptPT5gVGUtYWkgb3ByaXQgZHVwxIMgJHttfSBtaW4uYCwgd2FudFNhdmU6J1ZyZWkgc8SDIG8gdHJlYyDDrm4ganVybmFsPycsIHNhdmVNaW46bT0+YFNhbHZlYXrEgyAke219IG1pbmAsIGRvbnRTYXZlOidOdSBzYWx2YScsCiAgc3RvcHBlZDonUHJhY3RpY2EgYSBmb3N0IG9wcml0xIMuJywgYmFja1BsYWluOifDjm5hcG9pJywgcmVzdW1lOidDb250aW51xIMnLCBwYXVzZTonUGF1esSDJywgc3RvcDonT3ByZciZdGUnLAogIHNjcmVlbk5vdGU6J8iaaW5lIGVjcmFudWwgYXByaW5zLiBEYWPEgyB0ZWxlZm9udWwgc2UgYmxvY2hlYXrEgywgY2xvcG\/Im2VsdWwgZGUgZmluYWwgcG9hdGUgc8SDIG51IHN1bmUsIGRhciBwcmFjdGljYSBzZSBzYWx2ZWF6xIMgY8OibmQgcmV2aWkuJywKICBkdXJhdGlvbjonRFVSQVRBJywgcHJlcDonUFJFR8SCVElSRScsIHNvdW5kOidTVU5FVCcsIGJlbGw6J0Nsb3BvyJtlbCcsIGJvd2w6J0JvbCB0aWJldGFuJywgbGlzdGVuOidBc2N1bHTEgycsIHRpdGxlQ2FwOidUSVRMVSAoT1DImklPTkFMKScsIHBoU2lsZW5jZTonZXguIDUgbWludXRlIGRlIGxpbmnImXRlJywKICBiZWdpbjonw45uY2VwZScsIG1hbnVhbExpbms6J0FtIHByYWN0aWNhdCBmxINyxIMgdGltZXIsIHZyZWF1IGRvYXIgc8SDIGJpZmV6Jywgbm9UaW1lcjonRsSDcsSDIHRpbWVyJywgbG9nUHJhY3Q6J0JpZmVhesSDIG8gcHJhY3RpY8SDJywgZGF5OidaSVVBJywKICBwaEV2ZW5pbmc6J2V4LiBZb2dhIGRlIHNlYXLEgycsIHNhdmVKb3VybmFsOidTYWx2ZWF6xIMgw65uIGp1cm5hbCcsIGNhbmNlbDonUmVudW7Im8SDJywgbG9nZ2VkOidiaWZhdMSDJywKICByZWFkeTonR2F0YSBkZSDDrm5jZXB1dCcsIHByZXBQaGFzZTonUHJlZ8SDdGlyZScsIGJlbGxTdGFydDonQ2xvcG\/Im2VsdWwgc3VuxIMgbGEgw65uY2VwdXQnLCBvZjonZGluICcsIHBhdXNlZDonUGF1esSDJywgcHJlc3NDb250OidBcGFzxIMgQ29udGludcSDJywKICBwbHVzUHJlcDpsPT5gKyAke2x9IHByZWfEg3RpcmVgLCBub1ByZXA6J2bEg3LEgyBwcmVnxIN0aXJlJywgbm9uZTonRsSDcsSDJywgdW5pdE1pbjonbWluJywgdW5pdFNlYzonc2VjJywKICBhbGw6J1RvYXRlJywgblByYWN0aWNlczpuPT5yb04obiwncHJhY3RpY8SDJywncHJhY3RpY2knKSwgdG90TWluOm09PmAgwrcgJHttfSAke2RlUm8obSl9bWludXRlIMOubiB0b3RhbGAsCiAgakVtcHR5OifDjm5jxIMgbnUgYWkgbmljaW8gc8SDbcOibsibxIMgYWljaS48YnI+RsSDIG8gbWVkaXRhyJtpZSBzYXUgYmlmZWF6xIMgbyBwcmFjdGljxIMgyJlpIGFwYXJlIMOubiBqdXJuYWwuJywgZ29QcmFjdGljZTonTWVyZ2kgbGEgcHJhY3RpY8SDJywKICBkZWxROifImHRlcmdpIGFjZWFzdMSDIHByYWN0aWPEgz8nLCBkZWxldGVkOifImHRlcnMnLAogIGdhdGVMZWFkOidBcGxpY2HIm2lhIGUgZ3JhdHVpdMSDLiBJbnRyxIMgw65uIGNvbnR1bCB0xIN1IGNhIMOubnNlbW7Eg3JpbGUgc8SDIHLEg23Dom7EgyBzYWx2YXRlLicsIHNpZ25JbjonSW50csSDIMOubiBjb250JywgcmVnaXN0ZXI6J051IGFpIGNvbnQ\/IENyZWVhesSDLcibaSB1bnVsIGdyYXR1aXQnLAogIC8qIGNvbXVuaXRhdGVhICovCiAgcGVyc29uYWw6J1BlcnNvbmFsJywgY29tbXVuaXR5OidDb211bml0YXRlJywgc2VnQXJpYTonQ2UgdmV6aScsCiAgY29tbVRpdGxlOidDb211bml0YXRlYScsIGNvbW1MZWFkOidDw6JuZCB0ZSBidWN1cmkgZGUgc3VjY2VzZWxlIGFsdG9yYSwgdXppIHNlbWluyJtlbGUgcGVudHJ1IG9iaWVjdGl2dWwgdMSDdS4gQ8OibmQgY2l0ZciZdGkgY2VsZSA0IHB1dGVyaSBhbGUgY3VpdmEsIGxlIHBvyJtpIHBhcmN1cmdlIMiZaSBwZW50cnUgdGluZS4nLAogIGNvbW1UZXN0QmFubmVyOidWYXJpYW50xIMgZGUgdGVzdDogYWljaSB2ZXppIGPDonRldmEgZXhlbXBsZS4gUGUgc2l0ZSB2b3IgYXDEg3JlYSBwb3N0xINyaWxlIHJlYWxlIGFsZSBjZWxvciBjYXJlIGFsZWcgc8SDIMOubXDEg3J0xIPImWVhc2PEgy4nLAogIGNvbW1FbXB0eTonw45uY8SDIG51IGUgbmltaWMgYWljaS4nLCBhcHBlYXJJbjpuPT5gQXBhcmkgw65uIGNvbXVuaXRhdGUgY2EgPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidNxIMgYnVjdXInLCBjb3VudEpveToncy1hdSBidWN1cmF0JywgdG9hc3RKb3k6J0PDom5kIHRlIGJ1Y3VyaSBwZW50cnUgYWzIm2lpLCB1emkgc2VtaW7Im2VsZSBwZW50cnUgb2JpZWN0aXZ1bCB0xIN1LicsCiAgcmVhY3RQb3c6J0FtIHBhcmN1cnMnLCBjb3VudFBvdzonYXUgcGFyY3VycycsIHRvYXN0UG93OidBaSBwYXJjdXJzIGNlbGUgNCBwdXRlcmkgbGEgcsOibmR1bCB0xIN1LicsCiAgZ2VzdE5vdGU6J0F0ZW7Im2llIGxhIGdlc3R1bCBjb21wZW5zYXRvcjogYWxlZ2UtyJtpIHVudWwgcGVyc29uYWwgyJlpIHByYWN0aWPEgy1sIGNhIHPEgyBkZXphY3RpdmV6aSBzZW1pbsibZWxlLiBOdSB0cmVidWllIHPEgyBmaWUgbmVhcMSDcmF0IGNlIGEgcHJvbWlzIGNlYWxhbHTEgyBwZXJzb2FuxIMuJywKICBub2JvZHlZZXQ6J8OObmPEgyBuaW1lbmknLCB3aXRoZHJhdzonUmV0cmFnZScsIHJlcG9ydDonUmFwb3J0ZWF6xIMnLCByZXBvcnRBZ2FpbjonQXBhc8SDIGRpbiBub3UgY2Egc8SDIHJhcG9ydGV6aScsIHJlcG9ydGVkOidNdWzIm3VtaW0uIFBvc3RhcmVhIGEgZm9zdCBhc2N1bnPEgyDImWkgdmEgZmkgdmVyaWZpY2F0xIMuJywKICByZWFkRnVsbDonQ2l0ZciZdGUgaW50ZWdyYWwgY2VsZSA0IHB1dGVyaScsIHNob3dMZXNzOidBcmF0xIMgbWFpIHB1yJtpbicsIHlvdTondHUnLAogIGluc3BvSGVhZDpuPT5gRGluIGNvbXVuaXRhdGUgwrcgJHtufWAsIGluc3BvTW9yZTonVmV6aSBjZSBhdSBwbGFudGF0IGNlaWxhbMibaSDigLonLAogIHNoYXJlQnRuOifDjm1wxINydMSDyJllyJl0ZSBhbm9uaW0gY3UgY29tdW5pdGF0ZWEnLCBzaGFyZWRCdG46J8OObXDEg3J0xIPImWl0IMOubiBjb211bml0YXRlIMK3IHJldHJhZ2UnLCBzaGFyZWRUYWc6J8OubiBjb211bml0YXRlJywKICB3aG9TZWVzOidDSU5FIFZFREUnLCBvbmx5TWU6J0RvYXIgZXUnLCBzaGFyZUFub246J8OObXDEg3J0xIPImWXImXRlIGFub25pbScsIHNoYXJlQWZ0ZXI6J0R1cMSDIHNhbHZhcmUgYWxlZ2kgY2UgYXBhcmUgw65uIGNvbXVuaXRhdGUgyJlpIHN1YiBjZSBudW1lLicsCiAgc2hlZXRTaGFyZWQ6J8OObXDEg3J0xIPImWl0IMOubiBjb211bml0YXRlJywgc2hlZXRTaGFyZWROb3RlOm49PmBBY2Vhc3TEgyDDrm5zZW1uYXJlIGUgdml6aWJpbMSDIMOubiBjb211bml0YXRlIHN1YiBudW1lbGUgPGI+JHtufTwvYj4uIERhY8SDIG8gcmV0cmFnaSwgZGlzcGFyZSBwZW50cnUgdG\/Im2kuIMOObiBqdXJuYWx1bCB0xIN1IHLEg23Dom5lLmAsCiAgYmxvY2tlZE5vdGU6J8OObXDEg3J0xIPImWlyZWEgw65uIGNvbXVuaXRhdGUgbnUgbWFpIGVzdGUgZGlzcG9uaWJpbMSDIHBlbnRydSBjb250dWwgdMSDdS4nLAogIG5hbWVMYWJlbDonTnVtZWxlIHTEg3Ugw65uIGNvbXVuaXRhdGUnLCBuYW1lUGg6J2V4LiBGbG9hcmUgZGUgdGVpJywgbmFtZU5vdGU6J051IHRyZWJ1aWUgc8SDIGZpZSBudW1lbGUgdMSDdSByZWFsLiDDjmwgcG\/Im2kgc2NoaW1iYSBvcmljw6JuZC4nLAogIGFwcGVhcnNBczpuPT5gQXBhcmkgY2EgPGI+JHtufTwvYj5gLCBvdGhlcnNSZWFkOidBU1RBIFZPUiBDSVRJIENFSUxBTMiaSScsIGNob29zZVNoYXJlOidBTEVHRSBDRSDDjk1QxIJSVMSCyJhFyJhUSScsCiAgcHJpdmFjeU5vdGU6J8OObmFpbnRlIHPEgyDDrm1wxINydMSDyJllyJl0aSwgdmVyaWZpY8SDIHPEgyBudSBhcGFyxIMgbnVtZSBzYXUgZGV0YWxpaSBkdXDEgyBjYXJlIGNpbmV2YSBwb2F0ZSBmaSByZWN1bm9zY3V0LicsCiAgd2l0aGRyYXdCdG46J1JldHJhZ2UgZGluIGNvbXVuaXRhdGUnLCBzaGFyZURvOifDjm1wxINydMSDyJllyJl0ZScsIG5hbWVTaG9ydDonQWxlZ2UgdW4gbnVtZSBkZSBjZWwgcHXIm2luIDIgbGl0ZXJlLicsIGNob29zZU9uZTonQWxlZ2UgY2VsIHB1yJtpbiB1biByw6JuZC4nLAogIHNoYXJlZFRvYXN0OifDjm1wxINydMSDyJlpdCBjdSBjb211bml0YXRlYScsIHdpdGhkcmF3bjonUmV0cmFzIGRpbiBjb211bml0YXRlJywgbmFtZVNhdmVkOidOdW1lIHNhbHZhdCcsCiAgbmFtZVNoZWV0Tm90ZTonTnUgdHJlYnVpZSBzxIMgZmllIG51bWVsZSB0xIN1IHJlYWwuIFNlIHNjaGltYsSDIMiZaSBsYSBjZSBhaSDDrm1wxINydMSDyJlpdCBkZWphLicsCiAgZmlyc3RROidDdW0gdnJlaSBzxIMgYXBhcmkgw65uIGNvbXVuaXRhdGU\/JywgZmlyc3ROb3RlOidBbGVnZSB1biBudW1lIGNhcmUgbnUgdHJlYnVpZSBzxIMgZmllIGNlbCByZWFsLiDDjmwgZm9sb3NlyJl0aSBkb2FyIGPDom5kIGFsZWdpIHPEgyDDrm1wxINydMSDyJllyJl0aSBjZXZhLiDDjmwgcG\/Im2kgc2NoaW1iYSBvcmljw6JuZC4nLAogIGxhdGVyOidNYWkgdMOicnppdScsIHdlbGNvbWU6bj0+YEJpbmUgYWkgdmVuaXQsICR7bn0hYCwgYXBpRmFpbDonTnUgcy1hIHB1dHV0IGZhY2UgbGVnxIN0dXJhIGN1IHNpdGUtdWwuJywKICBlcnI6eyBibG9jYXQ6J8OObXDEg3J0xIPImWlyZWEgbnUgbWFpIGVzdGUgZGlzcG9uaWJpbMSDIHBlbnRydSBjb250dWwgdMSDdS4nLCBmYXJhX251bWU6J0FsZWdlIG1haSDDrm50w6JpIHVuIG51bWUgcGVudHJ1IGNvbXVuaXRhdGUuJywgZ29sOidOdSBlc3RlIG5pbWljIGRlIMOubXDEg3J0xIPImWl0LicsCiAgICAgICAgcHJlYV9tdWx0ZTonQWkgw65tcMSDcnTEg8iZaXQgZGVqYSBtdWx0IGF6aS4gUmV2aW5vIG3DomluZS4nLCBsdWF0OidOdW1lbGUgYWNlc3RhIGUgZGVqYSBmb2xvc2l0LiBBbGVnZSBhbHR1bC4nLCBudW1lOidOdW1lbGUgdHJlYnVpZSBzxIMgYWlixIMgw65udHJlIDIgyJlpIDMwIGRlIGxpdGVyZS4nIH0KfTsKCi8qIC0tLS0tLS0tLS0gdGV4dGVsZSBwcmFjdGljaWxvcjogUm9tw6JuxIMgKHRleHRlbGUgb3JpZ2luYWxlIGFsZSBEb3JlbGVpKSAtLS0tLS0tLS0tICovCmNvbnN0IFRBSUxfUk9fUDEgPSAnyJhpIHBvYXRlIGPEgyBuaWNpIG51IMiZdGl1IMOubmPEgyBjZSBhbHRlIHNlbWluyJtlIGFtIHBsYW50YXQsIGN1IHNpZ3VyYW7Im8SDIG11bHRlIGFsdGVsZSBkZSBjYXJlIG51IMOubWkgYW1pbnRlc2MgYWN1bS4gT3JpY2UgYciZIGZpIGfDom5kaXQsIHJvc3RpdCBzYXUgZsSDY3V0LCB2cmVhdSBzxIMgZGV6YWN0aXZleiBhY3VtIGFjZXN0ZSBzZW1pbsibZS4nOwpUWC5ybyA9IHsKICB2b3dKb3k6WwogICAgJ0ZhYyBhY2VzdGUgbHVjcnVyaSBwZW50cnUgY8SDIHJlYWxpdGF0ZWEgw65taSBlc3RlIGRpY3RhdMSDIGRlIHNlbWluyJtlbGUgcGUgY2FyZSBsZSBwbGFudGV6LCBjYXJlIHNlIHByb2llY3RlYXrEgyBwZSBhYnNlbsibYSByZWFsaXTEg8ibaWkgY2FyZSB2aW5lIGRpbiBlYSDDrm5zxIPImWkuJywKICAgICdQZW50cnUgY8SDIGFtIHBsYW50YXQgYWNlc3RlIHNlbWluyJtlLCBwZSBjYXJlIGFjdW0gbGUgyJlpIHVkLCB2b2kgYXZlYSBzdWNjZXMuJywKICAgICdQZW50cnUgY8SDIGFtIHN1Y2NlcyBmb2xvc2luZCBhY2VzdCBzaXN0ZW0sIGPDosibaXZhIGRpbnRyZSBwcmlldGVuaWkgbWVpIMiZaSBjdW5vyJl0aW7Im2VsZSBtZWxlIG3EgyB2b3IgY29waWEgyJlpIHZvciBhdmVhIGxhIHLDom5kdWwgbG9yIHN1Y2Nlcy4gUGVudHJ1IGPEgyBlaSB2b3IgYXZlYSBzdWNjZXMgZm9sb3NpbmQgYWNlc3Qgc2lzdGVtLCBwcmlldGVuaWkgyJlpIGN1bm\/ImXRpbsibZWxlIGxvciDDrmkgdm9yIGNvcGlhIGxhIHLDom5kdWwgbG9yLicsCiAgICAnw45uIGFjZXN0IGZlbCwgcHJpbiBleGVtcGx1bCBtZXUsIGRlY2xhbsiZZXogbyByZWFjyJtpZSDDrm4gbGFuyJsgcHJpbiBjYXJlIGluc3BpciBtaWkgyJlpIG1paSBkZSBvYW1lbmkgc8SDIGZvbG9zZWFzY8SDIGFjZXN0IHNpc3RlbSDImWkgc8SDIGFpYsSDIHN1Y2Nlcy4nXSwKICB2b3dKb3lMYXN0OidDZWVhIGNlIHZhIGZhY2UgY2EgbHVtZWEgc8SDIGRldmluxIMgdW4gbG9jIG1haSBidW4gyJlpIG1haSBmcnVtb3MuJywKICBxSm95Onsgb2JpZWN0aXY6J09iaWVjdGl2dWwgcGVudHJ1IGNhcmUgZGVkaWMgYWNlYXN0xIMgbWVkaXRhyJtpZSBhIGJ1Y3VyaWVpJywgc2VtaW50ZTonQ2Ugc2VtaW7Im2UgYW0gcGxhbnRhdCcsCiAgICAgICAgIGFqdXRvcjonUGUgY2luZSDDrm1pIHByb3B1biBzxIMgYWp1dCAxIG9yxIMgcGUgc8SDcHTEg23Dom7Egz8gQ8OibmQgdnJlYXUgc8SDIGZhYyBhc3RhPyBDZSB2b2kgZmFjZSBwZW50cnUgYWNlYXN0xIMgcGVyc29hbsSDPycgfSwKICBwb3dlcnM6eyBwMTpbJ1B1dGVyZWEgMScsJ1JlYW1pbnRpcmVhIHBpeHVsdWknXSwgcDI6WydQdXRlcmVhIDInLCdSZWdyZXR1bCBpbnRlbGlnZW50J10sIHAzOlsnUHV0ZXJlYSAzJywnUmVzdHJpY8ibaWEnXSwgcDQ6WydQdXRlcmVhIDQnLCdBbnRpZG90dWwnXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0ZhYyBhY2VzdGUgbHVjcnVyaSBwZW50cnUgY8SDIHJlYWxpdGF0ZWEgZXN0ZSBkaWN0YXTEgyBkZSBzZW1pbsibZWxlIHBlIGNhcmUgbGUgcGxhbnRleiDImWkgc2UgcHJvaWVjdGVhesSDIHBlIGFic2VuyJthIHJlYWxpdMSDyJtpaSBjYXJlIHZpbmUgZGluIGVhIMOubnPEg8iZaS4nLAogICAgYERhY8SDIHBsYW50ZXogcG96aXRpdiwgc3VudCAke0coJ2ZvcsibYXTEgycsJ2ZvcsibYXQnKX0gc8SDIHBlcmNlcCBvIHJlYWxpdGF0ZSBwb3ppdGl2xIMsIGNoaWFyIGRhY8SDIGNlaSBkaW4ganVydWwgbWV1IG8gcGVyY2VwIGNhIGZpaW5kIG5lZ2F0aXbEgy4gRGFjxIMgcGxhbnRleiBuZWdhdGl2LCBzdW50ICR7RygnZm9yyJthdMSDJywnZm9yyJthdCcpfSBzxIMgcGVyY2VwIG8gcmVhbGl0YXRlIG5lZmF2b3JhYmlsxIMgbWllLCBjaGlhciBkYWPEgyBjZWkgZGluIGp1cnVsIG1ldSBvIHBlcmNlcCBjYSBmaWluZCBwb3ppdGl2xIMuYCwKICAgICdBc3RmZWwgYWxlZyBzxIMgcGxhbnRleiBzZW1pbsibZSBwb3ppdGl2ZS4nLAogICAgJ1BlbnRydSBjxIMgYW0gc3VjY2VzIGZvbG9zaW5kIGFjZXN0IHNpc3RlbSwgY8OiyJtpdmEgZGludHJlIHByaWV0ZW5paSBtZWkgyJlpIGN1bm\/ImXRpbsibZWxlIG1lbGUgbcSDIHZvciBjb3BpYSDImWkgdm9yIGF2ZWEgbGEgcsOibmR1bCBsb3Igc3VjY2VzLiBQZW50cnUgY8SDIGVpIHZvciBhdmVhIHN1Y2NlcywgcHJpZXRlbmlpIMiZaSBjdW5vyJl0aW7Im2VsZSBsb3Igw65pIHZvciBjb3BpYSDImWkgdm9yIGF2ZWEgc3VjY2VzLiddLAogIHZvd1Bvd0xhc3Q6J0FzdGZlbCwgbHVtZWEgZGV2aW5lIHVuIGxvYyBtYWkgYnVuIMiZaSBtYWkgZnJ1bW9zLicsCiAgcG93SGVhZDonQ0VMRSA0IFBVVEVSSScsIHBvd0hlYWRDYXNlOidDZWxlIDQgcHV0ZXJpJywKICB0aGVtZXM6eyAnQG1vbmV5JzonQmFuaScsICdAcmVsYXRpb25zaGlwcyc6J1JlbGHIm2lpJywgJ0BoZWFsdGgnOidTxINuxIN0YXRlJyB9LAogIGR1cjpbJzUgc2VjdW5kZScsJzEgbWludXQnLCc1IG1pbnV0ZScsJzEwIG1pbnV0ZScsJzEgb3LEgycsJ3RvYXTEgyB6aXVhJ10sCiAgZHVyQXBwZW5kOmQ9PmQ9PT0ndG9hdMSDIHppdWEnPyd0b2F0xIMgeml1YSc6J2NlbCBwdcibaW4gJytkLAogIGR1clN0cmlwOi9ccyooY2VsIHB1yJtpblxzKyk\/KDUgc2VjdW5kZXwxIG1pbnV0fDUgbWludXRlfDEwIG1pbnV0ZXwxIG9yxIN8dG9hdMSDIHppdWEpXHMqJC9pLAogIGxlYWQ6L15zxINccysvaSwKICB6aTp6PT56PT09J21haW5lJz8nbcOiaW5lJzonYXN0xIN6aScsCiAgdGFpbFAxOlRBSUxfUk9fUDEsCiAgdGFpbFAyOidNaS1hbSBmxINjdXQgcsSDdSBtaWUgyJlpIHBlcnNvYW5lbG9yIGRpbiBqdXIuIMOObWkgcGFyZSByxIN1IMiZaSB2cmVhdSBzxIMgZGV6YWN0aXZleiBjw6J0IG1haSByZXBlZGUgYWNlc3RlIHNlbWluyJtlLCBwcmVjdW0gyJlpIHRvYXRlIGxhbsibdXJpbGUgZGUgw65udMOibXBsxINyaSBjZSBkZWN1cmcgZGUgYWljaSwgcGVudHJ1IGPEgyDDrm7Im2VsZWcgYWN1bSBjxIMgc2UgZHVibGVhesSDIGxhIGZpZWNhcmUgMjQgZGUgb3JlIMiZaSBjdSBjw6J0IGxlIGRlemFjdGl2ZXogbWFpIHJlcGVkZSwgY3UgYXTDonQgZXN0ZSBtYWkgYmluZSEnLAogIG5pZ2h0OifImGkgZGlzZWFyxIMsIGRpbiBtb21lbnR1bCDDrm4gY2FyZSBwdW4gY2FwdWwgcGUgcGVybsSDIMiZaSBkb3JtLCBww6JuxIMgZGltaW5lYcibxIMgY8OibmQgbcSDIHRyZXplc2MsIMOubiBtb2QgY29uyJl0aWVudC4nLAogIHN0ZDp7CiAgICBwMjp7IGZvcm06KCk9PltbJ3QnLCdDZSBiZW5lZmljaWkgYW0gYXZ1dCddLFsncDInLCdiZW5lZmljaWkgbWF0ZXJpYWxlIHNhdSBkZSBlZ28nXV0sCiAgICAgICAgIHJlY2FwOmU9PmBEaW4gbml2ZWx1bCBkZSBjb27ImXRpZW7Im8SDIGRpbiBhY2XImXRpIGFuaSDDrm4gY2FyZSBhbSBnw6JuZGl0IC8gcm9zdGl0IC8gZsSDY3V0IGFjZXN0ZSBsdWNydXJpLCBhdMOidCBhbSDImXRpdXQgc8SDIGZhYy4gQ3Ugc2lndXJhbsibxIMgYW0gYXZ1dCBiZW5lZmljaWkgbWF0ZXJpYWxlIHNhdSBkZSBlZ286ICR7bWsoZS5wMil9LiDImGkgcG9hdGUgY8SDIGFtIGF2dXQgyJlpIGFsdGUgYmVuZWZpY2lpIGRlIGNhcmUgYWN1bSBudSDDrm1pIGFtaW50ZXNjLiDDjm1pIGRhdSBzZWFtYSBhY3VtIGPEgyBhbSBwbMSDdGl0IMiZaSBwbMSDdGVzYyB1biBwcmXImyBtdWx0IHByZWEgbWFyZSBwZW50cnUgdG9hdGUgYWNlc3RlIGJlbmVmaWNpaS4gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICBwMzp7IGZvcm06KCk9PltbJ3QnLCdQcm9taXTigKYnXSxbJ3AzJywnY2UgcHJvbWl0IHPEgyBudSBtYWkgZmFjIMiZaSBjw6J0IHRpbXAsIGRlIGV4ZW1wbHU6IHPEgyBudSBtYWkg4oCmIGNlbCBwdcibaW4gMSBtaW51dCddLFsnZHVyJywnYWRkJ11dLAogICAgICAgICByZWNhcDplPT5gUHJvbWl0ICR7bWsoZS5wMyl9LiAke3R4KCkubmlnaHR9YCB9LAogICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYCR7cERyYWZ0LnppPT09J21haW5lJz8nTcOiaW5lJzonQXN0xIN6aSd9IHByb21pdCBzxIPigKZgXSxbJ3A0JywnY2UgZmFjLCBjYSBzxINtw6JuyJvEgyBvcHVzxIMgY2VsZWkgcGUgY2FyZSB2cmVhdSBzxIMgbyBkZXphY3RpdmV6J11dLAogICAgICAgICByZWNhcDplPT5gQ2EgyJlpIGdlc3QgY29tcGVuc2F0b3IsIGRlZGljIGZhcHR1bCBjxIMgw65uyJtlbGVnIGFjdW0gY8SDIHJlYWxpdGF0ZWEgcGUgY2FyZSBvIGV4cGVyaW1lbnRleiB2aW5lIGRpbiBzZW1pbsibZWxlIG1lbGUgcGxhbnRhdGUgw65uIHRyZWN1dCwgY2FyZSBzZSBwcm9pZWN0ZWF6xIMgcGUgYWJzZW7Im2EgcmVhbGl0xIPIm2lpIGNhcmUgdmluZSBkaW4gZWEgw65uc8SDyJlpLCDImWkgJHt0eCgpLnppKGUuemkpfSBwcm9taXQgc8SDICR7bWsobm9MZWFkKGUucDQpKX0uYCB9CiAgfSwKICBwdjp7CiAgICAxOnsgbmFtZTooKT0+YENlIHN1bnQgJHtHKCdmb3LIm2F0xIMnLCdmb3LIm2F0Jyl9IHPEgyBleHBlcmltZW50ZXpgLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsYFN1bnQgJHtHKCdmb3LIm2F0xIMnLCdmb3LIm2F0Jyl9IHPEgyBleHBlcmltZW50ZXogw65uIHJlYWxpdGF0ZWEgbWVh4oCmYF0sWydwMWEnLCdjZSBleHBlcmltZW50ZXogYWN1bSddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApmRhdG9yaXTEgyBnw6JuZHVyaWxvciwgdm9yYmVsb3IsIGZhcHRlbG9yIGRpbiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGF0dW5jaSBjw6JuZOKApiddLFsncDFiJywnY2Ugc2VtaW7Im2UgYW0gcGxhbnRhdCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBTdW50ICR7RygnZm9yyJthdMSDJywnZm9yyJthdCcpfSBzxIMgZXhwZXJpbWVudGV6IMOubiByZWFsaXRhdGVhIG1lYSAke21rKGUucDFhKX0gZGF0b3JpdMSDIGfDom5kdXJpbG9yLCB2b3JiZWxvciwgZmFwdGVsb3IgZGluIHRyZWN1dHVsIG1ldSwgZGluIGFjZWFzdMSDIHZpYcibxIMgc2F1IGRpbnRyLW8gdmlhyJvEgyBhbnRlcmlvYXLEgywgYXR1bmNpIGPDom5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDI6eyBuYW1lOigpPT4nQ2Ugc2VtaW7Im2UgdnJlYXUgc8SDIGN1csSDyJsnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZyZWF1IHPEgyBkZXphY3RpdmV6IHNlbWluyJtlbGUgcGxhbnRhdGUgYXR1bmNpIGPDom5k4oCmJ10sWydwMWInLCdjZSBhbSBnw6JuZGl0LCByb3N0aXQgc2F1IGbEg2N1dCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBWcmVhdSBzxIMgZGV6YWN0aXZleiBzZW1pbsibZWxlIHBsYW50YXRlIGF0dW5jaSBjw6JuZCAke21rKGUucDFiKX0sIHBlbnRydSBjxIMgZWxlIHNlIGR1YmxlYXrEgyBsYSBmaWVjYXJlIDI0IGRlIG9yZSDImWkgbnUgbWFpIHZyZWF1IHPEgyBjcmVhc2PEgyBhY2VzdGUgc2VtaW7Im2UuIE1haSBtdWx0LCBwb2F0ZSBjxIMgYW0gcGxhbnRhdCDImWkgYWx0ZSBzZW1pbsibZSBkZSBjYXJlIG51IMOubWkgYW1pbnRlc2MgYWN1bS4gT3JpY2UgYciZIGZpIGfDom5kaXQsIHJvc3RpdCBzYXUgZsSDY3V0LCB2cmVhdSBzxIMgZGV6YWN0aXZleiBhY3VtIGFjZXN0ZSBzZW1pbsibZS5gIH0gfSwKICAgIDM6eyBuYW1lOigpPT4nQ3VyxIPImyBvIGVtb8ibaWUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZyZWF1IHPEgyBjdXLEg8ibIHNlbWluyJtlbGUgZGXigKYnXSxbJ3AxZScsJ2Vtb8ibaWEgc2F1IHRpcGFydWw6IGZ1cmllLCBpbnZpZGllLCBmcmljxIPigKYnXSwKICAgICAgICAgICAgICAgICAgICAgICBbJ3QnLCfigKZwbGFudGF0ZSBjdSBnw6JuZHVyaSwgdm9yYmUsIGZhcHRlIMOubiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGNhcmUgbcSDIGZvcsibZWF6xIMgc8SDIGV4cGVyaW1lbnRleuKApiddLFsncDFhJywnc2l0dWHIm2lhIHBlIGNhcmUgbyB0csSDaWVzYyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ0F0dW5jaSBjw6JuZOKApiddLFsncDFiJywnY2UgY3JlZCBjxIMgYW0gcGxhbnRhdCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBWcmVhdSBzxIMgY3VyxIPImyBzZW1pbsibZWxlIGRlICR7bWsoZS5wMWUpfSBwbGFudGF0ZSBjdSBnw6JuZHVyaSwgdm9yYmUsIGZhcHRlIMOubiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGNhcmUgbcSDIGZvcsibZWF6xIMgc8SDIGV4cGVyaW1lbnRleiAke21rKGUucDFhKX0uIEF0dW5jaSBjw6JuZCAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICA0OnsgbmFtZTooKT0+J051IMiZdGl1IGNlIHNlbWluyJtlIGFtIHBsYW50YXQnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0hhYmFyIG51IGFtIGNlIGFtIHB1dHV0IHPEgyBwbGFudGV6IGNhIHPEgyBleHBlcmltZW50ZXogYWNlYXN0xIMgc2l0dWHIm2llOiddLFsncDFhJywnc2l0dWHIm2lhIHBlIGNhcmUgbyB0csSDaWVzYyddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBIYWJhciBudSBhbSBjZSBhbSBwdXR1dCBzxIMgcGxhbnRleiBjYSBzxIMgZXhwZXJpbWVudGV6IGFjZWFzdMSDIHNpdHVhyJtpZTogJHttayhlLnAxYSl9LiBEYXIgw65uyJtlbGVnIGFjdW0gY8SDLCBkYWPEgyBudSBhyJkgZmkgcGxhbnRhdCBzZW1pbsibZWxlLCBhY2Vhc3TEgyBzaXR1YcibaWUgbnUgYXIgZmkgw65uIHJlYWxpdGF0ZWEgbWVhLiBWcmVhdSBzxIMgZGV6YWN0aXZleiBzZW1pbsibZWxlIHBsYW50YXRlIGFjdW0uYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ0RhY8SDIMOubWkgdmluIMOubiBtaW50ZSBjw6J0ZXZhIGJlbmVmaWNpaSAob3DIm2lvbmFsKSddLFsncDInLCdwb8ibaSBsxINzYSBnb2wnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gQ3Ugc2lndXJhbsibxIMgYW0gYXZ1dCBiZW5lZmljaWksIGNoaWFyIGRhY8SDIG51IMiZdGl1IGNlIHNlbWluyJtlIGFtIHBsYW50YXQgyJlpIGNlIGJlbmVmaWNpaSBhbSBhdnV0LiAke1N0cmluZyhlLnAyfHwnJykudHJpbSgpID8gYFBvYXRlIGPEgyAke21rKGUucDIpfSwgyJlpIHNpZ3VyIHN1bnQgyJlpIGFsdGUgYmVuZWZpY2lpIHBlIGNhcmUgYW0gcHV0dXQgc8SDIGxlIGFtLmAgOiAnU2lndXIgc3VudCBiZW5lZmljaWkgcGUgY2FyZSBhbSBwdXR1dCBzxIMgbGUgYW0uJ30gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICAgICAgcDM6eyBmb3JtOigpPT5bWyd0JywnUHJvbWl0IHPEgyBudSBtYWkgcGxhbnRleiBhY2VsZWHImWkgc2VtaW7Im2UgcGVudHJ1IGNlbCBwdcibaW7igKYnXSxbJ3AzJywnY8OidCB0aW1wLCBkZSBleGVtcGx1OiAxIG9yxIMnXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBQcm9taXQgc8SDIG51IG1haSBwbGFudGV6IHBlbnRydSBjZWwgcHXIm2luICR7bWsoZS5wMyl9IGFjZWxlYciZaSBzZW1pbsibZS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQ2EgyJlpIGdlc3QgY29tcGVuc2F0b3IsICR7cERyYWZ0LnppPT09J21haW5lJz8nbcOiaW5lJzonYXN0xIN6aSd9IHByb21pdCBzxIPigKZgXSxbJ3A0JywnY2UgZmFjJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YENhIMiZaSBnZXN0IGNvbXBlbnNhdG9yLCAke3R4KCkuemkoZS56aSl9IHByb21pdCBzxIMgJHttayhub0xlYWQoZS5wNCkpfS5gIH0gfQogIH0KfTsKCi8qIC0tLS0tLS0tLS0gZXhhbXBsZSBwb3N0cyBmb3IgdGhlIHRlc3QgdmVyc2lvbiwgb25lIHNldCBwZXIgbGFuZ3VhZ2UgLS0tLS0tLS0tLSAqLwpjb25zdCBERU1PX0wgPSB7CiAgZW46WwogICAge2lkOidkMScsbmFtZTonTGluZGVuIEJsb3Nzb20nLGdlbjonZicsdHlwZToncmVjdW5vc3RpbnRlJyxkYXRlOicyMDI2LTEwLTA3VDE5OjQwOjAwWicscmVhY3RzOjE0LGl0ZW1zOlt7azonc3VjY2VzJyx0OidmaW5pc2hpbmcgdGhlIHByb2plY3QgSSB3b3JrZWQgb24gZm9yIGEgbW9udGgsIGJlZm9yZSB0aGUgZGVhZGxpbmUnfSx7azoncmVjdW5vc3RpbnRhJyx0Oid0aGUgcGF0aWVuY2Ugb2YgbXkgY29sbGVhZ3VlIHdobyBoZWxwZWQgbWUnfV19LAogICAge2lkOidkMicsbmFtZTonQW5kcmV3X00nLGdlbjonbScsdHlwZTonYnVjdXJpZScsZGF0ZTonMjAyNi0xMC0wN1QwNzoxNTowMFonLHJlYWN0czo5LHE6e29iaWVjdGl2OidBIGhhcm1vbmlvdXMgcmVsYXRpb25zaGlwIHdpdGggbXkgc29uJyxzZW1pbnRlOidJIGxpc3RlbmVkIHRvIGhpbSB3aXRob3V0IGludGVycnVwdGluZyBhbmQgc3BlbnQgYW4gaG91ciBqdXN0IHdpdGggaGltLCB3aXRob3V0IG15IHBob25lLid9fSwKICAgIHtpZDonZDMnLG5hbWU6J0xpZ2h0JyxnZW46J2YnLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNlQyMTowNTowMFonLHJlYWN0czo2LHY6Mix6aTonbWFpbmUnLHRlbWE6J0Btb25leScscDFiOidJIHNwb2tlIHdpdGggZW52eSBhYm91dCBhIGZyaWVuZOKAmXMgc3VjY2VzcycscDI6J0kgZmVsdCBiZXR0ZXIgdGhhbiBoZXIgZm9yIGEgZmV3IG1pbnV0ZXMnLHAzOidub3QgdG8gdGFsayBhYm91dCBvdGhlcnMgYmVoaW5kIHRoZWlyIGJhY2tzIGZvciBhdCBsZWFzdCAxIGhvdXInLHA0OidzaW5jZXJlbHkgY29uZ3JhdHVsYXRlIG15IGZyaWVuZCd9LAogICAge2lkOidkNCcsbmFtZTonTWFyeSBmcm9tIHRoZSBoaWxscycsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDZUMDg6MzA6MDBaJyxyZWFjdHM6MjEsaXRlbXM6W3trOidyZWN1bm9zdGludGEnLHQ6J215IHF1aWV0IG1vcm5pbmcgY29mZmVlJ30se2s6J3JlY3Vub3N0aW50YScsdDonbXkgbW90aGVyLCB3aG8gY2FsbGVkIGp1c3QgdG8gYXNrIGhvdyBJIHdhcyd9LHtrOidzdWNjZXMnLHQ6J21lZGl0YXRpbmcgMTAgZGF5cyBpbiBhIHJvdyd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlbmUnLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTonYmFjayBwYWluIHRoYXQga2VlcHMgY29taW5nIGJhY2snLHAyOicnLHAzOicxIGhvdXInLHA0OidoZWxwIGFuIGVsZGVybHkgbmVpZ2hib3VyIGNhcnJ5IGhpcyBzaG9wcGluZyd9XSwKICBmcjpbCiAgICB7aWQ6J2QxJyxuYW1lOidGbGV1ciBkZSB0aWxsZXVsJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wN1QxOTo0MDowMFonLHJlYWN0czoxNCxpdGVtczpbe2s6J3N1Y2NlcycsdDonYXZvaXIgdGVybWluw6kgYXZhbnQgbOKAmcOpY2jDqWFuY2UgbGUgcHJvamV0IHN1ciBsZXF1ZWwgauKAmWFpIHRyYXZhaWxsw6kgdW4gbW9pcyd9LHtrOidyZWN1bm9zdGludGEnLHQ6J2xhIHBhdGllbmNlIGRlIG1hIGNvbGzDqGd1ZSBxdWkgbeKAmWEgYWlkw6llJ31dfSwKICAgIHtpZDonZDInLG5hbWU6J0FuZHLDqV9NJyxnZW46J20nLHR5cGU6J2J1Y3VyaWUnLGRhdGU6JzIwMjYtMTAtMDdUMDc6MTU6MDBaJyxyZWFjdHM6OSxxOntvYmllY3RpdjonVW5lIHJlbGF0aW9uIGhhcm1vbmlldXNlIGF2ZWMgbW9uIGZpbHMnLHNlbWludGU6J0plIGzigJlhaSDDqWNvdXTDqSBzYW5zIGzigJlpbnRlcnJvbXByZSBldCBq4oCZYWkgcGFzc8OpIHVuZSBoZXVyZSBzZXVsZW1lbnQgYXZlYyBsdWksIHNhbnMgdMOpbMOpcGhvbmUuJ319LAogICAge2lkOidkMycsbmFtZTonTHVtacOocmUnLGdlbjonZicsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA2VDIxOjA1OjAwWicscmVhY3RzOjYsdjoyLHppOidtYWluZScsdGVtYTonQG1vbmV5JyxwMWI6J2rigJlhaSBwYXJsw6kgYXZlYyBlbnZpZSBkdSBzdWNjw6hzIGTigJl1bmUgYW1pZScscDI6J2plIG1lIHN1aXMgc2VudGllIHN1cMOpcmlldXJlIMOgIGVsbGUgcGVuZGFudCBxdWVscXVlcyBtaW51dGVzJyxwMzonZGUgbmUgcGx1cyBwYXJsZXIgZGVzIGF1dHJlcyBkYW5zIGxldXIgZG9zIHBlbmRhbnQgYXUgbW9pbnMgMSBoZXVyZScscDQ6J2bDqWxpY2l0ZXIgc2luY8OocmVtZW50IG1vbiBhbWllJ30sCiAgICB7aWQ6J2Q0JyxuYW1lOidNYXJpZSBkZSBMeW9uJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wNlQwODozMDowMFonLHJlYWN0czoyMSxpdGVtczpbe2s6J3JlY3Vub3N0aW50YScsdDonbW9uIGNhZsOpIGR1IG1hdGluIGF1IGNhbG1lJ30se2s6J3JlY3Vub3N0aW50YScsdDonbWEgbcOocmUsIHF1aSBt4oCZYSBhcHBlbMOpZSBqdXN0ZSBwb3VyIHNhdm9pciBjb21tZW50IGrigJlhbGxhaXMnfSx7azonc3VjY2VzJyx0Oidhdm9pciBtw6lkaXTDqSAxMCBqb3VycyBkZSBzdWl0ZSd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlaW4nLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTondW4gbWFsIGRlIGRvcyBxdWkgcmV2aWVudCcscDI6JycscDM6JzEgaGV1cmUnLHA0OidhaWRlciB1biB2b2lzaW4gw6Jnw6kgw6AgcG9ydGVyIHNlcyBjb3Vyc2VzJ31dLAogIGl0OlsKICAgIHtpZDonZDEnLG5hbWU6J0Zpb3JlIGRpIHRpZ2xpbycsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDdUMTk6NDA6MDBaJyxyZWFjdHM6MTQsaXRlbXM6W3trOidzdWNjZXMnLHQ6J2F2ZXIgZmluaXRvIHByaW1hIGRlbGxhIHNjYWRlbnphIGlsIHByb2dldHRvIHN1IGN1aSBobyBsYXZvcmF0byB1biBtZXNlJ30se2s6J3JlY3Vub3N0aW50YScsdDonbGEgcGF6aWVuemEgZGVsbGEgY29sbGVnYSBjaGUgbWkgaGEgYWl1dGF0YSd9XX0sCiAgICB7aWQ6J2QyJyxuYW1lOidBbmRyZWFfTScsZ2VuOidtJyx0eXBlOididWN1cmllJyxkYXRlOicyMDI2LTEwLTA3VDA3OjE1OjAwWicscmVhY3RzOjkscTp7b2JpZWN0aXY6J1VuYSByZWxhemlvbmUgYXJtb25pb3NhIGNvbiBtaW8gZmlnbGlvJyxzZW1pbnRlOidM4oCZaG8gYXNjb2x0YXRvIHNlbnphIGludGVycm9tcGVybG8gZSBobyBwYXNzYXRvIHVu4oCZb3JhIHNvbG8gY29uIGx1aSwgc2VuemEgdGVsZWZvbm8uJ319LAogICAge2lkOidkMycsbmFtZTonTHVjZScsZ2VuOidmJyx0eXBlOidwdXRlcmknLGRhdGU6JzIwMjYtMTAtMDZUMjE6MDU6MDBaJyxyZWFjdHM6Nix2OjIsemk6J21haW5lJyx0ZW1hOidAbW9uZXknLHAxYjonaG8gcGFybGF0byBjb24gaW52aWRpYSBkZWwgc3VjY2Vzc28gZGkgdW7igJlhbWljYScscDI6J21pIHNvbm8gc2VudGl0YSBzdXBlcmlvcmUgYSBsZWkgcGVyIHF1YWxjaGUgbWludXRvJyxwMzonZGkgbm9uIHBhcmxhcmUgcGnDuSBkZWdsaSBhbHRyaSBhbGxlIGxvcm8gc3BhbGxlIHBlciBhbG1lbm8gMSBvcmEnLHA0OidmYXJlIHNpbmNlcmFtZW50ZSBpIGNvbXBsaW1lbnRpIGFsbGEgbWlhIGFtaWNhJ30sCiAgICB7aWQ6J2Q0JyxuYW1lOidNYXJpYSBkYSBVZGluZScsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDZUMDg6MzA6MDBaJyxyZWFjdHM6MjEsaXRlbXM6W3trOidyZWN1bm9zdGludGEnLHQ6J2lsIGNhZmbDqCBkZWwgbWF0dGlubyBpbiBzaWxlbnppbyd9LHtrOidyZWN1bm9zdGludGEnLHQ6J21pYSBtYWRyZSwgY2hlIG1pIGhhIGNoaWFtYXRhIHNvbG8gcGVyIGNoaWVkZXJtaSBjb21lIHN0YXZvJ30se2s6J3N1Y2NlcycsdDonYXZlciBtZWRpdGF0byAxMCBnaW9ybmkgZGkgZmlsYSd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlbm8nLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTondW4gbWFsIGRpIHNjaGllbmEgY2hlIHJpdG9ybmEnLHAyOicnLHAzOicxIG9yYScscDQ6J2FpdXRhcmUgdW4gdmljaW5vIGFuemlhbm8gYSBwb3J0YXJlIGxhIHNwZXNhJ31dCn07CgpERU1PX0wucm8gPSBbCiB7aWQ6J2QxJyxuYW1lOidGbG9hcmUgZGUgdGVpJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wN1QxOTo0MDowMFonLHJlYWN0czoxNCxpdGVtczpbe2s6J3N1Y2NlcycsdDonYW0gdGVybWluYXQgcHJvaWVjdHVsIGxhIGNhcmUgYW0gbHVjcmF0IG8gbHVuxIMsIMOubmFpbnRlIGRlIHRlcm1lbid9LHtrOidyZWN1bm9zdGludGEnLHQ6J3LEg2JkYXJlYSBjb2xlZ2VpIG1lbGUgY2FyZSBtLWEgYWp1dGF0J31dfSwKIHtpZDonZDInLG5hbWU6J0FuZHJlaV9NJyxnZW46J20nLHR5cGU6J2J1Y3VyaWUnLGRhdGU6JzIwMjYtMTAtMDdUMDc6MTU6MDBaJyxyZWFjdHM6OSxxOntvYmllY3RpdjonTyByZWxhyJtpZSBhcm1vbmlvYXPEgyBjdSBmaXVsIG1ldScsc2VtaW50ZTonTC1hbSBhc2N1bHRhdCBmxINyxIMgc8SDLWwgw65udHJlcnVwIMiZaSBhbSBwZXRyZWN1dCBvIG9yxIMgZG9hciBjdSBlbCwgZsSDcsSDIHRlbGVmb24uJ319LAoge2lkOidkMycsbmFtZTonTHVtaW5hJyxnZW46J2YnLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNlQyMTowNTowMFonLHJlYWN0czo2LHY6Mix6aTonbWFpbmUnLHRlbWE6J0Btb25leScscDFiOidhbSB2b3JiaXQgY3UgaW52aWRpZSBkZXNwcmUgc3VjY2VzdWwgdW5laSBwcmlldGVuZScscDI6J20tYW0gc2ltyJtpdCBtYWkgYnVuxIMgZGVjw6J0IGVhIHBlbnRydSBjw6J0ZXZhIG1pbnV0ZScscDM6J3PEgyBudSBtYWkgdm9yYmVzYyBkZXNwcmUgYWzIm2lpIHBlIGxhIHNwYXRlIGNlbCBwdcibaW4gMSBvcsSDJyxwNDonbyBmZWxpY2l0IHNpbmNlciBwZSBwcmlldGVuYSBtZWEnfSwKIHtpZDonZDQnLG5hbWU6J01hcmlhIGRpbiBDbHVqJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wNlQwODozMDowMFonLHJlYWN0czoyMSxpdGVtczpbe2s6J3JlY3Vub3N0aW50YScsdDonY2FmZWF1YSBkZSBkaW1pbmVhyJvEgyDDrm4gbGluaciZdGUnfSx7azoncmVjdW5vc3RpbnRhJyx0OidtYW1hLCBjYXJlIG0tYSBzdW5hdCBkb2FyIGNhIHPEgyBtxIMgw65udHJlYmUgY2UgZmFjJ30se2s6J3N1Y2NlcycsdDonYW0gbWVkaXRhdCAxMCB6aWxlIGxhIHLDom5kJ31dfSwKIHtpZDonZDUnLG5hbWU6J1NlbmluJyxnZW46J20nLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNVQxODoyMDowMFonLHJlYWN0czo0LHY6NCx6aTonYXppJyx0ZW1hOidAaGVhbHRoJyxwMWE6J2R1cmVyaSBkZSBzcGF0ZSBjYXJlIHJldmluJyxwMjonJyxwMzonMSBvcsSDJyxwNDonYWp1dCB1biB2ZWNpbiDDrm4gdsOicnN0xIMgc8SDLciZaSBjYXJlIGN1bXDEg3LEg3R1cmlsZSd9XTsKLyogZWFjaCBleGFtcGxlIHBvc3Qga25vd3MgaXRzIGxhbmd1YWdlIChpZHMgbWFkZSB1bmlxdWUgYWNyb3NzIGxhbmd1YWdlcykgKi8KT2JqZWN0LmtleXMoREVNT19MKS5mb3JFYWNoKGw9PkRFTU9fTFtsXS5mb3JFYWNoKHA9PnsgcC5sYW5nPWw7IHAuaWQ9bCsnLScrcC5pZCB9KSk7Ci8qIGZpbHRlciB0ZXh0cyBmb3IgdGhlIGNvbW11bml0eTogb25seSBteSBsYW5ndWFnZSAvIGFsbCBsYW5ndWFnZXMgKi8KT2JqZWN0LmFzc2lnbihVSS5lbix7IGxhbmdPbmx5OidPbmx5IGluIEVuZ2xpc2gnLCBsYW5nQWxsOidBbGwgbGFuZ3VhZ2VzJywgY29tbUVtcHR5TGFuZzonTm90aGluZyBpbiBFbmdsaXNoIHlldC4nIH0pOwpPYmplY3QuYXNzaWduKFVJLmZyLHsgbGFuZ09ubHk6J1NldWxlbWVudCBlbiBmcmFuw6dhaXMnLCBsYW5nQWxsOidUb3V0ZXMgbGVzIGxhbmd1ZXMnLCBjb21tRW1wdHlMYW5nOidSaWVuIGVuIGZyYW7Dp2FpcyBwb3VyIGzigJlpbnN0YW50LicgfSk7Ck9iamVjdC5hc3NpZ24oVUkuaXQseyBsYW5nT25seTonU29sbyBpbiBpdGFsaWFubycsIGxhbmdBbGw6J1R1dHRlIGxlIGxpbmd1ZScsIGNvbW1FbXB0eUxhbmc6J0FuY29yYSBuaWVudGUgaW4gaXRhbGlhbm8uJyB9KTsKT2JqZWN0LmFzc2lnbihVSS5ybyx7IGxhbmdPbmx5OidEb2FyIMOubiByb23Dom7EgycsIGxhbmdBbGw6J1RvYXRlIGxpbWJpbGUnLCBjb21tRW1wdHlMYW5nOifDjm5jxIMgbnUgZSBuaW1pYyDDrm4gcm9tw6JuxIMuJyB9KTsKCi8qID09PT09PT09PT09PSBTYXZpbmc6IHRvIHRoZSBhY2NvdW50IG9uIHRoZSBzaXRlLCBvciBvbiB0aGlzIGRldmljZSBpbiB0aGUgdGVzdCB2ZXJzaW9uID09PT09PT09PT09PSAqLwpjb25zdCBMU19LRVkgPSAnZ29vZC1zZWVkcy12MSc7CmNvbnN0IFN0b3JlID0gewogIGFzeW5jIGxvYWQoKXsKICAgIGlmIChDT05GSUcuYXBpKXsKICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKENPTkZJRy5hcGkucm9vdCArICdncmFkaW5hL3YxL2RhdGEnLCB7Y3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJywgaGVhZGVyczp7J1gtV1AtTm9uY2UnOkNPTkZJRy5hcGkubm9uY2V9fSk7CiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKCdsb2FkJyk7IGNvbnN0IGQgPSBhd2FpdCByLmpzb24oKTsKICAgICAgaWYgKGQpIHJldHVybiBkOwogICAgICB0cnkgeyBjb25zdCBsb2MgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExTX0tFWSkpOyBpZiAobG9jKXsgc2V0VGltZW91dCgoKT0+U3RvcmUuc2F2ZShsb2MpLDApOyByZXR1cm4gbG9jIH0gfSBjYXRjaChlKXt9CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgdHJ5IHsgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTFNfS0VZKSkgfHwgbnVsbCB9IGNhdGNoKGUpeyByZXR1cm4gbnVsbCB9CiAgfSwKICBhc3luYyBzYXZlKGRhdGEpewogICAgaWYgKENPTkZJRy5hcGkpewogICAgICBjb25zdCByID0gYXdhaXQgZmV0Y2goQ09ORklHLmFwaS5yb290ICsgJ2dyYWRpbmEvdjEvZGF0YScsIHttZXRob2Q6J1BPU1QnLCBjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLAogICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJywnWC1XUC1Ob25jZSc6Q09ORklHLmFwaS5ub25jZX0sIGJvZHk6SlNPTi5zdHJpbmdpZnkoZGF0YSl9KTsKICAgICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ3NhdmUnKTsgcmV0dXJuOwogICAgfQogICAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTFNfS0VZLCBKU09OLnN0cmluZ2lmeShkYXRhKSkgfSBjYXRjaChlKXt9CiAgfQp9OwpsZXQgREFUQSA9IHsgZW50cmllczpbXSwgdG9kb3M6W10sIGNvbW06eyBuYW1lOm51bGwsIHBvc3RzOltdLCByZWFjdGVkOnt9LCBoaWRkZW46e30gfSwgc2V0dGluZ3M6eyBraW5kOidtZWRpdGF0aWUnLCBwcmVwOjEwLCBkdXI6MTAsIHNvdW5kOidjbG9wb3RlbCcsIGdlbjpudWxsLCBsYW5nOm51bGwgfSB9OwovKiBvbiB0aGUgc2l0ZSBlYWNoIGxhbmd1YWdlIGhhcyBpdHMgb3duIHBhZ2U6IHRoZSBhcHAgb3BlbnMgaW4gdGhlIHBhZ2UncyBsYW5ndWFnZSAodGhlIGxhbmd1YWdlIGJ1dHRvbiBzdGlsbCB3b3JrcykgKi8KY29uc3QgUEFHRV9MQU5HID0gKCgpPT57IGlmKCFDT05GSUcucGFnZUxhbmcpIHJldHVybiBudWxsOyBjb25zdCBsPShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8JycpLnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKTsgcmV0dXJuIFJFQURZLmluY2x1ZGVzKGwpP2w6bnVsbCB9KSgpOwppZiAoUEFHRV9MQU5HKSBEQVRBLnNldHRpbmdzLmxhbmcgPSBQQUdFX0xBTkc7CmZ1bmN0aW9uIGd1ZXNzTGFuZygpeyBjb25zdCBuPShuYXZpZ2F0b3IubGFuZ3VhZ2V8fCdlbicpLnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKTsgcmV0dXJuIFJFQURZLmluY2x1ZGVzKG4pP246J2VuJyB9CmNvbnN0IGxhbmcgPSAoKSA9PiBSRUFEWS5pbmNsdWRlcyhEQVRBLnNldHRpbmdzLmxhbmcpID8gREFUQS5zZXR0aW5ncy5sYW5nIDogZ3Vlc3NMYW5nKCk7CmNvbnN0IHQgPSBrID0+IHsgY29uc3QgZz1HVUlbbGFuZygpXSYmR1VJW2xhbmcoKV1ba107IGlmKGcpIHJldHVybiBnKCk7IHJldHVybiAoVUlbbGFuZygpXSYmVUlbbGFuZygpXVtrXSE9PXVuZGVmaW5lZCkgPyBVSVtsYW5nKCldW2tdIDogVUkuZW5ba10gfTsKY29uc3QgdHggPSAoKSA9PiBUWFtsYW5nKCldIHx8IFRYLmVuOwpjb25zdCBsb2MgPSAoKSA9PiBMT0NBTEVbbGFuZygpXSB8fCAnZW4tR0InOwpjb25zdCBHID0gKGYsbSkgPT4gREFUQS5zZXR0aW5ncy5nZW49PT0nbSc\/bTpmOyAgIC8vIHVzZWQgYnkgRlIvSVQgdGV4dHMKYXN5bmMgZnVuY3Rpb24gcGVyc2lzdCgpeyB0cnl7IGF3YWl0IFN0b3JlLnNhdmUoREFUQSkgfSBjYXRjaChlKXsgdG9hc3QodCgnc2F2ZUZhaWwnKSkgfSB9CgovKiA9PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT0gKi8KY29uc3QgJCA9IChzLGVsPWRvY3VtZW50KT0+ZWwucXVlcnlTZWxlY3RvcihzKTsKY29uc3QgZXNjID0gcyA9PiBTdHJpbmcocz8\/JycpLnJlcGxhY2UoL1smPD4iJ10vZyxjPT4oeycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90OycsIiciOicmIzM5Oyd9W2NdKSk7CmNvbnN0IGRheUtleSA9IGQgPT4geyBjb25zdCB4PW5ldyBEYXRlKGQpOyByZXR1cm4geC5nZXRGdWxsWWVhcigpKyctJytTdHJpbmcoeC5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsJzAnKSsnLScrU3RyaW5nKHguZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCcwJykgfTsKY29uc3QgdG9kYXlLZXkgPSAoKSA9PiBkYXlLZXkobmV3IERhdGUoKSk7CmNvbnN0IGZtdERheSA9IGsgPT4geyBjb25zdCBbeSxtLGRdPWsuc3BsaXQoJy0nKS5tYXAoTnVtYmVyKTsgY29uc3QgZHQ9bmV3IERhdGUoeSxtLTEsZCk7CiAgaWYgKGs9PT10b2RheUtleSgpKSByZXR1cm4gdCgndG9kYXknKTsgY29uc3QgaWU9bmV3IERhdGUoKTsgaWUuc2V0RGF0ZShpZS5nZXREYXRlKCktMSk7IGlmIChrPT09ZGF5S2V5KGllKSkgcmV0dXJuIHQoJ3llc3RlcmRheScpOwogIHJldHVybiBkdC50b0xvY2FsZURhdGVTdHJpbmcobG9jKCkse3dlZWtkYXk6J2xvbmcnLGRheTonbnVtZXJpYycsbW9udGg6J2xvbmcnfSkgfTsKY29uc3QgbW1zcyA9IHMgPT4geyBzPU1hdGgubWF4KDAsTWF0aC5jZWlsKHMpKTsgY29uc3QgbT1NYXRoLmZsb29yKHMvNjApLCByPXMlNjA7IHJldHVybiBTdHJpbmcobSkucGFkU3RhcnQoMiwnMCcpKyc6JytTdHJpbmcocikucGFkU3RhcnQoMiwnMCcpIH07CmNvbnN0IEtJTkQgPSBuZXcgUHJveHkoe30sIHsgZ2V0OihvLGspPT50KCdraW5kJylba10gfSk7CmNvbnN0IHRlbWFMYWJlbCA9IHggPT4geCAmJiB4WzBdPT09J0AnID8gKHR4KCkudGhlbWVzW3hdIHx8IFRYLmVuLnRoZW1lc1t4XSB8fCB4LnNsaWNlKDEpKSA6IHg7CmZ1bmN0aW9uIGhleChraW5kLCBzaXplPTQwKXsKICBjb25zdCBpbm5lciA9IHsKICAgIG1lZGl0YXRpZTonPHBhdGggZD0iTTIwIDExYzMuNSA0IDUuNSA3LjUgNS41IDExYTUuNSA1LjUgMCAwIDEtMTEgMGMwLTMuNSAyLTcgNS41LTExWiIvPjxwYXRoIGQ9Ik0yMCAxOC41YzEuNiAyIDIuNCAzLjQgMi40IDQuOGEyLjQgMi40IDAgMCAxLTQuOCAwYzAtMS40LjgtMi44IDIuNC00LjhaIi8+JywKICAgIHlvZ2E6JzxjaXJjbGUgY3g9IjIwIiBjeT0iMTIuNSIgcj0iMyIvPjxwYXRoIGQ9Ik0yMCAxNS41djEzTTIwIDIxbC01LjUtM00yMCAyMWw1LjUtM00yMCAyOC41bC0zLjUtMi41IDMuNS0zIi8+JywKICAgIGJ1Y3VyaWU6JzxjaXJjbGUgY3g9IjIwIiBjeT0iMjAiIHI9IjQuNSIvPjxwYXRoIGQ9Ik0yMCAxMHYzTTIwIDI3djNNMTAgMjBoM00yNyAyMGgzTTEzIDEzbDIgMk0yNSAyNWwyIDJNMTMgMjdsMi0yTTI1IDE1bDItMiIvPicsCiAgICByZWN1bm9zdGludGU6JzxwYXRoIGQ9Ik0yMCAxMS41bDIuNCA1LjIgNS42LjYtNC4yIDMuOCAxLjIgNS42TDIwIDIzLjlsLTUgMi44IDEuMi01LjZMMTIgMTcuM2w1LjYtLjZaIi8+JywKICAgIHB1dGVyaTonPHBhdGggZD0iTTIwIDIwYzAtNS0yLjUtOC02LTggMCA0IDIuNSA4IDYgOFpNMjAgMjBjMC01IDIuNS04IDYtOCAwIDQtMi41IDgtNiA4Wk0yMCAyMGMwIDUtMi41IDgtNiA4IDAtNCAyLjUtOCA2LThaTTIwIDIwYzAgNSAyLjUgOCA2IDggMC00LTIuNS04LTYtOFoiLz4nLAogICAgdW5lbHRlOic8cmVjdCB4PSIxMSIgeT0iMTMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNSIgcng9IjEuNiIgdHJhbnNmb3JtPSJyb3RhdGUoLTggMTYgMjAuNSkiLz48cmVjdCB4PSIxOSIgeT0iMTMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNSIgcng9IjEuNiIgdHJhbnNmb3JtPSJyb3RhdGUoOCAyNCAyMC41KSIvPicsCiAgICBzYW1hbnRhOic8cGF0aCBkPSJNMjAgMjlWMjBNMjAgMjIuNWMwLTMuNS0yLjYtNS41LTYtNS41IDAgMy41IDIuNiA1LjUgNiA1LjVaTTIwIDIwYzAtMy42IDIuNi02IDYtNiAwIDMuNi0yLjYgNi02IDZaIi8+PHBhdGggZD0iTTEzIDI5aDE0IiBzdHJva2UtZGFzaGFycmF5PSIxIDMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicKICB9W2tpbmRdOwogIHJldHVybiBgPHN2ZyBjbGFzcz0iaHgiIHdpZHRoPSIke3NpemV9IiBoZWlnaHQ9IiR7c2l6ZSoxLjF9IiB2aWV3Qm94PSIwIDAgNDAgNDQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0yMCAyIDM4IDEydjIwTDIwIDQyIDIgMzJWMTJaIi8+JHtpbm5lcn08L3N2Zz5gOwp9CmxldCB0b2FzdFQ7IGZ1bmN0aW9uIHRvYXN0KG1zZyl7IGxldCBlbD0kKCcudG9hc3QnKTsgaWYoIWVsKXtlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtlbC5jbGFzc05hbWU9J3RvYXN0JztlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCdzdGF0dXMnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKX0gZWwudGV4dENvbnRlbnQ9bXNnOyBlbC5oaWRkZW49ZmFsc2U7IGNsZWFyVGltZW91dCh0b2FzdFQpOyB0b2FzdFQ9c2V0VGltZW91dCgoKT0+ZWwuaGlkZGVuPXRydWUsMjQwMCkgfQpmdW5jdGlvbiBhZGRFbnRyeShlKXsgREFUQS5lbnRyaWVzLnB1c2goe2lkOkRhdGUubm93KCkudG9TdHJpbmcoMzYpK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsNiksIC4uLmV9KTsgcGVyc2lzdCgpIH0KCi8qID09PT09PT09PT09PSBTb3VuZDogc3ludGhlc2l6ZWQgYmVsbCAobm8gZXh0ZXJuYWwgZmlsZXMpID09PT09PT09PT09PSAqLwpsZXQgQUM9bnVsbDsKZnVuY3Rpb24gYXVkaW9VbmxvY2soKXsKICB0cnl7IGlmIChuYXZpZ2F0b3IuYXVkaW9TZXNzaW9uKSBuYXZpZ2F0b3IuYXVkaW9TZXNzaW9uLnR5cGU9J3BsYXliYWNrJyB9Y2F0Y2goZSl7fQogIGlmICghQUMpeyBjb25zdCBDPXdpbmRvdy5BdWRpb0NvbnRleHR8fHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQ7IGlmKEMpIEFDPW5ldyBDKCkgfQogIGlmIChBQyAmJiBBQy5zdGF0ZT09PSdzdXNwZW5kZWQnKSBBQy5yZXN1bWUoKTsKfQpmdW5jdGlvbiBzdHJpa2Uod2hlbj0wKXsKICBpZiAoIUFDKSByZXR1cm47CiAgY29uc3QgZGVlcCA9IERBVEEuc2V0dGluZ3Muc291bmQ9PT0nYm9sJzsKICBjb25zdCBiYXNlID0gZGVlcCA\/IDE5NiA6IDY2MDsKICBjb25zdCBwYXJ0aWFscyA9IGRlZXAgPyBbWzEsMSw5XSxbMi4wMiwuNTUsN10sWzIuNzQsLjM1LDUuNV0sWzUuMywuMTUsMy41XV0gOiBbWzEsMSw1XSxbMi4wLC40NSwzLjVdLFsyLjc2LC40LDIuOF0sWzUuNCwuMiwxLjhdLFs4LjksLjA4LDFdXTsKICBjb25zdCB0MCA9IEFDLmN1cnJlbnRUaW1lICsgd2hlbiArIC4wMjsKICBjb25zdCBtYXN0ZXIgPSBBQy5jcmVhdGVHYWluKCk7IG1hc3Rlci5nYWluLnZhbHVlID0gLjMyOyBtYXN0ZXIuY29ubmVjdChBQy5kZXN0aW5hdGlvbik7CiAgcGFydGlhbHMuZm9yRWFjaCgoW3IsYSxkZWNdKT0+ewogICAgWzAsMV0uZm9yRWFjaChqPT57CiAgICAgIGNvbnN0IG89QUMuY3JlYXRlT3NjaWxsYXRvcigpLCBnPUFDLmNyZWF0ZUdhaW4oKTsKICAgICAgby50eXBlPSdzaW5lJzsgby5mcmVxdWVuY3kudmFsdWUgPSBiYXNlKnIqKGo\/IDEuMDAzNSA6IDEpOwogICAgICBnLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCx0MCk7IGcuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShhKi41LHQwKy4wMDYpOwogICAgICBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSguMDAwMSx0MCtkZWMpOwogICAgICBvLmNvbm5lY3QoZykuY29ubmVjdChtYXN0ZXIpOyBvLnN0YXJ0KHQwKTsgby5zdG9wKHQwK2RlYysuMDUpOwogICAgfSk7CiAgfSk7Cn0KZnVuY3Rpb24gYmVsbHMobil7IGZvcihsZXQgaT0wO2k8bjtpKyspIHN0cmlrZShpKjIuMikgfQoKLyogPT09PT09PT09PT09IFRpbWVyID09PT09PT09PT09PSAqLwpjb25zdCBUID0geyBwaGFzZTonaWRsZScsIGVuZEF0OjAsIHJlbWFpbjowLCBwcmVwUzowLCBkdXJTOjAsIGtpbmQ6J21lZGl0YXRpZScsIHRpdGxlOicnLCBzdGFydGVkQXQ6MCwgdGljazpudWxsLCB3YWtlOm51bGwsIHNhdmVkSWQ6bnVsbCB9Owphc3luYyBmdW5jdGlvbiB3YWtlT24oKXsgdHJ5eyBULndha2UgPSBhd2FpdCBuYXZpZ2F0b3Iud2FrZUxvY2s\/LnJlcXVlc3QoJ3NjcmVlbicpIH1jYXRjaChlKXt9IH0KZnVuY3Rpb24gd2FrZU9mZigpeyB0cnl7IFQud2FrZT8ucmVsZWFzZSgpIH1jYXRjaChlKXt9IFQud2FrZT1udWxsIH0KZnVuY3Rpb24gdGltZXJTdGFydCgpewogIGF1ZGlvVW5sb2NrKCk7CiAgY29uc3Qgcz1EQVRBLnNldHRpbmdzOwogIFQua2luZD1zLmtpbmQ7IFQucHJlcFM9cy5wcmVwOyBULmR1clM9cy5kdXIqNjA7IFQudGl0bGU9KCQoJyN0VGl0bGUnKT8udmFsdWV8fCcnKS50cmltKCk7IFQuc2F2ZWRJZD1udWxsOwogIFQuc3RhcnRlZEF0PURhdGUubm93KCk7CiAgaWYgKFQucHJlcFM+MCl7IFQucGhhc2U9J3ByZXAnOyBULmVuZEF0PURhdGUubm93KCkrVC5wcmVwUyoxMDAwIH0KICBlbHNlIHsgVC5waGFzZT0ncnVuJzsgVC5lbmRBdD1EYXRlLm5vdygpK1QuZHVyUyoxMDAwOyBiZWxscygxKSB9CiAgd2FrZU9uKCk7IGxvb3AoKTsgcmVuZGVyUHJhY3RpY2EoKTsKfQpmdW5jdGlvbiBsb29wKCl7IGNsZWFySW50ZXJ2YWwoVC50aWNrKTsgVC50aWNrPXNldEludGVydmFsKHN0ZXAsMjUwKTsgc3RlcCgpIH0KZnVuY3Rpb24gc3RlcCgpewogIGlmIChULnBoYXNlPT09J3ByZXAnICYmIERhdGUubm93KCk+PVQuZW5kQXQpeyBULnBoYXNlPSdydW4nOyBULmVuZEF0PVQuZW5kQXQrVC5kdXJTKjEwMDA7IGJlbGxzKDEpOyByZW5kZXJQcmFjdGljYSgpOyB9CiAgaWYgKFQucGhhc2U9PT0ncnVuJyAmJiBEYXRlLm5vdygpPj1ULmVuZEF0KXsgZmluaXNoKHRydWUpOyByZXR1cm4gfQogIHBhaW50RGlhbCgpOwp9CmZ1bmN0aW9uIHBhaW50RGlhbCgpewogIGNvbnN0IGQ9JCgnI2RpYWwnKTsgaWYoIWQpIHJldHVybjsKICBsZXQgdG90YWw9MSwgbGVmdD0wLCBsYWJlbD10KCdyZWFkeScpLCBzdWI9Jyc7CiAgaWYgKFQucGhhc2U9PT0ncHJlcCcpeyB0b3RhbD1ULnByZXBTOyBsZWZ0PShULmVuZEF0LURhdGUubm93KCkpLzEwMDA7IGxhYmVsPXQoJ3ByZXBQaGFzZScpOyBzdWI9dCgnYmVsbFN0YXJ0JykgfQogIGVsc2UgaWYgKFQucGhhc2U9PT0ncnVuJyl7IHRvdGFsPVQuZHVyUzsgbGVmdD0oVC5lbmRBdC1EYXRlLm5vdygpKS8xMDAwOyBsYWJlbD1LSU5EW1Qua2luZF07IHN1Yj10KCdvZicpK21tc3MoVC5kdXJTKSB9CiAgZWxzZSBpZiAoVC5waGFzZT09PSdwYXVzZWQnKXsgdG90YWw9VC5wYXVzZWRQaGFzZT09PSdwcmVwJz9ULnByZXBTOlQuZHVyUzsgbGVmdD1ULnJlbWFpbjsgbGFiZWw9dCgncGF1c2VkJyk7IHN1Yj10KCdwcmVzc0NvbnQnKSB9CiAgZWxzZSB7IGxlZnQ9REFUQS5zZXR0aW5ncy5kdXIqNjA7IHRvdGFsPWxlZnQ7IGxhYmVsPUtJTkRbREFUQS5zZXR0aW5ncy5raW5kXTsgc3ViPURBVEEuc2V0dGluZ3MucHJlcD90KCdwbHVzUHJlcCcpKHByZXBMYWJlbChEQVRBLnNldHRpbmdzLnByZXApKTp0KCdub1ByZXAnKSB9CiAgZC5jbGFzc0xpc3QudG9nZ2xlKCdwcmVwJywgVC5waGFzZT09PSdwcmVwJyB8fCAoVC5waGFzZT09PSdwYXVzZWQnJiZULnBhdXNlZFBoYXNlPT09J3ByZXAnKSk7CiAgY29uc3QgQz0yKk1hdGguUEkqMTEwLCBmcmFjID0gVC5waGFzZT09PSdpZGxlJz8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxsZWZ0L3RvdGFsKSk7CiAgJCgnLnByb2cnLGQpLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDKigxLWZyYWMpOwogICQoJy5waGFzZScsZCkudGV4dENvbnRlbnQ9bGFiZWw7ICQoJy5jbG9jaycsZCkudGV4dENvbnRlbnQ9bW1zcyhsZWZ0KTsgJCgnLnN1YicsZCkudGV4dENvbnRlbnQ9c3ViOwp9CmZ1bmN0aW9uIHRpbWVyUGF1c2UoKXsgVC5yZW1haW49KFQuZW5kQXQtRGF0ZS5ub3coKSkvMTAwMDsgVC5wYXVzZWRQaGFzZT1ULnBoYXNlOyBULnBoYXNlPSdwYXVzZWQnOyBjbGVhckludGVydmFsKFQudGljayk7IHJlbmRlclByYWN0aWNhKCkgfQpmdW5jdGlvbiB0aW1lclJlc3VtZSgpeyBhdWRpb1VubG9jaygpOyBULnBoYXNlPVQucGF1c2VkUGhhc2U7IFQuZW5kQXQ9RGF0ZS5ub3coKStULnJlbWFpbioxMDAwOyBsb29wKCk7IHJlbmRlclByYWN0aWNhKCkgfQpmdW5jdGlvbiB0aW1lclN0b3AoKXsKICBjb25zdCB3YXNSdW4gPSBULnBoYXNlPT09J3J1bicgfHwgKFQucGhhc2U9PT0ncGF1c2VkJyYmVC5wYXVzZWRQaGFzZT09PSdydW4nKTsKICBjb25zdCBkb25lUyA9IHdhc1J1biA\/IFQuZHVyUy0oVC5waGFzZT09PSdwYXVzZWQnP1QucmVtYWluOihULmVuZEF0LURhdGUubm93KCkpLzEwMDApIDogMDsKICBjbGVhckludGVydmFsKFQudGljayk7IHdha2VPZmYoKTsKICBULnBoYXNlPSdzdG9wcGVkJzsgVC5kb25lTWluPU1hdGgucm91bmQoZG9uZVMvNjApOyByZW5kZXJQcmFjdGljYSgpOwp9CmZ1bmN0aW9uIGZpbmlzaChyaW5nKXsKICBjbGVhckludGVydmFsKFQudGljayk7IHdha2VPZmYoKTsKICBpZiAocmluZykgYmVsbHMoMyk7CiAgVC5waGFzZT0nZG9uZSc7CiAgYWRkRW50cnkoeyB0eXBlOlQua2luZCwgdGl0bGU6VC50aXRsZSwgbWludXRlczpNYXRoLnJvdW5kKFQuZHVyUy82MCksIGRhdGU6bmV3IERhdGUoVC5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKCkgfSk7CiAgVC5zYXZlZElkPURBVEEuZW50cmllc1tEQVRBLmVudHJpZXMubGVuZ3RoLTFdLmlkOwogIHJlbmRlclByYWN0aWNhKCk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsKCk9PnsgaWYoIWRvY3VtZW50LmhpZGRlbiAmJiAoVC5waGFzZT09PSdwcmVwJ3x8VC5waGFzZT09PSdydW4nKSkgc3RlcCgpIH0pOwpjb25zdCBwcmVwTGFiZWwgPSBzID0+IHsgaWYoIXMpIHJldHVybiB0KCdub25lJyk7IGNvbnN0IG09TWF0aC5mbG9vcihzLzYwKSwgcj1zJTYwOyByZXR1cm4gKG0\/bSsnICcrdCgndW5pdE1pbicpOicnKSsobSYmcj8nICc6JycpKyhyP3IrJyAnK3QoJ3VuaXRTZWMnKTonJykgfTsKY29uc3QgZHVyTGFiZWwgPSBtID0+IG0rJyAnK3QoJ3VuaXRNaW4nKTsKZnVuY3Rpb24gc2xpZGVyKGlkLG5hbWUsbWluLG1heCxzdGVwLHZhbCxmbXQsY2xzKXsgY29uc3QgZj0oKHZhbC1taW4pLyhtYXgtbWluKSkqMTAwOwogIHJldHVybiBgPGRpdiBjbGFzcz0ic2xpZGVyICR7Y2xzfHwnJ30iPjxkaXYgY2xhc3M9InRvcCI+PGxhYmVsIGNsYXNzPSJsYWJlbCIgZm9yPSIke2lkfSI+JHtuYW1lfTwvbGFiZWw+PG91dHB1dCBpZD0iJHtpZH1PdXQiPiR7Zm10KHZhbCl9PC9vdXRwdXQ+PC9kaXY+CiAgPGlucHV0IHR5cGU9InJhbmdlIiBpZD0iJHtpZH0iIGNsYXNzPSIke2Nscz9jbHMrJy1yYW5nZSc6Jyd9IiBtaW49IiR7bWlufSIgbWF4PSIke21heH0iIHN0ZXA9IiR7c3RlcH0iIHZhbHVlPSIke3ZhbH0iIHN0eWxlPSItLWZpbGw6JHtmfSUiPgogIDxkaXYgY2xhc3M9ImVuZHMiPjxzcGFuPiR7Zm10KG1pbil9PC9zcGFuPjxzcGFuPiR7Zm10KG1heCl9PC9zcGFuPjwvZGl2PjwvZGl2PmAgfQoKLyogPT09PT09PT09PT09IFZpZXdzID09PT09PT09PT09PSAqLwpsZXQgdGFiPSdhemknLCBqRmlsdGVyPSd0b2F0ZScsIHBlbmRpbmdEZWw9bnVsbCwgbWFudWFsPWZhbHNlLCBsYW5nT3Blbj1mYWxzZSwgalZpZXc9J21pbmUnLCBjRmlsdGVyPSd0b2F0ZScsIHBlbmRpbmdSZXA9bnVsbCwgbmFtZUxhdGVyPWZhbHNlOwpmdW5jdGlvbiBnbyh0byl7IGlmKHRhYj09PSdyZWN1bm9zdGludGUnJiZyZWNSb3dzKSByZWNDYXB0dXJlKCk7IHRhYj10bzsgbWFudWFsPWZhbHNlOyBwZW5kaW5nRGVsPW51bGw7IGlmKHRvPT09J2J1Y3VyaWUnKXsgYnVjVmlldz1udWxsIH0gaWYodG89PT0ncHV0ZXJpJyl7IHBWaWV3PW51bGw7IHBFeHBvcnQ9ZmFsc2UgfSByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MCB9CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZT0+eyBjb25zdCBiPWUudGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbltkYXRhLXRhYl0nKTsgaWYoYikgZ28oYi5kYXRhc2V0LnRhYikgfSk7CgpmdW5jdGlvbiBzdHJlYWsoKXsKICBjb25zdCBkYXlzPW5ldyBTZXQoREFUQS5lbnRyaWVzLm1hcChlPT5kYXlLZXkoZS5kYXRlKSkpOyBsZXQgbj0wOyBjb25zdCBkPW5ldyBEYXRlKCk7CiAgaWYgKCFkYXlzLmhhcyhkYXlLZXkoZCkpKSBkLnNldERhdGUoZC5nZXREYXRlKCktMSk7CiAgd2hpbGUoZGF5cy5oYXMoZGF5S2V5KGQpKSl7IG4rKzsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpLTEpIH0KICByZXR1cm4gbjsKfQpjb25zdCBuZWVkc0dlbiA9ICgpID0+IE5FRURTX0dFTkRFUi5pbmNsdWRlcyhsYW5nKCkpOwpmdW5jdGlvbiByZW5kZXJBemkoKXsKICBjb25zdCB0az10b2RheUtleSgpLCB0b2RheT1EQVRBLmVudHJpZXMuZmlsdGVyKGU9PmRheUtleShlLmRhdGUpPT09dGspOwogIGNvbnN0IG1pblRvZGF5PXRvZGF5LmZpbHRlcihlPT5lLm1pbnV0ZXMpLnJlZHVjZSgoYSxlKT0+YStlLm1pbnV0ZXMsMCk7CiAgY29uc3QgY250ID0gKC4uLmspID0+IHRvZGF5LmZpbHRlcihlPT5rLmluY2x1ZGVzKGUudHlwZSkpLmxlbmd0aDsKICBjb25zdCBub3RlID0gbiA9PiBuP2A8ZW0+JHt0KCduVG9kYXknKShuKX08L2VtPmA6Jyc7CiAgY29uc3QgZGF0ZVN0cj1uZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2MoKSx7d2Vla2RheTonbG9uZycsZGF5OidudW1lcmljJyxtb250aDonbG9uZyd9KTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgJHtDT05GSUcuYXBpPycnOmA8ZGl2IGNsYXNzPSJiYW5uZXIiPiR7dCgndGVzdEJhbm5lcicpfTwvZGl2PmB9CiAgICAke25lZWRzR2VuKCkmJiFEQVRBLnNldHRpbmdzLmdlbj9gPGRpdiBjbGFzcz0iY2FyZCBnZW4iPjxoMz4ke3QoJ2dlblEnKX08L2gzPjxwIGNsYXNzPSJub3RlIj4ke3QoJ2dlbk5vdGUnKX08L3A+CiAgICAgIDxkaXYgY2xhc3M9ImJ0bnMiPjxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1nZW49ImYiPiR7dCgnZmVtJyl9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtZ2VuPSJtIj4ke3QoJ21hc2MnKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gOicnfQogICAgJHtEQVRBLmNvbW0ubmFtZXx8bmFtZUxhdGVyPycnOmA8ZGl2IGNsYXNzPSJjYXJkIGdlbiI+PGgzPiR7dCgnZmlyc3RRJyl9PC9oMz48cCBjbGFzcz0ibm90ZSI+JHt0KCdmaXJzdE5vdGUnKX08L3A+CiAgICAgIDxkaXYgY2xhc3M9InRlbWEtcm93Ij48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpcnN0TmFtZSIgbWF4bGVuZ3RoPSIzMCIgcGxhY2Vob2xkZXI9IiR7dCgnbmFtZVBoJyl9Ij48YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJmaXJzdE5hbWUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPjwvZGl2PgogICAgICA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWFjdD0ibmFtZUxhdGVyIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2ZvbnQtc2l6ZTouODVyZW0iPiR7dCgnbGF0ZXInKX08L2J1dHRvbj48L2Rpdj5gfQogICAgPGRpdj48ZGl2IGNsYXNzPSJleWVicm93Ij4ke2VzYyhkYXRlU3RyKX08L2Rpdj48aDI+JHt0KCdoZWFkbGluZScpfTwvaDI+PC9kaXY+CiAgICAke3VuZWx0ZWxDYXJkKCl9CiAgICAke2luc3BvQ2FyZCgpfQogICAgPGJ1dHRvbiBjbGFzcz0iY2FyZCBqb3VybmFsLWxpbmsiIGRhdGEtZ289Imp1cm5hbCI+PHNwYW4+PGgzPiR7dCgnam91cm5hbCcpfTwvaDM+PHNwYW4gY2xhc3M9Im5vdGUiPiR7dCgnbkVudHJpZXMnKShEQVRBLmVudHJpZXMubGVuZ3RoKX08L3NwYW4+PC9zcGFuPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1tb3NzKSI+4oC6PC9zcGFuPjwvYnV0dG9uPgogIDwvZGl2PmA7Cn0KCi8qIC0tLS0tLS0tLS0gSm95IG1lZGl0YXRpb24gLS0tLS0tLS0tLSAqLwpjb25zdCBRX0tFWVM9WydvYmllY3RpdicsJ3NlbWludGUnLCdhanV0b3InXTsKbGV0IGJ1Y1ZpZXc9bnVsbCwgYnVjRHJhZnQ9e30sIGJ1Y1RvZG9BZGRlZD1mYWxzZTsKbGV0IG9iak9wZW49ZmFsc2UsIG9ialF1ZXJ5PScnOwpmdW5jdGlvbiBwcmV2TGlzdCgpeyBjb25zdCBzZWVuPW5ldyBTZXQoKSwgb3V0PVtdOyBEQVRBLmVudHJpZXMuZmlsdGVyKGU9PmUudHlwZT09PSdidWN1cmllJyYmZS5vYmllY3Rpdikuc29ydCgoYSxiKT0+Yi5kYXRlLmxvY2FsZUNvbXBhcmUoYS5kYXRlKSkuZm9yRWFjaChlPT57IGNvbnN0IGs9ZS5vYmllY3Rpdi50cmltKCk7IGlmKCFzZWVuLmhhcyhrLnRvTG93ZXJDYXNlKCkpKXsgc2Vlbi5hZGQoay50b0xvd2VyQ2FzZSgpKTsgb3V0LnB1c2goaykgfSB9KTsgcmV0dXJuIG91dCB9CmNvbnN0IG5vcm0gPSBzID0+IHMudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1vMgC3Nr10vZywnJyk7CmZ1bmN0aW9uIG9iakl0ZW1zKCl7IGNvbnN0IGw9cHJldkxpc3QoKSwgcT1ub3JtKG9ialF1ZXJ5LnRyaW0oKSk7CiAgY29uc3QgaGl0cz1sLm1hcCgobyxpKT0+W28saV0pLmZpbHRlcigoW29dKT0+IXF8fG5vcm0obykuaW5jbHVkZXMocSkpOwogIHJldHVybiBoaXRzLmxlbmd0aCA\/IGhpdHMubWFwKChbbyxpXSk9PmA8YnV0dG9uIGRhdGEtcHJldm9iaj0iJHtpfSIgYXJpYS1wcmVzc2VkPSIke2J1Y0RyYWZ0Lm9iaWVjdGl2PT09b30iPiR7ZXNjKG8pfTwvYnV0dG9uPmApLmpvaW4oJycpIDogYDxkaXYgY2xhc3M9Im5vbmUiPiR7dCgnbm9Hb2FsJyl9PC9kaXY+YCB9CmZ1bmN0aW9uIHByZXZPYmplY3RpdmVzKCl7IGNvbnN0IGw9cHJldkxpc3QoKTsgaWYoIWwubGVuZ3RoKSByZXR1cm4gJyc7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJvYmpwaWNrIj48YnV0dG9uIGNsYXNzPSJvYmp0b2dnbGUiIGRhdGEtYWN0PSJvYmpUb2dnbGUiIGFyaWEtZXhwYW5kZWQ9IiR7b2JqT3Blbn0iPiR7dCgncGlja1ByZXYnKShsLmxlbmd0aCl9PC9idXR0b24+CiAgICAke29iak9wZW4\/YDxkaXYgY2xhc3M9InNoZWV0LWJnIiBkYXRhLWFjdD0ib2JqVG9nZ2xlIj48ZGl2IGNsYXNzPSJvYmpwYW5lbCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsPSIke3QoJ215R29hbHMnKX0iPjxkaXYgY2xhc3M9ImdyYWIiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0b3AiPjxoMz4ke3QoJ215R29hbHMnKX08L2gzPjxidXR0b24gY2xhc3M9IngiIGRhdGEtYWN0PSJvYmpUb2dnbGUiIGFyaWEtbGFiZWw9IiR7dCgnY2xvc2UnKX0iPsOXPC9idXR0b24+PC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJzZWFyY2giIGlkPSJvYmpTZWFyY2giIHBsYWNlaG9sZGVyPSIke3QoJ3NlYXJjaEdvYWxzJyl9IiB2YWx1ZT0iJHtlc2Mob2JqUXVlcnkpfSIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICA8ZGl2IGNsYXNzPSJvYmpsaXN0IiBpZD0ib2JqTGlzdCI+JHtvYmpJdGVtcygpfTwvZGl2PjwvZGl2PjwvZGl2PmA6Jyd9PC9kaXY+YCB9CmZ1bmN0aW9uIGJyZWF0aENhcmQoKXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIGJyZWF0aCI+PGRpdiBjbGFzcz0ib3JiIiBpZD0ib3JiIj48c3BhbiBpZD0ib3JiQ291bnQiPjwvc3Bhbj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJjdWUiIGlkPSJjdWUiPiR7dCgnYnJlYXRoZUN1ZScpfTwvZGl2PgogIDxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBpZD0iYnJlYXRoQnRuIiBkYXRhLWFjdD0iYnJlYXRoZSIgc3R5bGU9Im1heC13aWR0aDoyNjBweCI+JHt0KCdicmVhdGhlQnRuJyl9PC9idXR0b24+PC9kaXY+YCB9CmZ1bmN0aW9uIHJlbmRlckJ1Y3VyaWUoKXsKICBjb25zdCBRPXR4KCkucUpveTsKICBpZiAoYnVjVmlldyl7CiAgICBjb25zdCBlPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1idWNWaWV3KTsgaWYoIWUpeyBidWNWaWV3PW51bGw7IHJldHVybiByZW5kZXJCdWN1cmllKCkgfQogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgICAgPGRpdj48ZGl2IGNsYXNzPSJleWVicm93Ij4ke2VzYyhmbXREYXkoZGF5S2V5KGUuZGF0ZSkpKX08L2Rpdj48aDI+JHt0KCdqb3lUaXRsZScpfTwvaDI+PC9kaXY+CiAgICAgIDxkbCBjbGFzcz0iY2FyZCByZWNhcCI+JHtRX0tFWVMubWFwKGs9PmA8ZHQ+JHtRW2tdfTwvZHQ+PGRkPiR7ZXNjKGVba118fCfigJQnKX08L2RkPmApLmpvaW4oJycpfTwvZGw+CiAgICAgIDxkaXYgY2xhc3M9InZvdyI+JHtoZXgoJ3NhbWFudGEnLDQ0KX0ke3R4KCkudm93Sm95Lm1hcChwPT5gPHA+JHtwfTwvcD5gKS5qb2luKCcnKX08cCBjbGFzcz0ibGFzdCI+JHt0eCgpLnZvd0pveUxhc3R9PC9wPjwvZGl2PgogICAgICAke2JyZWF0aENhcmQoKX0KICAgICAgJHtlLmFqdXRvciAmJiAhREFUQS50b2Rvcy5zb21lKHg9PnguZnJvbT09PWUuaWQpP2A8YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1hY3Q9ImJ1Y1RvZG9SZWNhcCIgZGF0YS1pZD0iJHtlLmlkfSI+JHt0KCdhZGRIZWxwVG9kbycpfTwvYnV0dG9uPmA6Jyd9CiAgICAgICR7c2hhcmVCdG4oZSl9CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9ImJ1Y05ldyI+JHt0KCduZXdKb3knKX08L2J1dHRvbj4KICAgIDwvZGl2PmA7CiAgfQogIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+CiAgICA8ZGl2PjxoMj4ke3QoJ2pveVRpdGxlJyl9PC9oMj48cCBjbGFzcz0ibGVhZCI+JHt0KCdqb3lMZWFkJyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+JHtRX0tFWVMubWFwKChrLGkpPT57IGNvbnN0IGw9UVtrXTsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJxIj48bGFiZWwgZm9yPSJiXyR7a30iPjxzcGFuIGNsYXNzPSJudW0iPiR7aSsxfS48L3NwYW4+JHtsfSR7L1s\/Ol0kLy50ZXN0KGwpPycnOic6J308L2xhYmVsPgogICAgICAke2s9PT0nb2JpZWN0aXYnP3ByZXZPYmplY3RpdmVzKCk6Jyd9CiAgICAgIDx0ZXh0YXJlYSBpZD0iYl8ke2t9IiBkYXRhLWJ1Yz0iJHtrfSIgcm93cz0iMyIgJHtrPT09J29iaWVjdGl2JyYmcHJldkxpc3QoKS5sZW5ndGg\/YHBsYWNlaG9sZGVyPSIke3QoJ25ld0dvYWxQaCcpfSJgOicnfT4ke2VzYyhidWNEcmFmdFtrXXx8JycpfTwvdGV4dGFyZWE+CiAgICAgICR7az09PSdhanV0b3InP2A8YnV0dG9uIGNsYXNzPSJ0b2RvLWJ0biIgaWQ9InRvZG9CdG4iIGRhdGEtYWN0PSJidWNUb2RvIiAke2J1Y0RyYWZ0LmFqdXRvcj8nJzonaGlkZGVuJ30gJHtidWNUb2RvQWRkZWQ\/J2Rpc2FibGVkJzonJ30+JHtidWNUb2RvQWRkZWQ\/dCgnYWRkZWRUb2RvJyk6dCgnYWRkVG9kbycpfTwvYnV0dG9uPmA6Jyd9PC9kaXY+YCB9KS5qb2luKCcnKX08L2Rpdj4KICAgICR7cHJpdkNob2ljZSgnYnVjdXJpZScpfQogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0iYnVjU2F2ZSI+JHt0KCdzYXZlJyl9PC9idXR0b24+CiAgPC9kaXY+YDsKfQoKLyogLS0tLS0tLS0tLSBUaGUgNCBwb3dlcnMgLS0tLS0tLS0tLSAqLwpjb25zdCBtayA9IHYgPT4gYDxtYXJrPiR7ZXNjKFN0cmluZyh2fHwn4oCmJykudHJpbSgpLnJlcGxhY2UoL1xzKlxuK1xzKi9nLCcsICcpLnJlcGxhY2UoL1suIT8sOzpcc10rJC8sJycpKX08L21hcms+YDsKY29uc3Qgbm9MZWFkID0gdiA9PiBTdHJpbmcodnx8JycpLnRyaW0oKS5yZXBsYWNlKHR4KCkubGVhZCwnJyk7CmNvbnN0IFBWayA9IHYgPT4geyBjb25zdCBwPXR4KCkucHZbdl18fHR4KCkucHZbMV07IHJldHVybiB7IG5hbWU6cC5uYW1lLCBwMTpwLnAxLCBwMjpwLnAyfHx0eCgpLnN0ZC5wMiwgcDM6cC5wM3x8dHgoKS5zdGQucDMsIHA0OnAucDR8fHR4KCkuc3RkLnA0IH0gfTsKY29uc3QgUE9XRVJfS0VZUz1bJ3AxJywncDInLCdwMycsJ3A0J107CmNvbnN0IFBXID0gayA9PiB0eCgpLnBvd2Vyc1trXTsKbGV0IHBFeHBvcnQ9ZmFsc2UsIGV4cEZyb209bnVsbCwgZXhwVG89bnVsbDsKY29uc3QgVEVNRV9CQVpBPVsnQG1vbmV5JywnQHJlbGF0aW9uc2hpcHMnLCdAaGVhbHRoJ107CmxldCB0ZW1lQWxsPWZhbHNlOwpjb25zdCB0ZW1lVG9hdGU9KCk9PnsgY29uc3QgbD1bLi4uVEVNRV9CQVpBLCAuLi4oREFUQS5zZXR0aW5ncy50ZW1lfHxbXSldOyBjb25zdCBuPXt9OyBEQVRBLmVudHJpZXMuZm9yRWFjaChlPT57IGlmKGUudHlwZT09PSdwdXRlcmknJiZlLnRlbWEpeyBuW2UudGVtYV09KG5bZS50ZW1hXXx8MCkrMTsgaWYoIWwuaW5jbHVkZXMoZS50ZW1hKSkgbC5wdXNoKGUudGVtYSkgfSB9KTsgcmV0dXJuIGwubWFwKCh4LGkpPT5beCxpXSkuc29ydCgoYSxiKT0+KG5bYlswXV18fDApLShuW2FbMF1dfHwwKXx8YVsxXS1iWzFdKS5tYXAoeD0+eFswXSkgfTsKbGV0IHBWaWV3PW51bGwsIHBEcmFmdD17djoxLHppOidhemknfTsKZnVuY3Rpb24gcEZvcm0oa2V5KXsKICByZXR1cm4gUFZrKHBEcmFmdC52KVtrZXldLmZvcm0oKS5tYXAoKFtmLGxdKT0+IGY9PT0ndCcgPyBgPHAgY2xhc3M9InB0ZXh0Ij4ke2x9PC9wPmAKICAgIDogZj09PSd6aScgPyBgPGRpdiBjbGFzcz0iY2hpcHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ3doZW4nKX0iPiR7W1snYXppJyx0KCd6VG9kYXknKV0sWydtYWluZScsdCgnelRvbW9ycm93JyldXS5tYXAoKFtrLHhdKT0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtemk9IiR7a30iIGFyaWEtcHJlc3NlZD0iJHsocERyYWZ0LnppfHwnYXppJyk9PT1rfSI+JHt4fTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmAKICAgIDogZj09PSdkdXInID8gYDxkaXYgY2xhc3M9ImNoaXBzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHt0KCdob3dMb25nJyl9Ij4ke3R4KCkuZHVyLm1hcChkPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCIgZGF0YS1kdXI9IiR7ZH0iIGRhdGEtbW9kZT0iJHtsfSI+JHtkfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmAKICAgIDogYDx0ZXh0YXJlYSBpZD0icGZfJHtmfSIgZGF0YS1wZj0iJHtmfSIgcm93cz0iMiIgcGxhY2Vob2xkZXI9IiR7bH0iPiR7ZXNjKHBEcmFmdFtmXXx8JycpfTwvdGV4dGFyZWE+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gcFJlY2FwKGtleSxlKXsgcmV0dXJuIGA8cCBjbGFzcz0icHRleHQiPiR7UFZrKGUudilba2V5XS5yZWNhcChlKX08L3A+YCB9CmZ1bmN0aW9uIHBsYWluKGgpeyBjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLmlubmVySFRNTD1oOyByZXR1cm4gZC50ZXh0Q29udGVudC5yZXBsYWNlKC9ccysvZywnICcpLnRyaW0oKSB9CmNvbnN0IGxvbmdEYXRlID0gZSA9PiBuZXcgRGF0ZShlLmRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2MoKSx7ZGF5OidudW1lcmljJyxtb250aDonbG9uZycseWVhcjonbnVtZXJpYyd9KTsKZnVuY3Rpb24gcHV0ZXJpVGV4dChlKXsKICBjb25zdCB3YSA9IGggPT4geyBjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLmlubmVySFRNTD1oLnJlcGxhY2UoLzxtYXJrPi9nLCcqJykucmVwbGFjZSgvPFwvbWFyaz4vZywnKicpOyByZXR1cm4gZC50ZXh0Q29udGVudC5yZXBsYWNlKC9bIFx0XSsvZywnICcpLnRyaW0oKSB9OwogIGxldCBzPScqJyt0eCgpLnBvd0hlYWQrJyDCtyAnK2xvbmdEYXRlKGUpKyhlLnRlbWE\/JyDCtyAnK3RlbWFMYWJlbChlLnRlbWEpOicnKSsnKlxuXG4nOwogIFBPV0VSX0tFWVMuZm9yRWFjaChrPT57IGNvbnN0IFtuLHRpXT1QVyhrKTsgcys9JyonK24rJyDCtyAnK3RpKycqXG4nK3dhKFBWayhlLnYpW2tdLnJlY2FwKGUpKSsnXG5cbicgfSk7CiAgcmV0dXJuIHMrdHgoKS52b3dQb3coKS5tYXAoeD0+J18nK3grJ18nKS5qb2luKCdcblxuJykrJ1xuXG5fJyt0eCgpLnZvd1Bvd0xhc3QrJ19cblxuJyt0KCdicmVhdGhlQ3VlJykrJy5cbic7Cn0KZnVuY3Rpb24gcHV0ZXJpSHRtbChlKXsKICByZXR1cm4gYDxwPjxiPiR7dHgoKS5wb3dIZWFkQ2FzZX0gwrcgJHtsb25nRGF0ZShlKX0ke2UudGVtYT8nIMK3ICcrZXNjKHRlbWFMYWJlbChlLnRlbWEpKTonJ308L2I+PC9wPmArUE9XRVJfS0VZUy5tYXAoaz0+eyBjb25zdCBbbix0aV09UFcoayk7IHJldHVybiBgPHA+PGI+JHtufSDCtyAke3RpfTwvYj48YnI+JHtQVmsoZS52KVtrXS5yZWNhcChlKS5yZXBsYWNlKC88bWFyaz4vZywnPGI+JykucmVwbGFjZSgvPFwvbWFyaz4vZywnPC9iPicpfTwvcD5gIH0pLmpvaW4oJycpCiAgICArdHgoKS52b3dQb3coKS5tYXAoeD0+YDxwPjxpPiR7eH08L2k+PC9wPmApLmpvaW4oJycpK2A8cD48aT4ke3R4KCkudm93UG93TGFzdH08L2k+PC9wPjxwPiR7dCgnYnJlYXRoZUN1ZScpfS48L3A+YDsKfQpmdW5jdGlvbiBjb3B5UmljaCh0eHQsIGh0bWwpewogIGNvbnN0IG9rPSgpPT50b2FzdCh0KCdjb3BpZWQnKSksIGJhZD0oKT0+dG9hc3QodCgnY29weUZhaWwnKSk7CiAgY29uc3QgZmFsbGJhY2s9KCk9PnsgY29uc3QgdGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsgdGEudmFsdWU9dHh0OyB0YS5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywnJyk7IHRhLnN0eWxlLmNzc1RleHQ9J3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtvcGFjaXR5OjAnOyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhKTsgdGEuc2VsZWN0KCk7IHRhLnNldFNlbGVjdGlvblJhbmdlKDAsdHh0Lmxlbmd0aCk7CiAgICBsZXQgZG9uZT1mYWxzZTsgdHJ5eyBkb25lPWRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JykgfWNhdGNoKHgpe30gdGEucmVtb3ZlKCk7IGRvbmU\/b2soKTpiYWQoKSB9OwogIHRyeXsKICAgIGlmICh3aW5kb3cuQ2xpcGJvYXJkSXRlbSAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGUpewogICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlKFtuZXcgQ2xpcGJvYXJkSXRlbSh7J3RleHQvcGxhaW4nOm5ldyBCbG9iKFt0eHRdLHt0eXBlOid0ZXh0L3BsYWluJ30pLCd0ZXh0L2h0bWwnOm5ldyBCbG9iKFtodG1sXSx7dHlwZTondGV4dC9odG1sJ30pfSldKS50aGVuKG9rKS5jYXRjaCgoKT0+ewogICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihvaykuY2F0Y2goZmFsbGJhY2spIH0pOwogICAgfSBlbHNlIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KXsgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodHh0KS50aGVuKG9rKS5jYXRjaChmYWxsYmFjaykgfQogICAgZWxzZSBmYWxsYmFjaygpOwogIH1jYXRjaCh4KXsgZmFsbGJhY2soKSB9Cn0KZnVuY3Rpb24gcENhcHR1cmUoKXsgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGZdJykuZm9yRWFjaChlbD0+cERyYWZ0W2VsLmRhdGFzZXQucGZdPWVsLnZhbHVlKSB9CmZ1bmN0aW9uIGV4cExpc3QoKXsgcmV0dXJuIERBVEEuZW50cmllcy5maWx0ZXIoZT0+ZS50eXBlPT09J3B1dGVyaScgJiYgZGF5S2V5KGUuZGF0ZSk+PWV4cEZyb20gJiYgZGF5S2V5KGUuZGF0ZSk8PWV4cFRvKS5zb3J0KChhLGIpPT5hLmRhdGUubG9jYWxlQ29tcGFyZShiLmRhdGUpKSB9CmNvbnN0IHBvd0Jsb2NrcyA9IGUgPT4gUE9XRVJfS0VZUy5tYXAoaz0+eyBjb25zdCBbbix0aV09UFcoayk7IHJldHVybiBgPGRpdj48aDQ+JHtufSDCtyAke3RpfTwvaDQ+JHtwUmVjYXAoayxlKX08L2Rpdj5gIH0pLmpvaW4oJycpOwpmdW5jdGlvbiByZW5kZXJFeHBvcnQoKXsKICBpZighZXhwVG8peyBleHBUbz10b2RheUtleSgpOyBjb25zdCBmPW5ldyBEYXRlKCk7IGYuc2V0RGF0ZShmLmdldERhdGUoKS0zMCk7IGV4cEZyb209ZGF5S2V5KGYpIH0KICBjb25zdCBsPWV4cExpc3QoKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9ImV4cENsb3NlIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0Ij4ke3QoJ2JhY2snKX08L2J1dHRvbj4KICAgIDxkaXY+PGgyPiR7dCgnZXhwVGl0bGUnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ2V4cExlYWQnKX08L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJleHAtcm93Ij48bGFiZWwgZm9yPSJleHBGcm9tIj4ke3QoJ2Zyb20nKX08aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9ImV4cEZyb20iIHZhbHVlPSIke2V4cEZyb219IiBtYXg9IiR7dG9kYXlLZXkoKX0iPjwvbGFiZWw+PGxhYmVsIGZvcj0iZXhwVG8iPiR7dCgndG8nKX08aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9ImV4cFRvIiB2YWx1ZT0iJHtleHBUb30iIG1heD0iJHt0b2RheUtleSgpfSI+PC9sYWJlbD48L2Rpdj4KICAgICAgPHAgY2xhc3M9Im5vdGUiPiR7dCgnblByYWN0JykobC5sZW5ndGgpfTwvcD48L2Rpdj4KICAgICR7bC5sZW5ndGg\/YDxkaXYgY2xhc3M9ImJ0bnMiPjxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWFjdD0iZXhwQ29weSI+JHt0KCdjb3B5Jyl9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJwUGRmIj4ke3QoJ3BkZicpfTwvYnV0dG9uPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCBwcmVjYXAiPiR7bC5tYXAoZT0+YDxkaXYgY2xhc3M9ImV4cC1pdGVtIj48ZGl2PjxkaXYgY2xhc3M9ImV5ZWJyb3ciPiR7ZXNjKG5ldyBEYXRlKGUuZGF0ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvYygpLHt3ZWVrZGF5Oidsb25nJyxkYXk6J251bWVyaWMnLG1vbnRoOidsb25nJyx5ZWFyOidudW1lcmljJ30pKX08L2Rpdj4ke2UudGVtYT9gPHNwYW4gY2xhc3M9InRhZy10ZW1hIj4ke2VzYyh0ZW1hTGFiZWwoZS50ZW1hKSl9PC9zcGFuPmA6Jyd9PC9kaXY+JHtwb3dCbG9ja3MoZSl9PC9kaXY+YCkuam9pbignJyl9PC9kaXY+YAogICAgOmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtoZXgoJ3NhbWFudGEnLDQ4KX08cD4ke3QoJ25vUHJhY3QnKX08L3A+PC9kaXY+YH0KICA8L2Rpdj5gOwp9CmZ1bmN0aW9uIHJlbmRlclB1dGVyaSgpewogIGlmIChwRXhwb3J0KSByZXR1cm4gcmVuZGVyRXhwb3J0KCk7CiAgaWYgKHBWaWV3KXsKICAgIGNvbnN0IGU9REFUQS5lbnRyaWVzLmZpbmQoeD0+eC5pZD09PXBWaWV3KTsgaWYoIWUpeyBwVmlldz1udWxsOyByZXR1cm4gcmVuZGVyUHV0ZXJpKCkgfQogICAgY29uc3QgZG9uZUJ1YyA9IERBVEEuZW50cmllcy5zb21lKHg9PngudHlwZT09PSdidWN1cmllJyAmJiB4LmRhdGU+ZS5kYXRlKTsKICAgIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+CiAgICAgIDxkaXY+PGRpdiBjbGFzcz0iZXllYnJvdyI+JHtlc2MoZm10RGF5KGRheUtleShlLmRhdGUpKSl9PC9kaXY+PGgyPiR7dCgncG93VGl0bGUnKX08L2gyPiR7ZS50ZW1hP2A8c3BhbiBjbGFzcz0idGFnLXRlbWEiPiR7ZXNjKHRlbWFMYWJlbChlLnRlbWEpKX08L3NwYW4+YDonJ308L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2FyZCBwcmVjYXAiPiR7cG93QmxvY2tzKGUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ2b3ciPiR7aGV4KCdzYW1hbnRhJyw0NCl9JHt0eCgpLnZvd1BvdygpLm1hcChwPT5gPHA+JHtwfTwvcD5gKS5qb2luKCcnKX08cCBjbGFzcz0ibGFzdCI+JHt0eCgpLnZvd1Bvd0xhc3R9PC9wPjwvZGl2PgogICAgICAke2JyZWF0aENhcmQoKX0KICAgICAgJHtlLnA0P2A8cCBjbGFzcz0ibm90ZSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4ke3QoJ2luVG9kbycpfTwvcD5gOicnfQogICAgICA8ZGl2IGNsYXNzPSJidG5zIj48YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1hY3Q9InBDb3B5IiBkYXRhLWlkPSIke2UuaWR9Ij4ke3QoJ2NvcHknKX08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1hY3Q9InBQZGYiPiR7dCgncGRmJyl9PC9idXR0b24+PC9kaXY+CiAgICAgICR7ZG9uZUJ1Yz8nJzpgPGRpdiBjbGFzcz0ibmV4dCI+JHtoZXgoJ2J1Y3VyaWUnLDQwKX08aDM+JHt0KCdkb0pveU5vdycpfTwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWdvPSJidWN1cmllIj4ke3QoJ2dvSm95Jyl9PC9idXR0b24+PC9kaXY+YH0KICAgICAgJHtzaGFyZUJ0bihlKX0KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBkYXRhLWFjdD0icE5ldyI+JHt0KCduZXdQb3dlcnMnKX08L2J1dHRvbj4KICAgIDwvZGl2PmA7CiAgfQogIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+CiAgICA8ZGl2PjxoMj4ke3QoJ3Bvd1RpdGxlJyl9PC9oMj48cCBjbGFzcz0ibGVhZCI+JHt0KCdwb3dMZWFkJyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImxhYmVsIj4ke3QoJ3RoZW1lJyl9PC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJjaGlwcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgndGhlbWVBcmlhJyl9Ij4keygoKT0+eyBjb25zdCBhbGw9dGVtZVRvYXRlKCk7IGxldCBzaG93PXRlbWVBbGw\/YWxsOmFsbC5zbGljZSgwLDYpOyBpZihwRHJhZnQudGVtYSYmIXNob3cuaW5jbHVkZXMocERyYWZ0LnRlbWEpKSBzaG93PVsuLi5zaG93LHBEcmFmdC50ZW1hXTsKICAgICAgICByZXR1cm4gc2hvdy5tYXAoeD0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtdGVtYT0iJHtlc2MoeCl9IiBhcmlhLXByZXNzZWQ9IiR7cERyYWZ0LnRlbWE9PT14fSI+JHtlc2ModGVtYUxhYmVsKHgpKX08L2J1dHRvbj5gKS5qb2luKCcnKSArIChhbGwubGVuZ3RoPjY\/YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtYWN0PSJ0ZW1lQWxsIj4ke3RlbWVBbGw\/dCgnZmV3ZXInKTp0KCdhbGxUaGVtZXMnKShhbGwubGVuZ3RoKX08L2J1dHRvbj5gOicnKSB9KSgpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0ZW1hLXJvdyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZW1hTm91YSIgbWF4bGVuZ3RoPSI0MCIgcGxhY2Vob2xkZXI9IiR7dCgnbmV3VGhlbWVQaCcpfSI+PGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJ0ZW1hQWRkIj4ke3QoJ2FkZCcpfTwvYnV0dG9uPjwvZGl2PgogICAgPC9kaXY+CiAgICA8c3BhbiBjbGFzcz0ibGFiZWwiPiR7dCgnc3RhcnQnKX08L3NwYW4+CiAgICA8ZGl2IGNsYXNzPSJ2YXJpYW50cyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgnc3RhcnQnKX0iPiR7T2JqZWN0LmtleXModHgoKS5wdikubWFwKE51bWJlcikubWFwKHY9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLXB2PSIke3Z9IiBhcmlhLXByZXNzZWQ9IiR7cERyYWZ0LnY9PT12fSI+PGI+JHt2fTwvYj48c3Bhbj4ke1BWayh2KS5uYW1lKCl9PC9zcGFuPjwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PgogICAgJHtQT1dFUl9LRVlTLm1hcChrPT57IGNvbnN0IFtuLHRpXT1QVyhrKTsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIHBvd2VyIj48ZGl2IGNsYXNzPSJleWVicm93Ij48c3Bhbj4ke259PC9zcGFuPjwvZGl2PjxoMz4ke3RpfTwvaDM+CiAgICAgICR7cEZvcm0oayl9CiAgICAgICR7az09PSdwNCc\/YDxwIGNsYXNzPSJub3RlIj4ke3QoJ3A0bm90ZScpfTwvcD5gOicnfQogICAgPC9kaXY+YCB9KS5qb2luKCcnKX0KICAgICR7cHJpdkNob2ljZSgncHV0ZXJpJyl9CiAgICA8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJwU2F2ZSI+JHt0KCdzYXZlJyl9PC9idXR0b24+CiAgICAke0RBVEEuZW50cmllcy5zb21lKHg9PngudHlwZT09PSdwdXRlcmknKT9gPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9ImV4cE9wZW4iIHN0eWxlPSJhbGlnbi1zZWxmOmNlbnRlciI+JHt0KCdleHBvcnRMaW5rJyl9PC9idXR0b24+YDonJ30KICA8L2Rpdj5gOwp9CgovKiAtLS0tLS0tLS0tIEdyYXRpdHVkZSAvIHN1Y2Nlc3NlcyAtLS0tLS0tLS0tICovCmxldCByZWNSb3dzPW51bGw7CmNvbnN0IHJlY1ByZSA9IGsgPT4gaz09PSdzdWNjZXMnID8gdCgncHJlUycpKEcpIDogdCgncHJlRycpKEcpOwpmdW5jdGlvbiByZWNJbml0KCl7IGlmKCFyZWNSb3dzKSByZWNSb3dzPVt7azoncmVjdW5vc3RpbnRhJyx0OicnfV0gfQpmdW5jdGlvbiByZWNDYXB0dXJlKCl7IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJ0XScpLmZvckVhY2goZWw9PnsgcmVjUm93c1srZWwuZGF0YXNldC5ydF0udD1lbC52YWx1ZSB9KSB9CmNvbnN0IHNoYXJlTmV4dD17YnVjdXJpZTpmYWxzZSxyZWN1bm9zdGludGU6ZmFsc2UscHV0ZXJpOmZhbHNlfTsKY29uc3QgcHJpdkNob2ljZSA9IGsgPT4gYDxkaXYgY2xhc3M9InEiPjxzcGFuIGNsYXNzPSJsYWJlbCI+JHt0KCd3aG9TZWVzJyl9PC9zcGFuPjxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgnd2hvU2VlcycpfSI+PGJ1dHRvbiBkYXRhLXByaXY9IiR7a30iIGRhdGEtdmFsPSIwIiBhcmlhLXByZXNzZWQ9IiR7IXNoYXJlTmV4dFtrXX0iPiR7dCgnb25seU1lJyl9PC9idXR0b24+PGJ1dHRvbiBkYXRhLXByaXY9IiR7a30iIGRhdGEtdmFsPSIxIiBhcmlhLXByZXNzZWQ9IiR7c2hhcmVOZXh0W2tdfSI+JHt0KCdzaGFyZUFub24nKX08L2J1dHRvbj48L2Rpdj4ke3NoYXJlTmV4dFtrXT9gPHAgY2xhc3M9Im5vdGUiPiR7dCgnc2hhcmVBZnRlcicpfTwvcD5gOicnfTwvZGl2PmA7CmZ1bmN0aW9uIHJlbmRlclJlY3Vub3N0aW50ZSgpewogIHJlY0luaXQoKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGRpdj48aDI+JHt0KCdyZWNUaXRsZScpfTwvaDI+PHAgY2xhc3M9ImxlYWQiPiR7dCgncmVjTGVhZCcpfTwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPiR7cmVjUm93cy5tYXAoKHIsaSk9PmA8ZGl2IGNsYXNzPSJycm93Ij4KICAgICAgPGRpdiBjbGFzcz0idG9wIj48ZGl2IGNsYXNzPSJtaW5pIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHt0KCdyb3dUeXBlJykoaSsxKX0iPgogICAgICAgIDxidXR0b24gZGF0YS1yaz0icmVjdW5vc3RpbnRhIiBkYXRhLXJpPSIke2l9IiBhcmlhLXByZXNzZWQ9IiR7ci5rPT09J3JlY3Vub3N0aW50YSd9Ij4ke3QoJ2dyYXRpdHVkZScpfTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gZGF0YS1yaz0ic3VjY2VzIiBkYXRhLXJpPSIke2l9IiBhcmlhLXByZXNzZWQ9IiR7ci5rPT09J3N1Y2Nlcyd9Ij4ke3QoJ3N1Y2Nlc3MnKX08L2J1dHRvbj48L2Rpdj4KICAgICAgICAke3JlY1Jvd3MubGVuZ3RoPjE\/YDxidXR0b24gY2xhc3M9InJtIiBkYXRhLXJybT0iJHtpfSIgYXJpYS1sYWJlbD0iJHt0KCdkZWxSb3cnKX0iPiR7dCgncmVtb3ZlJyl9PC9idXR0b24+YDonJ308L2Rpdj4KICAgICAgPGxhYmVsIGNsYXNzPSJyaW5wdXQgJHtyLmt9IiBmb3I9InJ0XyR7aX0iPjxzcGFuIGNsYXNzPSJwcmUiPiR7cmVjUHJlKHIuayl9PC9zcGFuPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icnRfJHtpfSIgZGF0YS1ydD0iJHtpfSIgbWF4bGVuZ3RoPSIyODAiIGVudGVya2V5aGludD0ibmV4dCIgdmFsdWU9IiR7ZXNjKHIudCl9IiBwbGFjZWhvbGRlcj0iJHtyLms9PT0nc3VjY2VzJz90KCdzdWNjZXNzUGgnKTon4oCmJ30iPjwvbGFiZWw+CiAgICA8L2Rpdj5gKS5qb2luKCcnKX0KICAgIDxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJyZWNBZGQiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiPiR7dCgnYWRkUm93Jyl9PC9idXR0b24+PC9kaXY+CiAgICAke3ByaXZDaG9pY2UoJ3JlY3Vub3N0aW50ZScpfQogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0icmVjU2F2ZSI+JHt0KCdzYXZlJyl9PC9idXR0b24+CiAgPC9kaXY+YDsKfQpsZXQgYnJlYXRoVD1bXTsKZnVuY3Rpb24gYnJlYXRoZSgpewogIGJyZWF0aFQuZm9yRWFjaChjbGVhclRpbWVvdXQpOyBicmVhdGhUPVtdOwogIGNvbnN0IG9yYj0kKCcjb3JiJyksIGN1ZT0kKCcjY3VlJyksIGNudD0kKCcjb3JiQ291bnQnKSwgYnRuPSQoJyNicmVhdGhCdG4nKTsgaWYoIW9yYikgcmV0dXJuOwogIGNvbnN0IHN0aWxsID0gbWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogIGJ0bi5oaWRkZW49dHJ1ZTsgbGV0IG1zPTA7CiAgZm9yKGxldCBpPTE7aTw9MztpKyspewogICAgYnJlYXRoVC5wdXNoKHNldFRpbWVvdXQoKCk9PnsgY3VlLnRleHRDb250ZW50PXQoJ2luaGFsZScpOyBjbnQudGV4dENvbnRlbnQ9aSsnIC8gMyc7IG9yYi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249JzRzJzsgaWYoIXN0aWxsKSBvcmIuc3R5bGUudHJhbnNmb3JtPSdzY2FsZSgxKScgfSxtcykpOyBtcys9NDAwMDsKICAgIGJyZWF0aFQucHVzaChzZXRUaW1lb3V0KCgpPT57IGN1ZS50ZXh0Q29udGVudD10KCdleGhhbGUnKTsgb3JiLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj0nNnMnOyBpZighc3RpbGwpIG9yYi5zdHlsZS50cmFuc2Zvcm09J3NjYWxlKC42KScgfSxtcykpOyBtcys9NjAwMDsKICB9CiAgYnJlYXRoVC5wdXNoKHNldFRpbWVvdXQoKCk9PnsgY3VlLnRleHRDb250ZW50PSB0YWI9PT0ncHV0ZXJpJyA\/IHQoJ2RvbmVCcmVhdGhQJykgOiB0KCdkb25lQnJlYXRoSicpOyBjbnQudGV4dENvbnRlbnQ9Jyc7IGJ0bi5oaWRkZW49ZmFsc2U7IGJ0bi50ZXh0Q29udGVudD10KCdhZ2FpbicpIH0sbXMpKTsKfQoKLyogLS0tLS0tLS0tLSBUbyBEbyAtLS0tLS0tLS0tICovCmxldCB0b2RvU2hvd0RvbmU9ZmFsc2U7CmZ1bmN0aW9uIGFkZFRvZG8odGV4dCwgc291cmNlLCBmcm9tLCB6aSl7IERBVEEudG9kb3MucHVzaCh7aWQ6RGF0ZS5ub3coKS50b1N0cmluZygzNikrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiw2KSwgdGV4dCwgc291cmNlLCBmcm9tOmZyb218fG51bGwsIHppOnppfHxudWxsLCBjcmVhdGVkOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwgZG9uZTpmYWxzZX0pOyBwZXJzaXN0KCkgfQovKiBwcm9taXNlcyBmcm9tIFBvd2VyIDQgYXJlIHN0b3JlZCB3aXRob3V0IHRoZSAiVG9kYXkgSSBwcm9taXNlIHRvIiBwYXJ0LCBzbyBpdCBmb2xsb3dzIHRoZSBjaG9zZW4gbGFuZ3VhZ2UgKi8KY29uc3QgdG9kb1RleHQgPSB4ID0+IHsgaWYoISh4LnNvdXJjZT09PSdwdXRlcmknICYmIHguemkpKSByZXR1cm4geC50ZXh0OyBjb25zdCBwcmU9dCgndG9kb1Byb21pc2UnKSh4LnppKTsgcmV0dXJuIGxhbmcoKT09PSdmcicgPyBwcmUucmVwbGFjZSgvIGRlJC8sJyAnKStkZUZyKHgudGV4dCkreC50ZXh0IDogcHJlKycgJyt4LnRleHQgfTsKZnVuY3Rpb24gcmVuZGVyVG9kbygpewogIGNvbnN0IG9wZW49REFUQS50b2Rvcy5maWx0ZXIoeD0+IXguZG9uZSkuc29ydCgoYSxiKT0+Yi5jcmVhdGVkLmxvY2FsZUNvbXBhcmUoYS5jcmVhdGVkKSk7CiAgY29uc3QgZG9uZT1EQVRBLnRvZG9zLmZpbHRlcih4PT54LmRvbmUpLnNvcnQoKGEsYik9PihiLmRvbmVBdHx8JycpLmxvY2FsZUNvbXBhcmUoYS5kb25lQXR8fCcnKSk7CiAgY29uc3QgaXRlbT14PT5gPGRpdiBjbGFzcz0idG9kbyAke3guZG9uZT8nZG9uZSc6Jyd9Ij48YnV0dG9uIGNsYXNzPSJjayIgZGF0YS10ZG9uZT0iJHt4LmlkfSIgYXJpYS1sYWJlbD0iJHt4LmRvbmU\/dCgnbWFya1VuZG9uZScpOnQoJ21hcmtEb25lJyl9Ij4ke3guZG9uZT8nPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Im0zIDcuNSAyLjUgMi41TDExIDQuNSIvPjwvc3ZnPic6Jyd9PC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJ0dCI+PGI+JHtlc2ModG9kb1RleHQoeCkpfTwvYj48c3Bhbj4ke3QoJ3NyYycpW3guc291cmNlXXx8Jyd9IMK3ICR7bmV3IERhdGUoeC5jcmVhdGVkKS50b0xvY2FsZURhdGVTdHJpbmcobG9jKCkse2RheTonbnVtZXJpYycsbW9udGg6J3Nob3J0J30pfTwvc3Bhbj48L2Rpdj4KICAgICR7cGVuZGluZ0RlbD09PXguaWQ\/YDxzcGFuIGNsYXNzPSJjb25maXJtIj48YnV0dG9uIGNsYXNzPSJidG4gZGFuZ2VyIiBzdHlsZT0id2lkdGg6YXV0bztwYWRkaW5nOjRweCAxMHB4IiBkYXRhLXRkZWwteWVzPSIke3guaWR9Ij4ke3QoJ2RlbCcpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtZGVsLW5vPiR7dCgnbm8nKX08L2J1dHRvbj48L3NwYW4+YDpgPGJ1dHRvbiBjbGFzcz0iZGVsIiBkYXRhLXRkZWw9IiR7eC5pZH0iIGFyaWEtbGFiZWw9IiR7dCgnZGVsJyl9Ij7DlzwvYnV0dG9uPmB9PC9kaXY+YDsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGRpdj48aDI+JHt0KCd0b2RvVGl0bGUnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ3RvZG9MZWFkJyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWRkcm93Ij48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRvZG9OZXciIG1heGxlbmd0aD0iMjgwIiBlbnRlcmtleWhpbnQ9ImRvbmUiIHBsYWNlaG9sZGVyPSIke3QoJ3RvZG9QaCcpfSI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0idG9kb0FkZCI+JHt0KCdhZGQnKX08L2J1dHRvbj48L2Rpdj4KICAgICR7b3Blbi5sZW5ndGg\/b3Blbi5tYXAoaXRlbSkuam9pbignJyk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2hleCgnc2FtYW50YScsNDgpfTxwPiR7dCgndG9kb0VtcHR5Jyl9PC9wPjwvZGl2PmB9CiAgICAke2RvbmUubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWFjdD0idG9kb1RvZ2dsZURvbmUiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiPiR7dCgnc2hvd0RvbmUnKSh0b2RvU2hvd0RvbmUsZG9uZS5sZW5ndGgpfTwvYnV0dG9uPiR7dG9kb1Nob3dEb25lP2RvbmUubWFwKGl0ZW0pLmpvaW4oJycpOicnfWA6Jyd9CiAgPC9kaXY+YDsKfQoKLyogLS0tLS0tLS0tLSBQcmFjdGljZSAodGltZXIpIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gY2hpcHMobmFtZSwgb3B0cywgY3VyLCBmbXQpeyByZXR1cm4gYDxkaXYgY2xhc3M9ImNoaXBzIiByb2xlPSJncm91cCI+JHtvcHRzLm1hcCh2PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCIgZGF0YS1zZXQ9IiR7bmFtZX0iIGRhdGEtdmFsPSIke3Z9IiBhcmlhLXByZXNzZWQ9IiR7dj09PWN1cn0iPiR7Zm10KHYpfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmAgfQpjb25zdCBraW5kU2VnID0gKHMsYnVzeSkgPT4gYDxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgna2luZEFyaWEnKX0iPgogICAgICA8YnV0dG9uIGRhdGEtc2V0PSJraW5kIiBkYXRhLXZhbD0ibWVkaXRhdGllIiBhcmlhLXByZXNzZWQ9IiR7cy5raW5kPT09J21lZGl0YXRpZSd9IiAke2J1c3k\/J2Rpc2FibGVkJzonJ30+JHtLSU5ELm1lZGl0YXRpZX08L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBkYXRhLXNldD0ia2luZCIgZGF0YS12YWw9InlvZ2EiIGFyaWEtcHJlc3NlZD0iJHtzLmtpbmQ9PT0neW9nYSd9IiAke2J1c3k\/J2Rpc2FibGVkJzonJ30+JHtLSU5ELnlvZ2F9PC9idXR0b24+PC9kaXY+YDsKZnVuY3Rpb24gcmVuZGVyUHJhY3RpY2EoKXsKICBpZiAodGFiIT09J3RpbWVyJykgcmV0dXJuOwogIGNvbnN0IHM9REFUQS5zZXR0aW5ncywgYnVzeT1bJ3ByZXAnLCdydW4nLCdwYXVzZWQnXS5pbmNsdWRlcyhULnBoYXNlKTsKICBpZiAobWFudWFsKXsgJCgnI21haW4nKS5pbm5lckhUTUw9cmVuZGVyTWFudWFsKCk7IHJldHVybiB9CiAgbGV0IGh0bWw9JzxkaXYgY2xhc3M9InZpZXciPicra2luZFNlZyhzLGJ1c3kpK2AKICAgIDxkaXYgY2xhc3M9ImRpYWwiIGlkPSJkaWFsIj48c3ZnIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48Y2lyY2xlIGNsYXNzPSJ0cmFjayIgY3g9IjEyMCIgY3k9IjEyMCIgcj0iMTEwIiBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjgiLz48Y2lyY2xlIGNsYXNzPSJwcm9nIiBjeD0iMTIwIiBjeT0iMTIwIiByPSIxMTAiIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtZGFzaGFycmF5PSIkezIqTWF0aC5QSSoxMTB9IiBzdHJva2UtZGFzaG9mZnNldD0iMCIvPjwvc3ZnPgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiPjxkaXYgY2xhc3M9InBoYXNlIj48L2Rpdj48ZGl2IGNsYXNzPSJjbG9jayI+MDA6MDA8L2Rpdj48ZGl2IGNsYXNzPSJzdWIiPjwvZGl2PjwvZGl2PjwvZGl2PmA7CiAgaWYgKFQucGhhc2U9PT0nZG9uZScpewogICAgY29uc3QgZT1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09VC5zYXZlZElkKTsKICAgIGh0bWwrPWA8ZGl2IGNsYXNzPSJjYXJkIGRvbmUiPjxoMz4ke3QoJ2RvbmVIJyl9PC9oMz48cCBjbGFzcz0ibm90ZSI+JHt0KCdkb25lTm90ZScpKEtJTkRbZS50eXBlXSxlLm1pbnV0ZXMpfTwvcD4KICAgICAgPGxhYmVsIGNsYXNzPSJsYWJlbCIgZm9yPSJkb25lVGl0bGUiPiR7dCgndGl0bGVPcHQnKX08L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZG9uZVRpdGxlIiBtYXhsZW5ndGg9IjgwIiB2YWx1ZT0iJHtlc2MoZS50aXRsZSl9IiBwbGFjZWhvbGRlcj0iJHt0KCdwaE1vcm5pbmcnKX0iPgogICAgICA8ZGl2IGNsYXNzPSJidG5zIj48YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJzYXZlVGl0bGUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9InJlc2V0Ij4ke3QoJ2Fub3RoZXInKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gOwogIH0gZWxzZSBpZiAoVC5waGFzZT09PSdzdG9wcGVkJyl7CiAgICBodG1sKz0gVC5kb25lTWluPjAgPyBgPGRpdiBjbGFzcz0iY2FyZCI+PGgzPiR7dCgnc3RvcHBlZEFmdGVyJykoVC5kb25lTWluKX08L2gzPjxwIGNsYXNzPSJub3RlIj4ke3QoJ3dhbnRTYXZlJyl9PC9wPgogICAgICA8ZGl2IGNsYXNzPSJidG5zIj48YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJzYXZlUGFydGlhbCI+JHt0KCdzYXZlTWluJykoVC5kb25lTWluKX08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtYWN0PSJyZXNldCI+JHt0KCdkb250U2F2ZScpfTwvYnV0dG9uPjwvZGl2PjwvZGl2PmAKICAgICAgOiBgPGRpdiBjbGFzcz0iY2FyZCI+PGgzPiR7dCgnc3RvcHBlZCcpfTwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBkYXRhLWFjdD0icmVzZXQiPiR7dCgnYmFja1BsYWluJyl9PC9idXR0b24+PC9kaXY+YDsKICB9IGVsc2UgaWYgKGJ1c3kpewogICAgaHRtbCs9YDxkaXYgY2xhc3M9ImJ0bnMiPiR7VC5waGFzZT09PSdwYXVzZWQnP2A8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJyZXN1bWUiPiR7dCgncmVzdW1lJyl9PC9idXR0b24+YDpgPGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJwYXVzZSI+JHt0KCdwYXVzZScpfTwvYnV0dG9uPmB9PGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBkYXRhLWFjdD0ic3RvcCI+JHt0KCdzdG9wJyl9PC9idXR0b24+PC9kaXY+CiAgICAgIDxwIGNsYXNzPSJub3RlIj4ke3QoJ3NjcmVlbk5vdGUnKX08L3A+YDsKICB9IGVsc2UgewogICAgaHRtbCs9YDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAke3NsaWRlcignZHVyUicsdCgnZHVyYXRpb24nKSwyLDYwLDEscy5kdXIsZHVyTGFiZWwpfQogICAgICAke3NsaWRlcigncHJlcFInLHQoJ3ByZXAnKSwwLDE4MCw1LHMucHJlcCxwcmVwTGFiZWwsJ3ByZXAnKX0KICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj4ke3QoJ3NvdW5kJyl9PC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPiR7Y2hpcHMoJ3NvdW5kJyxbJ2Nsb3BvdGVsJywnYm9sJ10scy5zb3VuZCx2PT52PT09J2JvbCc\/dCgnYm93bCcpOnQoJ2JlbGwnKSl9PGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9InRlc3QiPiR7dCgnbGlzdGVuJyl9PC9idXR0b24+PC9kaXY+CiAgICAgIDxsYWJlbCBjbGFzcz0ibGFiZWwiIGZvcj0idFRpdGxlIj4ke3QoJ3RpdGxlQ2FwJyl9PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRUaXRsZSIgbWF4bGVuZ3RoPSI4MCIgcGxhY2Vob2xkZXI9IiR7dCgncGhTaWxlbmNlJyl9Ij4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ic3RhcnQiPiR7dCgnYmVnaW4nKX08L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJtYW51YWwiIHN0eWxlPSJhbGlnbi1zZWxmOmNlbnRlciI+JHt0KCdtYW51YWxMaW5rJyl9PC9idXR0b24+YDsKICB9CiAgaHRtbCs9JzwvZGl2Pic7CiAgJCgnI21haW4nKS5pbm5lckhUTUw9aHRtbDsgcGFpbnREaWFsKCk7Cn0KZnVuY3Rpb24gcmVuZGVyTWFudWFsKCl7CiAgY29uc3Qgcz1EQVRBLnNldHRpbmdzOwogIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+PGRpdj48ZGl2IGNsYXNzPSJleWVicm93Ij4ke3QoJ25vVGltZXInKX08L2Rpdj48aDI+JHt0KCdsb2dQcmFjdCcpfTwvaDI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgJHtraW5kU2VnKHMsZmFsc2UpfQogICAgICAke3NsaWRlcignZHVyUicsdCgnZHVyYXRpb24nKSwyLDYwLDEscy5kdXIsZHVyTGFiZWwpfQogICAgICA8bGFiZWwgY2xhc3M9ImxhYmVsIiBmb3I9Im1EYXRlIj4ke3QoJ2RheScpfTwvbGFiZWw+PGlucHV0IHR5cGU9ImRhdGUiIGlkPSJtRGF0ZSIgdmFsdWU9IiR7dG9kYXlLZXkoKX0iIG1heD0iJHt0b2RheUtleSgpfSI+CiAgICAgIDxsYWJlbCBjbGFzcz0ibGFiZWwiIGZvcj0ibVRpdGxlIj4ke3QoJ3RpdGxlQ2FwJyl9PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1UaXRsZSIgbWF4bGVuZ3RoPSI4MCIgcGxhY2Vob2xkZXI9IiR7dCgncGhFdmVuaW5nJyl9Ij4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iYnRucyI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ic2F2ZU1hbnVhbCI+JHt0KCdzYXZlSm91cm5hbCcpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9ImNhbmNlbE1hbnVhbCI+JHt0KCdjYW5jZWwnKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gOwp9CgovKiAtLS0tLS0tLS0tIEpvdXJuYWwgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbnRyeUh0bWwoZSx0bSl7CiAgY29uc3QgZGVsPWA8YnV0dG9uIGNsYXNzPSJkZWwiIGFyaWEtbGFiZWw9IiR7dCgnZGVsJyl9IiBkYXRhLWRlbD0iJHtlLmlkfSI+w5c8L2J1dHRvbj5gOwogIGlmIChlLnR5cGU9PT0ndW5lbHRlJykgcmV0dXJuIHVuZWx0ZUVudHJ5SHRtbChlLHRtLGRlbCk7CiAgaWYgKGUudHlwZT09PSdwdXRlcmknKSByZXR1cm4gYDxkaXYgY2xhc3M9ImVudHJ5IHB1dGVyaSBvcGVuIiBkYXRhLW9wZW5wdXQ9IiR7ZS5pZH0iPiR7aGV4KCdwdXRlcmknLDMyKX08ZGl2IGNsYXNzPSJ0eHQiPjxiPiR7ZXNjKGUucDFlfHxlLnAxYXx8ZS5wMWJ8fEtJTkQucHV0ZXJpKX0ke3NoYXJlZE9mKGUuaWQpP2A8c3BhbiBjbGFzcz0ic2hhcmVkLXRhZyI+JHt0KCdzaGFyZWRUYWcnKX08L3NwYW4+YDonJ308L2I+PHNwYW4+JHtLSU5ELnB1dGVyaX0ke2UudGVtYT8nIMK3ICcrZXNjKHRlbWFMYWJlbChlLnRlbWEpKTonJ30gwrcgJHt0bX08L3NwYW4+PC9kaXY+JHtkZWx9PC9kaXY+YDsKICBpZiAoZS50eXBlPT09J2J1Y3VyaWUnKSByZXR1cm4gYDxkaXYgY2xhc3M9ImVudHJ5IGJ1Y3VyaWUgb3BlbiIgZGF0YS1vcGVuYnVjPSIke2UuaWR9Ij4ke2hleCgnYnVjdXJpZScsMzIpfTxkaXYgY2xhc3M9InR4dCI+PGI+JHtlc2MoZS5vYmllY3Rpdnx8S0lORC5idWN1cmllKX0ke3NoYXJlZE9mKGUuaWQpP2A8c3BhbiBjbGFzcz0ic2hhcmVkLXRhZyI+JHt0KCdzaGFyZWRUYWcnKX08L3NwYW4+YDonJ308L2I+PHNwYW4+JHtLSU5ELmJ1Y3VyaWV9IMK3ICR7dG19PC9zcGFuPjwvZGl2PiR7ZGVsfTwvZGl2PmA7CiAgaWYgKGUudHlwZT09PSdyZWN1bm9zdGludGUnKXsKICAgIGNvbnN0IGl0PWUuaXRlbXN8fFtdLCBucj1pdC5maWx0ZXIoeD0+eC5rPT09J3JlY3Vub3N0aW50YScpLmxlbmd0aCwgbnM9aXQubGVuZ3RoLW5yOwogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbnRyeSByZWN1bm9zdGludGUgY29sIj4ke2hleCgncmVjdW5vc3RpbnRlJywzMil9PGRpdiBjbGFzcz0idHh0Ij48Yj4ke3QoJ25SZWMnKShucixucyl9PC9iPjxzcGFuPiR7dG19PC9zcGFuPgogICAgICA8dWwgY2xhc3M9Iml0ZW1zIj4ke2l0Lm1hcCh4PT5gPGxpPjxzcGFuIGNsYXNzPSJ0YWcgJHt4Lmt9Ij4ke3guaz09PSdzdWNjZXMnP3QoJ3N1Y2Nlc3MnKTp0KCdncmF0aXR1ZGUnKX08L3NwYW4+PHNwYW4+JHtyZWNQcmUoeC5rKX0gJHtlc2MoeC50KX08L3NwYW4+PC9saT5gKS5qb2luKCcnKX08L3VsPgogICAgICA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLXNoYXJlPSIke2UuaWR9IiBzdHlsZT0iZm9udC1zaXplOi44MnJlbTttYXJnaW4tdG9wOjZweCI+JHtzaGFyZWRPZihlLmlkKT90KCdzaGFyZWRCdG4nKTp0KCdzaGFyZUJ0bicpfTwvYnV0dG9uPjwvZGl2PiR7ZGVsfTwvZGl2PmA7CiAgfQogIHJldHVybiBgPGRpdiBjbGFzcz0iZW50cnkgJHtlLnR5cGV9Ij4ke2hleChlLnR5cGUsMzIpfTxkaXYgY2xhc3M9InR4dCI+PGI+JHtlc2MoZS50aXRsZXx8S0lORFtlLnR5cGVdKX08L2I+PHNwYW4+JHtlLnRpdGxlP0tJTkRbZS50eXBlXSsnIMK3ICc6Jyd9JHtlLm1hbnVhbD90KCdsb2dnZWQnKTp0bX08L3NwYW4+PC9kaXY+JHtlLm1pbnV0ZXM\/YDxkaXYgY2xhc3M9Im1pbiI+JHtlLm1pbnV0ZXN94oCyPC9kaXY+YDonJ30ke2RlbH08L2Rpdj5gOwp9CmZ1bmN0aW9uIGpTZWcoKXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZWciIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ3NlZ0FyaWEnKX0iPjxidXR0b24gZGF0YS1qdmlldz0ibWluZSIgYXJpYS1wcmVzc2VkPSIke2pWaWV3PT09J21pbmUnfSI+JHt0KCdwZXJzb25hbCcpfTwvYnV0dG9uPjxidXR0b24gZGF0YS1qdmlldz0iY29tbSIgYXJpYS1wcmVzc2VkPSIke2pWaWV3PT09J2NvbW0nfSI+JHt0KCdjb21tdW5pdHknKX08L2J1dHRvbj48L2Rpdj5gIH0KZnVuY3Rpb24gcmVuZGVySnVybmFsKCl7CiAgaWYgKGpWaWV3PT09J2NvbW0nKSByZXR1cm4gcmVuZGVyQ29tbSgpOwogIGNvbnN0IHR5cGVzPVsndG9hdGUnLCdtZWRpdGF0aWUnLCd5b2dhJywnYnVjdXJpZScsJ3JlY3Vub3N0aW50ZScsJ3B1dGVyaScsJ3VuZWx0ZSddOwogIGNvbnN0IGxpc3Q9REFUQS5lbnRyaWVzLmZpbHRlcihlPT5qRmlsdGVyPT09J3RvYXRlJ3x8ZS50eXBlPT09akZpbHRlcikuc29ydCgoYSxiKT0+Yi5kYXRlLmxvY2FsZUNvbXBhcmUoYS5kYXRlKSk7CiAgY29uc3QgdG90TWluPWxpc3QucmVkdWNlKChhLGUpPT5hKyhlLm1pbnV0ZXN8fDApLDApOwogIGxldCBodG1sPWA8ZGl2IGNsYXNzPSJ2aWV3Ij4ke2pTZWcoKX08ZGl2PjxoMj4ke3QoJ2pvdXJuYWwnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ25QcmFjdGljZXMnKShsaXN0Lmxlbmd0aCl9JHt0b3RNaW4\/dCgndG90TWluJykodG90TWluKTonJ308L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjaGlwcyI+JHt0eXBlcy5tYXAoeD0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtZmlsdGVyPSIke3h9IiBhcmlhLXByZXNzZWQ9IiR7eD09PWpGaWx0ZXJ9Ij4ke3g9PT0ndG9hdGUnP3QoJ2FsbCcpOktJTkRbeF19PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+YDsKICBpZiAoIWxpc3QubGVuZ3RoKXsKICAgIGh0bWwrPWA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtoZXgoJ3NhbWFudGEnLDU2KX08cD4ke3QoJ2pFbXB0eScpfTwvcD48YnV0dG9uIGNsYXNzPSJidG4iIHN0eWxlPSJtYXgtd2lkdGg6MjQwcHgiIGRhdGEtZ289InByYWN0aWNhIj4ke3QoJ2dvUHJhY3RpY2UnKX08L2J1dHRvbj48L2Rpdj5gOwogIH0gZWxzZSB7CiAgICBjb25zdCBncm91cHM9e307IGxpc3QuZm9yRWFjaChlPT57IChncm91cHNbZGF5S2V5KGUuZGF0ZSldPz89W10pLnB1c2goZSkgfSk7CiAgICBPYmplY3Qua2V5cyhncm91cHMpLmZvckVhY2goaz0+ewogICAgICBjb25zdCBtPWdyb3Vwc1trXS5yZWR1Y2UoKGEsZSk9PmErKGUubWludXRlc3x8MCksMCk7CiAgICAgIGh0bWwrPWA8ZGl2IGNsYXNzPSJkYXkiPjxoND48c3Bhbj4ke2VzYyhmbXREYXkoaykpfTwvc3Bhbj48c3Bhbj4ke20\/bSsnICcrdCgndW5pdE1pbicpOicnfTwvc3Bhbj48L2g0PmA7CiAgICAgIGdyb3Vwc1trXS5mb3JFYWNoKGU9PnsKICAgICAgICBjb25zdCB0bT1uZXcgRGF0ZShlLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyhsb2MoKSx7aG91cjonMi1kaWdpdCcsbWludXRlOicyLWRpZ2l0J30pOwogICAgICAgIGh0bWwrPSBwZW5kaW5nRGVsPT09ZS5pZAogICAgICAgICAgPyBgPGRpdiBjbGFzcz0iZW50cnkiPjxkaXYgY2xhc3M9ImNvbmZpcm0iPjxzcGFuPiR7dCgnZGVsUScpfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJidG4gZGFuZ2VyIiBzdHlsZT0id2lkdGg6YXV0bztwYWRkaW5nOjZweCAxMnB4IiBkYXRhLWRlbC15ZXM9IiR7ZS5pZH0iPiR7dCgnZGVsJyl9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1kZWwtbm8+JHt0KCdubycpfTwvYnV0dG9uPjwvZGl2PjwvZGl2PmAKICAgICAgICAgIDogZW50cnlIdG1sKGUsdG0pOwogICAgICB9KTsKICAgICAgaHRtbCs9JzwvZGl2Pic7CiAgICB9KTsKICB9CiAgcmV0dXJuIGh0bWwrJzwvZGl2Pic7Cn0KZnVuY3Rpb24gcmVuZGVyR2F0ZSgpewogIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+PGRpdiBjbGFzcz0iY2FyZCBnYXRlIj4ke2hleCgnc2FtYW50YScsNTYpfTxoMj4ke3QoJ2FwcE5hbWUnKX08L2gyPgogICAgPHAgY2xhc3M9ImxlYWQiPiR7dCgnZ2F0ZUxlYWQnKX08L3A+CiAgICA8YSBjbGFzcz0iYnRuIiBocmVmPSIke2VzYyhDT05GSUcubG9naW5VcmwpfSIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSJkb2N1bWVudC5jb29raWU9J2dzX3JldHVybj0ke2xhbmcoKX07cGF0aD0vO21heC1hZ2U9MTgwMDtTYW1lU2l0ZT1MYXgnIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjI4MHB4Ij4ke3QoJ3NpZ25JbicpfTwvYT4KICAgICR7Q09ORklHLnJlZ2lzdGVyVXJsP2A8YSBjbGFzcz0ibGluayIgaHJlZj0iJHtlc2MoQ09ORklHLnJlZ2lzdGVyVXJsKX0iIHRhcmdldD0iX3RvcCI+JHt0KCdyZWdpc3RlcicpfTwvYT5gOicnfTwvZGl2PjwvZGl2PmA7Cn0KCi8qIC0tLS0tLS0tLS0gTGFuZ3VhZ2Ugc2hlZXQgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXJMYW5nU2hlZXQoKXsKICBsZXQgcz0kKCcjbGFuZ1NoZWV0Jyk7IGlmKHMpIHMucmVtb3ZlKCk7IGlmKCFsYW5nT3BlbikgcmV0dXJuOwogIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHMuaWQ9J2xhbmdTaGVldCc7IHMuY2xhc3NOYW1lPSdzaGVldC1iZyc7CiAgcy5pbm5lckhUTUw9YDxkaXYgY2xhc3M9Im9ianBhbmVsIHNob3J0IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWw9IiR7dCgnbGFuZ3VhZ2UnKX0iPjxkaXYgY2xhc3M9ImdyYWIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0idG9wIj48aDM+JHt0KCdsYW5ndWFnZScpfTwvaDM+PGJ1dHRvbiBjbGFzcz0ieCIgZGF0YS1sYW5nLWNsb3NlIGFyaWEtbGFiZWw9IiR7dCgnY2xvc2UnKX0iPsOXPC9idXR0b24+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJsYW5nbGlzdCI+JHtMQU5HUy5tYXAoKFtjLG5dKT0+eyBjb25zdCBvaz1SRUFEWS5pbmNsdWRlcyhjKTsgcmV0dXJuIGA8YnV0dG9uIGRhdGEtbGFuZz0iJHtjfSIgYXJpYS1wcmVzc2VkPSIke2xhbmcoKT09PWN9IiAke29rPycnOidkaXNhYmxlZCd9PjxzcGFuPiR7bn08L3NwYW4+JHtvaz8obGFuZygpPT09Yz8nPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPuKckzwvc3Bhbj4nOicnKTpgPHNtYWxsPiR7dCgnc29vbicpfTwvc21hbGw+YH08L2J1dHRvbj5gIH0pLmpvaW4oJycpfTwvZGl2PjwvZGl2PmA7CiAgJCgnLmFwcCcpLmFwcGVuZENoaWxkKHMpOwp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57CiAgaWYgKGUudGFyZ2V0LmNsb3Nlc3QoJyNsYW5nQnRuJykpeyBsYW5nT3Blbj10cnVlOyByZW5kZXJMYW5nU2hlZXQoKTsgcmV0dXJuIH0KICBjb25zdCBzaD1lLnRhcmdldC5jbG9zZXN0KCcjbGFuZ1NoZWV0Jyk7IGlmKCFzaCkgcmV0dXJuOwogIGNvbnN0IGI9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtbGFuZ10nKTsKICBpZiAoYiAmJiAhYi5kaXNhYmxlZCl7IGlmKHRhYj09PSdyZWN1bm9zdGludGUnJiZyZWNSb3dzKSByZWNDYXB0dXJlKCk7IHBDYXB0dXJlKCk7IERBVEEuc2V0dGluZ3MubGFuZz1iLmRhdGFzZXQubGFuZzsgcGVyc2lzdCgpOyBsYW5nT3Blbj1mYWxzZTsgcmVuZGVyTGFuZ1NoZWV0KCk7IHJlbmRlcigpOyBpZihzaGFyZU9wZW4pIHJlbmRlclNoYXJlKCk7IHJldHVybiB9CiAgaWYgKGUudGFyZ2V0PT09c2ggfHwgZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtbGFuZy1jbG9zZV0nKSl7IGxhbmdPcGVuPWZhbHNlOyByZW5kZXJMYW5nU2hlZXQoKSB9Cn0pOwoKZnVuY3Rpb24gY2hyb21lKCl7CiAgY29uc3QgbD1sYW5nKCk7IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPWw7CiAgZG9jdW1lbnQudGl0bGU9dCgnYXBwTmFtZScpOyAkKCcjYXBwTmFtZScpLnRleHRDb250ZW50PXQoJ2FwcE5hbWUnKTsKICAkKCcjbGFuZ0NvZGUnKS50ZXh0Q29udGVudD0oTEFOR1MuZmluZCh4PT54WzBdPT09bCl8fExBTkdTWzBdKVsyXTsKICAkKCcjbGFuZ0J0bicpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdCgnbGFuZ3VhZ2UnKSk7CiAgY29uc3QgYmw9JCgnI2JhY2tMaW5rJyk7IGJsLnRleHRDb250ZW50PXQoJ2NvdXJzZXMnKTsgYmwuaHJlZj1DT05GSUcuY291cnNlc1VybDsKICAkKCcjbmF2Jykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0KCdtZW51JykpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNuYXYgW2RhdGEtaV0nKS5mb3JFYWNoKGVsPT5lbC50ZXh0Q29udGVudD10KGVsLmRhdGFzZXQuaSkpOwp9CmZ1bmN0aW9uIHJlbmRlcigpewogIGNocm9tZSgpOwogIGlmIChDT05GSUcubG9naW5HYXRlICYmICFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbG9nZ2VkLWluJykpeyAkKCcjbWFpbicpLmlubmVySFRNTD1yZW5kZXJHYXRlKCk7ICQoJyNuYXYnKS5oaWRkZW49dHJ1ZTsgcmV0dXJuIH0KICBjb25zdCBuYXZUYWIgPSBbJ3RpbWVyJywncmVjdW5vc3RpbnRlJywnYnVjdXJpZScsJ3B1dGVyaSddLmluY2x1ZGVzKHRhYik\/J3ByYWN0aWNhJzp0YWI7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI25hdiBidXR0b24nKS5mb3JFYWNoKGI9PnsgaWYoYi5kYXRhc2V0LnRhYj09PW5hdlRhYikgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsJ3BhZ2UnKTsgZWxzZSBiLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JykgfSk7CiAgYnJlYXRoVC5mb3JFYWNoKGNsZWFyVGltZW91dCk7IGJyZWF0aFQ9W107CiAgY29uc3QgbT0kKCcjbWFpbicpOwogIGlmICh0YWI9PT0nYXppJykgbS5pbm5lckhUTUw9cmVuZGVyQXppKCk7CiAgZWxzZSBpZiAodGFiPT09J2J1Y3VyaWUnKSBtLmlubmVySFRNTD1yZW5kZXJCdWN1cmllKCk7CiAgZWxzZSBpZiAodGFiPT09J3JlY3Vub3N0aW50ZScpIG0uaW5uZXJIVE1MPXJlbmRlclJlY3Vub3N0aW50ZSgpOwogIGVsc2UgaWYgKHRhYj09PSd0b2RvJykgbS5pbm5lckhUTUw9cmVuZGVyVG9kbygpOwogIGVsc2UgaWYgKHRhYj09PSdwdXRlcmknKSBtLmlubmVySFRNTD1yZW5kZXJQdXRlcmkoKTsKICBlbHNlIGlmICh0YWI9PT0nanVybmFsJykgbS5pbm5lckhUTUw9cmVuZGVySnVybmFsKCk7CiAgZWxzZSBpZiAodGFiPT09J3ByYWN0aWNhJykgbS5pbm5lckhUTUw9cmVuZGVySHViKCk7CiAgZWxzZSBpZiAodGFiPT09J3Byb2ZpbCcpIG0uaW5uZXJIVE1MPXJlbmRlclByb2ZpbCgpOwogIGVsc2UgcmVuZGVyUHJhY3RpY2EoKTsKfQoKLyogPT09PT09PT09PT09IENvbW11bml0eSA9PT09PT09PT09PT0KICAgRWFjaCBwZXJzb24gY2hvb3NlcyB3aGF0IHRvIHNoYXJlIChqb3kgbWVkaXRhdGlvbiwgZ3JhdGl0dWRlL3N1Y2Nlc3NlcywgdGhlIDQgcG93ZXJzKSwgdW5kZXIgYSBuYW1lIG9mIHRoZWlyIGNob2ljZS4KICAgQSBjb3B5IG9mIHRoZSB0ZXh0IGlzIHB1Ymxpc2hlZCwgbm90IHRoZSBlbnRyeSBpdHNlbGY7IHdpdGhkcmF3aW5nIHJlbW92ZXMgaXQgZnJvbSB0aGUgY29tbXVuaXR5LgogICBPbiB0aGUgc2l0ZSwgZXZlcnlvbmUncyBwb3N0cyBjb21lIGZyb20gdGhlIHNlcnZlcjsgaW4gdGhlIHRlc3QgdmVyc2lvbiB0aGUgY29tbXVuaXR5IHNob3dzIGEgZmV3IGV4YW1wbGVzLiAqLwpjb25zdCBTSEFSRUFCTEU9WydidWN1cmllJywncmVjdW5vc3RpbnRlJywncHV0ZXJpJ107CmxldCBzaGFyZU9wZW49bnVsbCwgc2hhcmVTZWw9e30sIG5hbWVEcmFmdD1udWxsLCBvcGVuUG9zdD17fTsKY29uc3QgQ0M9e3Bvc3RzOltdLGxvYWRlZDpmYWxzZSxibG9ja2VkOmZhbHNlfTsKYXN5bmMgZnVuY3Rpb24gYXBpQyhwYXRoLG9wdD17fSl7CiAgY29uc3Qgcj1hd2FpdCBmZXRjaChDT05GSUcuYXBpLnJvb3QrJ2dyYWRpbmEvdjEvJytwYXRoLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLG1ldGhvZDpvcHQubWV0aG9kfHwnR0VUJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbicsJ1gtV1AtTm9uY2UnOkNPTkZJRy5hcGkubm9uY2V9LGJvZHk6b3B0LmJvZHk\/SlNPTi5zdHJpbmdpZnkob3B0LmJvZHkpOnVuZGVmaW5lZH0pOwogIGxldCBqPW51bGw7IHRyeXsgaj1hd2FpdCByLmpzb24oKSB9Y2F0Y2goeCl7fQogIGlmKCFyLm9rKXsgY29uc3QgZXJycz10KCdlcnInKTsgdGhyb3cgbmV3IEVycm9yKChqJiZqLmNvZGUmJmVycnNbai5jb2RlXSl8fHQoJ2FwaUZhaWwnKSkgfQogIHJldHVybiBqOwp9CmFzeW5jIGZ1bmN0aW9uIGNvbW1Mb2FkKCl7CiAgaWYoIUNPTkZJRy5hcGkpIHJldHVybjsKICB0cnl7IGNvbnN0IGo9YXdhaXQgYXBpQygnY29tbXVuaXR5Jyk7IENDLnBvc3RzPWoucG9zdHN8fFtdOyBDQy5ibG9ja2VkPSEhai5ibG9ja2VkOyBDQy5sb2FkZWQ9dHJ1ZTsKICAgIGlmKGoubmFtZSAmJiBqLm5hbWUhPT1EQVRBLmNvbW0ubmFtZSl7IERBVEEuY29tbS5uYW1lPWoubmFtZSB9CiAgICBjb25zdCBtaW5lPWoubWluZXx8W107IGNvbnN0IGJlZm9yZT1EQVRBLmNvbW0ucG9zdHMubGVuZ3RoOyBEQVRBLmNvbW0ucG9zdHM9REFUQS5jb21tLnBvc3RzLmZpbHRlcih4PT5taW5lLmluY2x1ZGVzKHguaWQpKTsgaWYoYmVmb3JlIT09REFUQS5jb21tLnBvc3RzLmxlbmd0aCkgcGVyc2lzdCgpOwogICAgaWYodGFiPT09J2F6aSd8fHRhYj09PSdqdXJuYWwnKSByZW5kZXIoKTsKICB9Y2F0Y2goZSl7fQp9CmFzeW5jIGZ1bmN0aW9uIHNldE5hbWUodil7CiAgdj1TdHJpbmcodnx8JycpLnRyaW0oKTsgaWYodi5sZW5ndGg8Mil7IHRvYXN0KHQoJ25hbWVTaG9ydCcpKTsgcmV0dXJuIGZhbHNlIH0KICBpZihDT05GSUcuYXBpKXsgdHJ5eyBjb25zdCBqPWF3YWl0IGFwaUMoJ2NvbW11bml0eS9uYW1lJyx7bWV0aG9kOidQT1NUJyxib2R5OntuYW1lOnZ9fSk7IHY9ai5uYW1lIH1jYXRjaChlKXsgdG9hc3QoZS5tZXNzYWdlKTsgcmV0dXJuIGZhbHNlIH0gfQogIERBVEEuY29tbS5uYW1lPXY7IERBVEEuY29tbS5wb3N0cy5mb3JFYWNoKHA9PnAubmFtZT12KTsgQ0MucG9zdHMuZm9yRWFjaChwPT57IGlmKHAubWluZSkgcC5uYW1lPXYgfSk7IHBlcnNpc3QoKTsgcmV0dXJuIHRydWU7Cn0KY29uc3Qgc2hhcmVkT2YgPSBpZCA9PiBEQVRBLmNvbW0ucG9zdHMuZmluZChwPT5wLmZyb209PT1pZCk7Ci8qIGNvbW11bml0eSBsYW5ndWFnZTogb25seSB0aGUgcG9zdHMgd3JpdHRlbiBpbiBteSBsYW5ndWFnZSwgb3IgYWxsIGxhbmd1YWdlcyAocG9zdHMgZnJvbSBiZWZvcmUgdGhpcyBvcHRpb24gY291bnQgYXMgRW5nbGlzaCkgKi8KY29uc3QgY29tbUFsbExhbmdzID0gKCkgPT4gREFUQS5zZXR0aW5ncy5jb21tTGFuZz09PSdhbGwnOwpjb25zdCBwb3N0TGFuZyA9IHAgPT4gcC5sYW5nIHx8ICdlbic7CmNvbnN0IGNvbW1Qb3N0c0FsbCA9ICgpID0+IENPTkZJRy5hcGkgPyBDQy5wb3N0cy5maWx0ZXIocD0+IURBVEEuY29tbS5oaWRkZW5bcC5pZF0pCiAgOiBbLi4uREFUQS5jb21tLnBvc3RzLm1hcChwPT4oey4uLnAsbWluZTp0cnVlfSkpLCAuLi5PYmplY3QudmFsdWVzKERFTU9fTCkuZmxhdCgpXS5maWx0ZXIocD0+IURBVEEuY29tbS5oaWRkZW5bcC5pZF0pLnNvcnQoKGEsYik9PmIuZGF0ZS5sb2NhbGVDb21wYXJlKGEuZGF0ZSkpOwpjb25zdCBjb21tUG9zdHMgPSAoKSA9PiBjb21tQWxsTGFuZ3MoKSA\/IGNvbW1Qb3N0c0FsbCgpIDogY29tbVBvc3RzQWxsKCkuZmlsdGVyKHA9PnAubWluZSB8fCBwb3N0TGFuZyhwKT09PWxhbmcoKSk7CmNvbnN0IGFzR2VuID0gKGcsZm4pID0+IHsgY29uc3Qgaz1EQVRBLnNldHRpbmdzLmdlbjsgREFUQS5zZXR0aW5ncy5nZW49Z3x8J2YnOyB0cnl7IHJldHVybiBmbigpIH0gZmluYWxseSB7IERBVEEuc2V0dGluZ3MuZ2VuPWsgfSB9Owpjb25zdCBpbml0aWFsID0gbiA9PiBlc2MoKFN0cmluZyhufHwnPycpLnRyaW0oKVswXXx8Jz8nKS50b1VwcGVyQ2FzZSgpKTsKY29uc3QgcmVhY3RPZiA9IHR5cGUgPT4gdHlwZT09PSdwdXRlcmknID8ge2xhYmVsOnQoJ3JlYWN0UG93JyksY291bnQ6dCgnY291bnRQb3cnKSx0b2FzdDp0KCd0b2FzdFBvdycpfSA6IHtsYWJlbDp0KCdyZWFjdEpveScpLGNvdW50OnQoJ2NvdW50Sm95JyksdG9hc3Q6dCgndG9hc3RKb3knKX07CmZ1bmN0aW9uIHNuYXBzaG90KGUsIHNlbCl7CiAgY29uc3QgYmFzZT17ZnJvbTplLmlkLHR5cGU6ZS50eXBlLGRhdGU6ZS5kYXRlLGdlbjpEQVRBLnNldHRpbmdzLmdlbnx8J2YnLGxhbmc6bGFuZygpfTsKICBpZihlLnR5cGU9PT0ncHV0ZXJpJykgcmV0dXJuIHsuLi5iYXNlLCB2OmUudiwgemk6ZS56aSwgdGVtYTplLnRlbWF8fCcnLCBwMWE6ZS5wMWEscDFiOmUucDFiLHAxZTplLnAxZSxwMjplLnAyLHAzOmUucDMscDQ6ZS5wNH07CiAgaWYoZS50eXBlPT09J2J1Y3VyaWUnKXsgY29uc3QgcT17fTsgUV9LRVlTLmZvckVhY2goaz0+eyBpZihzZWxba10mJmVba10pIHFba109ZVtrXSB9KTsgcmV0dXJuIHsuLi5iYXNlLHF9IH0KICByZXR1cm4gey4uLmJhc2UsIGl0ZW1zOihlLml0ZW1zfHxbXSkuZmlsdGVyKCh4LGkpPT5zZWxbaV0pfTsKfQpmdW5jdGlvbiBwb3N0Qm9keShwKXsKICBpZihwLnR5cGU9PT0ncmVjdW5vc3RpbnRlJykgcmV0dXJuIGFzR2VuKHAuZ2VuLCgpPT5gPGRpdiBjbGFzcz0iYm9keSI+JHsocC5pdGVtc3x8W10pLm1hcCh4PT5gPHA+PHNwYW4gY2xhc3M9InRhZyAke3gua30iIHN0eWxlPSJmb250LXNpemU6LjY2cmVtO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtmb250LXdlaWdodDo3MDA7Y29sb3I6JHt4Lms9PT0nc3VjY2VzJz8ndmFyKC0tc29pbCknOid2YXIoLS1tb3NzKSd9Ij4ke3guaz09PSdzdWNjZXMnP3QoJ3N1Y2Nlc3MnKTp0KCdncmF0aXR1ZGUnKX08L3NwYW4+PGJyPiR7cmVjUHJlKHguayl9ICR7ZXNjKHgudCl9PC9wPmApLmpvaW4oJycpfTwvZGl2PmApOwogIGlmKHAudHlwZT09PSdidWN1cmllJyl7IGNvbnN0IFE9dHgoKS5xSm95OyByZXR1cm4gYDxkaXYgY2xhc3M9ImJvZHkiPiR7UV9LRVlTLmZpbHRlcihrPT5wLnEmJnAucVtrXSkubWFwKGs9PmA8ZGl2IGNsYXNzPSJxbCI+JHtRW2tdfTwvZGl2PjxwPiR7ZXNjKHAucVtrXSl9PC9wPmApLmpvaW4oJycpfTwvZGl2PmAgfQogIGNvbnN0IGZ1bGw9ISFvcGVuUG9zdFtwLmlkXTsKICByZXR1cm4gYXNHZW4ocC5nZW4sKCk9PmA8ZGl2IGNsYXNzPSJib2R5Ij4ke3AudGVtYT9gPHNwYW4gY2xhc3M9InRhZy10ZW1hIj4ke2VzYyh0ZW1hTGFiZWwocC50ZW1hKSl9PC9zcGFuPiBgOicnfTxkaXYgY2xhc3M9InFsIj4ke1BWayhwLnYpLm5hbWUoKX08L2Rpdj4KICAgICR7KGZ1bGw\/UE9XRVJfS0VZUzpQT1dFUl9LRVlTLnNsaWNlKDAsMSkpLm1hcChrPT57IGNvbnN0IFtuLHRpXT1QVyhrKTsgcmV0dXJuIGA8aDQ+JHtufSDCtyAke3RpfTwvaDQ+JHtwUmVjYXAoayxwKX1gIH0pLmpvaW4oJycpfTwvZGl2PgogICAgPGJ1dHRvbiBjbGFzcz0ibW9yZSIgZGF0YS1tb3JlPSIke3AuaWR9Ij4ke2Z1bGw\/dCgnc2hvd0xlc3MnKTp0KCdyZWFkRnVsbCcpfTwvYnV0dG9uPmApOwp9CmZ1bmN0aW9uIHBvc3RIdG1sKHApewogIGNvbnN0IHI9cmVhY3RPZihwLnR5cGUpLCBvbj1DT05GSUcuYXBpPyEhcC5yZWFjdGVkOiEhREFUQS5jb21tLnJlYWN0ZWRbcC5pZF0sIG49Q09ORklHLmFwaT8ocC5yZWFjdHN8fDApOihwLnJlYWN0c3x8MCkrKG9uPzE6MCk7CiAgY29uc3QgZHQ9bmV3IERhdGUocC5kYXRlKS50b0xvY2FsZURhdGVTdHJpbmcobG9jKCkse2RheTonbnVtZXJpYycsbW9udGg6J2xvbmcnfSk7CiAgcmV0dXJuIGA8YXJ0aWNsZSBjbGFzcz0icG9zdCI+PGRpdiBjbGFzcz0id2hvIj48c3BhbiBjbGFzcz0iYXYgJHtwLm1pbmU\/J21lJzonJ30iIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke2luaXRpYWwocC5uYW1lKX08L3NwYW4+PGRpdj48Yj4ke2VzYyhwLm5hbWUpfSR7cC5taW5lP2AgPHNwYW4gY2xhc3M9InNoYXJlZC10YWciPiR7dCgneW91Jyl9PC9zcGFuPmA6Jyd9PC9iPjxzcGFuPiR7ZHR9PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJraW5kIj4ke3Bvc3RMYW5nKHApIT09bGFuZygpP2A8c3BhbiBjbGFzcz0ibGFuZy10YWciPiR7cG9zdExhbmcocCkudG9VcHBlckNhc2UoKX08L3NwYW4+IGA6Jyd9JHtLSU5EW3AudHlwZV19PC9zcGFuPjwvZGl2PgogICAgJHtwb3N0Qm9keShwKX0KICAgICR7cC50eXBlPT09J3B1dGVyaScmJm9uJiYhcC5taW5lP2A8cCBjbGFzcz0iYmFubmVyIiBzdHlsZT0ibWFyZ2luOjAiPiR7dCgnZ2VzdE5vdGUnKX08L3A+YDonJ30KICAgIDxkaXYgY2xhc3M9ImFjdHMiPiR7cC5taW5lP2A8c3BhbiBjbGFzcz0iY291bnQiPiR7bj9uKycgJytyLmNvdW50OnQoJ25vYm9keVlldCcpfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJkb3RzIiBkYXRhLXVuc2hhcmU9IiR7cC5pZH0iPiR7dCgnd2l0aGRyYXcnKX08L2J1dHRvbj5gCiAgICAgIDpgPGJ1dHRvbiBjbGFzcz0icmVhY3QiIGRhdGEtcmVhY3Q9IiR7cC5pZH0iIGFyaWEtcHJlc3NlZD0iJHtvbn0iPiR7b24\/J+KckyAnOifimaEgJ30ke3IubGFiZWx9PC9idXR0b24+PHNwYW4gY2xhc3M9ImNvdW50Ij4ke24\/bisnICcrci5jb3VudDonJ308L3NwYW4+PGJ1dHRvbiBjbGFzcz0iZG90cyIgZGF0YS1yZXBvcnQ9IiR7cC5pZH0iPiR7dCgncmVwb3J0Jyl9PC9idXR0b24+YH08L2Rpdj48L2FydGljbGU+YDsKfQpmdW5jdGlvbiByZW5kZXJDb21tKCl7CiAgY29uc3QgdHlwZXM9Wyd0b2F0ZScsLi4uU0hBUkVBQkxFXTsKICBjb25zdCBsaXN0PWNvbW1Qb3N0cygpLmZpbHRlcihwPT5jRmlsdGVyPT09J3RvYXRlJ3x8cC50eXBlPT09Y0ZpbHRlcik7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij48YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWdvPSJhemkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiPiR7dCgnYmFjaycpfTwvYnV0dG9uPiR7alNlZygpfQogICAgPGRpdj48aDI+JHt0KCdjb21tVGl0bGUnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ2NvbW1MZWFkJyl9PC9wPjwvZGl2PgogICAgJHtDT05GSUcuYXBpPycnOmA8ZGl2IGNsYXNzPSJiYW5uZXIiPiR7dCgnY29tbVRlc3RCYW5uZXInKX08L2Rpdj5gfQogICAgPGRpdiBjbGFzcz0iY2hpcHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ2xhbmd1YWdlJyl9Ij48YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLWNsYW5nPSJtaW5lIiBhcmlhLXByZXNzZWQ9IiR7IWNvbW1BbGxMYW5ncygpfSI+JHt0KCdsYW5nT25seScpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtY2xhbmc9ImFsbCIgYXJpYS1wcmVzc2VkPSIke2NvbW1BbGxMYW5ncygpfSI+JHt0KCdsYW5nQWxsJyl9PC9idXR0b24+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjaGlwcyI+JHt0eXBlcy5tYXAoeD0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtY2ZpbHRlcj0iJHt4fSIgYXJpYS1wcmVzc2VkPSIke3g9PT1jRmlsdGVyfSI+JHt4PT09J3RvYXRlJz90KCdhbGwnKTpLSU5EW3hdfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PgogICAgJHtEQVRBLmNvbW0ubmFtZT9gPHAgY2xhc3M9Im5vdGUiPiR7dCgnYXBwZWFySW4nKShlc2MoREFUQS5jb21tLm5hbWUpKX0gwrcgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9Im5hbWVFZGl0Ij4ke3QoJ2NoYW5nZScpfTwvYnV0dG9uPjwvcD5gOicnfQogICAgJHtsaXN0Lmxlbmd0aD9saXN0Lm1hcChwb3N0SHRtbCkuam9pbignJyk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2hleCgnc2FtYW50YScsNDgpfTxwPiR7Y29tbUFsbExhbmdzKCk\/dCgnY29tbUVtcHR5Jyk6dCgnY29tbUVtcHR5TGFuZycpfTwvcD4ke2NvbW1BbGxMYW5ncygpPycnOmA8YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1jbGFuZz0iYWxsIiBzdHlsZT0ibWF4LXdpZHRoOjI2MHB4Ij4ke3QoJ2xhbmdBbGwnKX08L2J1dHRvbj5gfTwvZGl2PmB9CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiBpbnNwb0NhcmQoKXsKICBjb25zdCBwPWNvbW1Qb3N0cygpLmZpbmQoeD0+IXgubWluZSk7IGlmKCFwKSByZXR1cm4gJyc7CiAgbGV0IHR4dD0nJzsKICBpZihwLnR5cGU9PT0ncmVjdW5vc3RpbnRlJykgdHh0PWFzR2VuKHAuZ2VuLCgpPT4ocC5pdGVtc3x8W10pWzBdP3JlY1ByZShwLml0ZW1zWzBdLmspKycgJytwLml0ZW1zWzBdLnQ6JycpOwogIGVsc2UgaWYocC50eXBlPT09J2J1Y3VyaWUnKSB0eHQ9KHAucSYmKHAucS5zZW1pbnRlfHxwLnEub2JpZWN0aXYpKXx8Jyc7CiAgZWxzZSB0eHQ9KHAudGVtYT90ZW1hTGFiZWwocC50ZW1hKSsnOiAnOicnKSsocC5wMWV8fHAucDFhfHxwLnAxYnx8JycpOwogIGlmKHR4dC5sZW5ndGg+MTQwKSB0eHQ9dHh0LnNsaWNlKDAsMTM3KS50cmltKCkrJ+KApic7CiAgcmV0dXJuIGA8YnV0dG9uIGNsYXNzPSJpbnNwbyIgZGF0YS1nbz0ianVybmFsIiBkYXRhLWp2PSJjb21tIj48c3BhbiBjbGFzcz0iZXllYnJvdyI+JHt0KCdpbnNwb0hlYWQnKShlc2MocC5uYW1lKSl9PC9zcGFuPjxwPiR7ZXNjKHR4dCl9PC9wPjxzcGFuPiR7dCgnaW5zcG9Nb3JlJyl9PC9zcGFuPjwvYnV0dG9uPmA7Cn0KZnVuY3Rpb24gc2hhcmVCdG4oZSl7CiAgaWYoIVNIQVJFQUJMRS5pbmNsdWRlcyhlLnR5cGUpKSByZXR1cm4gJyc7CiAgcmV0dXJuIHNoYXJlZE9mKGUuaWQpP2A8YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtc2hhcmU9IiR7ZS5pZH0iPiR7dCgnc2hhcmVkQnRuJyl9PC9idXR0b24+YDpgPGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtc2hhcmU9IiR7ZS5pZH0iPiR7dCgnc2hhcmVCdG4nKX08L2J1dHRvbj5gOwp9CmZ1bmN0aW9uIG9wZW5TaGFyZShpZCl7CiAgY29uc3QgZT1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09aWQpOyBpZighZSkgcmV0dXJuOwogIHNoYXJlT3Blbj1pZDsgbmFtZURyYWZ0PW51bGw7IHNoYXJlU2VsPXt9OwogIGlmKGUudHlwZT09PSdidWN1cmllJykgUV9LRVlTLmZvckVhY2goaz0+eyBzaGFyZVNlbFtrXT0gayE9PSdhanV0b3InICYmICEhZVtrXSB9KTsKICBpZihlLnR5cGU9PT0ncmVjdW5vc3RpbnRlJykgKGUuaXRlbXN8fFtdKS5mb3JFYWNoKCh4LGkpPT5zaGFyZVNlbFtpXT10cnVlKTsKICByZW5kZXJTaGFyZSgpOwp9CmZ1bmN0aW9uIHJlbmRlclNoYXJlKCl7CiAgbGV0IHM9JCgnI3NoYXJlU2hlZXQnKTsgaWYocykgcy5yZW1vdmUoKTsgaWYoIXNoYXJlT3BlbikgcmV0dXJuOwogIGlmKHNoYXJlT3Blbj09PSdfX25hbWUnKXsKICAgIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHMuaWQ9J3NoYXJlU2hlZXQnOyBzLmNsYXNzTmFtZT0nc2hlZXQtYmcnOwogICAgcy5pbm5lckhUTUw9YDxkaXYgY2xhc3M9Im9ianBhbmVsIHNob3J0IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWw9IiR7dCgnbmFtZUxhYmVsJyl9Ij48ZGl2IGNsYXNzPSJncmFiIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idG9wIj48aDM+JHt0KCduYW1lTGFiZWwnKX08L2gzPjxidXR0b24gY2xhc3M9IngiIGRhdGEtc2hhcmUtY2xvc2UgYXJpYS1sYWJlbD0iJHt0KCdjbG9zZScpfSI+w5c8L2J1dHRvbj48L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJjb21tTmFtZSIgbWF4bGVuZ3RoPSIzMCIgdmFsdWU9IiR7ZXNjKG5hbWVEcmFmdD8\/JycpfSIgcGxhY2Vob2xkZXI9IiR7dCgnbmFtZVBoJyl9Ij4KICAgICAgPHAgY2xhc3M9Im5vdGUiPiR7dCgnbmFtZVNoZWV0Tm90ZScpfTwvcD4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ibmFtZVNhdmUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPjwvZGl2PmA7CiAgICAkKCcuYXBwJykuYXBwZW5kQ2hpbGQocyk7IHJldHVybjsKICB9CiAgY29uc3QgZT1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09c2hhcmVPcGVuKTsgaWYoIWUpeyBzaGFyZU9wZW49bnVsbDsgcmV0dXJuIH0KICBjb25zdCBzaD1zaGFyZWRPZihlLmlkKSwgbmVlZE5hbWU9IURBVEEuY29tbS5uYW1lfHxuYW1lRHJhZnQhPT1udWxsOwogIGxldCBwaWNrPScnOwogIGlmKGUudHlwZT09PSdidWN1cmllJyl7IGNvbnN0IFE9dHgoKS5xSm95OyBwaWNrPVFfS0VZUy5maWx0ZXIoaz0+ZVtrXSkubWFwKGs9PmA8bGFiZWwgY2xhc3M9ImNoayI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkYXRhLXNlbD0iJHtrfSIgJHtzaGFyZVNlbFtrXT8nY2hlY2tlZCc6Jyd9PjxzcGFuPjxzcGFuIGNsYXNzPSJxbCI+JHtRW2tdfTwvc3Bhbj4ke2VzYyhlW2tdKX08L3NwYW4+PC9sYWJlbD5gKS5qb2luKCcnKSB9CiAgaWYoZS50eXBlPT09J3JlY3Vub3N0aW50ZScpIHBpY2s9KGUuaXRlbXN8fFtdKS5tYXAoKHgsaSk9PmA8bGFiZWwgY2xhc3M9ImNoayI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkYXRhLXNlbD0iJHtpfSIgJHtzaGFyZVNlbFtpXT8nY2hlY2tlZCc6Jyd9PjxzcGFuPiR7cmVjUHJlKHguayl9ICR7ZXNjKHgudCl9PC9zcGFuPjwvbGFiZWw+YCkuam9pbignJyk7CiAgaWYoZS50eXBlPT09J3B1dGVyaScpIHBpY2s9YDxkaXYgY2xhc3M9InBvc3QiIHN0eWxlPSJib3JkZXI6MDtwYWRkaW5nOjAiPiR7cG9zdEJvZHkoey4uLnNuYXBzaG90KGUse30pLGlkOidwcmV2aWV3J30pfTwvZGl2PmA7CiAgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgcy5pZD0nc2hhcmVTaGVldCc7IHMuY2xhc3NOYW1lPSdzaGVldC1iZyc7CiAgcy5pbm5lckhUTUw9YDxkaXYgY2xhc3M9Im9ianBhbmVsIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWw9IiR7dCgnc2hhcmVCdG4nKX0iPjxkaXYgY2xhc3M9ImdyYWIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0idG9wIj48aDM+JHtzaD90KCdzaGVldFNoYXJlZCcpOnQoJ3NoYXJlQnRuJyl9PC9oMz48YnV0dG9uIGNsYXNzPSJ4IiBkYXRhLXNoYXJlLWNsb3NlIGFyaWEtbGFiZWw9IiR7dCgnY2xvc2UnKX0iPsOXPC9idXR0b24+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzaGFyZWJveCI+CiAgICAke0NDLmJsb2NrZWQmJiFzaD9gPHAgY2xhc3M9ImJhbm5lciI+JHt0KCdibG9ja2VkTm90ZScpfTwvcD5gOicnfQogICAgJHtzaD9gPHAgY2xhc3M9Im5vdGUiPiR7dCgnc2hlZXRTaGFyZWROb3RlJykoZXNjKERBVEEuY29tbS5uYW1lfHxzaC5uYW1lfHwnJykpfTwvcD5gCiAgICA6YCR7bmVlZE5hbWU\/YDxkaXYgY2xhc3M9InEiPjxsYWJlbCBmb3I9ImNvbW1OYW1lIj4ke3QoJ25hbWVMYWJlbCcpfTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJjb21tTmFtZSIgbWF4bGVuZ3RoPSIzMCIgdmFsdWU9IiR7ZXNjKG5hbWVEcmFmdD8\/REFUQS5jb21tLm5hbWU\/PycnKX0iIHBsYWNlaG9sZGVyPSIke3QoJ25hbWVQaCcpfSI+PHAgY2xhc3M9Im5vdGUiPiR7dCgnbmFtZU5vdGUnKX08L3A+PC9kaXY+YAogICAgICA6YDxkaXYgY2xhc3M9Im5hbWVib3giPjxzcGFuIGNsYXNzPSJhdiIgYXJpYS1oaWRkZW49InRydWUiPiR7aW5pdGlhbChEQVRBLmNvbW0ubmFtZSl9PC9zcGFuPjxzcGFuIHN0eWxlPSJmbGV4OjEiPiR7dCgnYXBwZWFyc0FzJykoZXNjKERBVEEuY29tbS5uYW1lKSl9PC9zcGFuPjxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJuYW1lRWRpdCI+JHt0KCdjaGFuZ2UnKX08L2J1dHRvbj48L2Rpdj5gfQogICAgICA8cCBjbGFzcz0ibGFiZWwiPiR7ZS50eXBlPT09J3B1dGVyaSc\/dCgnb3RoZXJzUmVhZCcpOnQoJ2Nob29zZVNoYXJlJyl9PC9wPgogICAgICA8ZGl2PiR7cGlja308L2Rpdj4KICAgICAgPHAgY2xhc3M9Im5vdGUiPiR7dCgncHJpdmFjeU5vdGUnKX08L3A+YH0KICAgIDwvZGl2PgogICAgJHtzaD9gPGJ1dHRvbiBjbGFzcz0iYnRuIGRhbmdlciIgZGF0YS11bnNoYXJlPSIke3NoLmlkfSI+JHt0KCd3aXRoZHJhd0J0bicpfTwvYnV0dG9uPmA6YDxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9InNoYXJlUHVibGlzaCI+JHt0KCdzaGFyZURvJyl9PC9idXR0b24+YH0KICA8L2Rpdj5gOwogICQoJy5hcHAnKS5hcHBlbmRDaGlsZChzKTsKfQpsZXQgcHVibGlzaGluZz1mYWxzZTsKYXN5bmMgZnVuY3Rpb24gcHVibGlzaFNoYXJlKCl7CiAgaWYocHVibGlzaGluZykgcmV0dXJuOwogIHB1Ymxpc2hpbmc9dHJ1ZTsgY29uc3QgcGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NoYXJlU2hlZXQgW2RhdGEtYWN0PSJzaGFyZVB1Ymxpc2giXScpOyBpZihwYil7IHBiLmRpc2FibGVkPXRydWU7IHBiLnN0eWxlLm9wYWNpdHk9Jy42JyB9CiAgdHJ5eyBhd2FpdCBwdWJsaXNoU2hhcmVOb3coKSB9IGZpbmFsbHkgeyBwdWJsaXNoaW5nPWZhbHNlOyBjb25zdCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzaGFyZVNoZWV0IFtkYXRhLWFjdD0ic2hhcmVQdWJsaXNoIl0nKTsgaWYoYil7IGIuZGlzYWJsZWQ9ZmFsc2U7IGIuc3R5bGUub3BhY2l0eT0nJyB9IH0KfQphc3luYyBmdW5jdGlvbiBwdWJsaXNoU2hhcmVOb3coKXsKICBjb25zdCBlPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1zaGFyZU9wZW4pOyBpZighZSkgcmV0dXJuOwogIGNvbnN0IHNuYXA9c25hcHNob3QoZSxzaGFyZVNlbCk7CiAgaWYoZS50eXBlPT09J2J1Y3VyaWUnJiYhT2JqZWN0LmtleXMoc25hcC5xKS5sZW5ndGggfHwgZS50eXBlPT09J3JlY3Vub3N0aW50ZScmJiFzbmFwLml0ZW1zLmxlbmd0aCl7IHRvYXN0KHQoJ2Nob29zZU9uZScpKTsgcmV0dXJuIH0KICBjb25zdCBuaT0kKCcjY29tbU5hbWUnKTsgaWYobmkpeyBpZighKGF3YWl0IHNldE5hbWUobmkudmFsdWUpKSl7IG5pLmZvY3VzKCk7IHJldHVybiB9IG5hbWVEcmFmdD1udWxsIH0KICBpZihDT05GSUcuYXBpKXsKICAgIGNvbnN0IHtmcm9tLHR5cGUsZGF0ZSxnZW4sbGFuZzpwbCwuLi5kYXRhfT1zbmFwOwogICAgdHJ5eyBjb25zdCBqPWF3YWl0IGFwaUMoJ2NvbW11bml0eScse21ldGhvZDonUE9TVCcsYm9keTp7ZnJvbSx0eXBlLGRhdGUsZ2VuLGxhbmc6cGwsZGF0YX19KTsgaWYoIURBVEEuY29tbS5wb3N0cy5zb21lKHg9PnguaWQ9PT1qLmlkKSkgREFUQS5jb21tLnBvc3RzLnB1c2goe2lkOmouaWQsZnJvbSx0eXBlLGRhdGV9KTsgaWYoIUNDLnBvc3RzLnNvbWUoeD0+eC5pZD09PWouaWQpKSBDQy5wb3N0cy51bnNoaWZ0KGopIH0KICAgIGNhdGNoKGVycil7IHRvYXN0KGVyci5tZXNzYWdlKTsgcmV0dXJuIH0KICB9IGVsc2UgREFUQS5jb21tLnBvc3RzLnB1c2goey4uLnNuYXAsaWQ6J3AnK0RhdGUubm93KCkudG9TdHJpbmcoMzYpLG5hbWU6REFUQS5jb21tLm5hbWUsc2hhcmVkOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxyZWFjdHM6MH0pOwogIHBlcnNpc3QoKTsgc2hhcmVPcGVuPW51bGw7IHJlbmRlclNoYXJlKCk7IHJlbmRlcigpOyB0b2FzdCh0KCdzaGFyZWRUb2FzdCcpKTsKfQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZT0+ewogIGNvbnN0IHNoPWUudGFyZ2V0LmNsb3Nlc3QoJyNzaGFyZVNoZWV0Jyk7CiAgY29uc3Qgb3A9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2hhcmVdJyk7IGlmKG9wKXsgb3BlblNoYXJlKG9wLmRhdGFzZXQuc2hhcmUpOyByZXR1cm4gfQogIGNvbnN0IHVuPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXVuc2hhcmVdJyk7IGlmKHVuKXsgY29uc3QgaWQ9dW4uZGF0YXNldC51bnNoYXJlOwogICAgKGFzeW5jKCk9PnsgaWYoQ09ORklHLmFwaSl7IHRyeXsgYXdhaXQgYXBpQygnY29tbXVuaXR5LycraWQse21ldGhvZDonREVMRVRFJ30pIH1jYXRjaChlcnIpeyB0b2FzdChlcnIubWVzc2FnZSk7IHJldHVybiB9IENDLnBvc3RzPUNDLnBvc3RzLmZpbHRlcihwPT5wLmlkIT09aWQpIH0KICAgICAgREFUQS5jb21tLnBvc3RzPURBVEEuY29tbS5wb3N0cy5maWx0ZXIocD0+cC5pZCE9PWlkKTsgcGVyc2lzdCgpOyBzaGFyZU9wZW49bnVsbDsgcmVuZGVyU2hhcmUoKTsgcmVuZGVyKCk7IHRvYXN0KHQoJ3dpdGhkcmF3bicpKSB9KSgpOyByZXR1cm4gfQogIGlmKCFzaCkgcmV0dXJuOwogIGlmKGUudGFyZ2V0PT09c2h8fGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNoYXJlLWNsb3NlXScpKXsgc2hhcmVPcGVuPW51bGw7IHJlbmRlclNoYXJlKCk7IHJldHVybiB9CiAgY29uc3QgYT1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1hY3RdJyk7IGlmKCFhKSByZXR1cm47CiAgaWYoYS5kYXRhc2V0LmFjdD09PSdzaGFyZVB1Ymxpc2gnKSBwdWJsaXNoU2hhcmUoKTsKICBpZihhLmRhdGFzZXQuYWN0PT09J25hbWVTYXZlJyl7IChhc3luYygpPT57IGlmKCEoYXdhaXQgc2V0TmFtZSgkKCcjY29tbU5hbWUnKS52YWx1ZSkpKSByZXR1cm47IG5hbWVEcmFmdD1udWxsOyBzaGFyZU9wZW49bnVsbDsgcmVuZGVyU2hhcmUoKTsgcmVuZGVyKCk7IHRvYXN0KHQoJ25hbWVTYXZlZCcpKSB9KSgpIH0KICBpZihhLmRhdGFzZXQuYWN0PT09J25hbWVFZGl0Jyl7IG5hbWVEcmFmdD1EQVRBLmNvbW0ubmFtZXx8Jyc7IHJlbmRlclNoYXJlKCk7IGNvbnN0IGk9JCgnI2NvbW1OYW1lJyk7IGkmJmkuZm9jdXMoKSB9Cn0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGU9PnsgY29uc3QgYz1lLnRhcmdldC5jbG9zZXN0JiZlLnRhcmdldC5jbG9zZXN0KCcjc2hhcmVTaGVldCBbZGF0YS1zZWxdJyk7IGlmKGMpIHNoYXJlU2VsW2MuZGF0YXNldC5zZWxdPWMuY2hlY2tlZCB9KTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGU9PnsgaWYoZS50YXJnZXQuaWQ9PT0nY29tbU5hbWUnKSBuYW1lRHJhZnQ9ZS50YXJnZXQudmFsdWUgfSk7CgovKiA9PT09PT09PT09PT0gVG9vbHMgb2YgdGhlIGRheSwgUHJhY3RpY2UgaHViLCBQcm9maWxlLCBJbnRybywgQWJvdXQsIDEwIFBvc2l0aXZlIEthcm1hcyA9PT09PT09PT09PT0gKi8KY29uc3QgWFQgPSB7fTsKWFQuZW4gPSB7CiAgdWk6eyBuYXZKb3VybmFsOidKb3VybmFsJywgbmF2UHJvZmlsZTonUHJvZmlsZScsCiAgICB0b2RvTGVhZDonV2hhdCBJIHByb21pc2VkIHRvIGRvLiBUaGUgY29tbWl0bWVudHMgSSBoYXZlIG1hZGUuJywKICAgIHVUaXRsZTonWW91ciB0b29scyBmb3IgdG9kYXknLCB1TG9ja2VkOidFdmVyeSBkYXkgeW91IGNhbiBkaXNjb3ZlciAyIG9mIHRoZSAyMCB0b29sczogVGhlIDQgU3RlcHMsIFRoZSA0IFBvd2VycywgVGhlIDQgTGF3cyBvZiBTZWVkcywgVGhlIDQgRmxvd2VycyBhbmQgVGhlIDQgUHJpb3JpdGllcy4nLAogICAgdUxvY2tNc2c6J1lvdSBuZWVkIGFuIGFjdGl2ZSBzdWJzY3JpcHRpb24gdG8gdXNlIHRoZSB0b29scy4nLCB1U2VlU3ViczonU2VlIHRoZSBzdWJzY3JpcHRpb25zJywKICAgIHVEcmF3Tm90ZTonVGFwIGFuZCBkaXNjb3ZlciB0aGUgMiB0b29scyB5b3UgYXJlIHdvcmtpbmcgd2l0aCB0b2RheS4nLCB1RHJhdzoiRGlzY292ZXIgdG9kYXkncyB0b29scyIsCiAgICB1UTonSG93IGRvIEkgdXNlIHRoaXMgY29tYmluYXRpb24gb2YgdG9vbHMgdG9kYXk\/JywgdVBoOidXcml0ZSBmb3IgeW91cnNlbGYuIEl0IHN0YXlzIG9ubHkgaW4geW91ciBqb3VybmFsLicsCiAgICB1U2F2ZTonU2F2ZSB0byBqb3VybmFsJywgdVVwZGF0ZTonVXBkYXRlIGluIGpvdXJuYWwnLCB1QWdhaW46J0Nob29zZSBhIG5ldyBjb21iaW5hdGlvbiBvZiB0b29scycsIHVTYXZlZDonU2F2ZWQgdG8geW91ciBqb3VybmFsJywKICAgIHVTaW1PbjonVGVzdCB2ZXJzaW9uOiBzaW11bGF0ZSBhbiBhY3RpdmUgc3Vic2NyaXB0aW9uJywgdVNpbU9mZjonVGVzdCB2ZXJzaW9uOiBzaW11bGF0ZSBubyBzdWJzY3JpcHRpb24nLAogICAgaHViVGl0bGU6J1doYXQgYXJlIHlvdSBwcmFjdGlzaW5nIG5vdz8nLCBodWJMZWFkOidDaG9vc2UgdGhlIHByYWN0aWNlLiBFdmVyeXRoaW5nIHlvdSBkbyBnb2VzIGludG8geW91ciBqb3VybmFsLicsIGh1YkJ1c3k6J0EgcHJhY3RpY2UgaXMgaW4gcHJvZ3Jlc3MgwrcgYmFjayB0byB0aGUgdGltZXInLAogICAgbXlQcm9maWxlOidNeSBwcm9maWxlJywgY2hhbmdlTmFtZTonQ2hhbmdlIG5hbWUnLCBwaWNrTmFtZTonQ2hvb3NlIGEgbmFtZSBmb3IgdGhlIGNvbW11bml0eScsCiAgICBzdFByYWN0OidwcmFjdGljZXMnLCBzdE1pbjonbWludXRlcycsIHN0VG9kbzonVG8gRG9zIGRvbmUnLCBhdmF0YXI6J015IGF2YXRhcicsIGFkZHJlc3M6J0hvdyBJIGFkZHJlc3MgeW91JywKICAgIGludHJvOidJbnRyb2R1Y3Rpb24nLCBhYm91dDonQWJvdXQgdGhlIGFwcCcsIGthcm1hOidUaGUgMTAgUG9zaXRpdmUgS2FybWFzJywga2FybWFTdWI6J1RoZSBpbnNwaXJhdGlvbiBiZWhpbmQgdGhlIGFwcCcsIGNvbnRhY3Q6J0NvbnRhY3QnLAogICAgcHJvZkJhbm5lcjonVGVzdCB2ZXJzaW9uLiBJbiB0aGUgcGhvbmUgYXBwIHlvdSB3aWxsIGFsc28gZmluZCBoZXJlOiByZW1pbmRlcnMgKHVwIHRvIDYgYSBkYXkpLCBjaGFuZ2luZyB5b3VyIGVtYWlsLCBkZWxldGluZyB5b3VyIGRhdGEsIGRlbGV0aW5nIHlvdXIgYWNjb3VudCwgdGhlIHByaXZhY3kgcG9saWN5IGFuZCB0aGUgdGVybXMuJywKICAgIG92UHJldjonQmFjaycsIG92TmV4dDonTmV4dCcsIG92U3RhcnQ6J0JlZ2luJywgYnlEb21haW46J0dST1VQRUQgQlkgQVJFQScsCiAgICBrYXJtYUxlYWQ6J1RoZSBpbnNwaXJhdGlvbiBiZWhpbmQgdGhlIGFwcC4gWW91IGNhbiB1c2UgdGhlbSBpbiB0aGUgcHJhY3RpY2Ugb2YgdGhlIDQgcG93ZXJzIGFuZCBpbiB0aGUgam95IG1lZGl0YXRpb24uJyB9LAogIGtpbmRVOidUb29scyBvZiB0aGUgZGF5JywKICBzZXRzOnsKICAgIHBhc2k6eyJuYW1lIjogIlRoZSA0IFN0ZXBzIiwgInVuaXQiOiAiU3RlcCIsICJzdWIiOiAidG8gd2F0ZXIgdGhlIHNlZWRzIGZvciB5b3VyIGdvYWwiLCAiaXRlbXMiOiBbeyJ0IjogIlNheSB3aGF0IHlvdSB3YW50IGluIHlvdXIgbGlmZSBpbiBvbmUgc2hvcnQgc2VudGVuY2UsIiwgImFkZCI6ICJpbiB0aGUgYWZmaXJtYXRpdmUgYW5kIGluIHRoZSBwcmVzZW50IHRlbnNlLiJ9LCB7InQiOiAiUGxhbiB3aG8geW91IHdpbGwgaGVscCB0byBnZXQgdGhlIHNhbWUgdGhpbmcgYW5kIHdoZXJlIHlvdSB3aWxsIGludml0ZSB0aGF0IHBlcnNvbiBmb3IgYSB0YWxrLiIsICJhZGQiOiAiVGhleSBiZWNvbWUgeW91ciBrYXJtaWMgcGFydG5lci4ifSwgeyJ0IjogIkFjdHVhbGx5IGhlbHAgdGhhdCBwZXJzb24uIiwgImFkZCI6ICJGb3IgZXhhbXBsZSwgb25lIGhvdXIgYSB3ZWVrLCBvdmVyIGEgY29mZmVlLiJ9LCAiRG8gdGhlIEpveSBNZWRpdGF0aW9uOiBhcyB5b3UgZ28gdG8gc2xlZXAsIHRoaW5rIHdpdGggam95IGFib3V0IHRoZSBnb29kIHRoaW5ncyB5b3UgZG8gZm9yIG90aGVycy4iXX0sCiAgICBwdXRlcmk6eyJuYW1lIjogIlRoZSA0IFBvd2VycyIsICJ1bml0IjogIlBvd2VyIiwgInN1YiI6ICJ0byBkZWFjdGl2YXRlIHRoZSBuZWdhdGl2ZSBzZWVkcyBwbGFudGVkIGluIHRoZSBwYXN0IiwgIml0ZW1zIjogW3siaCI6ICJSZW1lbWJlcmluZyB0aGUgcGVuIiwgImV4IjogIkFsbCB0aGluZ3MgY29tZSBmcm9tIHNlZWRzIHBsYW50ZWQgaW4gdGhlIHBhc3QuIFJlbWVtYmVyIHdoaWNoIHNlZWRzIHlvdSBwbGFudGVkIGluIHRoZSBwYXN0IHRoYXQgaGF2ZSBub3cgZ3Jvd24uIn0sIHsiaCI6ICJJbnRlbGxpZ2VudCByZWdyZXQiLCAiZXgiOiAiQmVjb21lIGF3YXJlIG9mIHRoZSBiZW5lZml0cyB5b3UgaGFkIHdoZW4geW91IHBsYW50ZWQgdGhlIHNlZWQgYW5kIG1ha2UgYSBmaXJtIGRlY2lzaW9uIHRvIGRlYWN0aXZhdGUgaXQgYmVmb3JlIGl0IG11bHRpcGxpZXMgZXZlbiBtb3JlLiJ9LCB7ImgiOiAiUmVzdHJhaW50IiwgImV4IjogIlByb21pc2Ugbm90IHRvIG1ha2UgdGhlIHNhbWUgbWlzdGFrZSBhZ2FpbiBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuIn0sIHsiaCI6ICJUaGUgYW50aWRvdGUiLCAiZXgiOiAiRG8gc29tZXRoaW5nIHBvc2l0aXZlIHRvIGJhbGFuY2UgdGhlIG5lZ2F0aXZlIHNlZWRzLiJ9XX0sCiAgICBsZWdpOnsibmFtZSI6ICJUaGUgNCBMYXdzIG9mIFNlZWRzIiwgInVuaXQiOiAiTGF3IiwgInN1YiI6ICJ0aGUgbGF3cyBieSB3aGljaCBzZWVkcyB3b3JrIiwgIml0ZW1zIjogW3siaCI6ICJZb3UgZ2V0IHdoYXQgeW91IGdpdmUiLCAiZXgiOiAiWW91IHJlYXAgd2hhdCB5b3Ugc293OiBpZiB5b3UgcGxhbnQgd2F0ZXJtZWxvbiBzZWVkcywgeW91IHdpbGwgZ2V0IGEgd2F0ZXJtZWxvbi4iLCAiYWRkIjogIlRoZSBsYXcgd29ya3MgYm90aCB3YXlzOiBnb29kIGJyaW5ncyBnb29kLCBhbmQgYSBuZWdhdGl2ZSBhY3Rpb24gYnJpbmdzIHNvbWV0aGluZyBuZWdhdGl2ZS4ifSwgeyJoIjogIlNlZWRzIGdyb3ciLCAiZXgiOiAiV2hhdCB5b3UgZ2V0IGJhY2sgaXMgYWx3YXlzIG11Y2gsIG11Y2ggYmlnZ2VyIHRoYW4gd2hhdCB5b3UgZGlkLiIsICJhZGQiOiAiQm90aCB0aGUgZ29vZCBvbmVzIGFuZCB0aGUgbmVnYXRpdmUgb25lcy4ifSwgeyJoIjogIklmIHlvdSBkbyBub3RoaW5nLCBub3RoaW5nIGhhcHBlbnMiLCAiZXgiOiAiSWYgeW91IGRvIG5vdGhpbmcsIHlvdSB3aWxsIGdldCBub3RoaW5nIGJhY2suIiwgImFkZCI6ICJKdXN0IGhvcGluZyBvciB3YWl0aW5nIGRvZXMgbm90IHBsYW50IGFueSBzZWVkLiJ9LCB7ImgiOiAiV2hhdCB5b3UgcGxhbnRlZCBoYXMgdG8gc3Byb3V0IiwgImV4IjogIklmIHlvdSBkbyBzb21ldGhpbmcsIHRoZW4geW91IG11c3QgZ2V0IHNvbWV0aGluZyBiYWNrLiIsICJhZGQiOiAiU2VlZHMgZG8gbm90IGRpc2FwcGVhciwgbmVpdGhlciB0aGUgZ29vZCBvbmVzIG5vciB0aGUgbmVnYXRpdmUgb25lcy4gVGhleSBzcHJvdXQgYXQgc29tZSBwb2ludC4ifV19LAogICAgZmxvcmk6eyJuYW1lIjogIlRoZSA0IEZsb3dlcnMiLCAidW5pdCI6ICJGbG93ZXIiLCAic3ViIjogInRoZSB3YXkgc2VlZHMgYmVhciBmcnVpdCIsICJpdGVtcyI6IFt7ImgiOiAiWW91IGdldCBleGFjdGx5IHdoYXQgeW91IGdpdmUuIiwgImFkZCI6ICJXaG9ldmVyIHNvd3MgbG92ZSByZWFwcyBsb3ZlLiJ9LCB7ImgiOiAiRXZlcnkgYWN0aW9uIGNyZWF0ZXMgYSBoYWJpdC4iLCAiYWRkIjogIkV2ZW4gdGhlIHRob3VnaHRzIHRoYXQgY29tZSB0byB5b3Ug4oCcd2l0aG91dCB3YW50aW5nIHRoZW3igJ0gYXJlIGhhYml0cyBjcmVhdGVkIGJ5IHdoYXQgeW91IGRpZCBiZWZvcmUuIFdoYXQgeW91IHJlcGVhdCB0b2RheSBjb21lcyBtb3JlIGVhc2lseSB0b21vcnJvdy4ifSwgeyJoIjogIldoYXQgeW91IGRvIGNyZWF0ZXMgdGhlIHBlb3BsZSBhbmQgdGhlIGVudmlyb25tZW50IGFyb3VuZCB5b3UuIiwgImFkZCI6ICJXaGVuIHlvdSBhcHByZWNpYXRlIG90aGVycyBhbmQgYnJpbmcgdGhlbSB0b2dldGhlciwgeW91IGVuZCB1cCBzdXJyb3VuZGVkIGJ5IHBlb3BsZSB3aG8gZ2V0IGFsb25nIHdlbGwuIFdoZW4geW91IGRpdmlkZSwgeW91IHdpbGwgc2VlIHBlb3BsZSBxdWFycmVsbGluZy4ifSwgeyJoIjogIldoYXQgeW91IGRvIGNyZWF0ZXMgdGhlIHdvcmxkIHlvdSB3aWxsIHN0ZXAgaW50by4iLCAiYWRkIjogIldoYXQgeW91IHBsYW50IHRvZGF5IHByZXBhcmVzIHRoZSB3b3JsZCB5b3Ugd2lsbCBhcnJpdmUgaW4gdG9tb3Jyb3cuIFdoZW4geW91IGNoYW5nZSB3aGF0IHlvdSBkbywgeW91ciB3b3JsZCBjaGFuZ2VzIHRvby4ifV19LAogICAgcHJpb3JpdGF0aTp7IG5hbWU6J1RoZSA0IFByaW9yaXRpZXMnLCB1bml0OidQcmlvcml0eScsIHN1YjondGhlIG9yZGVyIGluIHdoaWNoIHNlZWRzIGJlYXIgZnJ1aXQnLCBpdGVtczpbCiAgICAgIHsgaDonRmlyc3QgaW4sIGZpcnN0IG91dC4nLCBleDonQSBzZWVkIHBsYW50ZWQgYmVmb3JlIGFub3RoZXIgd2lsbCBzcHJvdXQgYmVmb3JlIHRoZSBzZWNvbmQgb25lLiBJZiB5b3UgaGVscCBvbmUgZnJpZW5kIGJlIG1vcmUgY3JlYXRpdmUgYXQgd29yayBvbiBNb25kYXkgYW5kIHRoZW4gaGVscCBhbm90aGVyIGZyaWVuZCBiZSBtb3JlIGNyZWF0aXZlIG9uIFR1ZXNkYXksIHRoZSBNb25kYXkgc2VlZCB3aWxsIG9wZW4gZmlyc3QuJyB9LAogICAgICB7IGg6J1doZW4geW91IGhhdmUgYSBoYWJpdCwgdGhlIHNlZWQgYmVhcnMgZnJ1aXQgYWhlYWQgb2YgcHJpb3JpdHkgMS4nLCBleDonSWYgeW91IGhlbHBlZCB0aGUgVHVlc2RheSBmcmllbmQgcmVndWxhcmx5LCBhcyBhIGhhYml0LCB0aGUgc2VlZCBwbGFudGVkIHdpdGggdGhlbSB3aWxsIG9wZW4gYmVmb3JlIHRoZSBzZWVkIHBsYW50ZWQgd2l0aCB0aGUgTW9uZGF5IGZyaWVuZC4nIH0sCiAgICAgIHsgaDonV2hlbiB5b3UgaGVscCBzb21lb25lIHdobyBpcyBhYm91dCB0byBnbyB0aHJvdWdoIGEgbWFqb3IgcGVyc29uYWwgY2hhbmdlLCB0aGUgc2VlZCBiZWFycyBmcnVpdCBhaGVhZCBvZiBwcmlvcml0eSAyLicsIGV4OidJZiB5b3UgaGVscGVkIHlldCBhbm90aGVyIGZyaWVuZCBiZSBtb3JlIGNyZWF0aXZlIG9uIFdlZG5lc2RheSwgYW5kIG9uIFRodXJzZGF5IGEgbWFqb3IgY2hhbmdlIHdhcyBhYm91dCB0byBoYXBwZW4gaW4gdGhlaXIgbGlmZSwgc2VlZHMgcGxhbnRlZCB2ZXJ5IGNsb3NlIHRvIGEgbWFqb3IgZXZlbnQgcmlwZW4gYmVmb3JlIHRob3NlIHBsYW50ZWQgZWFybGllci4nIH0sCiAgICAgIHsgaDonV2hlbiB5b3UgaGVscCBzb21lb25lIHdobyBpcyBkZWRpY2F0ZWQgdG8gYSBwdXJwb3NlIHRoYXQgc2VydmVzIG1hbnkgcGVvcGxlLCB0aGUgc2VlZCBiZWFycyBmcnVpdCBhaGVhZCBvZiBwcmlvcml0eSAzLicsIGV4OidJZiB0aGUgZnJpZW5kIHlvdSBoZWxwZWQgb24gVHVlc2RheSB3YXMgdHJ5aW5nIHRvIGZpbmQgYSBjcmVhdGl2ZSB3YXkgdG8gY3VyZSBjYW5jZXIsIHdoaWxlIHRoZSBmcmllbmRzIHlvdSBoZWxwZWQgb24gTW9uZGF5IGFuZCBXZWRuZXNkYXkgd2VyZSB0cnlpbmcgdG8gZmluZCBhIG1vcmUgY3JlYXRpdmUgd2F5IHRvIGRvIHRoZWlyIG1ha2UtdXAsIHRoZSBUdWVzZGF5IHNlZWRzIHRha2UgdGhlIGxlYWQgYW5kIG9wZW4gZmlyc3QuJyB9IF0gfQogIH0sCiAgaW50cm86WwogICAgWydXZWxjb21lIHRvIHRoZSBHb29kIFNlZWRzIGFwcCcsJ0V2ZXJ5dGhpbmcgeW91IGV4cGVyaWVuY2UgY29tZXMgZnJvbSB0aGUgc2VlZHMgeW91IGhhdmUgcGxhbnRlZCB0aHJvdWdoIHlvdXIgdGhvdWdodHMsIHdvcmRzIGFuZCBhY3Rpb25zLiBUaGUgYXBwIGhlbHBzIHlvdSBzZWUgd2hhdCB5b3UgcGxhbnQgZXZlcnkgZGF5IGFuZCBjb25zY2lvdXNseSBjaG9vc2UgdGhlIHNlZWRzIGZvciB0aGUgbGlmZSB5b3Ugd2FudC4nXSwKICAgIFsnWW91ciBwcmFjdGljZXMnLCdNZWRpdGF0aW9uIGFuZCB5b2dhIHdpdGggYSB0aW1lciwgZ3JhdGl0dWRlIGFuZCBzdWNjZXNzZXMsIHRoZSBqb3kgbWVkaXRhdGlvbiBhbmQgdGhlIDQgcG93ZXJzLiBZb3Ugd2lsbCBmaW5kIHRoZW0gYWxsIHVuZGVyIHRoZSBidXR0b24gaW4gdGhlIG1pZGRsZSwgYW5kIGV2ZXJ5dGhpbmcgeW91IGRvIGdvZXMgaW50byB5b3VyIGpvdXJuYWwuJ10sCiAgICBbJ1Rvb2xzIG9mIHRoZSBkYXknLCdGaW5kIGEgY3JlYXRpdmUgd2F5IHRvIHVzZSB0aGUgMiB0b29scyBmb3IgeW91ciBnb2FsLiddLAogICAgWydLZWVwIHlvdXIgY29tbWl0bWVudCEnLCdXaGF0IHlvdSB3cml0ZSB1bmRlciDigJx3aG8gSSBoZWxw4oCdIGFuZCBpbiB0aGUgNHRoIHBvd2VyIGdvZXMgaW50byB5b3VyIFRvIERvIGxpc3QuIFRpY2sgaXQgb2ZmIG9uY2UgeW91IGhhdmUgZG9uZSBpdDogdGhlIGdvb2Qgc2VlZHMgZ3JvdywgYW5kIHRoZSBuZWdhdGl2ZSBvbmVzIGFyZSBkZWFjdGl2YXRlZC4nXSwKICAgIFsiUmVqb2ljZSBpbiBvdGhlciBwZW9wbGUncyBzZWVkcyIsJ0luIHRoZSBjb21tdW5pdHkgeW91IGNhbiBzZWUsIGFub255bW91c2x5LCB3aGF0IG90aGVycyBoYXZlIHBsYW50ZWQuIFdoZW4geW91IHJlam9pY2UgZm9yIHRoZW0sIHlvdSB3YXRlciB0aGUgc2VlZHMgZm9yIHlvdXIgb3duIGdvYWwuJ10gXSwKICBhYm91dDpbCiAgICBbJ1doYXQgR29vZCBTZWVkcyBpcycsWydHb29kIFNlZWRzIGlzIHlvdXIgcHJhY3RpY2Ugam91cm5hbCBmb3IgdGhlIHNlZWQgc3lzdGVtLicsJ091ciBtaW5kIHJlY29yZHMgZXZlcnl0aGluZyB3ZSB0aGluaywgc2F5IGFuZCBkby4gRXZlcnkgdGhvdWdodCwgd29yZCBvciBhY3Rpb24gYmVjb21lcyBhIHNlZWQgdGhhdCBncm93cyBpbnNpZGUgb3VyIG1pbmQgYW5kLCBhdCBzb21lIHBvaW50LCBjb21lcyBiYWNrIGludG8gb3VyIGxpZmUgYXMgYW4gZXhwZXJpZW5jZS4nLCdUaGUgYXBwIGhlbHBzIHlvdSBub3RpY2Ugd2hhdCB5b3UgcGxhbnQgYW5kIGNvbnNjaW91c2x5IGNob29zZSB0aGUgc2VlZHMgZm9yIHdoYXQgeW91IHdhbnQuJ11dLAogICAgWydIb3cgdG8gdXNlIGl0IGV2ZXJ5IGRheScsWydJbiB0aGUgbW9ybmluZzogcmVtZW1iZXIgeW91ciBnb2FsIGFuZCBkaXNjb3ZlciB0aGUgdG9vbHMgb2YgdGhlIGRheS4nLCdEdXJpbmcgdGhlIGRheTogbm90aWNlIHdoYXQgeW91IHBsYW50LiBXcml0ZSBkb3duIHlvdXIgZ3JhdGl0dWRlcyBhbmQgc3VjY2Vzc2VzLCBhbmQgd2hlbiB5b3UgcmVjb2duaXNlIGEgbmVnYXRpdmUgc2VlZCwgd29yayB3aXRoIHRoZSA0IHBvd2Vycy4nLCdJbiB0aGUgZXZlbmluZzogZG8gdGhlIGpveSBtZWRpdGF0aW9uLicsJ1RoZXJlIGlzIG5vIG5lZWQgZm9yIGxvbmcgdGV4dHMuIEEgZmV3IG1pbnV0ZXMgb2YgaG9uZXN0IG9ic2VydmF0aW9uLCB3aXRob3V0IGp1ZGdlbWVudCBhbmQgd2l0aG91dCBndWlsdCwgYXJlIGVub3VnaC4gV2hhdCBtYXR0ZXJzIGlzIGNvbWluZyBiYWNrIGV2ZXJ5IGRheS4nXV0sCiAgICBbIldobyBpdCdzIGZvciIsWydGb3IgYW55b25lIHdobyBoYXMgYSBnb2FsIG9yIGEgZHJlYW0gYW5kIHdhbnRzIHRvIHJlYWNoIGl0IGJ5IHBsYW50aW5nIHRoZSByaWdodCBzZWVkcy4nLCdJZiB5b3UgYXJlIGdvaW5nIHRocm91Z2ggYSBoYXJkIHRpbWUgb3IgYSBzaXR1YXRpb24ga2VlcHMgcmVwZWF0aW5nIGl0c2VsZiwgaXQgaXMgYSBzaWduIHRoYXQgc2VlZHMgcGxhbnRlZCBpbiB0aGUgcGFzdCBhcmUgcmlwZW5pbmcuIFdpdGggdGhlIDQgcG93ZXJzIHlvdSBjYW4gZGVhY3RpdmF0ZSB0aGVtLCBhbmQgYnkgY29uc2Npb3VzbHkgcGxhbnRpbmcgZ29vZCBzZWVkcyB5b3UgYmFsYW5jZSB0aGUgc2NhbGVzLiddXSwKICAgIFsnV2hlbiB5b3UgcmVjb2duaXNlIGEgbmVnYXRpdmUgc2VlZCcsWydXZSBhbGwgcGxhbnQgbmVnYXRpdmUgc2VlZHMgdG9vLCB3aXRob3V0IHJlYWxpc2luZyBpdC4gSWYgd2UgZG8gbm90IGRlYWN0aXZhdGUgdGhlbSwgdGhleSBrZWVwIGdyb3dpbmcuJywnV2l0aCB0aGUgNCBwb3dlcnM6IHlvdSByZW1lbWJlciB3aGVyZSBhbGwgdGhpbmdzIGNvbWUgZnJvbSwgeW91IGJlY29tZSBhd2FyZSBvZiB0aGUgYmVuZWZpdHMgeW91IGhhZCBhbmQgZGVjaWRlIHRvIGRlYWN0aXZhdGUgdGhlIHNlZWQsIHlvdSBwcm9taXNlIG5vdCB0byByZXBlYXQgdGhlIG1pc3Rha2UgZm9yIGEgd2hpbGUsIGFuZCB5b3UgZG8gc29tZXRoaW5nIHBvc2l0aXZlIHRvIGJhbGFuY2UgaXQuJywnV2hhdCB5b3UgcHJvbWlzZSBpbiB0aGUgNHRoIHBvd2VyIGdvZXMgaW50byB5b3VyIFRvIERvIGxpc3QsIHNvIHlvdSBkbyBub3QgZm9yZ2V0IHRvIGFjdHVhbGx5IGRvIGl0LiddXSwKICAgIFsnVGhlIGpveSBtZWRpdGF0aW9uJyxbJ1RoZSBtb21lbnQgYmVmb3JlIHNsZWVwIGNvbm5lY3RzIHRoZSBjb25zY2lvdXMgYW5kIHRoZSBzdWJjb25zY2lvdXMuIFdoYXQgeW91IHRoaW5rIHRoZW4ga2VlcHMgZ3Jvd2luZyB3aGlsZSB5b3Ugc2xlZXAuJywnVGhhdCBpcyB3aHksIGluIHRoZSBldmVuaW5nLCB5b3UgdGhpbmsgd2l0aCBqb3kgYWJvdXQgdGhlIGdvb2QgeW91IGhhdmUgZG9uZSBmb3Igb3RoZXJzIGFuZCBkZWRpY2F0ZSBpdCB0byB5b3VyIGdvYWwuJywnWW91IGNhbiBhbHNvIGRvIGl0IGR1cmluZyB0aGUgZGF5LCB3aGVuZXZlciB5b3UgaGF2ZSBhIGZldyBtaW51dGVzLiddXSwKICAgIFsnVG9vbHMgb2YgdGhlIGRheScsWydUaGUgMjAgdG9vbHMgYXJlIGdyb3VwZWQgaW4gNSBzZXRzOiBUaGUgNCBTdGVwcywgVGhlIDQgUG93ZXJzLCBUaGUgNCBMYXdzIG9mIFNlZWRzLCBUaGUgNCBGbG93ZXJzIGFuZCBUaGUgNCBQcmlvcml0aWVzLiBFYWNoIHNldCBoYXMgaXRzIG93biBjb2xvdXIgYW5kIHN5bWJvbC4nLHsgc3ViczonRXZlcnkgZGF5IHlvdSBkaXNjb3ZlciAyIHRvb2xzIGFuZCB3cml0ZSBob3cgeW91IHVzZSB0aGVpciBjb21iaW5hdGlvbi4gVGhlIHRvb2xzIGFyZSBhdmFpbGFibGUgdG8gdGhvc2Ugd2l0aCBhbiBhY3RpdmUgc3Vic2NyaXB0aW9uLicgfV1dLAogICAgWydUaGUgY29tbXVuaXR5JyxbJ1lvdSBjYW4gYW5vbnltb3VzbHkgc2hhcmUgeW91ciBncmF0aXR1ZGVzLCBzdWNjZXNzZXMsIGpveSBtZWRpdGF0aW9uIG9yIDQgcG93ZXJzLCB1bmRlciBhIG5hbWUgeW91IGNob29zZS4nLCJXaGVuIHlvdSByZWpvaWNlIGluIG90aGVyIHBlb3BsZSdzIHNlZWRzLCB5b3Ugd2F0ZXIgdGhlIHNlZWRzIGZvciB5b3VyIG93biBnb2FsLiBXaGVuIHlvdSByZWFkIHNvbWVvbmUncyA0IHBvd2VycywgeW91IGNhbiBnbyB0aHJvdWdoIHRoZW0gZm9yIHlvdXJzZWxmIHRvby4iLCdXaGF0IHlvdSB3cml0ZSBzdGF5cyBwcml2YXRlLCBleGNlcHQgZm9yIHdoYXQgeW91IGNob29zZSB0byBzaGFyZS4nXV0gXSwKICBrYXJtYTpbCiAgICBbJ1Byb3RlY3QgbGlmZScsJ1Rha2UgY2FyZSBvZiBwZW9wbGUsIGFuaW1hbHMgYW5kIHBsYW50cy4gTmV2ZXIgaW50ZW50aW9uYWxseSBodXJ0IGFueSBsaXZpbmcgYmVpbmcuJywnVGhlIHNlZWQgb2YgaGVhbHRoJ10sCiAgICBbJ1Byb3RlY3QgcHJvcGVydHknLCdHaXZlIGFuZCBoZWxwIG90aGVycy4gRG8gbm90IHRha2Ugd2hhdCBkb2VzIG5vdCBiZWxvbmcgdG8geW91IHdpdGhvdXQgcGVybWlzc2lvbi4nLCdUaGUgc2VlZCBvZiBwcm9zcGVyaXR5J10sCiAgICBbJ1NleHVhbCBwdXJpdHknLCdIb25vdXIgdGhlIGJvbmQgYmV0d2VlbiB0d28gcGVvcGxlIHdobyBoYXZlIG1hZGUgYSBjb21taXRtZW50IHRvIGVhY2ggb3RoZXIsIHlvdXJzIGFuZCB0aGF0IG9mIG90aGVycy4nLCdUaGUgc2VlZCBvZiBoYXBwaW5lc3MnXSwKICAgIFsnSW50ZWdyaXR5JywnVGVsbCB0aGUgdHJ1dGggYW5kIGtlZXAgeW91ciBwcm9taXNlcy4gRG8gbm90IHNheSB3aGF0IHlvdSBkbyBub3QgdHJ1bHkgZmVlbC4nLCdUaGUgc2VlZCBvZiB0cnVzdCddLAogICAgWydTYXkgd29yZHMgdGhhdCBicmluZyBwZW9wbGUgdG9nZXRoZXInLCdVc2UgeW91ciB3b3JkcyB0byBicmluZyBwZW9wbGUgdG9nZXRoZXIuIEF2b2lkIHdvcmRzIHRoYXQgZGl2aWRlIG9yIGNyZWF0ZSBtaXN1bmRlcnN0YW5kaW5ncy4nLCdUaGUgc2VlZCBvZiBoYXJtb255J10sCiAgICBbJ1NwZWFrIGdlbnRseSBhbmQgc3dlZXRseScsJ0FwcHJlY2lhdGUgb3RoZXJzIGFuZCBzcGVhayB0byB0aGVtIHdpdGggcmVzcGVjdC4gQXZvaWQgaGFyc2ggd29yZHMgdGhhdCBodXJ0LicsJ1RoZSBzZWVkIG9mIHJlc3BlY3QnXSwKICAgIFsnU2F5IG9ubHkgd29yZHMgdGhhdCBoYXZlIGEgcHVycG9zZScsJ1NheSB0aGluZ3MgdGhhdCBoZWxwIGFuZCBoYXZlIGEgcHVycG9zZS4gQXZvaWQgZ29zc2lwIGFuZCBlbXB0eSB0YWxrLicsJ1RoZSBzZWVkIG9mIHRpbWUnXSwKICAgIFsiUmVqb2ljZSBpbiBvdGhlciBwZW9wbGUncyBzdWNjZXNzIiwnUmVqb2ljZSB3aGVuIG90aGVycyBnZXQgd2hhdCB0aGV5IHdhbnQgYW5kIGFwcHJlY2lhdGUgd2hhdCB0aGV5IGhhdmUuIEF2b2lkIGVudnkgYW5kIGdyZWVkLicsJ1RoZSBzZWVkIG9mIHN1Y2Nlc3MnXSwKICAgIFsiQ29tcGFzc2lvbiBmb3Igb3RoZXIgcGVvcGxlJ3MgcHJvYmxlbXMiLCJPZmZlciBjb21wYXNzaW9uIHRvIHRob3NlIGdvaW5nIHRocm91Z2ggaGFyZCB0aW1lcyBhbmQgaGVscCB0aGVtIGhvd2V2ZXIgeW91IGNhbi4gRG8gbm90IHJlam9pY2UgaW4gb3RoZXIgcGVvcGxlJ3MgbWlzZm9ydHVuZS4iLCdUaGUgc2VlZCBvZiBjb21wYXNzaW9uJ10sCiAgICBbJ1VuZGVyc3RhbmQgaG93IHRoZSBwZW4gd29ya3MnLCdSZW1lbWJlciB0aGF0IGV2ZXJ5dGhpbmcgY29tZXMgZnJvbSB0aGUgc2VlZHMgcGxhbnRlZCBhbmQgdGhhdCBjaGFuZ2UgYmVnaW5zIHdpdGggeW91LiBMaXZlIGFuZCBzaGFyZSB0aGUgcHJpbmNpcGxlIG9mIHRoZSBwZW4uJywnVGhlIHNlZWQgb2Ygd2lzZG9tJ10gXSwKICBrbGFiZWxzOlsiQXQgdGhlIGNlbnRyZSIsICJJbiB0aGUgY2lyY2xlcywgZGF5IGJ5IGRheSIsICJXaGF0IGJlYXJzIGZydWl0IiwgIkluIHlvdXIgbGlmZToiLCAiQXJvdW5kIHlvdToiXSwga2ludHJvOiJFYWNoIGthcm1hIGlzIHBsYW50ZWQg4oCcYXQgdGhlIGNlbnRyZeKAnSwgdGhyb3VnaCB0aGUgc3Ryb25nZXN0IGFjdGlvbiwgYW5kIOKAnGluIHRoZSBjaXJjbGVz4oCdLCB0aHJvdWdoIHRoZSBzbWFsbCBnZXN0dXJlcyBvZiBldmVyeSBkYXkuIEVhY2ggc2VlZCBiZWFycyBmcnVpdCBpbiB0d28gcGxhY2VzOiBpbiB5b3VyIGxpZmUgYW5kIGluIHRoZSB3b3JsZCBhcm91bmQgeW91LiIsCiAga2FybWFYOlt7ImMiOiAiU2F2aW5nIGEgbGlmZSBvciBoZWxwaW5nIGEgbmV3IGxpZmUgY29tZSBpbnRvIHRoZSB3b3JsZC4iLCAiayI6IFsiVGFrZSBjYXJlIG9mIHlvdXIgYm9keTogbW92ZW1lbnQsIHNsZWVwLCBoZWFsdGh5IGZvb2QsIHdpdGggbGVzcyBtZWF0LCBhbGNvaG9sIGFuZCBzd2VldHMuIiwgIkNhcmUgZm9yIHRob3NlIHdobyBhcmUgaWxsIGFuZCBoZWxwIG90aGVycyBsaXZlIGhlYWx0aGlseS4iLCAiRHJpdmUgY2FyZWZ1bGx5LCB3aXRob3V0IHlvdXIgcGhvbmUgaW4geW91ciBoYW5kLCBhbmQga2VlcCB0aGUgcGxhY2Ugd2hlcmUgeW91IGxpdmUgYW5kIHdvcmsgY2xlYW4uIl0sICJ2IjogImhlYWx0aCwgZW5lcmd5IGFuZCBhIGxpdmVseSBib2R5IGludG8gb2xkIGFnZS4iLCAiaiI6ICJoZWFsdGh5IHBlb3BsZSwgY2xlYW4gYWlyIGFuZCBxdWlldC4ifSwgeyJjIjogIkdpdmluZywgYW55IGtpbmQgb2YgcmVzb3VyY2VzLiIsICJrIjogWyJMb29rIGFmdGVyIHRoZSB0aGluZ3MgeW91IHVzZSBhbmQgZG8gbm90IHdhc3RlLiIsICJQYXkgYmlsbHMgYW5kIHRheGVzIG9uIHRpbWUgYW5kIGFycml2ZSBvbiB0aW1lIGZvciBtZWV0aW5nczogb3RoZXIgcGVvcGxl4oCZcyB0aW1lIGlzIGEgcmVzb3VyY2UgdG9vLiIsICJSZWNvbW1lbmQgZ29vZCBwcm9kdWN0cyBhbmQgc2VydmljZXMsIGNvbm5lY3QgcGVvcGxlLCB0ZWFjaCBzb21lb25lIGhvdyB0byBlYXJuIG1vbmV5LiJdLCAidiI6ICJhYnVuZGFuY2UsIGZyZWUgdGltZSBmb3IgeW91cnNlbGYsIHBlYWNlLCBhbmQgcmVzb3VyY2VzIGFwcGVhciBleGFjdGx5IHdoZW4geW91IG5lZWQgdGhlbS4iLCAiaiI6ICJhIHBsYWNlIHJpY2ggaW4gcmVzb3VyY2VzLCBzdXJyb3VuZGVkIGJ5IHByb3NwZXJvdXMgcGVvcGxlLiJ9LCB7ImMiOiAiRmFpdGhmdWxuZXNzIGluIHlvdXIgcmVsYXRpb25zaGlwIGFuZCByZXNwZWN0IGZvciB0aGUgY29tbWl0bWVudCB0d28gb3RoZXIgcGVvcGxlIGhhdmUgbWFkZS4iLCAiayI6IFsiWW91IGRvIG5vdCBzZWVrIGNsb3NlbmVzcyBvciBhIHJlbGF0aW9uc2hpcCB3aXRoIHNvbWVvbmUgd2hlcmUgdGhlcmUgaXMgbm8gcHVyZSBib25kLiIsICJTcGVuZCB0aW1lIHdpdGggcGVvcGxlIHdobyBhcmUgYWxvbmU6IHRoZSBlbGRlcmx5LCBjaGlsZHJlbiwgZnJpZW5kcy4iLCAiU2VlIHlvdXIgcGFydG5lciBhcyBhbiBhbmdlbCBpbiBkaXNndWlzZSBhbmQgdGFrZSBjYXJlIHdpdGggd2hhdCB5b3Ugd2F0Y2ggYW5kIHdoYXQgeW91IHNoYXJlLiJdLCAidiI6ICJhIGZ1bGZpbGxpbmcgcmVsYXRpb25zaGlwLCBmdWxsIG9mIHRlbmRlcm5lc3MsIHdpdGggYSBwYXJ0bmVyIGF0dGVudGl2ZSB0byB5b3VyIHNtYWxsZXN0IG5lZWRzLiIsICJqIjogImEgY2xlYW4gZW52aXJvbm1lbnQsIHB1cml0eSBpbiBldmVyeXRoaW5nIHlvdSBzZWUuIn0sIHsiYyI6ICJUZWxsaW5nIHRoZSB0cnV0aCAxMDAlLCBzbyB0aGF0IHRoZSBwaWN0dXJlIGluIHRoZSBvdGhlciBwZXJzb27igJlzIG1pbmQgaXMgdGhlIHNhbWUgYXMgcmVhbGl0eS4iLCAiayI6IFsiU3BlYWsgb3Blbmx5IHdpdGggeW91ciBmYW1pbHksIGNsaWVudHMgYW5kIGNvbGxlYWd1ZXMuIiwgIktlZXAgeW91ciBwcm9taXNlcywgaW5jbHVkaW5nIHRoZSBvbmVzIHlvdSBtYWtlIHRvIHlvdXJzZWxmLiIsICJEbyBub3QgbWFrZSBwcm9taXNlcyB5b3UgbWlnaHQgbm90IGtlZXAuIOKAnFdoaXRlIGxpZXPigJ0gaGF2ZSBubyBwbGFjZSBlaXRoZXIuIl0sICJ2IjogInBlb3BsZSB0cnVzdCB5b3VyIHdvcmQsIHlvdSBoYXZlIGVuZXJneSBhbmQgcGVhY2Ugb2YgbWluZC4iLCAiaiI6ICJob25lc3QgZnJpZW5kcyBhbmQgYnVzaW5lc3MgcGFydG5lcnMgd2hvIHJlc3BlY3QgZWFjaCBvdGhlci4ifSwgeyJjIjogIlByYWlzaW5nIGEgcGVyc29uIGluIGZyb250IG9mIHNvbWVvbmUgZWxzZS4iLCAiayI6IFsiTG9vayBmb3IgcGVvcGxl4oCZcyBnb29kIHF1YWxpdGllcyBhbmQgc2F5IHRoZW0gb3V0IGxvdWQuIiwgIkVuY291cmFnZSBjb2xsYWJvcmF0aW9uLCBjb25uZWN0IHBlb3BsZSwgcHJvbW90ZSBldmVudHMgdGhhdCBicmluZyB0aGVtIHRvZ2V0aGVyLiIsICJEbyBub3QgY29tcGFyZSBwZW9wbGUgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgYWdhaW5zdCBhbnlvbmUuIl0sICJ2IjogImZ1bGZpbGxpbmcgcmVsYXRpb25zaGlwcyBhbmQgbGFzdGluZyBmcmllbmRzaGlwcy4iLCAiaiI6ICJhIGdyb3VwIHdoZXJlIHBlb3BsZSBzdXBwb3J0IGVhY2ggb3RoZXIsIGFuZCB5b3VyIHBhdGhzIGFyZSBlYXN5LiJ9LCB7ImMiOiAiU3BlYWtpbmcgY2FsbWx5LCBpbiBhIHJlbGF4ZWQgd2F5LCB3aXRoIGEgZ2VudGxlIHRvbmUuIiwgImsiOiBbIlJlYWxseSBsaXN0ZW4gYW5kIGdpdmUgY29uc3RydWN0aXZlIGZlZWRiYWNrLiIsICJNZWRpdGF0ZSwgZG8geW9nYSwgd2FsayBpbiBuYXR1cmUsIGxpc3RlbiB0byBjYWxtaW5nIG11c2ljLiIsICJUYWtlIGNhcmUgb2YgeW91ciBpbm5lciB3b3JkcyB0b28sIGluY2x1ZGluZyB0aGUgb25lcyB5b3Ugc2F5IHRvIHlvdXJzZWxmLiJdLCAidiI6ICJyZXN0ZnVsIHNsZWVwIGFuZCBwZWFjZSBvZiBtaW5kLiIsICJqIjogInBlb3BsZSB3aG8gY29tbXVuaWNhdGUgaW4gYSByZWxheGVkIHdheSwgd2l0aG91dCBhcmd1aW5nLiJ9LCB7ImMiOiAiUGFzc2luZyBvbiB0aGUgaWRlYSB0aGF0IGV2ZXJ5dGhpbmcgY29tZXMgZnJvbSBzZWVkcy4iLCAiayI6IFsiVGFsayBhYm91dCB0aGluZ3MgdGhhdCBicmluZyB2YWx1ZSB0byBwZW9wbGXigJlzIGxpdmVzLiIsICJDaG9vc2UgYm9va3MsIGZpbG1zIGFuZCBwb3N0cyB0aGF0IHRlYWNoIHlvdSBob3cgdG8gYnJpbmcgdmFsdWUgdG8gb3RoZXJzLiIsICJBdm9pZCBnb3NzaXAgb2YgYW55IGtpbmQgYW5kIHRpbWUgbG9zdCBvbiBlbXB0eSBjb250ZW50LiJdLCAidiI6ICJ5b3VyIHdvcmRzIGNhcnJ5IHdlaWdodCBhbmQgeW91ciB0aW1lIGZpbGxzIHdpdGggbWVhbmluZ2Z1bCB0aGluZ3MuIiwgImoiOiAicGVvcGxlIGxpc3RlbiB0byB5b3Ugd2hlbiB5b3Ugc3BlYWsuIn0sIHsiYyI6ICJTaW5jZXJlbHkgcmVqb2ljaW5nIHdoZW4gb3RoZXJzIGdldCB3aGF0IHRoZXkgd2FudC4iLCAiayI6IFsiU3VwcG9ydCBhbmQgZW5jb3VyYWdlIG90aGVycy4iLCAiUmVqb2ljZSBpbiBvdGhlciBwZW9wbGXigJlzIGFjaGlldmVtZW50cyBhbmQgcG9zdHMgYW5kIGFwcHJlY2lhdGUgdGhlbS4iLCAiRG8gbm90IGNvbXBhcmUgeW91cnNlbGYgYW5kIG5ldmVyIGNvbW1lbnQgaXJvbmljYWxseSBvbiBhbnlvbmXigJlzIHN1Y2Nlc3MuIl0sICJ2IjogInN1Y2Nlc3MgaW4geW91ciBwcm9qZWN0cywgam95IGluIHdoYXQgeW91IGRvLCB5b3UgZGlzY292ZXIgeW91ciBwYXNzaW9uIGFuZCBjYWxsaW5nLiIsICJqIjogImFuIGVudmlyb25tZW50IHdoZXJlIHlvdSByZWNlaXZlIHN1cHBvcnQgYW5kIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlLiJ9LCB7ImMiOiAiQ29tcGFzc2lvbiBmb3Igc29tZW9uZeKAmXMgc3VmZmVyaW5nLiIsICJrIjogWyJIZWxwIHdoZW5ldmVyIHlvdSBoYXZlIHRoZSBjaGFuY2UuIiwgIkNob29zZSBib29rcyBhbmQgZmlsbXMgdGhhdCBwcm9tb3RlIGNvbXBhc3Npb24uIiwgIldoZW4gc29tZW9uZSBtYWtlcyBhIG1pc3Rha2UsIGxlYXZlIGFzaWRlIOKAnEkga25ldyBpdOKAnSBvciDigJxJIHdhcyByaWdodOKAnS4iXSwgInYiOiAieW91IGZpbmQgaGVscCB3aGVuIHlvdSBuZWVkIGl0IGFuZCB5b3UgZ3JvdyBzcGlyaXR1YWxseS4iLCAiaiI6ICJwZW9wbGUgd2hvIHN1cHBvcnQgZWFjaCBvdGhlciwgYSBwZWFjZWZ1bCBlbnZpcm9ubWVudC4ifSwgeyJjIjogIkV4cGxhaW5pbmcgdGhlIHByaW5jaXBsZSBvZiB0aGUgcGVuIHRvIHNvbWVvbmUgZWxzZS4iLCAiayI6IFsiVGFrZSBwYXVzZXMgZHVyaW5nIHRoZSBkYXkgdG8gcmVtZW1iZXIgdGhhdCB3aGF0IHlvdSBzZWUsIGRvIGFuZCB0aGluayBjb21lcyBmcm9tIHlvdXIgc2VlZHMuIiwgIlJlYWQgYW5kIGxpc3RlbiB0byBtYXRlcmlhbCBhYm91dCBob3cgc2VlZHMgd29yay4iLCAiV2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZywgZG8gbm90IGJsYW1lIG90aGVyczogYXNrIHlvdXJzZWxmIHdoaWNoIHNlZWRzIHRvIHBsYW50LiJdLCAidiI6ICJ5b3VyIHByb2plY3RzIGFyZSBjYXJyaWVkIHRocm91Z2ggdG8gdGhlIGVuZCBhbmQgeW91IGZlZWwgbW9yZSBhbmQgbW9yZSBpbm5lciBmcmVlZG9tLiIsICJqIjogInlvdSB1bmRlcnN0YW5kIHdoYXQgaXMgaGFwcGVuaW5nIGFyb3VuZCB5b3UgYW5kIG5vIGxvbmdlciBmZWVsIG92ZXJ3aGVsbWVkIGJ5IHRoaW5ncy4ifV0sCiAgZ3JvdXBzOlsnREVFRFMnLCdXT1JEUycsJ1RIT1VHSFRTJ10sIGRvbWFpbnM6WydNb25leScsJ1JlbGF0aW9uc2hpcHMnLCdIZWFsdGgnXQp9OwpYVC5mciA9IHsKICB1aTp7IG5hdkpvdXJuYWw6J0pvdXJuYWwnLCBuYXZQcm9maWxlOidQcm9maWwnLAogICAgdG9kb0xlYWQ6IkNlIHF1ZSBqJ2FpIHByb21pcyBkZSBmYWlyZS4gTGVzIGVuZ2FnZW1lbnRzIHF1ZSBqJ2FpIHByaXMuIiwKICAgIHVUaXRsZToiVGVzIG91dGlscyBkdSBqb3VyIiwgdUxvY2tlZDoiQ2hhcXVlIGpvdXIsIHR1IHBldXggZMOpY291dnJpciAyIGRlcyAyMCBvdXRpbHMgOiBMZXMgNCDDiXRhcGVzLCBMZXMgNCBQb3V2b2lycywgTGVzIDQgTG9pcyBkZXMgR3JhaW5lcywgTGVzIDQgRmxldXJzIGV0IExlcyA0IFByaW9yaXTDqXMuIiwKICAgIHVMb2NrTXNnOiJUdSBhcyBiZXNvaW4gZCd1biBhYm9ubmVtZW50IGFjdGlmIHBvdXIgdXRpbGlzZXIgbGVzIG91dGlscy4iLCB1U2VlU3ViczonVm9pciBsZXMgYWJvbm5lbWVudHMnLAogICAgdURyYXdOb3RlOiJBcHB1aWUgZXQgZMOpY291dnJlIGxlcyAyIG91dGlscyBhdmVjIGxlc3F1ZWxzIHR1IHRyYXZhaWxsZXMgYXVqb3VyZCdodWkuIiwgdURyYXc6J0TDqWNvdXZyaXIgbGVzIG91dGlscyBkdSBqb3VyJywKICAgIHVROiJDb21tZW50IGondXRpbGlzZSBjZXR0ZSBjb21iaW5haXNvbiBkJ291dGlscyBhdWpvdXJkJ2h1aSA\/IiwgdVBoOifDiWNyaXMgcG91ciB0b2kuIENlbGEgcmVzdGUgc2V1bGVtZW50IGRhbnMgdG9uIGpvdXJuYWwuJywKICAgIHVTYXZlOidFbnJlZ2lzdHJlciBkYW5zIGxlIGpvdXJuYWwnLCB1VXBkYXRlOidNZXR0cmUgw6Agam91ciBkYW5zIGxlIGpvdXJuYWwnLCB1QWdhaW46IkNob2lzaXIgdW5lIG5vdXZlbGxlIGNvbWJpbmFpc29uIGQnb3V0aWxzIiwgdVNhdmVkOidFbnJlZ2lzdHLDqSBkYW5zIHRvbiBqb3VybmFsJywKICAgIHVTaW1PbjonVmVyc2lvbiBkZSB0ZXN0IDogc2ltdWxlciB1biBhYm9ubmVtZW50IGFjdGlmJywgdVNpbU9mZjonVmVyc2lvbiBkZSB0ZXN0IDogc2ltdWxlciBzYW5zIGFib25uZW1lbnQnLAogICAgaHViVGl0bGU6J1F1ZSBwcmF0aXF1ZXMtdHUgbWFpbnRlbmFudCA\/JywgaHViTGVhZDonQ2hvaXNpcyBsYSBwcmF0aXF1ZS4gVG91dCBjZSBxdWUgdHUgZmFpcyB2YSBkYW5zIHRvbiBqb3VybmFsLicsIGh1YkJ1c3k6J1VuZSBwcmF0aXF1ZSBlc3QgZW4gY291cnMgwrcgcmV0b3VyIGF1IG1pbnV0ZXVyJywKICAgIG15UHJvZmlsZTonTW9uIHByb2ZpbCcsIGNoYW5nZU5hbWU6J0NoYW5nZXIgbGUgbm9tJywgcGlja05hbWU6J0Nob2lzaXIgdW4gbm9tIHBvdXIgbGEgY29tbXVuYXV0w6knLAogICAgc3RQcmFjdDoncHJhdGlxdWVzJywgc3RNaW46J21pbnV0ZXMnLCBzdFRvZG86J8OAIGZhaXJlIHLDqWFsaXPDqXMnLCBhdmF0YXI6J01vbiBhdmF0YXInLCBhZGRyZXNzOiJDb21tZW50IGplIG0nYWRyZXNzZSDDoCB0b2kiLAogICAgaW50cm86J0ludHJvZHVjdGlvbicsIGFib3V0OiLDgCBwcm9wb3MgZGUgbCdhcHBsaWNhdGlvbiIsIGthcm1hOidMZXMgMTAgS2FybWFzIFBvc2l0aWZzJywga2FybWFTdWI6IkwnaW5zcGlyYXRpb24gZGUgbCdhcHBsaWNhdGlvbiIsIGNvbnRhY3Q6J0NvbnRhY3QnLAogICAgcHJvZkJhbm5lcjoiVmVyc2lvbiBkZSB0ZXN0LiBEYW5zIGwnYXBwbGljYXRpb24gbW9iaWxlLCB0dSB0cm91dmVyYXMgYXVzc2kgaWNpIDogbGVzIHJhcHBlbHMgKGp1c3F1J8OgIDYgcGFyIGpvdXIpLCBsZSBjaGFuZ2VtZW50IGQnZS1tYWlsLCBsYSBzdXBwcmVzc2lvbiBkZXMgZG9ubsOpZXMsIGxhIHN1cHByZXNzaW9uIGR1IGNvbXB0ZSwgbGEgcG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZXQgbGVzIGNvbmRpdGlvbnMuIiwKICAgIG92UHJldjonUmV0b3VyJywgb3ZOZXh0OidTdWl2YW50Jywgb3ZTdGFydDonQ29tbWVuY2VyJywgYnlEb21haW46J1JFR1JPVVDDiVMgUEFSIERPTUFJTkUnLAogICAga2FybWFMZWFkOiJMJ2luc3BpcmF0aW9uIGRlIGwnYXBwbGljYXRpb24uIFR1IHBldXggbGVzIHV0aWxpc2VyIGRhbnMgbGEgcHJhdGlxdWUgZGVzIDQgcG91dm9pcnMgZXQgZGFucyBsYSBtw6lkaXRhdGlvbiBkdSBib25oZXVyLiIgfSwKICBraW5kVTonT3V0aWxzIGR1IGpvdXInLAogIHNldHM6ewogICAgcGFzaTp7Im5hbWUiOiAiTGVzIDQgw4l0YXBlcyIsICJ1bml0IjogIsOJdGFwZSIsICJzdWIiOiAicG91ciBhcnJvc2VyIGxlcyBncmFpbmVzIGRlIHRvbiBvYmplY3RpZiIsICJpdGVtcyI6IFt7InQiOiAiRGlzIGNlIHF1ZSB0dSB2ZXV4IGRhbnMgdGEgdmllIGVuIHVuZSBwaHJhc2UgY291cnRlLCIsICJhZGQiOiAiw6AgbGEgZm9ybWUgYWZmaXJtYXRpdmUgZXQgYXUgcHLDqXNlbnQuIn0sIHsidCI6ICJQbGFuaWZpZSBxdWkgdHUgdmFzIGFpZGVyIMOgIG9idGVuaXIgbGEgbcOqbWUgY2hvc2UgZXQgb8O5IHR1IGludml0ZXJhcyBjZXR0ZSBwZXJzb25uZSBwb3VyIGVuIHBhcmxlci4iLCAiYWRkIjogIkVsbGUgZGV2aWVudCB0b24gcGFydGVuYWlyZSBrYXJtaXF1ZS4ifSwgeyJ0IjogIkFpZGUgcsOpZWxsZW1lbnQgY2V0dGUgcGVyc29ubmUuIiwgImFkZCI6ICJQYXIgZXhlbXBsZSwgdW5lIGhldXJlIHBhciBzZW1haW5lLCBhdXRvdXIgZOKAmXVuIGNhZsOpLiJ9LCAiRmFpcyBsYSBNw6lkaXRhdGlvbiBkdSBib25oZXVyIDogYXUgbW9tZW50IGRlIHRlIGNvdWNoZXIsIHBlbnNlIGF2ZWMgam9pZSBhdXggYm9ubmVzIGNob3NlcyBxdWUgdHUgZmFpcyBwb3VyIGxlcyBhdXRyZXMuIl19LAogICAgcHV0ZXJpOnsibmFtZSI6ICJMZXMgNCBQb3V2b2lycyIsICJ1bml0IjogIlBvdXZvaXIiLCAic3ViIjogInBvdXIgZMOpc2FjdGl2ZXIgbGVzIGdyYWluZXMgbsOpZ2F0aXZlcyBwbGFudMOpZXMgZGFucyBsZSBwYXNzw6kiLCAiaXRlbXMiOiBbeyJoIjogIlNlIHNvdXZlbmlyIGR1IHN0eWxvIiwgImV4IjogIlRvdXRlcyBsZXMgY2hvc2VzIHZpZW5uZW50IGRlcyBncmFpbmVzIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqS4gU291dmllbnMtdG9pIGRlcyBncmFpbmVzIHF1ZSB0dSBhcyBwbGFudMOpZXMgZGFucyBsZSBwYXNzw6kgZXQgcXVpIG9udCBwb3Vzc8OpLiJ9LCB7ImgiOiAiTGUgcmVncmV0IGludGVsbGlnZW50IiwgImV4IjogIlByZW5kcyBjb25zY2llbmNlIGRlcyBiw6luw6lmaWNlcyBxdWUgdHUgYXMgZXVzIHF1YW5kIHR1IGFzIHBsYW50w6kgbGEgZ3JhaW5lIGV0IHByZW5kcyBsYSBmZXJtZSBkw6ljaXNpb24gZGUgbGEgZMOpc2FjdGl2ZXIgYXZhbnQgcXUnZWxsZSBuZSBzZSBtdWx0aXBsaWUgZW5jb3JlIGRhdmFudGFnZS4ifSwgeyJoIjogIkxhIHJlc3RyaWN0aW9uIiwgImV4IjogIlByb21ldHMgZGUgbmUgcGx1cyByZWZhaXJlIGxhIG3Dqm1lIGVycmV1ciBwZW5kYW50IHVuZSBww6lyaW9kZSBkb25uw6llLiJ9LCB7ImgiOiAiTOKAmWFudGlkb3RlIiwgImV4IjogIkZhaXMgcXVlbHF1ZSBjaG9zZSBkZSBwb3NpdGlmIHBvdXIgw6lxdWlsaWJyZXIgbGVzIGdyYWluZXMgbsOpZ2F0aXZlcy4ifV19LAogICAgbGVnaTp7Im5hbWUiOiAiTGVzIDQgTG9pcyBkZXMgR3JhaW5lcyIsICJ1bml0IjogIkxvaSIsICJzdWIiOiAibGVzIGxvaXMgc2Vsb24gbGVzcXVlbGxlcyBmb25jdGlvbm5lbnQgbGVzIGdyYWluZXMiLCAiaXRlbXMiOiBbeyJoIjogIlR1IHJlw6dvaXMgY2UgcXVlIHR1IGRvbm5lcyIsICJleCI6ICJUdSByw6ljb2x0ZXMgY2UgcXVlIHR1IGFzIHNlbcOpIDogc2kgdHUgcGxhbnRlcyBkZXMgZ3JhaW5lcyBkZSBwYXN0w6hxdWUsIHR1IG9idGllbmRyYXMgdW5lIHBhc3TDqHF1ZS4iLCAiYWRkIjogIkxhIGxvaSBmb25jdGlvbm5lIGRhbnMgbGVzIGRldXggc2VucyA6IGxlIGJpZW4gYXBwb3J0ZSBsZSBiaWVuLCBldCB1biBhY3RlIG7DqWdhdGlmIGFwcG9ydGUgcXVlbHF1ZSBjaG9zZSBkZSBuw6lnYXRpZi4ifSwgeyJoIjogIkxlcyBncmFpbmVzIGdyYW5kaXNzZW50IiwgImV4IjogIkNlIHF1ZSB0dSByZcOnb2lzIGVuIHJldG91ciBlc3QgdG91am91cnMgYmVhdWNvdXAsIGJlYXVjb3VwIHBsdXMgZ3JhbmQgcXVlIGNlIHF1ZSB0dSBhcyBmYWl0LiIsICJhZGQiOiAiTGVzIGJvbm5lcyBjb21tZSBsZXMgbsOpZ2F0aXZlcy4ifSwgeyJoIjogIlNpIHR1IG5lIGZhaXMgcmllbiwgaWwgbmUgc2UgcGFzc2UgcmllbiIsICJleCI6ICJTaSB0dSBuZSBmYWlzIHJpZW4sIHR1IG5lIHJlY2V2cmFzIHJpZW4gZW4gcmV0b3VyLiIsICJhZGQiOiAiU2UgY29udGVudGVyIGTigJllc3DDqXJlciBvdSBk4oCZYXR0ZW5kcmUgbmUgcGxhbnRlIGF1Y3VuZSBncmFpbmUuIn0sIHsiaCI6ICJDZSBxdWUgdHUgYXMgcGxhbnTDqSBkb2l0IGdlcm1lciIsICJleCI6ICJTaSB0dSBmYWlzIHF1ZWxxdWUgY2hvc2UsIGFsb3JzIHR1IGRvaXMgcmVjZXZvaXIgcXVlbHF1ZSBjaG9zZSBlbiByZXRvdXIuIiwgImFkZCI6ICJMZXMgZ3JhaW5lcyBuZSBkaXNwYXJhaXNzZW50IHBhcywgbmkgbGVzIGJvbm5lcyBuaSBsZXMgbsOpZ2F0aXZlcy4gRWxsZXMgZ2VybWVudCDDoCB1biBtb21lbnQgZG9ubsOpLiJ9XX0sCiAgICBmbG9yaTp7Im5hbWUiOiAiTGVzIDQgRmxldXJzIiwgInVuaXQiOiAiRmxldXIiLCAic3ViIjogImxhIG1hbmnDqHJlIGRvbnQgbGVzIGdyYWluZXMgcG9ydGVudCBsZXVycyBmcnVpdHMiLCAiaXRlbXMiOiBbeyJoIjogIlR1IHJlw6dvaXMgZXhhY3RlbWVudCBjZSBxdWUgdHUgZG9ubmVzLiIsICJhZGQiOiAiUXVpIHPDqG1lIGzigJlhbW91ciByw6ljb2x0ZSBs4oCZYW1vdXIuIn0sIHsiaCI6ICJDaGFxdWUgYWN0aW9uIGNyw6llIHVuZSBoYWJpdHVkZS4iLCAiYWRkIjogIk3Dqm1lIGxlcyBwZW5zw6llcyBxdWkgdGUgdmllbm5lbnQgwqsgc2FucyBsZSB2b3Vsb2lyIMK7IHNvbnQgZGVzIGhhYml0dWRlcyBjcsOpw6llcyBwYXIgY2UgcXVlIHR1IGFzIGZhaXQgYXZhbnQuIENlIHF1ZSB0dSByw6lww6h0ZXMgYXVqb3VyZOKAmWh1aSB0ZSB2aWVudCBwbHVzIGZhY2lsZW1lbnQgZGVtYWluLiJ9LCB7ImgiOiAiQ2UgcXVlIHR1IGZhaXMgY3LDqWUgbGVzIHBlcnNvbm5lcyBldCBsJ2Vudmlyb25uZW1lbnQgYXV0b3VyIGRlIHRvaS4iLCAiYWRkIjogIlF1YW5kIHR1IGFwcHLDqWNpZXMgbGVzIGF1dHJlcyBldCBxdWUgdHUgbGVzIHJhcHByb2NoZXMsIHR1IGZpbmlzIGVudG91csOpIGRlIHBlcnNvbm5lcyBxdWkgc+KAmWVudGVuZGVudCBiaWVuLiBRdWFuZCB0dSBkaXZpc2VzLCB0dSB2ZXJyYXMgZGVzIGdlbnMgcXVpIHNlIGRpc3B1dGVudC4ifSwgeyJoIjogIkNlIHF1ZSB0dSBmYWlzIGNyw6llIGxlIG1vbmRlIGRhbnMgbGVxdWVsIHR1IHZhcyBlbnRyZXIuIiwgImFkZCI6ICJDZSBxdWUgdHUgcGxhbnRlcyBhdWpvdXJk4oCZaHVpIHByw6lwYXJlIGxlIG1vbmRlIG\/DuSB0dSBhcnJpdmVyYXMgZGVtYWluLiBRdWFuZCB0dSBjaGFuZ2VzIGNlIHF1ZSB0dSBmYWlzLCB0b24gbW9uZGUgY2hhbmdlIGF1c3NpLiJ9XX0sCiAgICBwcmlvcml0YXRpOnsgbmFtZTonTGVzIDQgUHJpb3JpdMOpcycsIHVuaXQ6J1ByaW9yaXTDqScsIHN1YjoibCdvcmRyZSBkYW5zIGxlcXVlbCBsZXMgZ3JhaW5lcyBwb3J0ZW50IGxldXJzIGZydWl0cyIsIGl0ZW1zOlsKICAgICAgeyBoOidQcmVtaWVyIGVudHLDqSwgcHJlbWllciBzb3J0aS4nLCBleDoiVW5lIGdyYWluZSBwbGFudMOpZSBhdmFudCB1bmUgYXV0cmUgZ2VybWVyYSBhdmFudCBsYSBzZWNvbmRlLiBTaSB0dSBhaWRlcyB1biBhbWkgw6Agw6p0cmUgcGx1cyBjcsOpYXRpZiBhdSB0cmF2YWlsIGxlIGx1bmRpLCBwdWlzIHVuIGF1dHJlIGFtaSDDoCDDqnRyZSBwbHVzIGNyw6lhdGlmIGxlIG1hcmRpLCBsYSBncmFpbmUgZHUgbHVuZGkgcydvdXZyaXJhIGVuIHByZW1pZXIuIiB9LAogICAgICB7IGg6J1F1YW5kIHR1IGFzIHVuZSBoYWJpdHVkZSwgbGEgZ3JhaW5lIHBvcnRlIHNlcyBmcnVpdHMgYXZhbnQgbGEgcHJpb3JpdMOpIDEuJywgZXg6IlNpIHR1IGFzIGFpZMOpIGwnYW1pIGR1IG1hcmRpIHLDqWd1bGnDqHJlbWVudCwgY29tbWUgdW5lIGhhYml0dWRlLCBsYSBncmFpbmUgcGxhbnTDqWUgYXZlYyBsdWkgcydvdXZyaXJhIGF2YW50IGNlbGxlIHBsYW50w6llIGF2ZWMgbCdhbWkgZHUgbHVuZGkuIiB9LAogICAgICB7IGg6IlF1YW5kIHR1IGFpZGVzIHF1ZWxxdSd1biBxdWkgZXN0IHN1ciBsZSBwb2ludCBkZSB2aXZyZSB1biBncmFuZCBjaGFuZ2VtZW50IHBlcnNvbm5lbCwgbGEgZ3JhaW5lIHBvcnRlIHNlcyBmcnVpdHMgYXZhbnQgbGEgcHJpb3JpdMOpIDIuIiwgZXg6IlNpIHR1IGFzIGFpZMOpIGVuY29yZSB1biBhdXRyZSBhbWkgw6Agw6p0cmUgcGx1cyBjcsOpYXRpZiBsZSBtZXJjcmVkaSBldCBxdWUgbGUgamV1ZGkgdW4gZ3JhbmQgY2hhbmdlbWVudCBhbGxhaXQgc2UgcHJvZHVpcmUgZGFucyBzYSB2aWUsIGxlcyBncmFpbmVzIHBsYW50w6llcyB0csOocyBwcsOocyBkJ3VuIMOpdsOpbmVtZW50IG1hamV1ciBtw7tyaXNzZW50IGF2YW50IGNlbGxlcyBwbGFudMOpZXMgYXVwYXJhdmFudC4iIH0sCiAgICAgIHsgaDoiUXVhbmQgdHUgYWlkZXMgcXVlbHF1J3VuIHF1aSBzZSBjb25zYWNyZSDDoCB1biBidXQgYXUgc2VydmljZSBkZSBub21icmV1c2VzIHBlcnNvbm5lcywgbGEgZ3JhaW5lIHBvcnRlIHNlcyBmcnVpdHMgYXZhbnQgbGEgcHJpb3JpdMOpIDMuIiwgZXg6IlNpIGwnYW1pIGFpZMOpIGxlIG1hcmRpIGNoZXJjaGFpdCB1bmUgbWFuacOocmUgY3LDqWF0aXZlIGRlIGd1w6lyaXIgbGUgY2FuY2VyLCB0YW5kaXMgcXVlIGxlcyBhbWlzIGFpZMOpcyBsZSBsdW5kaSBldCBsZSBtZXJjcmVkaSBjaGVyY2hhaWVudCB1bmUgbWFuacOocmUgcGx1cyBjcsOpYXRpdmUgZGUgc2UgbWFxdWlsbGVyLCBsZXMgZ3JhaW5lcyBkdSBtYXJkaSBwYXNzZW50IGRldmFudCBldCBzJ291dnJlbnQgZW4gcHJlbWllci4iIH0gXSB9CiAgfSwKICBpbnRybzpbCiAgICBbIkJpZW52ZW51ZSBkYW5zIGwnYXBwbGljYXRpb24gQm9ubmVzIEdyYWluZXMiLCJUb3V0IGNlIHF1ZSB0dSB2aXMgdmllbnQgZGVzIGdyYWluZXMgcXVlIHR1IGFzIHBsYW50w6llcyBwYXIgdGVzIHBlbnPDqWVzLCB0ZXMgcGFyb2xlcyBldCB0ZXMgYWN0ZXMuIEwnYXBwbGljYXRpb24gdCdhaWRlIMOgIHZvaXIgY2UgcXVlIHR1IHBsYW50ZXMgY2hhcXVlIGpvdXIgZXQgw6AgY2hvaXNpciBjb25zY2llbW1lbnQgbGVzIGdyYWluZXMgZGUgbGEgdmllIHF1ZSB0dSBkw6lzaXJlcy4iXSwKICAgIFsnVGVzIHByYXRpcXVlcycsJ03DqWRpdGF0aW9uIGV0IHlvZ2EgYXZlYyBtaW51dGV1ciwgZ3JhdGl0dWRlcyBldCBzdWNjw6hzLCBsYSBtw6lkaXRhdGlvbiBkdSBib25oZXVyIGV0IGxlcyA0IHBvdXZvaXJzLiBUdSBsZXMgdHJvdXZlcyB0b3V0ZXMgc291cyBsZSBib3V0b24gZHUgbWlsaWV1LCBldCB0b3V0IGNlIHF1ZSB0dSBmYWlzIHZhIGRhbnMgdG9uIGpvdXJuYWwuJ10sCiAgICBbJ0xlcyBvdXRpbHMgZHUgam91cicsJ1Ryb3V2ZSB1bmUgbWFuacOocmUgY3LDqWF0aXZlIGTigJl1dGlsaXNlciBsZXMgMiBvdXRpbHMgcG91ciB0b24gb2JqZWN0aWYuJ10sCiAgICBbIlJlc3BlY3RlIGwnZW5nYWdlbWVudCBwcmlzICEiLCJDZSBxdWUgdHUgw6ljcmlzIMOgIMKrIHF1aSBqJ2FpZGUgwrsgZXQgYXUgNGUgcG91dm9pciB2YSBkYW5zIHRhIGxpc3RlIMOAIGZhaXJlLiBDb2NoZS1sZSB1bmUgZm9pcyBmYWl0IDogbGVzIGJvbm5lcyBncmFpbmVzIGdyYW5kaXNzZW50IGV0IGxlcyBncmFpbmVzIG7DqWdhdGl2ZXMgc2UgZMOpc2FjdGl2ZW50LiJdLAogICAgWydSw6lqb3Vpcy10b2kgZGVzIGdyYWluZXMgZGVzIGF1dHJlcycsIkRhbnMgbGEgY29tbXVuYXV0w6ksIHR1IHZvaXMsIGRlIG1hbmnDqHJlIGFub255bWUsIGNlIHF1ZSBsZXMgYXV0cmVzIG9udCBwbGFudMOpLiBRdWFuZCB0dSB0ZSByw6lqb3VpcyBwb3VyIGV1eCwgdHUgYXJyb3NlcyBsZXMgZ3JhaW5lcyBkZSB0b24gb2JqZWN0aWYuIl0gXSwKICBhYm91dDpbCiAgICBbJ0NlIHF1ZSBzb250IGxlcyBCb25uZXMgR3JhaW5lcycsWyJCb25uZXMgR3JhaW5lcyBlc3QgdG9uIGpvdXJuYWwgZGUgcHJhdGlxdWUgZHUgc3lzdMOobWUgZGVzIGdyYWluZXMuIiwiTm90cmUgZXNwcml0IGVucmVnaXN0cmUgdG91dCBjZSBxdWUgbm91cyBwZW5zb25zLCBkaXNvbnMgZXQgZmFpc29ucy4gQ2hhcXVlIHBlbnPDqWUsIHBhcm9sZSBvdSBhY3Rpb24gZGV2aWVudCB1bmUgZ3JhaW5lIHF1aSBncmFuZGl0IMOgIGwnaW50w6lyaWV1ciBkZSBub3RyZSBlc3ByaXQgZXQsIMOgIHVuIG1vbWVudCBkb25uw6ksIHJldmllbnQgZGFucyBub3RyZSB2aWUgc291cyBmb3JtZSBkJ2V4cMOpcmllbmNlLiIsIkwnYXBwbGljYXRpb24gdCdhaWRlIMOgIHJlbWFycXVlciBjZSBxdWUgdHUgcGxhbnRlcyBldCDDoCBjaG9pc2lyIGNvbnNjaWVtbWVudCBsZXMgZ3JhaW5lcyBkZSBjZSBxdWUgdHUgZMOpc2lyZXMuIl1dLAogICAgWyJDb21tZW50IGwndXRpbGlzZXIgY2hhcXVlIGpvdXIiLFsiTGUgbWF0aW4gOiByYXBwZWxsZS10b2kgdG9uIG9iamVjdGlmIGV0IGTDqWNvdXZyZSBsZXMgb3V0aWxzIGR1IGpvdXIuIiwiUGVuZGFudCBsYSBqb3VybsOpZSA6IHJlbWFycXVlIGNlIHF1ZSB0dSBwbGFudGVzLiBOb3RlIHRlcyBncmF0aXR1ZGVzIGV0IHRlcyBzdWNjw6hzLCBldCBxdWFuZCB0dSByZWNvbm5haXMgdW5lIGdyYWluZSBuw6lnYXRpdmUsIHRyYXZhaWxsZSBhdmVjIGxlcyA0IHBvdXZvaXJzLiIsIkxlIHNvaXIgOiBmYWlzIGxhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXIuIiwiUGFzIGJlc29pbiBkZSBsb25ncyB0ZXh0ZXMuIFF1ZWxxdWVzIG1pbnV0ZXMgZCdvYnNlcnZhdGlvbiBzaW5jw6hyZSwgc2FucyBqdWdlbWVudCBldCBzYW5zIGN1bHBhYmlsaXTDqSwgc3VmZmlzZW50LiBMJ2ltcG9ydGFudCBlc3QgZGUgcmV2ZW5pciBjaGFxdWUgam91ci4iXV0sCiAgICBbJ1BvdXIgcXVpJyxbIlBvdXIgdG91dGUgcGVyc29ubmUgcXVpIGEgdW4gb2JqZWN0aWYgb3UgdW4gcsOqdmUgZXQgdmV1dCBsJ2F0dGVpbmRyZSBlbiBwbGFudGFudCBsZXMgYm9ubmVzIGdyYWluZXMuIiwiU2kgdHUgdHJhdmVyc2VzIHVuZSBww6lyaW9kZSBkaWZmaWNpbGUgb3Ugc2kgdW5lIHNpdHVhdGlvbiBzZSByw6lww6h0ZSwgYydlc3QgbGUgc2lnbmUgcXVlIGRlcyBncmFpbmVzIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqSBtw7tyaXNzZW50LiBBdmVjIGxlcyA0IHBvdXZvaXJzLCB0dSBwZXV4IGxlcyBkw6lzYWN0aXZlciwgZXQgZW4gcGxhbnRhbnQgY29uc2NpZW1tZW50IGRlIGJvbm5lcyBncmFpbmVzLCB0dSByw6nDqXF1aWxpYnJlcyBsYSBiYWxhbmNlLiJdXSwKICAgIFsnUXVhbmQgdHUgcmVjb25uYWlzIHVuZSBncmFpbmUgbsOpZ2F0aXZlJyxbIk5vdXMgcGxhbnRvbnMgdG91cywgc2FucyBub3VzIGVuIHJlbmRyZSBjb21wdGUsIGRlcyBncmFpbmVzIG7DqWdhdGl2ZXMgYXVzc2kuIFNpIG5vdXMgbmUgbGVzIGTDqXNhY3Rpdm9ucyBwYXMsIGVsbGVzIGNvbnRpbnVlbnQgZGUgZ3JhbmRpci4iLCJBdmVjIGxlcyA0IHBvdXZvaXJzIDogdHUgdGUgc291dmllbnMgZCdvw7kgdmllbm5lbnQgdG91dGVzIGxlcyBjaG9zZXMsIHR1IHByZW5kcyBjb25zY2llbmNlIGRlcyBiw6luw6lmaWNlcyBxdWUgdHUgYXMgZXVzIGV0IHR1IGTDqWNpZGVzIGRlIGTDqXNhY3RpdmVyIGxhIGdyYWluZSwgdHUgcHJvbWV0cyBkZSBuZSBwbHVzIHLDqXDDqXRlciBsJ2VycmV1ciBwZW5kYW50IHVuIHRlbXBzIGV0IHR1IGZhaXMgcXVlbHF1ZSBjaG9zZSBkZSBwb3NpdGlmIHBvdXIgbCfDqXF1aWxpYnJlci4iLCJDZSBxdWUgdHUgcHJvbWV0cyBhdSA0ZSBwb3V2b2lyIHZhIGRhbnMgdGEgbGlzdGUgw4AgZmFpcmUsIHBvdXIgbmUgcGFzIG91YmxpZXIgZGUgbGUgZmFpcmUgdnJhaW1lbnQuIl1dLAogICAgWydMYSBtw6lkaXRhdGlvbiBkdSBib25oZXVyJyxbIkxlIG1vbWVudCBxdWkgcHLDqWPDqGRlIGxlIHNvbW1laWwgcmVsaWUgbGUgY29uc2NpZW50IGV0IGxlIHN1YmNvbnNjaWVudC4gQ2UgcXVlIHR1IHBlbnNlcyBhbG9ycyBjb250aW51ZSBkZSBncmFuZGlyIHBlbmRhbnQgcXVlIHR1IGRvcnMuIiwiQydlc3QgcG91cnF1b2ksIGxlIHNvaXIsIHBlbnNlIGF2ZWMgam9pZSBhdSBiaWVuIHF1ZSB0dSBhcyBmYWl0IHBvdXIgbGVzIGF1dHJlcyBldCBkw6lkaWUtbGUgw6AgdG9uIG9iamVjdGlmLiIsIlR1IHBldXggYXVzc2kgbGEgZmFpcmUgcGVuZGFudCBsYSBqb3VybsOpZSwgZMOocyBxdWUgdHUgYXMgcXVlbHF1ZXMgbWludXRlcy4iXV0sCiAgICBbJ0xlcyBvdXRpbHMgZHUgam91cicsWyJMZXMgMjAgb3V0aWxzIHNvbnQgcmVncm91cMOpcyBlbiA1IHPDqXJpZXMgOiBMZXMgNCDDiXRhcGVzLCBMZXMgNCBQb3V2b2lycywgTGVzIDQgTG9pcyBkZXMgR3JhaW5lcywgTGVzIDQgRmxldXJzIGV0IExlcyA0IFByaW9yaXTDqXMuIENoYXF1ZSBzw6lyaWUgYSBzYSBjb3VsZXVyIGV0IHNvbiBzeW1ib2xlLiIseyBzdWJzOiJDaGFxdWUgam91ciwgdHUgZMOpY291dnJlcyAyIG91dGlscyBldCB0dSDDqWNyaXMgY29tbWVudCB0dSB1dGlsaXNlcyBsZXVyIGNvbWJpbmFpc29uLiBMZXMgb3V0aWxzIHNvbnQgYWNjZXNzaWJsZXMgYXV4IHBlcnNvbm5lcyBheWFudCB1biBhYm9ubmVtZW50IGFjdGlmLiIgfV1dLAogICAgWydMYSBjb21tdW5hdXTDqScsWyJUdSBwZXV4IHBhcnRhZ2VyIGRlIG1hbmnDqHJlIGFub255bWUgdGVzIGdyYXRpdHVkZXMsIHRlcyBzdWNjw6hzLCB0YSBtw6lkaXRhdGlvbiBkdSBib25oZXVyIG91IHRlcyA0IHBvdXZvaXJzLCBzb3VzIHVuIG5vbSBxdWUgdHUgY2hvaXNpcy4iLCJRdWFuZCB0dSB0ZSByw6lqb3VpcyBkZXMgZ3JhaW5lcyBkZXMgYXV0cmVzLCB0dSBhcnJvc2VzIGxlcyBncmFpbmVzIGRlIHRvbiBvYmplY3RpZi4gUXVhbmQgdHUgbGlzIGxlcyA0IHBvdXZvaXJzIGRlIHF1ZWxxdSd1biwgdHUgcGV1eCBhdXNzaSBsZXMgcGFyY291cmlyIHBvdXIgdG9pLiIsIkNlIHF1ZSB0dSDDqWNyaXMgcmVzdGUgcHJpdsOpLCBzYXVmIGNlIHF1ZSB0dSBjaG9pc2lzIGRlIHBhcnRhZ2VyLiJdXSBdLAogIGthcm1hOlsKICAgIFsnUHJvdMOoZ2UgbGEgdmllJywnUHJlbmRzIHNvaW4gZGVzIHBlcnNvbm5lcywgZGVzIGFuaW1hdXggZXQgZGVzIHBsYW50ZXMuIE5lIGJsZXNzZSBpbnRlbnRpb25uZWxsZW1lbnQgYXVjdW4gw6p0cmUuJywnTGEgZ3JhaW5lIGRlIGxhIHNhbnTDqSddLAogICAgWydQcm90w6hnZSBsYSBwcm9wcmnDqXTDqScsIkRvbm5lIGV0IGFpZGUgbGVzIGF1dHJlcy4gTmUgcHJlbmRzIHBhcyBjZSBxdWkgbmUgdCdhcHBhcnRpZW50IHBhcyBzYW5zIHBlcm1pc3Npb24uIiwnTGEgZ3JhaW5lIGRlIGxhIHByb3Nww6lyaXTDqSddLAogICAgWydQdXJldMOpIHNleHVlbGxlJywiSG9ub3JlIGxlIGxpZW4gZW50cmUgZGV1eCBwZXJzb25uZXMgcXVpIHNlIHNvbnQgZW5nYWfDqWVzIGwndW5lIGVudmVycyBsJ2F1dHJlLCBsZSB0aWVuIGV0IGNlbHVpIGRlcyBhdXRyZXMuIiwnTGEgZ3JhaW5lIGR1IGJvbmhldXInXSwKICAgIFsnSW50w6lncml0w6knLCdEaXMgbGEgdsOpcml0w6kgZXQgdGllbnMgdGVzIHByb21lc3Nlcy4gTmUgZGlzIHBhcyBjZSBxdWUgdHUgbmUgcmVzc2VucyBwYXMgdnJhaW1lbnQuJywnTGEgZ3JhaW5lIGRlIGxhIGNvbmZpYW5jZSddLAogICAgWydEaXMgZGVzIHBhcm9sZXMgcXVpIHJhc3NlbWJsZW50IGxlcyBnZW5zJywnVXRpbGlzZSB0ZXMgcGFyb2xlcyBwb3VyIHJhc3NlbWJsZXIgbGVzIGdlbnMuIMOJdml0ZSBsZXMgcGFyb2xlcyBxdWkgZGl2aXNlbnQgb3UgY3LDqWVudCBkZXMgbWFsZW50ZW5kdXMuJywiTGEgZ3JhaW5lIGRlIGwnaGFybW9uaWUiXSwKICAgIFsnUGFybGUgYXZlYyBkb3VjZXVyIGV0IGJpZW52ZWlsbGFuY2UnLCdBcHByw6ljaWUgbGVzIGF1dHJlcyBldCBwYXJsZS1sZXVyIGF2ZWMgcmVzcGVjdC4gw4l2aXRlIGxlcyBtb3RzIGR1cnMgZXQgYmxlc3NhbnRzLicsJ0xhIGdyYWluZSBkdSByZXNwZWN0J10sCiAgICBbJ05lIGRpcyBxdWUgZGVzIHBhcm9sZXMgdXRpbGVzJywnRGlzIGRlcyBjaG9zZXMgcXVpIGFpZGVudCBldCBxdWkgb250IHVuIHNlbnMuIMOJdml0ZSBsZXMgY29tbcOpcmFnZXMgZXQgbGVzIHBhcm9sZXMgdmlkZXMuJywnTGEgZ3JhaW5lIGR1IHRlbXBzJ10sCiAgICBbJ1LDqWpvdWlzLXRvaSBkdSBzdWNjw6hzIGRlcyBhdXRyZXMnLCJSw6lqb3Vpcy10b2kgcXVhbmQgbGVzIGF1dHJlcyBvYnRpZW5uZW50IGNlIHF1J2lscyBkw6lzaXJlbnQgZXQgYXBwcsOpY2llIGNlIHF1ZSB0dSBhcy4gw4l2aXRlIGwnZW52aWUgZXQgbCdhdmlkaXTDqS4iLCdMYSBncmFpbmUgZHUgc3VjY8OocyddLAogICAgWydDb21wYXNzaW9uIHBvdXIgbGVzIHByb2Jsw6htZXMgZGVzIGF1dHJlcycsJ09mZnJlIHRhIGNvbXBhc3Npb24gw6AgY2V1eCBxdWkgdHJhdmVyc2VudCBkZXMgZGlmZmljdWx0w6lzIGV0IGFpZGUtbGVzIGNvbW1lIHR1IHBldXguIE5lIHRlIHLDqWpvdWlzIHBhcyBkZXMgbWFsaGV1cnMgZGVzIGF1dHJlcy4nLCdMYSBncmFpbmUgZGUgbGEgY29tcGFzc2lvbiddLAogICAgWydDb21wcmVuZHMgY29tbWVudCBmb25jdGlvbm5lIGxlIHN0eWxvJywiU291dmllbnMtdG9pIHF1ZSB0b3V0IHZpZW50IGRlcyBncmFpbmVzIHBsYW50w6llcyBldCBxdWUgbGUgY2hhbmdlbWVudCBjb21tZW5jZSBwYXIgdG9pLiBWaXMgZXQgcGFydGFnZSBsZSBwcmluY2lwZSBkdSBzdHlsby4iLCdMYSBncmFpbmUgZGUgbGEgc2FnZXNzZSddIF0sCiAga2xhYmVsczpbIkF1IGNlbnRyZSIsICJEYW5zIGxlcyBjZXJjbGVzLCBhdSBxdW90aWRpZW4iLCAiQ2UgcXVpIHBvcnRlIHNlcyBmcnVpdHMiLCAiRGFucyB0YSB2aWUgOiIsICJBdXRvdXIgZGUgdG9pIDoiXSwga2ludHJvOiJDaGFxdWUga2FybWEgc2UgcGxhbnRlIMKrIGF1IGNlbnRyZSDCuywgcGFyIGzigJlhY3RlIGxlIHBsdXMgZm9ydCwgZXQgwqsgZGFucyBsZXMgY2VyY2xlcyDCuywgcGFyIGxlcyBwZXRpdHMgZ2VzdGVzIGRlIGNoYXF1ZSBqb3VyLiBDaGFxdWUgZ3JhaW5lIHBvcnRlIHNlcyBmcnVpdHMgw6AgZGV1eCBlbmRyb2l0cyA6IGRhbnMgdGEgdmllIGV0IGRhbnMgbGUgbW9uZGUgcXVpIHTigJllbnRvdXJlLiIsCiAga2FybWFYOlt7ImMiOiAiU2F1dmVyIHVuZSB2aWUgb3UgYWlkZXIgdW5lIG5vdXZlbGxlIHZpZSDDoCB2ZW5pciBhdSBtb25kZS4iLCAiayI6IFsiUHJlbmRzIHNvaW4gZGUgdG9uIGNvcnBzIDogbW91dmVtZW50LCBzb21tZWlsLCBhbGltZW50YXRpb24gc2FpbmUsIGF2ZWMgbW9pbnMgZGUgdmlhbmRlLCBk4oCZYWxjb29sIGV0IGRlIHN1Y3Jlcmllcy4iLCAiU29pZ25lIGxlcyBwZXJzb25uZXMgbWFsYWRlcyBldCBhaWRlIGxlcyBhdXRyZXMgw6Agdml2cmUgc2FpbmVtZW50LiIsICJDb25kdWlzIHBydWRlbW1lbnQsIHNhbnMgdMOpbMOpcGhvbmUgw6AgbGEgbWFpbiwgZXQgZ2FyZGUgcHJvcHJlIGzigJllbmRyb2l0IG\/DuSB0dSB2aXMgZXQgdHJhdmFpbGxlcy4iXSwgInYiOiAic2FudMOpLCDDqW5lcmdpZSBldCB1biBjb3JwcyBwbGVpbiBkZSB2aXRhbGl0w6kganVzcXXigJnDoCB1biDDomdlIGF2YW5jw6kuIiwgImoiOiAiZGVzIHBlcnNvbm5lcyBlbiBib25uZSBzYW50w6ksIHVuIGFpciBwdXIgZXQgZHUgY2FsbWUuIn0sIHsiYyI6ICJEb25uZXIsIHRvdXRlIHNvcnRlIGRlIHJlc3NvdXJjZXMuIiwgImsiOiBbIlByZW5kcyBzb2luIGRlcyBjaG9zZXMgcXVlIHR1IHV0aWxpc2VzIGV0IG5lIGdhc3BpbGxlIHBhcy4iLCAiUGFpZSB0ZXMgZmFjdHVyZXMgZXQgdGVzIGltcMO0dHMgw6AgdGVtcHMgZXQgYXJyaXZlIMOgIGzigJloZXVyZSBhdXggcmVuZGV6LXZvdXMgOiBsZSB0ZW1wcyBkZXMgYXV0cmVzIGVzdCBhdXNzaSB1bmUgcmVzc291cmNlLiIsICJSZWNvbW1hbmRlIGxlcyBib25zIHByb2R1aXRzIGV0IHNlcnZpY2VzLCBtZXRzIGxlcyBnZW5zIGVuIHJlbGF0aW9uLCBhcHByZW5kcyDDoCBxdWVscXXigJl1biDDoCBnYWduZXIgZGUgbOKAmWFyZ2VudC4iXSwgInYiOiAiYWJvbmRhbmNlLCBkdSB0ZW1wcyBsaWJyZSBwb3VyIHRvaSwgZGUgbGEgc8OpcsOpbml0w6ksIGV0IGxlcyByZXNzb3VyY2VzIGFycml2ZW50IGV4YWN0ZW1lbnQgcXVhbmQgdHUgZW4gYXMgYmVzb2luLiIsICJqIjogInVuIGxpZXUgcmljaGUgZW4gcmVzc291cmNlcywgZW50b3Vyw6kgZGUgcGVyc29ubmVzIHByb3Nww6hyZXMuIn0sIHsiYyI6ICJMYSBmaWTDqWxpdMOpIGRhbnMgdGEgcmVsYXRpb24gZXQgbGUgcmVzcGVjdCBkZSBs4oCZZW5nYWdlbWVudCBxdWUgZGV1eCBhdXRyZXMgcGVyc29ubmVzIG9udCBwcmlzLiIsICJrIjogWyJUdSBuZSBjaGVyY2hlcyBwYXMgZGUgcmFwcHJvY2hlbWVudCBuaSBkZSByZWxhdGlvbiBhdmVjIHF1ZWxxdeKAmXVuIGzDoCBvw7kgaWwgbuKAmWV4aXN0ZSBwYXMgZGUgbGllbiBwdXIuIiwgIlBhc3NlIGR1IHRlbXBzIGF2ZWMgY2V1eCBxdWkgc29udCBzZXVscyA6IHBlcnNvbm5lcyDDomfDqWVzLCBlbmZhbnRzLCBhbWlzLiIsICJSZWdhcmRlIHRvbiBwYXJ0ZW5haXJlIGNvbW1lIHVuIGFuZ2UgZMOpZ3Vpc8OpIGV0IGZhaXMgYXR0ZW50aW9uIMOgIGNlIHF1ZSB0dSByZWdhcmRlcyBldCDDoCBjZSBxdWUgdHUgcGFydGFnZXMuIl0sICJ2IjogInVuZSByZWxhdGlvbiDDqXBhbm91aWUsIHBsZWluZSBkZSB0ZW5kcmVzc2UsIGF2ZWMgdW4gcGFydGVuYWlyZSBhdHRlbnRpZiDDoCB0ZXMgbW9pbmRyZXMgYmVzb2lucy4iLCAiaiI6ICJ1biBlbnZpcm9ubmVtZW50IHByb3ByZSwgbGEgcHVyZXTDqSBkYW5zIHRvdXQgY2UgcXVlIHR1IHZvaXMuIn0sIHsiYyI6ICJEaXJlIGxhIHbDqXJpdMOpIMOgIDEwMCAlLCBwb3VyIHF1ZSBs4oCZaW1hZ2UgZGFucyBs4oCZZXNwcml0IGRlIGzigJlhdXRyZSBzb2l0IGxhIG3Dqm1lIHF1ZSBsYSByw6lhbGl0w6kuIiwgImsiOiBbIlBhcmxlIG91dmVydGVtZW50IGF2ZWMgdGEgZmFtaWxsZSwgdGVzIGNsaWVudHMgZXQgdGVzIGNvbGxhYm9yYXRldXJzLiIsICJUaWVucyB0ZXMgcHJvbWVzc2VzLCB5IGNvbXByaXMgY2VsbGVzIHF1ZSB0dSB0ZSBmYWlzIMOgIHRvaS1tw6ptZS4iLCAiTmUgZmFpcyBwYXMgZGUgcHJvbWVzc2VzIHF1ZSB0dSByaXNxdWVzIGRlIG5lIHBhcyB0ZW5pci4gTGVzIMKrIHBldGl0cyBtZW5zb25nZXMgwrsgbuKAmXkgb250IHBhcyBsZXVyIHBsYWNlIG5vbiBwbHVzLiJdLCAidiI6ICJsZXMgZ2VucyBvbnQgY29uZmlhbmNlIGVuIHRhIHBhcm9sZSwgdHUgYXMgZGUgbOKAmcOpbmVyZ2llIGV0IGxhIHBhaXggZGUgbOKAmWVzcHJpdC4iLCAiaiI6ICJkZXMgYW1pcyBldCBkZXMgcGFydGVuYWlyZXMgZOKAmWFmZmFpcmVzIGhvbm7DqnRlcywgcXVpIHNlIHJlc3BlY3RlbnQgbXV0dWVsbGVtZW50LiJ9LCB7ImMiOiAiRmFpcmUgbOKAmcOpbG9nZSBk4oCZdW5lIHBlcnNvbm5lIGRldmFudCBxdWVscXXigJl1biBk4oCZYXV0cmUuIiwgImsiOiBbIkNoZXJjaGUgbGVzIHF1YWxpdMOpcyBkZXMgZ2VucyBldCBkaXMtbGVzIMOgIHZvaXggaGF1dGUuIiwgIkVuY291cmFnZSBsYSBjb2xsYWJvcmF0aW9uLCBtZXRzIGxlcyBnZW5zIGVuIHJlbGF0aW9uLCBmYWlzIGNvbm5hw650cmUgbGVzIMOpdsOpbmVtZW50cyBxdWkgbGVzIHJhc3NlbWJsZW50LiIsICJOZSBjb21wYXJlIHBhcyBsZXMgZ2VucyBldCBuZSBkaXNjcmltaW5lIHBlcnNvbm5lLiJdLCAidiI6ICJkZXMgcmVsYXRpb25zIMOpcGFub3VpZXMgZXQgZGVzIGFtaXRpw6lzIHF1aSBkdXJlbnQuIiwgImoiOiAidW4gZ3JvdXBlIG\/DuSBsZXMgZ2VucyBzZSBzb3V0aWVubmVudCwgZXQgZGVzIGNoZW1pbnMgZmFjaWxlcyBwb3VyIHRvaS4ifSwgeyJjIjogIlBhcmxlciBjYWxtZW1lbnQsIGRlIG1hbmnDqHJlIGTDqXRlbmR1ZSwgYXZlYyB1biB0b24gZG91eC4iLCAiayI6IFsiw4ljb3V0ZSB2cmFpbWVudCBldCBkb25uZSBkZXMgcmV0b3VycyBjb25zdHJ1Y3RpZnMuIiwgIk3DqWRpdGUsIGZhaXMgZHUgeW9nYSwgcHJvbcOobmUtdG9pIGRhbnMgbGEgbmF0dXJlLCDDqWNvdXRlIHVuZSBtdXNpcXVlIGFwYWlzYW50ZS4iLCAiUHJlbmRzIHNvaW4gYXVzc2kgZGUgdGVzIHBhcm9sZXMgaW50w6lyaWV1cmVzLCB5IGNvbXByaXMgY2VsbGVzIHF1ZSB0dSB0ZSBkaXMgw6AgdG9pLW3Dqm1lLiJdLCAidiI6ICJ1biBzb21tZWlsIHBhaXNpYmxlIGV0IGxhIHBhaXggZGUgbOKAmWVzcHJpdC4iLCAiaiI6ICJkZXMgcGVyc29ubmVzIHF1aSBjb21tdW5pcXVlbnQgZGUgbWFuacOocmUgZMOpdGVuZHVlLCBzYW5zIGRpc3B1dGVzLiJ9LCB7ImMiOiAiVHJhbnNtZXR0cmUgbOKAmWlkw6llIHF1ZSB0b3V0IHZpZW50IGRlcyBncmFpbmVzLiIsICJrIjogWyJQYXJsZSBkZSBjaG9zZXMgcXVpIGFwcG9ydGVudCBkZSBsYSB2YWxldXIgZGFucyBsYSB2aWUgZGVzIGdlbnMuIiwgIkNob2lzaXMgZGVzIGxpdnJlcywgZGVzIGZpbG1zIGV0IGRlcyBwdWJsaWNhdGlvbnMgcXVpIHTigJlhcHByZW5uZW50IMOgIGFwcG9ydGVyIGRlIGxhIHZhbGV1ciBhdXggYXV0cmVzLiIsICLDiXZpdGUgbGVzIGNvbW3DqXJhZ2VzIGRlIHRvdXRlIHNvcnRlIGV0IGxlIHRlbXBzIHBlcmR1IHN1ciBkZXMgY29udGVudXMgdmlkZXMuIl0sICJ2IjogInRlcyBwYXJvbGVzIG9udCBkdSBwb2lkcyBldCB0b24gdGVtcHMgc2UgcmVtcGxpdCBkZSBjaG9zZXMgcXVpIG9udCBkdSBzZW5zLiIsICJqIjogImxlcyBnZW5zIHTigJnDqWNvdXRlbnQgcXVhbmQgdHUgcGFybGVzLiJ9LCB7ImMiOiAiU2UgcsOpam91aXIgc2luY8OocmVtZW50IHF1YW5kIGxlcyBhdXRyZXMgb2J0aWVubmVudCBjZSBxdeKAmWlscyBkw6lzaXJlbnQuIiwgImsiOiBbIlNvdXRpZW5zIGV0IGVuY291cmFnZSBsZXMgYXV0cmVzLiIsICJSw6lqb3Vpcy10b2kgZGVzIHLDqXVzc2l0ZXMgZXQgZGVzIHB1YmxpY2F0aW9ucyBkZXMgYXV0cmVzIGV0IGFwcHLDqWNpZS1sZXMuIiwgIk5lIHRlIGNvbXBhcmUgcGFzIGV0IG5lIGNvbW1lbnRlIGphbWFpcyBhdmVjIGlyb25pZSBsZSBzdWNjw6hzIGRlIHF1ZWxxdeKAmXVuLiJdLCAidiI6ICJkdSBzdWNjw6hzIGRhbnMgdGVzIHByb2pldHMsIGRlIGxhIGpvaWUgZGFucyBjZSBxdWUgdHUgZmFpcywgdHUgZMOpY291dnJlcyB0YSBwYXNzaW9uIGV0IHRhIHZvY2F0aW9uLiIsICJqIjogInVuIGVudmlyb25uZW1lbnQgb8O5IHR1IHJlw6dvaXMgZHUgc291dGllbiBldCBvw7kgbGVzIHJlc3NvdXJjZXMgZXhpc3RlbnQuIn0sIHsiYyI6ICJMYSBjb21wYXNzaW9uIHBvdXIgbGEgc291ZmZyYW5jZSBkZSBxdWVscXXigJl1bi4iLCAiayI6IFsiQWlkZSBjaGFxdWUgZm9pcyBxdWUgdHUgZW4gYXMgbOKAmW9jY2FzaW9uLiIsICJDaG9pc2lzIGRlcyBsaXZyZXMgZXQgZGVzIGZpbG1zIHF1aSBlbmNvdXJhZ2VudCBsYSBjb21wYXNzaW9uLiIsICJRdWFuZCBxdWVscXXigJl1biBzZSB0cm9tcGUsIGxhaXNzZSBkZSBjw7R0w6kgwqsgamUgbGUgc2F2YWlzIMK7IG91IMKrIGrigJlhdmFpcyByYWlzb24gwrsuIl0sICJ2IjogInR1IHRyb3V2ZXMgZGUgbOKAmWFpZGUgcXVhbmQgdHUgZW4gYXMgYmVzb2luIGV0IHR1IMOpdm9sdWVzIHNwaXJpdHVlbGxlbWVudC4iLCAiaiI6ICJkZXMgcGVyc29ubmVzIHF1aSBzZSBzb3V0aWVubmVudCwgdW4gZW52aXJvbm5lbWVudCBwYWlzaWJsZS4ifSwgeyJjIjogIkV4cGxpcXVlciBsZSBwcmluY2lwZSBkdSBzdHlsbyDDoCBxdWVscXXigJl1biBk4oCZYXV0cmUuIiwgImsiOiBbIkZhaXMgZGVzIHBhdXNlcyBkYW5zIGxhIGpvdXJuw6llIHBvdXIgdGUgcmFwcGVsZXIgcXVlIGNlIHF1ZSB0dSB2b2lzLCBmYWlzIGV0IHBlbnNlcyB2aWVudCBkZSB0ZXMgZ3JhaW5lcy4iLCAiTGlzIGV0IMOpY291dGUgZGVzIGNvbnRlbnVzIHN1ciBsZSBmb25jdGlvbm5lbWVudCBkZXMgZ3JhaW5lcy4iLCAiUXVhbmQgcXVlbHF1ZSBjaG9zZSBuZSB2YSBwYXMsIG5lIHJlamV0dGUgcGFzIGxhIGZhdXRlIHN1ciBsZXMgYXV0cmVzIDogZGVtYW5kZS10b2kgcXVlbGxlcyBncmFpbmVzIHBsYW50ZXIuIl0sICJ2IjogInRlcyBwcm9qZXRzIHZvbnQganVzcXXigJlhdSBib3V0IGV0IHR1IHJlc3NlbnMgZGUgcGx1cyBlbiBwbHVzIGRlIGxpYmVydMOpIGludMOpcmlldXJlLiIsICJqIjogInR1IGNvbXByZW5kcyBjZSBxdWkgc2UgcGFzc2UgYXV0b3VyIGRlIHRvaSBldCB0dSBuZSB0ZSBzZW5zIHBsdXMgZMOpcGFzc8OpIHBhciBsZXMgY2hvc2VzLiJ9XSwKICBncm91cHM6WydBQ1RFUycsJ1BBUk9MRVMnLCdQRU5Tw4lFUyddLCBkb21haW5zOlsnQXJnZW50JywnUmVsYXRpb25zJywnU2FudMOpJ10KfTsKWFQuaXQgPSB7CiAgdWk6eyBuYXZKb3VybmFsOidEaWFyaW8nLCBuYXZQcm9maWxlOidQcm9maWxvJywKICAgIHRvZG9MZWFkOidDacOyIGNoZSBobyBwcm9tZXNzbyBkaSBmYXJlLiBHbGkgaW1wZWduaSBjaGUgaG8gcHJlc28uJywKICAgIHVUaXRsZTonSSB0dW9pIHN0cnVtZW50aSBkaSBvZ2dpJywgdUxvY2tlZDonT2duaSBnaW9ybm8gcHVvaSBzY29wcmlyZSAyIGRlaSAyMCBzdHJ1bWVudGk6IEkgNCBQYXNzaSwgSSA0IFBvdGVyaSwgTGUgNCBMZWdnaSBkZWkgU2VtaSwgSSA0IEZpb3JpIGUgTGUgNCBQcmlvcml0w6AuJywKICAgIHVMb2NrTXNnOidUaSBzZXJ2ZSB1biBhYmJvbmFtZW50byBhdHRpdm8gcGVyIHVzYXJlIGdsaSBzdHJ1bWVudGkuJywgdVNlZVN1YnM6J1ZlZGkgZ2xpIGFiYm9uYW1lbnRpJywKICAgIHVEcmF3Tm90ZTonVG9jY2EgZSBzY29wcmkgaSAyIHN0cnVtZW50aSBjb24gY3VpIGxhdm9yaSBvZ2dpLicsIHVEcmF3OidTY29wcmkgZ2xpIHN0cnVtZW50aSBkaSBvZ2dpJywKICAgIHVROidDb21lIHVzbyBvZ2dpIHF1ZXN0YSBjb21iaW5hemlvbmUgZGkgc3RydW1lbnRpPycsIHVQaDonU2NyaXZpIHBlciB0ZS4gUmVzdGEgc29sbyBuZWwgdHVvIGRpYXJpby4nLAogICAgdVNhdmU6J1NhbHZhIG5lbCBkaWFyaW8nLCB1VXBkYXRlOidBZ2dpb3JuYSBuZWwgZGlhcmlvJywgdUFnYWluOidTY2VnbGkgdW5hIG51b3ZhIGNvbWJpbmF6aW9uZSBkaSBzdHJ1bWVudGknLCB1U2F2ZWQ6J1NhbHZhdG8gbmVsIHR1byBkaWFyaW8nLAogICAgdVNpbU9uOidWZXJzaW9uZSBkaSBwcm92YTogc2ltdWxhIHVuIGFiYm9uYW1lbnRvIGF0dGl2bycsIHVTaW1PZmY6J1ZlcnNpb25lIGRpIHByb3ZhOiBzaW11bGEgc2VuemEgYWJib25hbWVudG8nLAogICAgaHViVGl0bGU6J0Nvc2EgcHJhdGljaGkgYWRlc3NvPycsIGh1YkxlYWQ6J1NjZWdsaSBsYSBwcmF0aWNhLiBUdXR0byBjacOyIGNoZSBmYWkgZmluaXNjZSBuZWwgdHVvIGRpYXJpby4nLCBodWJCdXN5OidVbmEgcHJhdGljYSDDqCBpbiBjb3JzbyDCtyB0b3JuYSBhbCB0aW1lcicsCiAgICBteVByb2ZpbGU6J0lsIG1pbyBwcm9maWxvJywgY2hhbmdlTmFtZTonQ2FtYmlhIG5vbWUnLCBwaWNrTmFtZTonU2NlZ2xpIHVuIG5vbWUgcGVyIGxhIGNvbXVuaXTDoCcsCiAgICBzdFByYWN0OidwcmF0aWNoZScsIHN0TWluOidtaW51dGknLCBzdFRvZG86J0RhIGZhcmUgY29tcGxldGF0aScsIGF2YXRhcjonSWwgbWlvIGF2YXRhcicsIGFkZHJlc3M6J0NvbWUgbWkgcml2b2xnbyBhIHRlJywKICAgIGludHJvOidJbnRyb2R1emlvbmUnLCBhYm91dDoiSW5mb3JtYXppb25pIHN1bGwnYXBwIiwga2FybWE6J0kgMTAgS2FybWEgUG9zaXRpdmknLCBrYXJtYVN1YjoiTCdpc3BpcmF6aW9uZSBkZWxsJ2FwcCIsIGNvbnRhY3Q6J0NvbnRhdHRvJywKICAgIHByb2ZCYW5uZXI6IlZlcnNpb25lIGRpIHByb3ZhLiBOZWxsJ2FwcCBwZXIgdGVsZWZvbm8gdHJvdmVyYWkgcXVpIGFuY2hlOiBpIHByb21lbW9yaWEgKGZpbm8gYSA2IGFsIGdpb3JubyksIGlsIGNhbWJpbyBkZWxsJ2VtYWlsLCBsYSBjYW5jZWxsYXppb25lIGRlaSBkYXRpLCBsYSBjYW5jZWxsYXppb25lIGRlbGwnYWNjb3VudCwgbCdpbmZvcm1hdGl2YSBzdWxsYSBwcml2YWN5IGUgaSB0ZXJtaW5pLiIsCiAgICBvdlByZXY6J0luZGlldHJvJywgb3ZOZXh0OidBdmFudGknLCBvdlN0YXJ0OidJbml6aWEnLCBieURvbWFpbjonUkFHR1JVUFBBVEkgUEVSIEFNQklUTycsCiAgICBrYXJtYUxlYWQ6IkwnaXNwaXJhemlvbmUgZGVsbCdhcHAuIFB1b2kgdXNhcmxpIG5lbGxhIHByYXRpY2EgZGVpIDQgcG90ZXJpIGUgbmVsbGEgbWVkaXRhemlvbmUgZGVsbGEgZ2lvaWEuIiB9LAogIGtpbmRVOidTdHJ1bWVudGkgZGVsIGdpb3JubycsCiAgc2V0czp7CiAgICBwYXNpOnsibmFtZSI6ICJJIDQgUGFzc2kiLCAidW5pdCI6ICJQYXNzbyIsICJzdWIiOiAicGVyIGFubmFmZmlhcmUgaSBzZW1pIGRlbCB0dW8gb2JpZXR0aXZvIiwgIml0ZW1zIjogW3sidCI6ICJEaScgY29zYSB2dW9pIG5lbGxhIHR1YSB2aXRhIGNvbiB1bmEgZnJhc2UgYnJldmUsIiwgImFkZCI6ICJpbiBmb3JtYSBhZmZlcm1hdGl2YSBlIGFsIHRlbXBvIHByZXNlbnRlLiJ9LCB7InQiOiAiUGlhbmlmaWNhIGNoaSBhaXV0ZXJhaSBhIG90dGVuZXJlIGxhIHN0ZXNzYSBjb3NhIGUgZG92ZSBpbnZpdGVyYWkgcXVlbGxhIHBlcnNvbmEgcGVyIHBhcmxhcm5lLiIsICJhZGQiOiAiRGl2ZW50YSBpbCB0dW8gcGFydG5lciBrYXJtaWNvLiJ9LCB7InQiOiAiQWl1dGEgY29uY3JldGFtZW50ZSBxdWVsbGEgcGVyc29uYS4iLCAiYWRkIjogIlBlciBlc2VtcGlvLCB1buKAmW9yYSBhbGxhIHNldHRpbWFuYSwgZGF2YW50aSBhIHVuIGNhZmbDqC4ifSwgIkZhaSBsYSBNZWRpdGF6aW9uZSBkZWxsYSBnaW9pYTogcXVhbmRvIHZhaSBhIGRvcm1pcmUsIHBlbnNhIGNvbiBnaW9pYSBhbGxlIGNvc2UgYnVvbmUgY2hlIGZhaSBwZXIgZ2xpIGFsdHJpLiJdfSwKICAgIHB1dGVyaTp7Im5hbWUiOiAiSSA0IFBvdGVyaSIsICJ1bml0IjogIlBvdGVyZSIsICJzdWIiOiAicGVyIGRpc2F0dGl2YXJlIGkgc2VtaSBuZWdhdGl2aSBwaWFudGF0aSBpbiBwYXNzYXRvIiwgIml0ZW1zIjogW3siaCI6ICJSaWNvcmRhcmUgbGEgcGVubmEiLCAiZXgiOiAiVHV0dGUgbGUgY29zZSB2ZW5nb25vIGRhaSBzZW1pIHBpYW50YXRpIGluIHBhc3NhdG8uIFJpY29yZGEgcXVhbGkgc2VtaSBoYWkgcGlhbnRhdG8gaW4gcGFzc2F0byBlIHNvbm8gY3Jlc2NpdXRpLiJ9LCB7ImgiOiAiSWwgcmltcGlhbnRvIGludGVsbGlnZW50ZSIsICJleCI6ICJQcmVuZGkgY29zY2llbnphIGRlaSBiZW5lZmljaSBjaGUgaGFpIGF2dXRvIHF1YW5kbyBoYWkgcGlhbnRhdG8gaWwgc2VtZSBlIHByZW5kaSBsYSBmZXJtYSBkZWNpc2lvbmUgZGkgZGlzYXR0aXZhcmxvIHByaW1hIGNoZSBzaSBtb2x0aXBsaWNoaSBhbmNvcmEgZGkgcGnDuS4ifSwgeyJoIjogIkxhIHJlc3RyaXppb25lIiwgImV4IjogIlByb21ldHRpIGRpIG5vbiByaXBldGVyZSBsbyBzdGVzc28gZXJyb3JlIHBlciB1biBjZXJ0byBwZXJpb2RvIGRpIHRlbXBvLiJ9LCB7ImgiOiAiTOKAmWFudGlkb3RvIiwgImV4IjogIkZhaSBxdWFsY29zYSBkaSBwb3NpdGl2byBwZXIgYmlsYW5jaWFyZSBpIHNlbWkgbmVnYXRpdmkuIn1dfSwKICAgIGxlZ2k6eyJuYW1lIjogIkxlIDQgTGVnZ2kgZGVpIFNlbWkiLCAidW5pdCI6ICJMZWdnZSIsICJzdWIiOiAibGUgbGVnZ2kgc2Vjb25kbyBjdWkgZnVuemlvbmFubyBpIHNlbWkiLCAiaXRlbXMiOiBbeyJoIjogIlJpY2V2aSBjacOyIGNoZSBkYWkiLCAiZXgiOiAiUmFjY29nbGkgY2nDsiBjaGUgaGFpIHNlbWluYXRvOiBzZSBwaWFudGkgc2VtaSBkaSBhbmd1cmlhLCBvdHRlcnJhaSB1bidhbmd1cmlhLiIsICJhZGQiOiAiTGEgbGVnZ2UgZnVuemlvbmEgaW4gZW50cmFtYmkgaSBzZW5zaTogaWwgYmVuZSBwb3J0YSBiZW5lLCBlIHVu4oCZYXppb25lIG5lZ2F0aXZhIHBvcnRhIHF1YWxjb3NhIGRpIG5lZ2F0aXZvLiJ9LCB7ImgiOiAiSSBzZW1pIGNyZXNjb25vIiwgImV4IjogIkNpw7IgY2hlIHJpY2V2aSBpbiBjYW1iaW8gw6ggc2VtcHJlIG1vbHRvLCBtb2x0byBwacO5IGdyYW5kZSBkaSBjacOyIGNoZSBoYWkgZmF0dG8uIiwgImFkZCI6ICJTaWEgcXVlbGxpIGJ1b25pIHNpYSBxdWVsbGkgbmVnYXRpdmkuIn0sIHsiaCI6ICJTZSBub24gZmFpIG51bGxhLCBub24gc3VjY2VkZSBudWxsYSIsICJleCI6ICJTZSBub24gZmFpIG51bGxhLCBub24gcmljZXZlcmFpIG51bGxhIGluIGNhbWJpby4iLCAiYWRkIjogIkxpbWl0YXJzaSBhIHNwZXJhcmUgbyBhZCBhc3BldHRhcmUgbm9uIHBpYW50YSBuZXNzdW4gc2VtZS4ifSwgeyJoIjogIkNpw7IgY2hlIGhhaSBwaWFudGF0byBkZXZlIGdlcm1vZ2xpYXJlIiwgImV4IjogIlNlIGZhaSBxdWFsY29zYSwgYWxsb3JhIGRldmkgcmljZXZlcmUgcXVhbGNvc2EgaW4gY2FtYmlvLiIsICJhZGQiOiAiSSBzZW1pIG5vbiBzY29tcGFpb25vLCBuw6kgcXVlbGxpIGJ1b25pIG7DqSBxdWVsbGkgbmVnYXRpdmkuIEEgdW4gY2VydG8gcHVudG8gZ2VybW9nbGlhbm8uIn1dfSwKICAgIGZsb3JpOnsibmFtZSI6ICJJIDQgRmlvcmkiLCAidW5pdCI6ICJGaW9yZSIsICJzdWIiOiAiaWwgbW9kbyBpbiBjdWkgaSBzZW1pIGRhbm5vIGZydXR0byIsICJpdGVtcyI6IFt7ImgiOiAiUmljZXZpIGVzYXR0YW1lbnRlIGNpw7IgY2hlIGRhaS4iLCAiYWRkIjogIkNoaSBzZW1pbmEgYW1vcmUgcmFjY29nbGllIGFtb3JlLiJ9LCB7ImgiOiAiT2duaSBhemlvbmUgY3JlYSB1bidhYml0dWRpbmUuIiwgImFkZCI6ICJBbmNoZSBpIHBlbnNpZXJpIGNoZSB0aSB2ZW5nb25vIOKAnHNlbnphIHZvbGVybG\/igJ0gc29ubyBhYml0dWRpbmkgY3JlYXRlIGRhIGNpw7IgY2hlIGhhaSBmYXR0byBwcmltYS4gQ2nDsiBjaGUgcmlwZXRpIG9nZ2kgdGkgdmllbmUgcGnDuSBmYWNpbGUgZG9tYW5pLiJ9LCB7ImgiOiAiQ2nDsiBjaGUgZmFpIGNyZWEgbGUgcGVyc29uZSBlIGwnYW1iaWVudGUgaW50b3JubyBhIHRlLiIsICJhZGQiOiAiUXVhbmRvIGFwcHJlenppIGdsaSBhbHRyaSBlIGxpIGF2dmljaW5pIHRyYSBsb3JvLCBmaW5pc2NpIGNpcmNvbmRhdG8gZGEgcGVyc29uZSBjaGUgdmFubm8gZOKAmWFjY29yZG8uIFF1YW5kbyBkaXZpZGksIHZlZHJhaSBwZXJzb25lIGNoZSBsaXRpZ2Fuby4ifSwgeyJoIjogIkNpw7IgY2hlIGZhaSBjcmVhIGlsIG1vbmRvIGluIGN1aSBlbnRyZXJhaS4iLCAiYWRkIjogIkNpw7IgY2hlIHBpYW50aSBvZ2dpIHByZXBhcmEgaWwgbW9uZG8gaW4gY3VpIGFycml2ZXJhaSBkb21hbmkuIFF1YW5kbyBjYW1iaSBjacOyIGNoZSBmYWksIGNhbWJpYSBhbmNoZSBpbCB0dW8gbW9uZG8uIn1dfSwKICAgIHByaW9yaXRhdGk6eyBuYW1lOidMZSA0IFByaW9yaXTDoCcsIHVuaXQ6J1ByaW9yaXTDoCcsIHN1YjoibCdvcmRpbmUgaW4gY3VpIGkgc2VtaSBkYW5ubyBmcnV0dG8iLCBpdGVtczpbCiAgICAgIHsgaDonUHJpbW8gYSBlbnRyYXJlLCBwcmltbyBhIHVzY2lyZS4nLCBleDoiVW4gc2VtZSBwaWFudGF0byBwcmltYSBkaSB1biBhbHRybyBnZXJtb2dsaWVyw6AgcHJpbWEgZGVsIHNlY29uZG8uIFNlIGx1bmVkw6wgYWl1dGkgdW4gYW1pY28gYSBlc3NlcmUgcGnDuSBjcmVhdGl2byBhbCBsYXZvcm8gZSBtYXJ0ZWTDrCBhaXV0aSB1biBhbHRybyBhbWljbyBhIGVzc2VyZSBwacO5IGNyZWF0aXZvLCBpbCBzZW1lIGRpIGx1bmVkw6wgc2kgYXByaXLDoCBwZXIgcHJpbW8uIiB9LAogICAgICB7IGg6IlF1YW5kbyBoYWkgdW4nYWJpdHVkaW5lLCBpbCBzZW1lIGTDoCBmcnV0dG8gcHJpbWEgZGVsbGEgcHJpb3JpdMOgIDEuIiwgZXg6IlNlIGhhaSBhaXV0YXRvIGwnYW1pY28gZGkgbWFydGVkw6wgcmVnb2xhcm1lbnRlLCBjb21lIHVuJ2FiaXR1ZGluZSwgaWwgc2VtZSBwaWFudGF0byBjb24gbHVpIHNpIGFwcmlyw6AgcHJpbWEgZGkgcXVlbGxvIHBpYW50YXRvIGNvbiBsJ2FtaWNvIGRpIGx1bmVkw6wuIiB9LAogICAgICB7IGg6J1F1YW5kbyBhaXV0aSBxdWFsY3VubyBjaGUgc3RhIHBlciBhdHRyYXZlcnNhcmUgdW4gZ3JhbmRlIGNhbWJpYW1lbnRvIHBlcnNvbmFsZSwgaWwgc2VtZSBkw6AgZnJ1dHRvIHByaW1hIGRlbGxhIHByaW9yaXTDoCAyLicsIGV4OiJTZSBtZXJjb2xlZMOsIGhhaSBhaXV0YXRvIGFuY29yYSB1biBhbHRybyBhbWljbyBhIGVzc2VyZSBwacO5IGNyZWF0aXZvIGUgZ2lvdmVkw6wgbmVsbGEgc3VhIHZpdGEgc3RhdmEgcGVyIGF2dmVuaXJlIHVuIGdyYW5kZSBjYW1iaWFtZW50bywgaSBzZW1pIHBpYW50YXRpIG1vbHRvIHZpY2lubyBhIHVuIGV2ZW50byBpbXBvcnRhbnRlIG1hdHVyYW5vIHByaW1hIGRpIHF1ZWxsaSBwaWFudGF0aSBpbiBwcmVjZWRlbnphLiIgfSwKICAgICAgeyBoOidRdWFuZG8gYWl1dGkgcXVhbGN1bm8gY2hlIHNpIGRlZGljYSBhIHVubyBzY29wbyBhbCBzZXJ2aXppbyBkaSBtb2x0ZSBwZXJzb25lLCBpbCBzZW1lIGTDoCBmcnV0dG8gcHJpbWEgZGVsbGEgcHJpb3JpdMOgIDMuJywgZXg6IlNlIGwnYW1pY28gYWl1dGF0byBtYXJ0ZWTDrCBjZXJjYXZhIHVuIG1vZG8gY3JlYXRpdm8gcGVyIGN1cmFyZSBpbCBjYW5jcm8sIG1lbnRyZSBnbGkgYW1pY2kgYWl1dGF0aSBsdW5lZMOsIGUgbWVyY29sZWTDrCBjZXJjYXZhbm8gdW4gbW9kbyBwacO5IGNyZWF0aXZvIHBlciB0cnVjY2Fyc2ksIGkgc2VtaSBkaSBtYXJ0ZWTDrCBwYXNzYW5vIGF2YW50aSBlIHNpIGFwcm9ubyBwZXIgcHJpbWkuIiB9IF0gfQogIH0sCiAgaW50cm86WwogICAgWyJCZW52ZW51dGEgbmVsbCdhcHAgU2VtaSBCdW9uaSIsIlR1dHRvIGNpw7IgY2hlIHZpdmkgdmllbmUgZGFpIHNlbWkgY2hlIGhhaSBwaWFudGF0byBjb24gaSBwZW5zaWVyaSwgbGUgcGFyb2xlIGUgbGUgYXppb25pLiBMJ2FwcCB0aSBhaXV0YSBhIHZlZGVyZSBjb3NhIHBpYW50aSBvZ25pIGdpb3JubyBlIGEgc2NlZ2xpZXJlIGNvbnNhcGV2b2xtZW50ZSBpIHNlbWkgcGVyIGxhIHZpdGEgY2hlIGRlc2lkZXJpLiJdLAogICAgWydMZSB0dWUgcHJhdGljaGUnLCdNZWRpdGF6aW9uZSBlIHlvZ2EgY29uIGlsIHRpbWVyLCBncmF0aXR1ZGluaSBlIHN1Y2Nlc3NpLCBsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYSBlIGkgNCBwb3RlcmkuIExlIHRyb3ZpIHR1dHRlIG5lbCBwdWxzYW50ZSBjZW50cmFsZSwgZSB0dXR0byBjacOyIGNoZSBmYWkgZmluaXNjZSBuZWwgdHVvIGRpYXJpby4nXSwKICAgIFsnR2xpIHN0cnVtZW50aSBkZWwgZ2lvcm5vJywnVHJvdmEgdW4gbW9kbyBjcmVhdGl2byBkaSB1c2FyZSBpIDIgc3RydW1lbnRpIHBlciBpbCB0dW8gb2JpZXR0aXZvLiddLAogICAgWyJSaXNwZXR0YSBsJ2ltcGVnbm8gcHJlc28hIiwiQ2nDsiBjaGUgc2NyaXZpIGluIMKrY2hpIGFpdXRvwrsgZSBuZWwgNMKwIHBvdGVyZSBmaW5pc2NlIG5lbGxhIGxpc3RhIERhIGZhcmUuIFNwdW50YWxvIGRvcG8gYXZlcmxvIGZhdHRvOiBpIHNlbWkgYnVvbmkgY3Jlc2Nvbm8gZSBxdWVsbGkgbmVnYXRpdmkgc2kgZGlzYXR0aXZhbm8uIl0sCiAgICBbJ0dpb2lzY2kgZGVpIHNlbWkgZGVnbGkgYWx0cmknLCdOZWxsYSBjb211bml0w6AgdmVkaSwgaW4gZm9ybWEgYW5vbmltYSwgY29zYSBoYW5ubyBwaWFudGF0byBnbGkgYWx0cmkuIFF1YW5kbyBnaW9pc2NpIHBlciBsb3JvLCBhbm5hZmZpIGkgc2VtaSBkZWwgdHVvIG9iaWV0dGl2by4nXSBdLAogIGFib3V0OlsKICAgIFsnQ2hlIGNvc2Egw6ggU2VtaSBCdW9uaScsWyJTZW1pIEJ1b25pIMOoIGlsIHR1byBkaWFyaW8gZGkgcHJhdGljYSBwZXIgaWwgc2lzdGVtYSBkZWkgc2VtaS4iLCJMYSBub3N0cmEgbWVudGUgcmVnaXN0cmEgdHV0dG8gY2nDsiBjaGUgcGVuc2lhbW8sIGRpY2lhbW8gZSBmYWNjaWFtby4gT2duaSBwZW5zaWVybywgcGFyb2xhIG8gYXppb25lIGRpdmVudGEgdW4gc2VtZSBjaGUgY3Jlc2NlIGFsbCdpbnRlcm5vIGRlbGxhIG5vc3RyYSBtZW50ZSBlLCBhIHVuIGNlcnRvIHB1bnRvLCByaXRvcm5hIG5lbGxhIG5vc3RyYSB2aXRhIGNvbWUgZXNwZXJpZW56YS4iLCJMJ2FwcCB0aSBhaXV0YSBhIG5vdGFyZSBjb3NhIHBpYW50aSBlIGEgc2NlZ2xpZXJlIGNvbnNhcGV2b2xtZW50ZSBpIHNlbWkgcGVyIGNpw7IgY2hlIGRlc2lkZXJpLiJdXSwKICAgIFsnQ29tZSB1c2FybGEgb2duaSBnaW9ybm8nLFsiQWwgbWF0dGlubzogcmljb3JkYSBpbCB0dW8gb2JpZXR0aXZvIGUgc2NvcHJpIGdsaSBzdHJ1bWVudGkgZGVsIGdpb3Juby4iLCJEdXJhbnRlIGlsIGdpb3Jubzogb3NzZXJ2YSBjb3NhIHBpYW50aS4gQW5ub3RhIGxlIGdyYXRpdHVkaW5pIGUgaSBzdWNjZXNzaSwgZSBxdWFuZG8gcmljb25vc2NpIHVuIHNlbWUgbmVnYXRpdm8sIGxhdm9yYSBjb24gaSA0IHBvdGVyaS4iLCJMYSBzZXJhOiBmYWkgbGEgbWVkaXRhemlvbmUgZGVsbGEgZ2lvaWEuIiwiTm9uIHNlcnZvbm8gdGVzdGkgbHVuZ2hpLiBCYXN0YW5vIHBvY2hpIG1pbnV0aSBkaSBvc3NlcnZhemlvbmUgc2luY2VyYSwgc2VuemEgZ2l1ZGl6aW8gZSBzZW56YSBzZW5zbyBkaSBjb2xwYS4gTCdpbXBvcnRhbnRlIMOoIHRvcm5hcmUgb2duaSBnaW9ybm8uIl1dLAogICAgWydQZXIgY2hpIMOoJyxbIlBlciBjaGl1bnF1ZSBhYmJpYSB1biBvYmlldHRpdm8gbyB1biBzb2dubyBlIHZvZ2xpYSByYWdnaXVuZ2VybG8gcGlhbnRhbmRvIGkgc2VtaSBnaXVzdGkuIiwiU2Ugc3RhaSBhdHRyYXZlcnNhbmRvIHVuIHBlcmlvZG8gZGlmZmljaWxlIG8gdW5hIHNpdHVhemlvbmUgc2kgcmlwZXRlLCDDqCBzZWdubyBjaGUgc3Rhbm5vIG1hdHVyYW5kbyBzZW1pIHBpYW50YXRpIGluIHBhc3NhdG8uIENvbiBpIDQgcG90ZXJpIHB1b2kgZGlzYXR0aXZhcmxpIGUsIHBpYW50YW5kbyBjb25zYXBldm9sbWVudGUgc2VtaSBidW9uaSwgcmllcXVpbGlicmkgbGEgYmlsYW5jaWEuIl1dLAogICAgWydRdWFuZG8gcmljb25vc2NpIHVuIHNlbWUgbmVnYXRpdm8nLFsiVHV0dGkgcGlhbnRpYW1vLCBzZW56YSByZW5kZXJjZW5lIGNvbnRvLCBhbmNoZSBzZW1pIG5lZ2F0aXZpLiBTZSBub24gbGkgZGlzYXR0aXZpYW1vLCBjb250aW51YW5vIGEgY3Jlc2NlcmUuIiwiQ29uIGkgNCBwb3Rlcmk6IHJpY29yZGkgZGEgZG92ZSB2ZW5nb25vIHR1dHRlIGxlIGNvc2UsIHByZW5kaSBjb3NjaWVuemEgZGVpIGJlbmVmaWNpIGNoZSBoYWkgYXZ1dG8gZSBkZWNpZGkgZGkgZGlzYXR0aXZhcmUgaWwgc2VtZSwgcHJvbWV0dGkgZGkgbm9uIHJpcGV0ZXJlIGwnZXJyb3JlIHBlciB1biBwZXJpb2RvIGUgZmFpIHF1YWxjb3NhIGRpIHBvc2l0aXZvIHBlciBiaWxhbmNpYXJsby4iLCJDacOyIGNoZSBwcm9tZXR0aSBuZWwgNMKwIHBvdGVyZSBmaW5pc2NlIG5lbGxhIGxpc3RhIERhIGZhcmUsIGNvc8OsIG5vbiBkaW1lbnRpY2hpIGRpIGZhcmxvIGRhdnZlcm8uIl1dLAogICAgWydMYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsWyJJbCBtb21lbnRvIHByaW1hIGRlbCBzb25ubyBjb2xsZWdhIGlsIGNvbnNjaW8gZSBpbCBzdWJjb25zY2lvLiBDacOyIGNoZSBwZW5zaSBhbGxvcmEgY29udGludWEgYSBjcmVzY2VyZSBtZW50cmUgZG9ybWkuIiwiUGVyIHF1ZXN0bywgbGEgc2VyYSwgcGVuc2EgY29uIGdpb2lhIGFsIGJlbmUgY2hlIGhhaSBmYXR0byBwZXIgZ2xpIGFsdHJpIGUgZGVkaWNhbG8gYWwgdHVvIG9iaWV0dGl2by4iLCJQdW9pIGZhcmxhIGFuY2hlIGR1cmFudGUgaWwgZ2lvcm5vLCBvZ25pIHZvbHRhIGNoZSBoYWkgcXVhbGNoZSBtaW51dG8uIl1dLAogICAgWydHbGkgc3RydW1lbnRpIGRlbCBnaW9ybm8nLFsiSSAyMCBzdHJ1bWVudGkgc29ubyByYWdncnVwcGF0aSBpbiA1IHNlcmllOiBJIDQgUGFzc2ksIEkgNCBQb3RlcmksIExlIDQgTGVnZ2kgZGVpIFNlbWksIEkgNCBGaW9yaSBlIExlIDQgUHJpb3JpdMOgLiBPZ25pIHNlcmllIGhhIGlsIHN1byBjb2xvcmUgZSBpbCBzdW8gc2ltYm9sby4iLHsgc3ViczoiT2duaSBnaW9ybm8gc2NvcHJpIDIgc3RydW1lbnRpIGUgc2NyaXZpIGNvbWUgdXNpIGxhIGxvcm8gY29tYmluYXppb25lLiBHbGkgc3RydW1lbnRpIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGNoaSBoYSB1biBhYmJvbmFtZW50byBhdHRpdm8uIiB9XV0sCiAgICBbJ0xhIGNvbXVuaXTDoCcsWyJQdW9pIGNvbmRpdmlkZXJlIGluIGZvcm1hIGFub25pbWEgZ3JhdGl0dWRpbmksIHN1Y2Nlc3NpLCBsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYSBvIGkgNCBwb3RlcmksIGNvbiB1biBub21lIHNjZWx0byBkYSB0ZS4iLCJRdWFuZG8gZ2lvaXNjaSBkZWkgc2VtaSBkZWdsaSBhbHRyaSwgYW5uYWZmaSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8uIFF1YW5kbyBsZWdnaSBpIDQgcG90ZXJpIGRpIHF1YWxjdW5vLCBwdW9pIHBlcmNvcnJlcmxpIGFuY2hlIHBlciB0ZS4iLCJDacOyIGNoZSBzY3JpdmkgcmVzdGEgcHJpdmF0bywgdHJhbm5lIGNpw7IgY2hlIHNjZWdsaSBkaSBjb25kaXZpZGVyZS4iXV0gXSwKICBrYXJtYTpbCiAgICBbJ1Byb3RlZ2dpIGxhIHZpdGEnLCdQcmVuZGl0aSBjdXJhIGRlbGxlIHBlcnNvbmUsIGRlZ2xpIGFuaW1hbGkgZSBkZWxsZSBwaWFudGUuIE5vbiBmZXJpcmUgaW50ZW56aW9uYWxtZW50ZSBuZXNzdW4gZXNzZXJlLicsJ0lsIHNlbWUgZGVsbGEgc2FsdXRlJ10sCiAgICBbJ1Byb3RlZ2dpIGxhIHByb3ByaWV0w6AnLCdEb25hIGUgYWl1dGEgZ2xpIGFsdHJpLiBOb24gcHJlbmRlcmUgY2nDsiBjaGUgbm9uIHRpIGFwcGFydGllbmUgc2VuemEgcGVybWVzc28uJywnSWwgc2VtZSBkZWxsYSBwcm9zcGVyaXTDoCddLAogICAgWydQdXJlenphIHNlc3N1YWxlJywiT25vcmEgaWwgbGVnYW1lIHRyYSBkdWUgcGVyc29uZSBjaGUgaGFubm8gcHJlc28gdW4gaW1wZWdubyBsJ3VuYSB2ZXJzbyBsJ2FsdHJhLCBpbCB0dW8gZSBxdWVsbG8gZGVnbGkgYWx0cmkuIiwnSWwgc2VtZSBkZWxsYSBmZWxpY2l0w6AnXSwKICAgIFsnSW50ZWdyaXTDoCcsJ0Rp4oCZIGxhIHZlcml0w6AgZSBtYW50aWVuaSBsZSBwcm9tZXNzZS4gTm9uIGRpcmUgY2nDsiBjaGUgbm9uIHNlbnRpIGRhdnZlcm8uJywnSWwgc2VtZSBkZWxsYSBmaWR1Y2lhJ10sCiAgICBbJ0Rp4oCZIHBhcm9sZSBjaGUgdW5pc2Nvbm8gbGUgcGVyc29uZScsJ1VzYSBsZSBwYXJvbGUgcGVyIHVuaXJlIGxlIHBlcnNvbmUuIEV2aXRhIGxlIHBhcm9sZSBjaGUgZGl2aWRvbm8gbyBjcmVhbm8gaW5jb21wcmVuc2lvbmkuJywiSWwgc2VtZSBkZWxsJ2FybW9uaWEiXSwKICAgIFsnUGFybGEgY29uIGdlbnRpbGV6emEgZSBkb2xjZXp6YScsJ0FwcHJlenphIGdsaSBhbHRyaSBlIHBhcmxhIGxvcm8gY29uIHJpc3BldHRvLiBFdml0YSBsZSBwYXJvbGUgZHVyZSBlIGNoZSBmZXJpc2Nvbm8uJywnSWwgc2VtZSBkZWwgcmlzcGV0dG8nXSwKICAgIFsnRGnigJkgc29sbyBwYXJvbGUgY2hlIGhhbm5vIHNlbnNvJywnRGnigJkgY29zZSBjaGUgYWl1dGFubyBlIGhhbm5vIHVubyBzY29wby4gRXZpdGEgaSBwZXR0ZWdvbGV6emkgZSBsZSBwYXJvbGUgdnVvdGUuJywnSWwgc2VtZSBkZWwgdGVtcG8nXSwKICAgIFsnR2lvaXNjaSBkZWwgc3VjY2Vzc28gZGVnbGkgYWx0cmknLCJHaW9pc2NpIHF1YW5kbyBnbGkgYWx0cmkgb3R0ZW5nb25vIGNpw7IgY2hlIGRlc2lkZXJhbm8gZSBhcHByZXp6YSBjacOyIGNoZSBoYWkuIEV2aXRhIGwnaW52aWRpYSBlIGwnYXZpZGl0w6AuIiwnSWwgc2VtZSBkZWwgc3VjY2Vzc28nXSwKICAgIFsnQ29tcGFzc2lvbmUgcGVyIGkgcHJvYmxlbWkgZGVnbGkgYWx0cmknLCdPZmZyaSBjb21wYXNzaW9uZSBhIGNoaSBhdHRyYXZlcnNhIGRpZmZpY29sdMOgIGUgYWl1dGFsbyBjb21lIHB1b2kuIE5vbiBnaW9pcmUgZGVsbGUgZGlzZ3JhemllIGFsdHJ1aS4nLCdJbCBzZW1lIGRlbGxhIGNvbXBhc3Npb25lJ10sCiAgICBbJ0NvbXByZW5kaSBjb21lIGZ1bnppb25hIGxhIHBlbm5hJywnUmljb3JkYSBjaGUgdHV0dG8gdmllbmUgZGFpIHNlbWkgcGlhbnRhdGkgZSBjaGUgaWwgY2FtYmlhbWVudG8gaW5pemlhIGRhIHRlLiBWaXZpIGUgY29uZGl2aWRpIGlsIHByaW5jaXBpbyBkZWxsYSBwZW5uYS4nLCdJbCBzZW1lIGRlbGxhIHNhZ2dlenphJ10gXSwKICBrbGFiZWxzOlsiQWwgY2VudHJvIiwgIk5laSBjZXJjaGksIGdpb3JubyBwZXIgZ2lvcm5vIiwgIkNoZSBjb3NhIGTDoCBmcnV0dG8iLCAiTmVsbGEgdHVhIHZpdGE6IiwgIkludG9ybm8gYSB0ZToiXSwga2ludHJvOiJPZ25pIGthcm1hIHNpIHBpYW50YSDigJxhbCBjZW50cm\/igJ0sIGNvbiBs4oCZYXppb25lIHBpw7kgZm9ydGUsIGUg4oCcbmVpIGNlcmNoaeKAnSwgY29uIGkgcGljY29saSBnZXN0aSBkaSBvZ25pIGdpb3Juby4gT2duaSBzZW1lIGTDoCBmcnV0dG8gaW4gZHVlIGx1b2doaTogbmVsbGEgdHVhIHZpdGEgZSBuZWwgbW9uZG8gaW50b3JubyBhIHRlLiIsCiAga2FybWFYOlt7ImMiOiAiU2FsdmFyZSB1bmEgdml0YSBvIGFpdXRhcmUgdW5hIG51b3ZhIHZpdGEgYSB2ZW5pcmUgYWwgbW9uZG8uIiwgImsiOiBbIlByZW5kaXRpIGN1cmEgZGVsIHR1byBjb3JwbzogbW92aW1lbnRvLCBzb25ubywgY2libyBzYW5vLCBjb24gbWVubyBjYXJuZSwgYWxjb2wgZSBkb2xjaS4iLCAiQXNzaXN0aSBjaGkgw6ggbWFsYXRvIGUgYWl1dGEgZ2xpIGFsdHJpIGEgdml2ZXJlIGluIG1vZG8gc2Fuby4iLCAiR3VpZGEgY29uIHBydWRlbnphLCBzZW56YSB0ZWxlZm9ubyBpbiBtYW5vLCBlIHRpZW5pIHB1bGl0byBpbCBsdW9nbyBpbiBjdWkgdml2aSBlIGxhdm9yaS4iXSwgInYiOiAic2FsdXRlLCBlbmVyZ2lhIGUgdW4gY29ycG8gdml0YWxlIGZpbm8gYSB0YXJkYSBldMOgLiIsICJqIjogInBlcnNvbmUgc2FuZSwgYXJpYSBwdWxpdGEgZSB0cmFucXVpbGxpdMOgLiJ9LCB7ImMiOiAiRG9uYXJlLCBxdWFsc2lhc2kgdGlwbyBkaSByaXNvcnNhLiIsICJrIjogWyJBYmJpIGN1cmEgZGVsbGUgY29zZSBjaGUgdXNpIGUgbm9uIHNwcmVjYXJlLiIsICJQYWdhIGluIHRlbXBvIGJvbGxldHRlIGUgdGFzc2UgZSBhcnJpdmEgcHVudHVhbGUgYWdsaSBhcHB1bnRhbWVudGk6IGFuY2hlIGlsIHRlbXBvIGRlZ2xpIGFsdHJpIMOoIHVuYSByaXNvcnNhLiIsICJDb25zaWdsaWEgaSBwcm9kb3R0aSBlIGkgc2Vydml6aSBidW9uaSwgbWV0dGkgaW4gY29udGF0dG8gbGUgcGVyc29uZSwgaW5zZWduYSBhIHF1YWxjdW5vIGNvbWUgZ3VhZGFnbmFyZS4iXSwgInYiOiAiYWJib25kYW56YSwgdGVtcG8gbGliZXJvIHBlciB0ZSwgc2VyZW5pdMOgLCBlIGxlIHJpc29yc2UgYXJyaXZhbm8gcHJvcHJpbyBxdWFuZG8gbmUgaGFpIGJpc29nbm8uIiwgImoiOiAidW4gbHVvZ28gcmljY28gZGkgcmlzb3JzZSwgY2lyY29uZGF0byBkYSBwZXJzb25lIHByb3NwZXJlLiJ9LCB7ImMiOiAiRmVkZWx0w6AgbmVsbGEgdHVhIHJlbGF6aW9uZSBlIHJpc3BldHRvIHBlciBs4oCZaW1wZWdubyBjaGUgYWx0cmUgZHVlIHBlcnNvbmUgaGFubm8gcHJlc28uIiwgImsiOiBbIk5vbiBjZXJjaGkgdmljaW5hbnphIG8gdW5hIHJlbGF6aW9uZSBjb24gcXVhbGN1bm8gbMOgIGRvdmUgbm9uIGPigJnDqCB1biBsZWdhbWUgcHVyby4iLCAiUGFzc2EgZGVsIHRlbXBvIGNvbiBjaGkgw6ggc29sbzogYW56aWFuaSwgYmFtYmluaSwgYW1pY2kuIiwgIkd1YXJkYSBpbCB0dW8gcGFydG5lciBjb21lIHVuIGFuZ2VsbyB0cmF2ZXN0aXRvIGUgZmFpIGF0dGVuemlvbmUgYSBjacOyIGNoZSBndWFyZGkgZSBhIGNpw7IgY2hlIGNvbmRpdmlkaS4iXSwgInYiOiAidW5hIHJlbGF6aW9uZSBhcHBhZ2FudGUsIHBpZW5hIGRpIHRlbmVyZXp6YSwgY29uIHVuIHBhcnRuZXIgYXR0ZW50byBhaSB0dW9pIHBpw7kgcGljY29saSBiaXNvZ25pLiIsICJqIjogInVuIGFtYmllbnRlIHB1bGl0bywgcHVyZXp6YSBpbiB0dXR0byBjacOyIGNoZSB2ZWRpLiJ9LCB7ImMiOiAiRGlyZSBsYSB2ZXJpdMOgIGFsIDEwMCUsIGluIG1vZG8gY2hlIGzigJlpbW1hZ2luZSBuZWxsYSBtZW50ZSBkZWxs4oCZYWx0cm8gc2lhIHVndWFsZSBhbGxhIHJlYWx0w6AuIiwgImsiOiBbIlBhcmxhIGFwZXJ0YW1lbnRlIGNvbiBsYSBmYW1pZ2xpYSwgY29uIGkgY2xpZW50aSBlIGNvbiBpIGNvbGxhYm9yYXRvcmkuIiwgIk1hbnRpZW5pIGxlIHByb21lc3NlLCBhbmNoZSBxdWVsbGUgY2hlIGZhaSBhIHRlIHN0ZXNzby4iLCAiTm9uIGZhcmUgcHJvbWVzc2UgY2hlIHBvdHJlc3RpIG5vbiBtYW50ZW5lcmUuIE5lYW5jaGUgbGUg4oCcYnVnaWUgYmlhbmNoZeKAnSBoYW5ubyBwb3N0by4iXSwgInYiOiAibGUgcGVyc29uZSBzaSBmaWRhbm8gZGVsbGEgdHVhIHBhcm9sYSwgaGFpIGVuZXJnaWEgZSBwYWNlIG1lbnRhbGUuIiwgImoiOiAiYW1pY2kgZSBwYXJ0bmVyIGTigJlhZmZhcmkgb25lc3RpLCBjaGUgc2kgcmlzcGV0dGFubyBhIHZpY2VuZGEuIn0sIHsiYyI6ICJMb2RhcmUgdW5hIHBlcnNvbmEgZGF2YW50aSBhIHF1YWxjdW4gYWx0cm8uIiwgImsiOiBbIkNlcmNhIGxlIHF1YWxpdMOgIGRlbGxlIHBlcnNvbmUgZSBkaWxsZSBhZCBhbHRhIHZvY2UuIiwgIkluY29yYWdnaWEgbGEgY29sbGFib3JhemlvbmUsIG1ldHRpIGluIGNvbnRhdHRvIGxlIHBlcnNvbmUsIHByb211b3ZpIGV2ZW50aSBjaGUgbGUgcml1bmlzY29uby4iLCAiTm9uIGZhcmUgcGFyYWdvbmkgdHJhIGxlIHBlcnNvbmUgZSBub24gZGlzY3JpbWluYXJlIG5lc3N1bm8uIl0sICJ2IjogInJlbGF6aW9uaSBhcHBhZ2FudGkgZSBhbWljaXppZSBjaGUgZHVyYW5vLiIsICJqIjogInVuIGdydXBwbyBpbiBjdWkgbGUgcGVyc29uZSBzaSBzb3N0ZW5nb25vIGEgdmljZW5kYSwgZSBzdHJhZGUgZmFjaWxpIHBlciB0ZS4ifSwgeyJjIjogIlBhcmxhcmUgY29uIGNhbG1hLCBpbiBtb2RvIHJpbGFzc2F0bywgY29uIHVuIHRvbm8gZG9sY2UuIiwgImsiOiBbIkFzY29sdGEgZGF2dmVybyBlIGRhaSBmZWVkYmFjayBjb3N0cnV0dGl2aS4iLCAiTWVkaXRhLCBmYWkgeW9nYSwgcGFzc2VnZ2lhIG5lbGxhIG5hdHVyYSwgYXNjb2x0YSBtdXNpY2EgcmlsYXNzYW50ZS4iLCAiQWJiaSBjdXJhIGFuY2hlIGRlbGxlIHBhcm9sZSBuZWxsYSB0dWEgbWVudGUsIGNvbXByZXNlIHF1ZWxsZSBjaGUgZGljaSBhIHRlIHN0ZXNzby4iXSwgInYiOiAic29ubm8gdHJhbnF1aWxsbyBlIHBhY2UgbWVudGFsZS4iLCAiaiI6ICJwZXJzb25lIGNoZSBjb211bmljYW5vIGluIG1vZG8gcmlsYXNzYXRvLCBzZW56YSBsaXRpZ2kuIn0sIHsiYyI6ICJUcmFzbWV0dGVyZSBs4oCZaWRlYSBjaGUgdHV0dG8gdmllbmUgZGFpIHNlbWkuIiwgImsiOiBbIlBhcmxhIGRpIGNvc2UgY2hlIHBvcnRhbm8gdmFsb3JlIG5lbGxhIHZpdGEgZGVsbGUgcGVyc29uZS4iLCAiU2NlZ2xpIGxpYnJpLCBmaWxtIGUgcG9zdCBkYSBjdWkgaW1wYXJpIGEgcG9ydGFyZSB2YWxvcmUgYWdsaSBhbHRyaS4iLCAiRXZpdGEgaSBwZXR0ZWdvbGV6emkgZGkgb2duaSB0aXBvIGUgaWwgdGVtcG8gcGVyc28gaW4gY29udGVudXRpIHZ1b3RpLiJdLCAidiI6ICJsZSB0dWUgcGFyb2xlIGhhbm5vIHBlc28gZSBpbCB0dW8gdGVtcG8gc2kgcmllbXBpZSBkaSBjb3NlIGNoZSBoYW5ubyBzZW5zby4iLCAiaiI6ICJsZSBwZXJzb25lIHRpIGFzY29sdGFubyBxdWFuZG8gcGFybGkuIn0sIHsiYyI6ICJHaW9pcmUgc2luY2VyYW1lbnRlIHF1YW5kbyBnbGkgYWx0cmkgb3R0ZW5nb25vIGNpw7IgY2hlIGRlc2lkZXJhbm8uIiwgImsiOiBbIlNvc3RpZW5pIGUgaW5jb3JhZ2dpYSBnbGkgYWx0cmkuIiwgIkdpb2lzY2kgZGVpIHN1Y2Nlc3NpIGUgZGVpIHBvc3QgZGVnbGkgYWx0cmkgZSBhcHByZXp6YWxpLiIsICJOb24gY29uZnJvbnRhcnRpIGUgbm9uIGNvbW1lbnRhcmUgbWFpIGNvbiBpcm9uaWEgaWwgc3VjY2Vzc28gZGkgcXVhbGN1bm8uIl0sICJ2IjogInN1Y2Nlc3NvIG5laSB0dW9pIHByb2dldHRpLCBnaW9pYSBpbiBjacOyIGNoZSBmYWksIHNjb3ByaSBsYSB0dWEgcGFzc2lvbmUgZSBsYSB0dWEgdm9jYXppb25lLiIsICJqIjogInVuIGFtYmllbnRlIGluIGN1aSByaWNldmkgc29zdGVnbm8gZSBjaSBzb25vIHJpc29yc2UuIn0sIHsiYyI6ICJDb21wYXNzaW9uZSBwZXIgbGEgc29mZmVyZW56YSBkaSBxdWFsY3Vuby4iLCAiayI6IFsiQWl1dGEgb2duaSB2b2x0YSBjaGUgbmUgaGFpIGzigJlvY2Nhc2lvbmUuIiwgIlNjZWdsaSBsaWJyaSBlIGZpbG0gY2hlIHByb211b3Zvbm8gbGEgY29tcGFzc2lvbmUuIiwgIlF1YW5kbyBxdWFsY3VubyBzYmFnbGlhLCBsYXNjaWEgZGEgcGFydGUg4oCcbG8gc2FwZXZv4oCdIG8g4oCcYXZldm8gcmFnaW9uZeKAnS4iXSwgInYiOiAidHJvdmkgYWl1dG8gcXVhbmRvIG5lIGhhaSBiaXNvZ25vIGVkIGV2b2x2aSBzcGlyaXR1YWxtZW50ZS4iLCAiaiI6ICJwZXJzb25lIGNoZSBzaSBzb3N0ZW5nb25vIGEgdmljZW5kYSwgdW4gYW1iaWVudGUgc2VyZW5vLiJ9LCB7ImMiOiAiU3BpZWdhcmUgYSBxdWFsY3VuIGFsdHJvIGlsIHByaW5jaXBpbyBkZWxsYSBwZW5uYS4iLCAiayI6IFsiRmFpIGRlbGxlIHBhdXNlIGR1cmFudGUgbGEgZ2lvcm5hdGEgcGVyIHJpY29yZGFydGkgY2hlIGNpw7IgY2hlIHZlZGksIGZhaSBlIHBlbnNpIHZpZW5lIGRhaSB0dW9pIHNlbWkuIiwgIkxlZ2dpIGUgYXNjb2x0YSBtYXRlcmlhbGkgc3UgY29tZSBmdW56aW9uYW5vIGkgc2VtaS4iLCAiUXVhbmRvIHF1YWxjb3NhIG5vbiB2YSwgbm9uIGRhcmUgbGEgY29scGEgYWdsaSBhbHRyaTogY2hpZWRpdGkgcXVhbGkgc2VtaSBwaWFudGFyZS4iXSwgInYiOiAiaSB0dW9pIHByb2dldHRpIGFycml2YW5vIGZpbm8gaW4gZm9uZG8gZSBzZW50aSBzZW1wcmUgcGnDuSBsaWJlcnTDoCBpbnRlcmlvcmUuIiwgImoiOiAiY2FwaXNjaSBjacOyIGNoZSBzdWNjZWRlIGludG9ybm8gYSB0ZSBlIG5vbiB0aSBzZW50aSBwacO5IHNvcHJhZmZhdHRvIGRhbGxlIGNvc2UuIn1dLAogIGdyb3VwczpbJ0FaSU9OSScsJ1BBUk9MRScsJ1BFTlNJRVJJJ10sIGRvbWFpbnM6WydEZW5hcm8nLCdSZWxhemlvbmknLCdTYWx1dGUnXQp9OwpYVC5ybyA9IHsKICB1aTp7IG5hdkpvdXJuYWw6J0p1cm5hbCcsIG5hdlByb2ZpbGU6J1Byb2ZpbCcsCiAgICB0b2RvTGVhZDonQ2UgYW0gcHJvbWlzIHPEgyBmYWMuIENlIGFuZ2FqYW1lbnRlIG1pLWFtIGx1YXQuJywKICAgIHVUaXRsZTonVW5lbHRlbGUgdGFsZSBkZSBhemknLCB1TG9ja2VkOifDjm4gZmllY2FyZSB6aSBwb8ibaSBkZXNjb3BlcmkgMiB1bmVsdGUgZGluIGNlbGUgMjA6IENlaSA0IFBhyJlpLCBDZWxlIDQgUHV0ZXJpLCBDZWxlIDQgTGVnaSBhbGUgU2VtaW7Im2Vsb3IsIENlbGUgNCBGbG9yaSDImWkgQ2VsZSA0IFByaW9yaXTEg8ibaS4nLAogICAgdUxvY2tNc2c6J0FpIG5ldm9pZSBkZSB1biBhYm9uYW1lbnQgYWN0aXYgY2Egc8SDIGZvbG9zZciZdGkgdW5lbHRlbGUuJywgdVNlZVN1YnM6J1ZlemkgYWJvbmFtZW50ZWxlJywKICAgIHVEcmF3Tm90ZTonQXBhc8SDIMiZaSBkZXNjb3BlcsSDIGNlbGUgMiB1bmVsdGUgY3UgY2FyZSBsdWNyZXppIGFzdMSDemkuJywgdURyYXc6J0Rlc2NvcGVyxIMgdW5lbHRlbGUgZGUgYXppJywKICAgIHVROidDdW0gZm9sb3Nlc2MgYWNlYXN0xIMgY29tYmluYcibaWUgZGUgdW5lbHRlIGFzdMSDemk\/JywgdVBoOidTY3JpZSBwZW50cnUgdGluZS4gUsSDbcOibmUgZG9hciDDrm4ganVybmFsdWwgdMSDdS4nLAogICAgdVNhdmU6J1NhbHZlYXrEgyDDrm4ganVybmFsJywgdVVwZGF0ZTonQWN0dWFsaXplYXrEgyDDrm4ganVybmFsJywgdUFnYWluOidBbGVnZSBvIG5vdcSDIGNvbWJpbmHIm2llIGRlIHVuZWx0ZScsIHVTYXZlZDonU2FsdmF0IMOubiBqdXJuYWwnLAogICAgdVNpbU9uOidWYXJpYW50xIMgZGUgdGVzdDogc2ltdWxlYXrEgyBhYm9uYW1lbnQgYWN0aXYnLCB1U2ltT2ZmOidWYXJpYW50xIMgZGUgdGVzdDogc2ltdWxlYXrEgyBmxINyxIMgYWJvbmFtZW50JywKICAgIGh1YlRpdGxlOidDZSBwcmFjdGljaSBhY3VtPycsIGh1YkxlYWQ6J0FsZWdlIHByYWN0aWNhLiBUb3QgY2UgZmFjaSBhanVuZ2Ugw65uIGp1cm5hbHVsIHTEg3UuJywgaHViQnVzeTonUHJhY3RpY2EgZSDDrm4gY3VycyDCtyByZXZpbm8gbGEgdGltZXInLAogICAgbXlQcm9maWxlOidQcm9maWx1bCBtZXUnLCBjaGFuZ2VOYW1lOidTY2hpbWLEgyBudW1lbGUnLCBwaWNrTmFtZTonQWxlZ2UgdW4gbnVtZSBwZW50cnUgY29tdW5pdGF0ZScsCiAgICBzdFByYWN0OidwcmFjdGljaScsIHN0TWluOidtaW51dGUnLCBzdFRvZG86J1RvIERvIGbEg2N1dGUnLCBhdmF0YXI6J0F2YXRhcnVsIG1ldScsIGFkZHJlc3M6J0N1bSDDrsibaSB2b3JiZXNjJywKICAgIGludHJvOidJbnRyb2R1Y2VyZScsIGFib3V0OidEZXNwcmUgYXBsaWNhyJtpZScsIGthcm1hOidDZWxlIDEwIEthcm1hIFBveml0aXZlJywga2FybWFTdWI6J0luc3BpcmHIm2lhIGFwbGljYcibaWVpJywgY29udGFjdDonQ29udGFjdCcsCiAgICBwcm9mQmFubmVyOidWYXJpYW50xIMgZGUgdGVzdC4gw45uIGFwbGljYcibaWEgZGUgdGVsZWZvbiB2ZWkgYXZlYSBhaWNpIMiZaTogcmVtaW5kZXJlbGUgKHDDom7EgyBsYSA2IHBlIHppKSwgc2NoaW1iYXJlYSBlbWFpbHVsdWksIMiZdGVyZ2VyZWEgZGF0ZWxvciwgyJl0ZXJnZXJlYSBjb250dWx1aSwgcG9saXRpY2EgZGUgY29uZmlkZW7Im2lhbGl0YXRlIMiZaSB0ZXJtZW5paS4nLAogICAgb3ZQcmV2OifDjm5hcG9pJywgb3ZOZXh0OidNYWkgZGVwYXJ0ZScsIG92U3RhcnQ6J8OObmNlcGUnLCBieURvbWFpbjonR1JVUEFSRSBQRSBET01FTklJJywKICAgIGthcm1hTGVhZDonSW5zcGlyYcibaWEgYXBsaWNhyJtpZWkuIExlIHBvyJtpIGZvbG9zaSDDrm4gcHJhY3RpY2EgY2Vsb3IgNCBwdXRlcmkgyJlpIGxhIG1lZGl0YcibaWEgYnVjdXJpZWkuJyB9LAogIGtpbmRVOidVbmVsdGVsZSB6aWxlaScsCiAgc2V0czp7CiAgICBwYXNpOnsibmFtZSI6ICJDZWkgNCBQYciZaSIsICJ1bml0IjogIlBhc3VsIiwgInN1YiI6ICJjYSBzxIMgdXppIHNlbWluyJtlbGUgcGVudHJ1IG9iaWVjdGl2dWwgdMSDdSIsICJpdGVtcyI6IFt7InQiOiAiU3B1bmUgY2UgdnJlaSDDrm4gdmlhyJthIHRhIMOubnRyLW8gcHJvcG96acibaWUgc2N1cnTEgywiLCAiYWRkIjogImxhIGFmaXJtYXRpdiwgbGEgdGltcHVsIHByZXplbnQuIn0sIHsidCI6ICJQbGFuaWZpY8SDIHBlIGNpbmUgdmVpIGFqdXRhIHPEgyBvYsibaW7EgyBhY2VsYciZaSBsdWNydSDImWkgdW5kZSB2ZWkgaW52aXRhIGFjZWEgcGVyc29hbsSDIHBlbnRydSBvIGRpc2N1yJtpZS4iLCAiYWRkIjogIkVhIGRldmluZSBwYXJ0ZW5lcnVsIHTEg3Uga2FybWljLiJ9LCB7InQiOiAiQWp1dMSDIGVmZWN0aXYgcGVyc29hbmEgcmVzcGVjdGl2xIMuIiwgImFkZCI6ICJEZSBleGVtcGx1LCBvIG9yxIMgcGUgc8SDcHTEg23Dom7EgywgbGEgbyBjYWZlYS4ifSwgIkbEgyBNZWRpdGHIm2lhIEJ1Y3VyaWVpOiBjw6JuZCBtZXJnaSBsYSBjdWxjYXJlLCBnw6JuZGXImXRlLXRlIGN1IGJ1Y3VyaWUgbGEgbHVjcnVyaWxlIGJ1bmUgcGUgY2FyZSBsZSBmYWNpIHBlbnRydSBjZWlsYWzIm2kuIl19LAogICAgcHV0ZXJpOnsibmFtZSI6ICJDZWxlIDQgUHV0ZXJpIiwgInVuaXQiOiAiUHV0ZXJlYSIsICJzdWIiOiAicGVudHJ1IGRlemFjdGl2YXJlYSBzZW1pbsibZWxvciBuZWdhdGl2ZSBwbGFudGF0ZSDDrm4gdHJlY3V0IiwgIml0ZW1zIjogW3siaCI6ICJSZWFtaW50aXJlYSBwaXh1bHVpIiwgImFkZCI6ICJUb2F0ZSBsdWNydXJpbGUgdmluIGRpbiBzZW1pbsibZWxlIHBsYW50YXRlIMOubiB0cmVjdXQuIEFtaW50ZciZdGUtyJtpIGNlIHNlbWluyJtlIGFpIHBsYW50YXQgw65uIHRyZWN1dCwgY2FyZSBhdSBjcmVzY3V0LiJ9LCB7ImgiOiAiUmVncmV0dWwgaW50ZWxpZ2VudCIsICJleCI6ICJDb27ImXRpZW50aXplYXrEgyBiZW5lZmljaWlsZSBhdnV0ZSBjw6JuZCBhaSBwbGFudGF0IHPEg23Dom7Im2EgyJlpIGlhIG8gZGVjaXppZSBmZXJtxIMgZGUgYSBkZXphY3RpdmEgYWNlYXN0xIMgc8SDbcOibsibxIMgw65uYWludGUgY2EgZWEgc8SDIHNlIG11bHRpcGxpY2UgyJlpIG1haSBtdWx0LiJ9LCB7ImgiOiAiUmVzdHJpY8ibaWEiLCAiZXgiOiAiUHJvbWl0ZSBzxIMgbnUgbWFpIGZhY2kgYWNlZWHImWkgZ3JlyJllYWzEgyBwZW50cnUgdW4gaW50ZXJ2YWwgZGUgdGltcC4ifSwgeyJoIjogIkFudGlkb3R1bCIsICJleCI6ICJGxIMgY2V2YSBwb3ppdGl2IHBlbnRydSBhIGVjaGlsaWJyYSBzZW1pbsibZWxlIG5lZ2F0aXZlLiJ9XX0sCiAgICBsZWdpOnsibmFtZSI6ICJDZWxlIDQgTGVnaSBhbGUgU2VtaW7Im2Vsb3IiLCAidW5pdCI6ICJMZWdlYSIsICJzdWIiOiAibGVnaWxlIGR1cMSDIGNhcmUgZnVuY8ibaW9uZWF6xIMgc2VtaW7Im2VsZSIsICJpdGVtcyI6IFt7ImgiOiAiUHJpbWXImXRpIGNlZWEgY2Ugb2ZlcmkiLCAiZXgiOiAiQ3VsZWdpIGNlIGFpIHNlbcSDbmF0OiBkYWPEgyBwbGFudGV6aSBzZW1pbsibZSBkZSBwZXBlbmUsIHZlaSBvYsibaW5lIHVuIHBlcGVuZS4iLCAiYWRkIjogIkxlZ2VhIGZ1bmPIm2lvbmVhesSDIMOubiBhbWJlbGUgc2Vuc3VyaTogYmluZWxlIGFkdWNlIGJpbmUsIGlhciBvIGZhcHTEgyBuZWdhdGl2xIMgYWR1Y2UgY2V2YSBuZWdhdGl2LiJ9LCB7ImgiOiAiU2VtaW7Im2VsZSBjcmVzYyIsICJleCI6ICJDZWVhIGNlIHByaW1lyJl0aSDDrm5hcG9pIGVzdGUgw65udG90ZGVhdW5hIG11bHQsIG11bHQgbWFpIG1hcmUgZGVjw6J0IGNlIGFpIGbEg2N1dC4iLCAiYWRkIjogIsiYaSBjZWxlIGJ1bmUsIMiZaSBjZWxlIG5lZ2F0aXZlLiJ9LCB7ImgiOiAiRGFjxIMgbnUgZmFjaSBuaW1pYywgbnUgc2Ugw65udMOibXBsxIMgbmltaWMiLCAiZXgiOiAiRGFjxIMgbnUgZmFjaSBuaW1pYywgbnUgdmVpIHByaW1pIG5pbWljIMOubmFwb2kuIiwgImFkZCI6ICJEb2FyIHPEgyBzcGVyaSBzYXUgc8SDIGHImXRlcMibaSBudSBwbGFudGVhesSDIG5pY2lvIHPEg23Dom7Im8SDLiJ9LCB7ImgiOiAiQ2UgYWkgcGxhbnRhdCB0cmVidWllIHPEgyByxINzYXLEgyIsICJleCI6ICJEYWPEgyBmYWNpIGNldmEsIGF0dW5jaSB0cmVidWllIHPEgyBwcmltZciZdGkgY2V2YSDDrm5hcG9pLiIsICJhZGQiOiAiU2VtaW7Im2VsZSBudSBkaXNwYXI6IG5pY2kgY2VsZSBidW5lLCBuaWNpIGNlbGUgbmVnYXRpdmUuIFLEg3NhciBsYSB1biBtb21lbnQgZGF0LiJ9XX0sCiAgICBmbG9yaTp7Im5hbWUiOiAiQ2VsZSA0IEZsb3JpIiwgInVuaXQiOiAiRmxvYXJlYSIsICJzdWIiOiAiZmVsdWwgw65uIGNhcmUgcm9kZXNjIHNlbWluyJtlbGUiLCAiaXRlbXMiOiBbeyJoIjogIlByaW1lyJl0aSBleGFjdCBjZWVhIGNlIGRhaS4iLCAiYWRkIjogIkNpbmUgc2VhbcSDbsSDIGl1YmlyZSBjdWxlZ2UgaXViaXJlLiJ9LCB7ImgiOiAiRmllY2FyZSBhY8ibaXVuZSBjcmVlYXrEgyB1biBvYmljZWkuIiwgImFkZCI6ICJDaGlhciDImWkgZ8OibmR1cmlsZSBjYXJlIMOuyJtpIHZpbiDigJ5mxINyxIMgc8SDIHZyZWnigJ0gc3VudCBvYmljZWl1cmkgY3JlYXRlIGRlIGNlIGFpIGbEg2N1dCDDrm5haW50ZS4gQ2UgcmVwZcibaSBhemkgw67Im2kgdmluZSBtYWkgdciZb3IgbcOiaW5lLiJ9LCB7ImgiOiAiQ2VlYSBjZSBmYWNpIGNyZWVhesSDIG9hbWVuaWkgyJlpIG1lZGl1bCB0xIN1LiIsICJhZGQiOiAiQ8OibmQgw65pIGFwcmVjaWV6aSBwZSBjZWlsYWzIm2kgyJlpIMOuaSBhZHVjaSDDrm1wcmV1bsSDLCBhanVuZ2kgc8SDIGZpaSDDrm5jb25qdXJhdCBkZSBvYW1lbmkgY2FyZSBzZSDDrm7Im2VsZWcgYmluZS4gQ8OibmQgZGV6YmluaSwgdmVpIHZlZGVhIG9hbWVuaSBjYXJlIHNlIGNlYXJ0xIMuIn0sIHsiaCI6ICJDZWVhIGNlIGZhY2kgY3JlZWF6xIMgbHVtZWEgw65uIGNhcmUgdmVpIHDEg8iZaS4iLCAiYWRkIjogIkNlIHBsYW50ZXppIGF6aSBwcmVnxIN0ZciZdGUgbHVtZWEgw65uIGNhcmUgdmVpIGFqdW5nZSBtw6JpbmUuIEPDom5kIHNjaGltYmkgY2UgZmFjaSwgc2Ugc2NoaW1ixIMgyJlpIGx1bWVhIHRhLiJ9XX0sCiAgICBwcmlvcml0YXRpOnsgbmFtZTonQ2VsZSA0IFByaW9yaXTEg8ibaScsIHVuaXQ6J1ByaW9yaXRhdGVhJywgc3ViOidvcmRpbmVhIMOubiBjYXJlIHJvZGVzYyBzZW1pbsibZWxlJywgaXRlbXM6WwogICAgICB7IGg6J1ByaW11bCB2ZW5pdCwgcHJpbXVsIGllyJlpdC4nLCBleDonTyBzxINtw6JuyJvEgyBwbGFudGF0xIMgw65uYWludGVhIGFsdGVpYSB2YSByxINzxINyaSDDrm5haW50ZWEgY2VsZWkgZGUtYSBkb3VhLiBEYWPEgyBhanXIm2kgdW4gcHJpZXRlbiBzxIMgZmllIG1haSBjcmVhdGl2IGxhIG11bmPEgyBsdW5pIMiZaSBhcG9pIGFqdcibaSB1biBhbHQgcHJpZXRlbiBzxIMgZmllIG1haSBjcmVhdGl2IG1hcsibaSwgc8SDbcOibsibYSBkZSBsdW5pIHNlIHZhIGRlc2NoaWRlIHByaW1hLicgfSwKICAgICAgeyBoOidDw6JuZCBhaSB1biBvYmljZWksIHPEg23Dom7Im2Egcm9kZciZdGUgY3UgcHJpb3JpdGF0ZSBmYcibxIMgZGUgcHJpb3JpdGF0ZWEgMS4nLCBleDonRGFjxIMgbC1haSBhanV0YXQgcGUgcHJpZXRlbnVsIGRlIG1hcsibaSDDrm4gbW9kIHJlZ3VsYXQsIGNhIHBlIHVuIG9iaWNlaSwgc8SDbcOibsibYSBwbGFudGF0xIMgY3UgZWwgc2UgdmEgZGVzY2hpZGUgw65uYWludGVhIHNlbWluyJtlaSBwbGFudGF0ZSBjdSBwcmlldGVudWwgZGUgbHVuaS4nIH0sCiAgICAgIHsgaDonQ8OibmQgYWp1yJtpIHBlIGNpbmV2YSBjYXJlIHVybWVhesSDIHPEgyB0cmVhY8SDIHByaW50ci1vIHNjaGltYmFyZSBtYWpvcsSDIHBlcnNvbmFsxIMsIHPEg23Dom7Im2Egcm9kZciZdGUgY3UgcHJpb3JpdGF0ZSBmYcibxIMgZGUgcHJpb3JpdGF0ZWEgMi4nLCBleDonRGFjxIMgYWkgYWp1dGF0IMOubmPEgyB1biBwcmlldGVuIHPEgyBmaWUgbWFpIGNyZWF0aXYgbWllcmN1cmksIGlhciBqb2kgw65uIHZpYcibYSBsdWkgdXJtYSBzxIMgc2Ugw65udMOibXBsZSBvIHNjaGltYmFyZSBtYWpvcsSDLCBzZW1pbsibZWxlIHBsYW50YXRlIGZvYXJ0ZSBhcHJvYXBlIGRlIHVuIGV2ZW5pbWVudCBtYWpvciBzZSBjb2Mgw65uYWludGVhIGNlbG9yIHBsYW50YXRlIGFudGVyaW9yLicgfSwKICAgICAgeyBoOidDw6JuZCBhanXIm2kgcGUgY2luZXZhIGNhcmUgc2UgZGVkaWPEgyB1bnVpIHNjb3AgY2FyZSBzZXJ2ZciZdGUgbWFpIG11bHRvciBwZXJzb2FuZSwgc8SDbcOibsibYSByb2RlyJl0ZSBjdSBwcmlvcml0YXRlIGZhyJvEgyBkZSBwcmlvcml0YXRlYSAzLicsIGV4OidEYWPEgyBwcmlldGVudWwgYWp1dGF0IG1hcsibaSDDrm5jZXJjYSBzxIMgZ8SDc2Vhc2PEgyB1biBtb2QgY3JlYXRpdiBkZSBhIHZpbmRlY2EgY2FuY2VydWwsIGlhciBwcmlldGVuaWkgYWp1dGHIm2kgbHVuaSDImWkgbWllcmN1cmkgw65uY2VyY2F1IHPEgyBnxINzZWFzY8SDIHVuIG1vZCBtYWkgY3JlYXRpdiBkZSBhIHNlIG1hY2hpYSwgc2VtaW7Im2VsZSBkZSBtYXLIm2kgbyBpYXUgw65uYWludGUgyJlpIHNlIGRlc2NoaWQgcHJpbWVsZS4nIH0gXSB9CiAgfSwKICBpbnRybzpbCiAgICBbJ0JpbmUgYWkgdmVuaXQgw65uIGFwbGljYcibaWEgU2VtaW7Im2UgQnVuZScsJ1RvdCBjZSB0csSDaWXImXRpIHZpbmUgZGluIHNlbWluyJtlbGUgcGUgY2FyZSBsZS1haSBwbGFudGF0IHByaW4gZ8OibmR1cmksIHZvcmJlIMiZaSBmYXB0ZS4gQXBsaWNhyJtpYSB0ZSBhanV0xIMgc8SDIHZlemkgY2UgcGxhbnRlemkgw65uIGZpZWNhcmUgemkgyJlpIHPEgyBhbGVnaSBjb27ImXRpZW50IHNlbWluyJtlbGUgcGVudHJ1IHZpYcibYSBwZSBjYXJlIMibaS1vIGRvcmXImXRpLiddLAogICAgWydQcmFjdGljaWxlIHRhbGUnLCdNZWRpdGHIm2llIMiZaSB5b2dhIGN1IHRpbWVyLCByZWN1bm\/ImXRpbsibZSDImWkgc3VjY2VzZSwgbWVkaXRhyJtpYSBidWN1cmllaSDImWkgY2VsZSA0IHB1dGVyaS4gTGUgZ8SDc2XImXRpIHBlIHRvYXRlIGxhIGJ1dG9udWwgZGluIG1pamxvYywgaWFyIHRvdCBjZSBmYWNpIGFqdW5nZSDDrm4ganVybmFsdWwgdMSDdS4nXSwKICAgIFsnVW5lbHRlbGUgemlsZWknLCdHxINzZciZdGUgdW4gbW9kIGNyZWF0aXYgZGUgYSBmb2xvc2kgY2VsZSAyIHVuZWx0ZSBwZW50cnUgb2JpZWN0aXZ1bCB0xIN1LiddLAogICAgWydSZXNwZWN0xIMgYW5nYWphbWVudHVsIGx1YXQhJywnQ2Ugc2NyaWkgbGEg4oCeUGUgY2luZSBhanV04oCdIMiZaSBsYSBwdXRlcmVhIGEgNC1hIGFqdW5nZSDDrm4gbGlzdGEgVG8gRG8uIEJpZmVhesSDIGR1cMSDIGNlIGZhY2k6IHNlbWluyJtlbGUgYnVuZSBjcmVzYywgaWFyIGNlbGUgbmVnYXRpdmUgc2UgZGV6YWN0aXZlYXrEgy4nXSwKICAgIFsnQnVjdXLEgy10ZSBkZSBzZW1pbsibZWxlIGFsdG9yYScsJ8OObiBjb211bml0YXRlIHZlemksIGFub25pbSwgY2UgYXUgcGxhbnRhdCBjZWlsYWzIm2kuIEPDom5kIHRlIGJ1Y3VyaSBwZW50cnUgZWksIHV6aSBzZW1pbsibZWxlIHBlbnRydSBvYmllY3RpdnVsIHTEg3UuJ10gXSwKICBhYm91dDpbCiAgICBbJ0NlIGVzdGUgU2VtaW7Im2UgQnVuZScsWydTZW1pbsibZSBCdW5lIGVzdGUganVybmFsdWwgdMSDdSBkZSBwcmFjdGljxIMgcGVudHJ1IHNpc3RlbXVsIHNlbWluyJtlbG9yLicsJ01pbnRlYSBub2FzdHLEgyDDrm5yZWdpc3RyZWF6xIMgdG90IGNlIGfDom5kaW0sIHNwdW5lbSDImWkgZmFjZW0uIEZpZWNhcmUgZ8OibmQsIHZvcmLEgyBzYXUgZmFwdMSDIGRldmluZSBvIHPEg23Dom7Im8SDIGNhcmUgY3JlyJl0ZSDDrm4gaW50ZXJpb3J1bCBtaW7Im2lpIG5vYXN0cmUgyJlpLCBsYSB1biBtb21lbnQgZGF0LCBzZSDDrm50b2FyY2Ugw65uIHZpYcibYSBub2FzdHLEgyBjYSBleHBlcmllbsibxIMuJywnQXBsaWNhyJtpYSB0ZSBhanV0xIMgc8SDIG9ic2VydmkgY2UgcGxhbnRlemkgyJlpIHPEgyBhbGVnaSBjb27ImXRpZW50IHNlbWluyJtlbGUgcGVudHJ1IGNlZWEgY2Ugw67Im2kgZG9yZciZdGkuJ11dLAogICAgWydDdW0gbyBmb2xvc2XImXRpIMOubiBmaWVjYXJlIHppJyxbJ0RpbWluZWHIm2E6IGFtaW50ZciZdGUtyJtpIG9iaWVjdGl2dWwgyJlpIGRlc2NvcGVyxIMgdW5lbHRlbGUgemlsZWkuJywnw45uIHRpbXB1bCB6aWxlaTogb2JzZXJ2xIMgY2UgcGxhbnRlemkuIE5vdGVhesSDIHJlY3Vub8iZdGluyJtlbGUgyJlpIHN1Y2Nlc2VsZSwgaWFyIGPDom5kIHJlY3Vub8iZdGkgbyBzxINtw6JuyJvEgyBuZWdhdGl2xIMsIGx1Y3JlYXrEgyBjdSBjZWxlIDQgcHV0ZXJpLicsJ1NlYXJhOiBmxIMgbWVkaXRhyJtpYSBidWN1cmllaS4nLCdOdSBlIG5ldm9pZSBkZSB0ZXh0ZSBsdW5naS4gQ8OidGV2YSBtaW51dGUgZGUgb2JzZXJ2YXJlIHNpbmNlcsSDLCBmxINyxIMganVkZWNhdMSDIMiZaSBmxINyxIMgdmlub3bEg8ibaWUsIHN1bnQgZGUgYWp1bnMuIEltcG9ydGFudCBlc3RlIHPEgyByZXZpaSDDrm4gZmllY2FyZSB6aS4nXV0sCiAgICBbJ1BlbnRydSBjaW5lIGVzdGUnLFsnUGVudHJ1IG9yaWNpbmUgYXJlIHVuIG9iaWVjdGl2IHNhdSB1biB2aXMgyJlpIHZyZWEgc8SDIGFqdW5nxIMgbGEgZWwgcGxhbnTDom5kIHNlbWluyJtlbGUgcG90cml2aXRlLicsJ0RhY8SDIHRyZWNpIHByaW50ci1vIHBlcmlvYWTEgyBncmVhIHNhdSBvIHNpdHVhyJtpZSBzZSByZXBldMSDLCBlc3RlIHNlbW4gY8SDIHNlIGNvYyBzZW1pbsibZSBwbGFudGF0ZSDDrm4gdHJlY3V0LiBDdSBjZWxlIDQgcHV0ZXJpIGxlIHBvyJtpIGRlemFjdGl2YSwgaWFyIHBsYW50w6JuZCBjb27ImXRpZW50IHNlbWluyJtlIGJ1bmUgZWNoaWxpYnJlemkgYmFsYW7Im2EuJ11dLAogICAgWydDw6JuZCByZWN1bm\/ImXRpIG8gc8SDbcOibsibxIMgbmVnYXRpdsSDJyxbJ1RvyJtpIHBsYW50xINtLCBmxINyxIMgc8SDIG5lIGTEg20gc2VhbWEsIMiZaSBzZW1pbsibZSBuZWdhdGl2ZS4gRGFjxIMgbnUgbGUgZGV6YWN0aXbEg20sIGVsZSBjb250aW51xIMgc8SDIGNyZWFzY8SDLicsJ0N1IGNlbGUgNCBwdXRlcmk6IMOuyJtpIGFtaW50ZciZdGkgZGUgdW5kZSB2aW4gdG9hdGUgbHVjcnVyaWxlLCBjb27ImXRpZW50aXplemkgYmVuZWZpY2lpbGUgcGUgY2FyZSBsZS1haSBhdnV0IMiZaSBkZWNpemkgc8SDIGRlemFjdGl2ZXppIHPEg23Dom7Im2EsIHByb21pyJtpIHPEgyBudSBtYWkgcmVwZcibaSBncmXImWVhbGEgbyBwZXJpb2FkxIMgyJlpIGZhY2kgY2V2YSBwb3ppdGl2IGNhcmUgc8SDIG8gZWNoaWxpYnJlemUuJywnQ2UgcHJvbWnIm2kgbGEgcHV0ZXJlYSBhIDQtYSBhanVuZ2Ugw65uIFRvIERvLCBjYSBzxIMgbnUgdWnIm2kgc8SDIMiZaSBmYWNpLiddXSwKICAgIFsnTWVkaXRhyJtpYSBidWN1cmllaScsWydNb21lbnR1bCBkaW5haW50ZSBkZSBzb21uIGZhY2UgbGVnxIN0dXJhIGRpbnRyZSBjb27ImXRpZW50IMiZaSBzdWJjb27ImXRpZW50LiBDZSBnw6JuZGXImXRpIGF0dW5jaSBjb250aW51xIMgc8SDIGNyZWFzY8SDIMOubiB0aW1wIGNlIGRvcm1pLicsJ0RlIGFjZWVhLCBzZWFyYSwgZ8OibmRlyJl0ZS10ZSBjdSBidWN1cmllIGxhIGJpbmVsZSBwZSBjYXJlIGwtYWkgZsSDY3V0IHBlbnRydSBjZWlsYWzIm2kgyJlpIGRlZGljxIMtbCBvYmllY3RpdnVsdWkgdMSDdS4nLCdPIHBvyJtpIGZhY2UgyJlpIMOubiB0aW1wdWwgemlsZWksIG9yaWPDom5kIGFpIGPDonRldmEgbWludXRlLiddXSwKICAgIFsnVW5lbHRlbGUgemlsZWknLFsnQ2VsZSAyMCBkZSB1bmVsdGUgc3VudCBncnVwYXRlIMOubiA1IHNldHVyaTogQ2VpIDQgUGHImWksIENlbGUgNCBQdXRlcmksIENlbGUgNCBMZWdpIGFsZSBTZW1pbsibZWxvciwgQ2VsZSA0IEZsb3JpIMiZaSBDZWxlIDQgUHJpb3JpdMSDyJtpLiBGaWVjYXJlIHNldCBhcmUgY3Vsb2FyZWEgyJlpIHNlbW51bCBsdWkuJyx7IHN1YnM6J8OObiBmaWVjYXJlIHppIGRlc2NvcGVyaSAyIHVuZWx0ZSDImWkgc2NyaWkgY3VtIGZvbG9zZciZdGkgY29tYmluYcibaWEgbG9yLiBVbmVsdGVsZSBzdW50IGRpc3BvbmliaWxlIHBlbnRydSBjZWkgY3UgYWJvbmFtZW50IGFjdGl2LicgfV1dLAogICAgWydDb211bml0YXRlYScsWydQb8ibaSDDrm1wxINydMSDyJlpIGFub25pbSByZWN1bm\/ImXRpbsibZWxlLCBzdWNjZXNlbGUsIG1lZGl0YcibaWEgYnVjdXJpZWkgc2F1IGNlbGUgNCBwdXRlcmksIHN1YiB1biBudW1lIGFsZXMgZGUgdGluZS4nLCdDw6JuZCB0ZSBidWN1cmkgZGUgc2VtaW7Im2VsZSBhbHRvcmEsIHV6aSBzZW1pbsibZWxlIHBlbnRydSBvYmllY3RpdnVsIHTEg3UuIEPDom5kIGNpdGXImXRpIGNlbGUgNCBwdXRlcmkgYWxlIGN1aXZhLCBsZSBwb8ibaSBwYXJjdXJnZSDImWkgcGVudHJ1IHRpbmUuJywnQ2Ugc2NyaWkgcsSDbcOibmUgcHJpdmF0LCBjdSBleGNlcMibaWEgYSBjZWVhIGNlIGFsZWdpIHR1IHPEgyDDrm1wxINydMSDyJllyJl0aS4nXV0gXSwKICBrYXJtYTpbCiAgICBbJ1Byb3RlamVhesSDIHZpYcibYScsJ0FpIGdyaWrEgyBkZSBvYW1lbmksIGRlIGFuaW1hbGUgyJlpIGRlIHBsYW50ZS4gTnUgcsSDbmkgaW50ZW7Im2lvbmF0IG5pY2lvIGZpaW7Im8SDLicsJ1PEg23Dom7Im2Egc8SDbsSDdMSDyJtpaSddLAogICAgWydQcm90ZWplYXrEgyBwcm9wcmlldGF0ZWEnLCdExINydWllyJl0ZSDImWkgYWp1dMSDLWkgcGUgY2VpbGFsyJtpLiBOdSBsdWEgY2UgbnUgw67Im2kgYXBhcsibaW5lIGbEg3LEgyBwZXJtaXNpdW5lLicsJ1PEg23Dom7Im2EgcHJvc3Blcml0xIPIm2lpJ10sCiAgICBbJ1B1cml0YXRlIHNleHVhbMSDJywnT25vcmVhesSDIGxlZ8SDdHVyYSBkaW50cmUgZG9pIG9hbWVuaSBjYXJlIMiZaS1hdSBsdWF0IHVuIGFuZ2FqYW1lbnQgdW51bCBmYcibxIMgZGUgY2VsxINsYWx0LCBhIHRhIMiZaSBhIGNlbG9ybGFsyJtpLicsJ1PEg23Dom7Im2EgZmVyaWNpcmlpJ10sCiAgICBbJ0ludGVncml0YXRlJywnU3B1bmUgYWRldsSDcnVsIMiZaSDIm2luZS3Im2kgcHJvbWlzaXVuaWxlLiBOdSBzcHVuZSBjZSBudSBzaW3Im2kgY3UgYWRldsSDcmF0LicsJ1PEg23Dom7Im2Egw65uY3JlZGVyaWknXSwKICAgIFsnU3B1bmUgY3V2aW50ZSBjYXJlIGFkdWMgb2FtZW5paSDDrm1wcmV1bsSDJywnRm9sb3NlyJl0ZSBjdXZpbnRlbGUgY2Egc8SDIGFkdWNpIG9hbWVuaWkgw65tcHJldW7Egy4gRXZpdMSDIHZvcmJlbGUgY2FyZSBkZXpiaW7EgyBzYXUgY3JlZWF6xIMgbmXDrm7Im2VsZWdlcmkuJywnU8SDbcOibsibYSBhcm1vbmllaSddLAogICAgWydWb3JiZciZdGUgY3UgYmzDom5kZcibZSDImWkgZHVsY2VhyJvEgycsJ0FwcmVjaWF6xIMtaSBwZSBjZWlsYWzIm2kgyJlpIHZvcmJlyJl0ZS1sZSBjdSByZXNwZWN0LiBFdml0xIMgY3V2aW50ZWxlIGR1cmUgyJlpIGNhcmUgcsSDbmVzYy4nLCdTxINtw6JuyJthIHJlc3BlY3R1bHVpJ10sCiAgICBbJ1NwdW5lIGRvYXIgY3V2aW50ZSBjYXJlIGF1IHJvc3QnLCdTcHVuZSBsdWNydXJpIGNhcmUgYWp1dMSDIMiZaSBhdSB1biByb3N0LiBFdml0xIMgYsOicmZhIMiZaSB2b3JiZWxlIGdvYWxlLicsJ1PEg23Dom7Im2EgdGltcHVsdWknXSwKICAgIFsnQnVjdXLEgy10ZSBwZW50cnUgc3VjY2VzdWwgYWx0b3JhJywnQnVjdXLEgy10ZSBjw6JuZCBhbMibaWkgcHJpbWVzYyBjZSDDrsiZaSBkb3Jlc2MgyJlpIGFwcmVjaWF6xIMgY2UgYXUuIEV2aXTEgyBpbnZpZGlhIMiZaSBsxINjb21pYS4nLCdTxINtw6JuyJthIHN1Y2Nlc3VsdWknXSwKICAgIFsnQ29tcGFzaXVuZSBwZW50cnUgcHJvYmxlbWVsZSBhbHRvcmEnLCdPZmVyxIMgY29tcGFzaXVuZSBjZWxvciBjYXJlIHRyZWMgcHJpbiBncmV1dMSDyJtpIMiZaSBhanV0xIMtaSBjdW0gcG\/Im2kuIE51IHRlIGJ1Y3VyYSBkZSBuZWNhenVyaWxlIGFsdG9yYS4nLCdTxINtw6JuyJthIGNvbXBhc2l1bmlpJ10sCiAgICBbJ8OObsibZWxlZ2UgY3VtIGZ1bmPIm2lvbmVhesSDIHBpeHVsJywnQW1pbnRlyJl0ZS3Im2kgY8SDIHRvdHVsIHZpbmUgZGluIHNlbWluyJtlbGUgcGxhbnRhdGUgyJlpIGPEgyBzY2hpbWJhcmVhIMOubmNlcGUgZGUgbGEgdGluZS4gVHLEg2llyJl0ZSDImWkgw65tcMSDcnTEg8iZZciZdGUgcHJpbmNpcGl1bCBwaXh1bHVpLicsJ1PEg23Dom7Im2Egw65uyJtlbGVwY2l1bmlpJ10gXSwKICBrbGFiZWxzOlsiw45uIGNlbnRydSIsICJQZSBjZXJjdXJpLCB6aSBkZSB6aSIsICJDZSByb2RlyJl0ZSIsICLDjm4gdmlhyJthIHRhOiIsICLDjm4ganVydWwgdMSDdToiXSwga2ludHJvOiJGaWVjYXJlIGthcm1hIHNlIHBsYW50ZWF6xIMg4oCew65uIGNlbnRydeKAnSwgcHJpbiBmYXB0YSBjZWEgbWFpIHB1dGVybmljxIMsIMiZaSDigJ5wZSBjZXJjdXJp4oCdLCBwcmluIGdlc3R1cmlsZSBtaWNpIGRlIHppIGN1IHppLiBGaWVjYXJlIHPEg23Dom7Im8SDIHJvZGXImXRlIMOubiBkb3XEgyBsb2N1cmk6IMOubiB2aWHIm2EgdGEgyJlpIMOubiBsdW1lYSBkaW4ganVydWwgdMSDdS4iLAogIGthcm1hWDpbeyJjIjogIlPEgyBzYWx2ZXppIG8gdmlhyJvEgyBzYXUgc8SDIGFqdcibaSBvIHZpYcibxIMgbm91xIMgc8SDIHZpbsSDIHBlIGx1bWUuIiwgImsiOiBbIkFpIGdyaWrEgyBkZSBjb3JwdWwgdMSDdTogbWnImWNhcmUsIHNvbW4sIGhyYW7EgyBzxINuxIN0b2FzxIMsIGN1IG1haSBwdcibaW7EgyBjYXJuZSwgYWxjb29sIMiZaSBkdWxjaXVyaS4iLCAiw45pIMOubmdyaWplyJl0aSBwZSBjZWkgYm9sbmF2aSDImWkgw65pIGFqdcibaSBwZSBjZWlsYWzIm2kgc8SDIHRyxINpYXNjxIMgc8SDbsSDdG9zLiIsICJDb25kdWNpIHBydWRlbnQsIGbEg3LEgyB0ZWxlZm9udWwgw65uIG3Dom7EgywgyJlpIHDEg3N0cmV6aSBjdXJhdCBsb2N1bCDDrm4gY2FyZSB0csSDaWXImXRpIMiZaSBsdWNyZXppLiJdLCAidiI6ICJzxINuxIN0YXRlLCBlbmVyZ2llIMiZaSB1biBjb3JwIHZpb2kgcMOibsSDIGxhIHbDonJzdGUgw65uYWludGF0ZS4iLCAiaiI6ICJvYW1lbmkgc8SDbsSDdG\/ImWksIGFlciBjdXJhdCDImWkgbGluaciZdGUuIn0sIHsiYyI6ICJTxIMgZMSDcnVpZciZdGksIG9yaWNlIGZlbCBkZSByZXN1cnNlLiIsICJrIjogWyJBaSBncmlqxIMgZGUgbHVjcnVyaWxlIHBlIGNhcmUgbGUgZm9sb3NlyJl0aSDImWkgbnUgcmlzaXBlyJl0aS4iLCAiUGzEg3RlyJl0aSBsYSB0aW1wIGZhY3R1cmlsZSDImWkgdGF4ZWxlIMiZaSBhanVuZ2kgbGEgdGltcCBsYSDDrm50w6JsbmlyaTogdGltcHVsIGNlbG9ybGFsyJtpIGUgyJlpIGVsIG8gcmVzdXJzxIMuIiwgIlJlY29tYW56aSBwcm9kdXNlbGUgyJlpIHNlcnZpY2lpbGUgYnVuZSwgZmFjaSBsZWfEg3R1cmkgw65udHJlIG9hbWVuaSwgw65udmXIm2kgcGUgY2luZXZhIGN1bSBzxIMgY8OiyJl0aWdlIGJhbmkuIl0sICJ2IjogImFidW5kZW7Im8SDLCB0aW1wIGxpYmVyIHBlbnRydSB0aW5lLCBsaW5pyJl0ZSwgaWFyIHJlc3Vyc2VsZSBhcGFyIGV4YWN0IGPDom5kIGFpIG5ldm9pZSBkZSBlbGUuIiwgImoiOiAidW4gbG9jIGJvZ2F0IMOubiByZXN1cnNlLCDDrm5jb25qdXJhdCBkZSBvYW1lbmkgcHJvc3BlcmkuIn0sIHsiYyI6ICJGaWRlbGl0YXRlIMOubiByZWxhyJtpYSB0YSDImWkgcmVzcGVjdCBwZW50cnUgYW5nYWphbWVudHVsIHBlIGNhcmUgyJlpIGwtYXUgbHVhdCBhbMibaSBkb2kgb2FtZW5pLiIsICJrIjogWyJOdSBjYXXIm2kgYXByb3BpZXJlIHNhdSBvIHJlbGHIm2llIGN1IGNpbmV2YSBhY29sbyB1bmRlIG51IGV4aXN0xIMgbyBsZWfEg3R1csSDIGN1cmF0xIMuIiwgIlBldHJlY2kgdGltcCBjdSBjZWkgc2luZ3VyaTogYsSDdHLDom5pLCBjb3BpaSwgcHJpZXRlbmkuIiwgIsOObCBwcml2ZciZdGkgcGUgcGFydGVuZXIgY2EgcGUgdW4gw65uZ2VyIGRlZ2hpemF0IMiZaSBhaSBncmlqxIMgbGEgY2UgcHJpdmXImXRpIMiZaSBjZSDDrm1wxINydMSDyJllyJl0aS4iXSwgInYiOiAibyByZWxhyJtpZSDDrm1wbGluaXTEgywgcGxpbsSDIGRlIHRhbmRyZcibZSwgY3UgdW4gcGFydGVuZXIgYXRlbnQgbGEgY2VsZSBtYWkgbWljaSBuZXZvaSBhbGUgdGFsZS4iLCAiaiI6ICJ1biBtZWRpdSBjdXJhdCwgcHVyaXRhdGUgw65uIHRvdCBjZSB2ZXppLiJ9LCB7ImMiOiAiU8SDIHNwdWkgYWRldsSDcnVsIDEwMCUsIGFzdGZlbCDDrm5jw6J0IGltYWdpbmVhIGRpbiBtaW50ZWEgY2VsdWlsYWx0IHPEgyBmaWUgYWNlZWHImWkgY3UgcmVhbGl0YXRlYS4iLCAiayI6IFsiVm9yYmXImXRpIGRlc2NoaXMgY3UgZmFtaWxpYSwgY3UgY2xpZW7Im2lpIMiZaSBjdSBjb2xhYm9yYXRvcmlpLiIsICLDjsibaSDIm2lpIHByb21pc2l1bmlsZSwgaW5jbHVzaXYgcGUgY2VsZSBmxINjdXRlIMibaWUuIiwgIk51IGZhY2kgcHJvbWlzaXVuaSBwZSBjYXJlIHMtYXIgcHV0ZWEgc8SDIG51IGxlIHJlc3BlY8ibaS4gTmljaSDigJ5taW5jaXVuaWxlIGFsYmXigJ0gbnUgw67ImWkgYXUgbG9jdWwuIl0sICJ2IjogIm9hbWVuaWkgYXUgw65uY3JlZGVyZSDDrm4gY3V2w6JudHVsIHTEg3UsIGFpIGVuZXJnaWUgyJlpIHBhY2UgYSBtaW7Im2lpLiIsICJqIjogInByaWV0ZW5pIMiZaSBwYXJ0ZW5lcmkgZGUgYWZhY2VyaSBvbmXImXRpLCBjYXJlIHNlIHJlc3BlY3TEgyByZWNpcHJvYy4ifSwgeyJjIjogIlPEgyBsYXV6aSBvIHBlcnNvYW7EgyDDrm4gZmHIm2EgYWx0Y3VpdmEuIiwgImsiOiBbIkNhdcibaSBjYWxpdMSDyJtpbGUgb2FtZW5pbG9yIMiZaSBsZSBzcHVpIGN1IHZvY2UgdGFyZS4iLCAiw45uY3VyYWplemkgY29sYWJvcmFyZWEsIGZhY2kgbGVnxIN0dXJpIMOubnRyZSBvYW1lbmksIHByb21vdmV6aSBldmVuaW1lbnRlIGNhcmUgw65pIGFkdW7Egy4iLCAiTnUgZmFjaSBjb21wYXJhyJtpaSDDrm50cmUgb2FtZW5pIMiZaSBudSBkaXNjcmltaW5lemkgcGUgbmltZW5pLiJdLCAidiI6ICJyZWxhyJtpaSDDrm1wbGluaXRlIMiZaSBwcmlldGVuaWkgY2FyZSBkdXJlYXrEgy4iLCAiaiI6ICJ1biBncnVwIMOubiBjYXJlIG9hbWVuaWkgc2Ugc3ByaWppbsSDIHVuaWkgcGUgYWzIm2lpLCBpYXIgZHJ1bXVyaWxlIHRhbGUgc3VudCB1yJlvYXJlLiJ9LCB7ImMiOiAiU8SDIHZvcmJlyJl0aSBjYWxtLCByZWxheGF0LCBjdSB1biB0b24gYmzDom5kLiIsICJrIjogWyJBc2N1bMibaSBjdSBhZGV2xINyYXQgyJlpIGRhaSBmZWVkYmFjayBjb25zdHJ1Y3Rpdi4iLCAiTWVkaXRlemksIGZhY2kgeW9nYSwgdGUgcGxpbWJpIMOubiBuYXR1csSDLCBhc2N1bMibaSBtdXppY8SDIGxpbmnImXRpdG9hcmUuIiwgIkFpIGdyaWrEgyDImWkgbGEgY3V2aW50ZWxlIGRpbiBnw6JuZCwgaW5jbHVzaXYgbGEgY2VsZSBwZSBjYXJlIMibaSBsZSBzcHVpIMibaWUuIl0sICJ2IjogInNvbW4gbGluaciZdGl0IMiZaSBwYWNlIGEgbWluyJtpaS4iLCAiaiI6ICJvYW1lbmkgY2FyZSBjb211bmljxIMgcmVsYXhhdCwgZsSDcsSDIGNlcnR1cmkuIn0sIHsiYyI6ICJTxIMgZGFpIG1haSBkZXBhcnRlIGlkZWVhIGPEgyB0b3R1bCB2aW5lIGRpbiBzZW1pbsibZS4iLCAiayI6IFsiVm9yYmXImXRpIGRlc3ByZSBsdWNydXJpIGNhcmUgYWR1YyB2YWxvYXJlIMOubiB2aWHIm2Egb2FtZW5pbG9yLiIsICJBbGVnaSBjxINyyJtpLCBmaWxtZSDImWkgcG9zdMSDcmkgZGluIGNhcmUgw65udmXIm2kgY3VtIHPEgyBhZHVjaSB2YWxvYXJlIGNlbG9ybGFsyJtpLiIsICJFdmnIm2kgYsOicmZhIGRlIG9yaWNlIGZlbCDImWkgdGltcHVsIHBpZXJkdXQgcGUgY29uyJtpbnV0IGdvbC4iXSwgInYiOiAiY3V2aW50ZWxlIHRhbGUgYXUgZ3JldXRhdGUgyJlpIHRpbXB1bCB0xIN1IHNlIHVtcGxlIGRlIGx1Y3J1cmkgY3Ugcm9zdC4iLCAiaiI6ICJvYW1lbmlpIHRlIGFzY3VsdMSDIGPDom5kIHZvcmJlyJl0aS4ifSwgeyJjIjogIlPEgyB0ZSBidWN1cmkgc2luY2VyIGPDom5kIGFsyJtpaSBvYsibaW4gY2Ugw67ImWkgZG9yZXNjLiIsICJrIjogWyLDjmkgc3VzyJtpaSDImWkgw65pIMOubmN1cmFqZXppIHBlIGNlaWxhbMibaS4iLCAiVGUgYnVjdXJpIGRlIHJldciZaXRlbGUgyJlpIHBvc3TEg3JpbGUgY2Vsb3JsYWzIm2kgyJlpIGxlIGFwcmVjaWV6aS4iLCAiTnUgdGUgY29tcGFyaSDImWkgbnUgY29tZW50ZXppIGlyb25pYyBzdWNjZXN1bCBuaW3Eg251aS4iXSwgInYiOiAic3VjY2VzIMOubiBwcm9pZWN0ZWxlIHRhbGUsIGJ1Y3VyaWUgcGVudHJ1IGNlIGZhY2ksIMOuyJtpIGRlc2NvcGVyaSBwYXNpdW5lYSDImWkgdm9jYcibaWEuIiwgImoiOiAidW4gbWVkaXUgw65uIGNhcmUgcHJpbWXImXRpIHNwcmlqaW4gyJlpIGV4aXN0xIMgcmVzdXJzZS4ifSwgeyJjIjogIkNvbXBhc2l1bmUgcGVudHJ1IHN1ZmVyaW7Im2EgY3VpdmEuIiwgImsiOiBbIkFqdcibaSBvcmkgZGUgY8OidGUgb3JpIGFpIG9jYXppYS4iLCAiQWxlZ2kgY8SDcsibaSDImWkgZmlsbWUgY2FyZSBwcm9tb3ZlYXrEgyBjb21wYXNpdW5lYS4iLCAiQ8OibmQgY2luZXZhIGdyZciZZciZdGUsIGxhyJlpIGRlb3BhcnRlIOKAnsiZdGlhbSBldeKAnSBzYXUg4oCeYW0gYXZ1dCBkcmVwdGF0ZeKAnS4iXSwgInYiOiAiZ8SDc2XImXRpIGFqdXRvciBjw6JuZCBhaSBuZXZvaWUgyJlpIGV2b2x1ZXppIHNwaXJpdHVhbC4iLCAiaiI6ICJvYW1lbmkgY2FyZSBzZSBzcHJpamluxIMgdW5paSBwZSBhbMibaWksIHVuIG1lZGl1IGxpbmnImXRpdC4ifSwgeyJjIjogIlPEgyBleHBsaWNpIGFsdGN1aXZhIHByaW5jaXBpdWwgcGl4dWx1aS4iLCAiayI6IFsiRmFjaSBwYXV6ZSDDrm4gdGltcHVsIHppbGVpIGNhIHPEgyDDrsibaSBhbWludGXImXRpIGPEgyBjZSB2ZXppLCBjZSBmYWNpIMiZaSBjZSBnw6JuZGXImXRpIHZpbiBkaW4gc2VtaW7Im2VsZSB0YWxlLiIsICJDaXRlyJl0aSDImWkgYXNjdWzIm2kgbWF0ZXJpYWxlIGRlc3ByZSBjdW0gZnVuY8ibaW9uZWF6xIMgc2VtaW7Im2VsZS4iLCAiQ8OibmQgY2V2YSBudSBtZXJnZSwgbnUgZGFpIHZpbmEgcGUgY2VpbGFsyJtpOiB0ZSDDrm50cmViaSBjZSBzZW1pbsibZSBzxIMgcGxhbnRlemkuIl0sICJ2IjogInByb2llY3RlbGUgdGFsZSBtZXJnIHDDom7EgyBsYSBjYXDEg3QgyJlpIHNpbcibaSB0b3QgbWFpIG11bHTEgyBsaWJlcnRhdGUgaW50ZXJpb2FyxIMuIiwgImoiOiAiw65uyJtlbGVnaSBjZSBzZSDDrm50w6JtcGzEgyDDrm4ganVydWwgdMSDdSDImWkgbnUgdGUgbWFpIHNpbcibaSBjb3BsZciZaXQgZGUgbHVjcnVyaS4ifV0sCiAgZ3JvdXBzOlsnRkFQVEUnLCdWT1JCRScsJ0fDgk5EVVJJJ10sIGRvbWFpbnM6WydCYW5pJywnUmVsYcibaWknLCdTxINuxIN0YXRlJ10KfTsKLyogbWVyZ2UgdGhlIG5ldyBpbnRlcmZhY2Ugd29yZHMgaW50byBlYWNoIGxhbmd1YWdlICovCmZvciAoY29uc3QgbCBvZiBPYmplY3Qua2V5cyhYVCkpIGlmIChVSVtsXSkgeyBPYmplY3QuYXNzaWduKFVJW2xdLCBYVFtsXS51aSk7IFVJW2xdLmtpbmQgPSB7IC4uLlVJW2xdLmtpbmQsIHVuZWx0ZTpYVFtsXS5raW5kVSB9IH0KLyogSXRhbGlhbiBpbnRybyBncmVldGluZyBmb2xsb3dzIHRoZSBwZXJzb24ncyBnZW5kZXIgKi8KR1VJLml0LmludHJvSGVsbG8gPSAoKSA9PiBHKCJCZW52ZW51dGEgbmVsbCdhcHAgU2VtaSBCdW9uaSIsIkJlbnZlbnV0byBuZWxsJ2FwcCBTZW1pIEJ1b25pIik7CmNvbnN0IHh0ID0gKCkgPT4gWFRbbGFuZygpXSB8fCBYVC5lbjsKCmNvbnN0IFNFVF9NRVRBID0gWwogIHsgazoncGFzaScsIGNvbG9yOicjRDI2OTFFJywgaW5rOicjQTQ0RTEwJywgc29mdDonI0ZDRTdENScsCiAgICBpY29uOic8cGF0aCBkPSJNMTUgMjVjLTIuMiAwLTMuNi0yLjQtMy4yLTUuNi40LTMuMyAyLTYuNCA0LjEtNi40IDIgMCAyLjYgMi45IDIuMiA2LS40IDMuNC0xLjEgNi0zLjEgNloiLz48cGF0aCBkPSJNMTMuNiAyOC44Yy40LTEuNCAxLjgtMi4xIDMtMS43IDEuMy40IDEuNiAxLjggMS4yIDMuMS0uNCAxLjQtMS43IDIuMS0yLjkgMS43LTEuMi0uNC0xLjctMS43LTEuMy0zLjFaIi8+PHBhdGggZD0iTTI1IDIxYzIuMiAwIDMuNi0yLjQgMy4yLTUuNi0uNC0zLjMtMi02LjQtNC4xLTYuNC0yIDAtMi42IDIuOS0yLjIgNiAuNCAzLjQgMS4xIDYgMy4xIDZaIi8+PHBhdGggZD0iTTI2LjQgMjQuOGMtLjQtMS40LTEuOC0yLjEtMy0xLjctMS4zLjQtMS42IDEuOC0xLjIgMy4xLjQgMS40IDEuNyAyLjEgMi45IDEuNyAxLjItLjQgMS43LTEuNyAxLjMtMy4xWiIvPicgfSwKICB7IGs6J3B1dGVyaScsIGNvbG9yOicjRDRBODBDJywgaW5rOicjN0U2MjAwJywgc29mdDonI0ZCRjFDNCcsCiAgICBpY29uOic8cGF0aCBkPSJNMjAgOWMxIDQuNiA2LjggNy4zIDYuOCAxMy42YTYuOCA2LjggMCAwIDEtMTMuNiAwYzAtMy4xIDEuNi01LjEgMy4zLTYuNi4yIDIgLjkgMy40IDIuMyA0LjJDMTggMTUuOCAxOC42IDEyLjMgMjAgOVoiLz48cGF0aCBkPSJNMjAgMzAuNWEzIDMgMCAwIDEtMy0zYzAtMiAxLjYtMyAzLTUgMS40IDIgMyAzIDMgNWEzIDMgMCAwIDEtMyAzWiIvPicgfSwKICB7IGs6J2xlZ2knLCBjb2xvcjonIzJFNUFBQycsIGluazonIzI0NDk4RCcsIHNvZnQ6JyNEREU2RjcnLAogICAgaWNvbjonPHBhdGggZD0iTTIwIDEwdjIwTTE0IDMwaDEyTTEyIDE0aDE2Ii8+PHBhdGggZD0iTTEyIDE0IDguNSAyMmg3WiIvPjxwYXRoIGQ9Ik0yOCAxNGwtMy41IDhoN1oiLz48cGF0aCBkPSJNOC41IDIyYTMuNSAxLjYgMCAwIDAgNyAwTTI0LjUgMjJhMy41IDEuNiAwIDAgMCA3IDAiLz48Y2lyY2xlIGN4PSIyMCIgY3k9IjEwLjUiIHI9IjEuMyIvPicgfSwKICB7IGs6J2Zsb3JpJywgY29sb3I6JyNENjMzODQnLCBpbms6JyNBODIxNkEnLCBzb2Z0OicjRkJEREVCJywKICAgIGljb246JzxjaXJjbGUgY3g9IjIwIiBjeT0iMTkiIHI9IjIuNiIvPjxwYXRoIGQ9Ik0yMCAxNi40Yy0xLjgtMi4zLTEuOC01LjIgMC02LjkgMS44IDEuNyAxLjggNC42IDAgNi45Wk0yMi41IDE4LjJjMS4yLTIuNiAzLjgtMy45IDYuMS0zLjItLjEgMi40LTIuNCA0LjItNS4zIDQuMVpNMjEuNiAyMS4yYzIuOS4yIDUgMi4xIDUuMiA0LjUtMi4zLjYtNC44LS44LTUuOS0zLjRaTTE4LjQgMjEuMmMtMi45LjItNSAyLjEtNS4yIDQuNSAyLjMuNiA0LjgtLjggNS45LTMuNFpNMTcuNSAxOC4yYy0xLjItMi42LTMuOC0zLjktNi4xLTMuMi4xIDIuNCAyLjQgNC4yIDUuMyA0LjFaIi8+PHBhdGggZD0iTTIwIDIxLjZWMzJNMjAgMjhjMS42LTEuOCAzLjQtMi40IDUtMiIvPicgfSwKICB7IGs6J3ByaW9yaXRhdGknLCBjb2xvcjonIzcwNDhDMicsIGluazonIzVBMzVBMycsIHNvZnQ6JyNFOUUwRjgnLAogICAgaWNvbjonPGNpcmNsZSBjeD0iMjAiIGN5PSIyMCIgcj0iOS41Ii8+PHBhdGggZD0iTTIwIDEwLjVhNC43NSA0Ljc1IDAgMCAxIDAgOS41IDQuNzUgNC43NSAwIDAgMCAwIDkuNSIvPjxjaXJjbGUgY3g9IjIwIiBjeT0iMTUuMjUiIHI9IjEuMiIvPjxjaXJjbGUgY3g9IjIwIiBjeT0iMjQuNzUiIHI9IjEuMiIvPicgfQpdOwovKiB0aGUgc2V0cyBpbiB0aGUgY3VycmVudCBsYW5ndWFnZSAqLwpjb25zdCBUUyA9ICgpID0+IFNFVF9NRVRBLm1hcChtPT4oeyAuLi5tLCAuLi54dCgpLnNldHNbbS5rXSB9KSk7CmNvbnN0IFRPT0xfSURTID0gU0VUX01FVEEuZmxhdE1hcCgobSxzaSk9PlsxLDIsMyw0XS5tYXAobj0+KHsgaWQ6bS5rK24sIHNpLCBuIH0pKSk7CmNvbnN0IHRvb2xCeUlkID0gaWQgPT4geyBjb25zdCBiPVRPT0xfSURTLmZpbmQoeD0+eC5pZD09PWlkKTsgaWYoIWIpIHJldHVybiBudWxsOyBjb25zdCBpdD1UUygpW2Iuc2ldLml0ZW1zW2Iubi0xXTsKICByZXR1cm4gdHlwZW9mIGl0PT09J3N0cmluZycgPyB7IC4uLmIsIHQ6aXQgfSA6IGl0LmggPyB7IC4uLmIsIHQ6aXQuaCwgaDppdC5oLCBleDppdC5leCwgYWRkOml0LmFkZCB9IDogeyAuLi5iLCB0Oml0LnQsIGFkZDppdC5hZGQgfSB9Owpjb25zdCB0b29sTGFiZWwgPSB4ID0+IFRTKClbeC5zaV0udW5pdCsnICcreC5uOwpjb25zdCB0b29sSGVhZCA9IHggPT4geyBjb25zdCBjPXgudC5pbmRleE9mKCc6Jyk7IGlmKGM+MCAmJiBjPDQwKSByZXR1cm4geC50LnNsaWNlKDAsYykudHJpbSgpOyBjb25zdCBzPXgudC5zcGxpdCgvKD88PVsuIT\/igKZdKVxzLylbMF07IHJldHVybiBzLmxlbmd0aD43MCA\/IHMuc2xpY2UoMCw2OCkucmVwbGFjZSgvXHNcUyokLywnJykrJ+KApicgOiBzLnJlcGxhY2UoL1ssOzpdJC8sJycpIH07CmNvbnN0IHRvb2xTZXRJY29uID0gKHMsc2l6ZT00MCkgPT4gYDxzdmcgd2lkdGg9IiR7c2l6ZX0iIGhlaWdodD0iJHtzaXplKjEuMX0iIHZpZXdCb3g9IjAgMCA0MCA0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMiAzOCAxMnYyMEwyMCA0MiAyIDMyVjEyWiIvPiR7cy5pY29ufTwvc3ZnPmA7CgovKiBzdWJzY3JpcHRpb246IG9uIHRoZSBzaXRlIHRoZSBzZXJ2ZXIgc2F5czsgaW4gdGhlIHRlc3QgdmVyc2lvbiB5b3UgY2FuIHNpbXVsYXRlIGl0ICovCmxldCBTVUI9ZmFsc2U7CmNvbnN0IGhhc1N1YiA9ICgpID0+IENPTkZJRy5hcGkgPyBTVUIgOiAhIURBVEEuc2V0dGluZ3Muc2ltU3ViOwphc3luYyBmdW5jdGlvbiBzdWJMb2FkKCl7IGlmKCFDT05GSUcuYXBpKSByZXR1cm47IHRyeXsgY29uc3Qgcj1hd2FpdCBmZXRjaChDT05GSUcuYXBpLnJvb3QrJ2dyYWRpbmEvdjEvbWUnLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLGhlYWRlcnM6eydYLVdQLU5vbmNlJzpDT05GSUcuYXBpLm5vbmNlfX0pOyBpZihyLm9rKXsgY29uc3Qgaj1hd2FpdCByLmpzb24oKTsgU1VCPSEhai5zdWI7IGlmKHRhYj09PSdhemknKSByZW5kZXIoKSB9IH1jYXRjaChlKXt9IH0KbGV0IHVBbmltID0gMDsKY29uc3QgdVRvZGF5ID0gKCkgPT4gKERBVEEudW5lbHRlICYmIERBVEEudW5lbHRlLmRheT09PXRvZGF5S2V5KCkpID8gREFUQS51bmVsdGUgOiBudWxsOwpmdW5jdGlvbiB1RHJhdygpewogIGNvbnN0IE49VE9PTF9JRFMubGVuZ3RoLCBhPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOKTsgbGV0IGI7IGRvIHsgYj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTikgfSB3aGlsZShiPT09YSk7CiAgREFUQS51bmVsdGU9eyBkYXk6dG9kYXlLZXkoKSwgY2FyZHM6W1RPT0xfSURTW2FdLmlkLCBUT09MX0lEU1tiXS5pZF0sIG5vdGU6JycsIGVudHJ5Om51bGwgfTsKICBwZXJzaXN0KCk7IHVBbmltPTE7IHJlbmRlcigpOwogIHNldFRpbWVvdXQoKCk9PnsgY29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGNhcmQnKVswXTsgYyYmYy5jbGFzc0xpc3QuYWRkKCdmbGlwcGVkJykgfSwgMzUwKTsKICBzZXRUaW1lb3V0KCgpPT57IGNvbnN0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRjYXJkJylbMV07IGMmJmMuY2xhc3NMaXN0LmFkZCgnZmxpcHBlZCcpIH0sIDEwNTApOwogIHNldFRpbWVvdXQoKCk9PnsgdUFuaW09MCB9LCAxODAwKTsKfQpjb25zdCBjYXJkQmFjayA9ICgpID0+IGA8ZGl2IGNsYXNzPSJmYWNlIGJhY2siPiR7aGV4KCdzYW1hbnRhJyw0Nil9PHNwYW4+JHtlc2ModCgnYXBwTmFtZScpKX08L3NwYW4+PC9kaXY+YDsKZnVuY3Rpb24gdG9vbENhcmQoaWQsIGZsaXBwZWQpewogIGNvbnN0IHg9dG9vbEJ5SWQoaWQpOyBpZigheCkgcmV0dXJuICcnOyBjb25zdCBzPVRTKClbeC5zaV07CiAgY29uc3QgYz14LnQuaW5kZXhPZignOicpOyBjb25zdCBib2R5ID0gKHguaCA\/IGA8Yj4ke2VzYyh4LmgpfTwvYj5gIDogKGM+MCYmYzw0MCkgPyBgPGI+JHtlc2MoeC50LnNsaWNlKDAsYykpfTwvYj4ke2VzYyh4LnQuc2xpY2UoYykpfWAgOiBlc2MoeC50KSkgKyAoIXguaCYmeC5hZGQgPyAnICcrZXNjKHguYWRkKSA6ICcnKTsKICBjb25zdCBleGggPSB4LmggPyBbeC5leCwgeC5hZGRdLmZpbHRlcihCb29sZWFuKS5tYXAoZXNjKS5qb2luKCcgJykgOiAnJzsKICByZXR1cm4gYDxkaXYgY2xhc3M9InRjYXJkICR7ZmxpcHBlZD8nZmxpcHBlZCc6Jyd9IiBzdHlsZT0iLS10Yzoke3MuY29sb3J9Oy0tdGk6JHtzLmlua307LS10czoke3Muc29mdH0iPjxkaXYgY2xhc3M9ImluIj4KICAgICR7Y2FyZEJhY2soKX0KICAgIDxkaXYgY2xhc3M9ImZhY2UgZnJvbnQiIGFyaWEtaGlkZGVuPSIkeyFmbGlwcGVkfSI+CiAgICAgIDxkaXYgY2xhc3M9InRoIj4ke3Rvb2xTZXRJY29uKHMsMzQpfTxkaXY+PHNwYW4gY2xhc3M9InNldCI+JHtlc2Mocy5uYW1lKX08L3NwYW4+PHNwYW4gY2xhc3M9Im51bSI+JHtlc2ModG9vbExhYmVsKHgpKX08L3NwYW4+PC9kaXY+PC9kaXY+CiAgICAgICR7cy5zdWI\/YDxwIGNsYXNzPSJzdWIiPiR7ZXNjKHMuc3ViKX08L3A+YDonJ30KICAgICAgPHAgY2xhc3M9InR0Ij4ke2JvZHl9PC9wPgogICAgICAke2V4aD9gPHAgY2xhc3M9ImV4Ij4ke2V4aH08L3A+YDonJ30KICAgIDwvZGl2PjwvZGl2PjwvZGl2PmA7Cn0KY29uc3Qgc2ltQnRuID0gb24gPT4gQ09ORklHLmFwaT8nJzpgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS11YWN0PSJzaW0iIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQ7Zm9udC1zaXplOi44cmVtIj4ke3Qob24\/J3VTaW1Pbic6J3VTaW1PZmYnKX08L2J1dHRvbj5gOwpmdW5jdGlvbiB1bmVsdGVsQ2FyZCgpewogIGlmICghaGFzU3ViKCkpewogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIHVuZWx0ZSBsb2NrZWQiPjxkaXYgY2xhc3M9InVoZWFkIj48aDM+JHt0KCd1VGl0bGUnKX08L2gzPjxzcGFuIGNsYXNzPSJsb2NrIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxyZWN0IHg9IjUiIHk9IjEwLjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIuNSIvPjxwYXRoIGQ9Ik04IDEwLjVWOGE0IDQgMCAwIDEgOCAwdjIuNSIvPjwvc3ZnPjwvc3Bhbj48L2Rpdj4KICAgICAgPHAgY2xhc3M9Im5vdGUiPiR7dCgndUxvY2tlZCcpfTwvcD4KICAgICAgPGRpdiBjbGFzcz0idHNldHMiPiR7VFMoKS5tYXAocz0+YDxzcGFuIHN0eWxlPSItLXRjOiR7cy5jb2xvcn07LS10czoke3Muc29mdH0iPiR7dG9vbFNldEljb24ocywyNil9PC9zcGFuPmApLmpvaW4oJycpfTwvZGl2PgogICAgICA8cCBjbGFzcz0ibG9ja21zZyI+JHt0KCd1TG9ja01zZycpfTwvcD4KICAgICAgJHtDT05GSUcuc3Vic1VybD9gPGEgY2xhc3M9ImJ0biBzb2Z0IiBocmVmPSIke2VzYyhDT05GSUcuc3Vic1VybCl9IiB0YXJnZXQ9Il90b3AiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWFsaWduOmNlbnRlciI+JHt0KCd1U2VlU3VicycpfTwvYT5gOicnfQogICAgICAke3NpbUJ0bih0cnVlKX0KICAgIDwvZGl2PmA7CiAgfQogIGNvbnN0IHU9dVRvZGF5KCk7CiAgaWYgKCF1KXsKICAgIHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCB1bmVsdGUiPjxkaXYgY2xhc3M9InVoZWFkIj48aDM+JHt0KCd1VGl0bGUnKX08L2gzPjwvZGl2PgogICAgICA8cCBjbGFzcz0ibm90ZSI+JHt0KCd1RHJhd05vdGUnKX08L3A+CiAgICAgIDxkaXYgY2xhc3M9InRwYWlyIj4ke1swLDFdLm1hcCgoKT0+YDxkaXYgY2xhc3M9InRjYXJkIj48ZGl2IGNsYXNzPSJpbiI+JHtjYXJkQmFjaygpfTwvZGl2PjwvZGl2PmApLmpvaW4oJycpfTwvZGl2PgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtdWFjdD0iZHJhdyI+JHt0KCd1RHJhdycpfTwvYnV0dG9uPgogICAgICAke3NpbUJ0bihmYWxzZSl9CiAgICA8L2Rpdj5gOwogIH0KICBjb25zdCBmbGlwcGVkID0gIXVBbmltOwogIHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCB1bmVsdGUiPjxkaXYgY2xhc3M9InVoZWFkIj48aDM+JHt0KCd1VGl0bGUnKX08L2gzPjwvZGl2PgogICAgPGRpdiBjbGFzcz0idHBhaXIiPiR7dS5jYXJkcy5tYXAoaWQ9PnRvb2xDYXJkKGlkLCBmbGlwcGVkKSkuam9pbignJyl9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJxIj48bGFiZWwgZm9yPSJ1Tm90ZSI+JHt0KCd1UScpfTwvbGFiZWw+CiAgICAgIDx0ZXh0YXJlYSBpZD0idU5vdGUiIHJvd3M9IjMiIHBsYWNlaG9sZGVyPSIke2VzYyh0KCd1UGgnKSl9Ij4ke2VzYyh1Lm5vdGV8fCcnKX08L3RleHRhcmVhPjwvZGl2PgogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLXVhY3Q9InNhdmUiPiR7dCh1LmVudHJ5Pyd1VXBkYXRlJzondVNhdmUnKX08L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtdWFjdD0iYWdhaW4iIHN0eWxlPSJhbGlnbi1zZWxmOmNlbnRlciI+JHt0KCd1QWdhaW4nKX08L2J1dHRvbj4KICAgICR7c2ltQnRuKGZhbHNlKX0KICA8L2Rpdj5gOwp9CmZ1bmN0aW9uIHVTYXZlKCl7CiAgY29uc3QgdT11VG9kYXkoKTsgaWYoIXUpIHJldHVybjsKICB1Lm5vdGU9KCQoJyN1Tm90ZScpPy52YWx1ZXx8JycpLnRyaW0oKTsKICBsZXQgZT11LmVudHJ5ICYmIERBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT11LmVudHJ5KTsKICBpZiAoZSl7IGUuY2FyZHM9dS5jYXJkcy5zbGljZSgpOyBlLm5vdGU9dS5ub3RlOyBwZXJzaXN0KCkgfQogIGVsc2UgeyBhZGRFbnRyeSh7IHR5cGU6J3VuZWx0ZScsIGNhcmRzOnUuY2FyZHMuc2xpY2UoKSwgbm90ZTp1Lm5vdGUsIGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0pOyB1LmVudHJ5PURBVEEuZW50cmllc1tEQVRBLmVudHJpZXMubGVuZ3RoLTFdLmlkOyBwZXJzaXN0KCkgfQogIHJlbmRlcigpOyB0b2FzdCh0KCd1U2F2ZWQnKSk7Cn0KZnVuY3Rpb24gdW5lbHRlRW50cnlIdG1sKGUsdG0sZGVsKXsKICBjb25zdCB0bD0oZS5jYXJkc3x8W10pLm1hcCh0b29sQnlJZCkuZmlsdGVyKEJvb2xlYW4pLCBzZXRzPVRTKCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbnRyeSB1bmVsdGUgY29sIj4ke2hleCgndW5lbHRlJywzMil9PGRpdiBjbGFzcz0idHh0Ij48Yj4ke2VzYyhLSU5ELnVuZWx0ZSl9PC9iPjxzcGFuPiR7dG19PC9zcGFuPgogICAgPHVsIGNsYXNzPSJpdGVtcyI+JHt0bC5tYXAoeD0+YDxsaT48c3BhbiBjbGFzcz0idGFnIiBzdHlsZT0iY29sb3I6JHtzZXRzW3guc2ldLmlua30iPiR7ZXNjKHRvb2xMYWJlbCh4KSl9PC9zcGFuPjxzcGFuPiR7ZXNjKHRvb2xIZWFkKHgpKX08L3NwYW4+PC9saT5gKS5qb2luKCcnKX08L3VsPgogICAgJHtlLm5vdGU\/YDxwIGNsYXNzPSJ1bm90ZSI+JHtlc2MoZS5ub3RlKX08L3A+YDonJ308L2Rpdj4ke2RlbH08L2Rpdj5gOwp9CgovKiA9PT09PT09PT09PT0gUHJhY3RpY2UgaHViID09PT09PT09PT09PSAqLwpmdW5jdGlvbiByZW5kZXJIdWIoKXsKICBjb25zdCB0az10b2RheUtleSgpLCB0b2RheT1EQVRBLmVudHJpZXMuZmlsdGVyKGU9PmRheUtleShlLmRhdGUpPT09dGspOwogIGNvbnN0IGNudCA9ICguLi5rKSA9PiB0b2RheS5maWx0ZXIoZT0+ay5pbmNsdWRlcyhlLnR5cGUpKS5sZW5ndGg7CiAgY29uc3Qgbm90ZSA9IG4gPT4gbj9gPGVtPiR7dCgnblRvZGF5Jykobil9PC9lbT5gOicnOwogIGNvbnN0IGJ1c3k9WydwcmVwJywncnVuJywncGF1c2VkJ10uaW5jbHVkZXMoVC5waGFzZSk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgIDxkaXY+PGgyPiR7dCgnaHViVGl0bGUnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ2h1YkxlYWQnKX08L3A+PC9kaXY+CiAgICAke2J1c3k\/YDxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWdvPSJ0aW1lciI+JHt0KCdodWJCdXN5Jyl9PC9idXR0b24+YDonJ30KICAgIDxkaXYgY2xhc3M9InRpbGVzIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSIgZGF0YS1nbz0idGltZXIiPiR7aGV4KCdtZWRpdGF0aWUnKX08c3Ryb25nPiR7dCgndGlsZU1lZCcpfTwvc3Ryb25nPiR7bm90ZShjbnQoJ21lZGl0YXRpZScsJ3lvZ2EnKSl9PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InRpbGUiIGRhdGEtZ289InJlY3Vub3N0aW50ZSI+JHtoZXgoJ3JlY3Vub3N0aW50ZScpfTxzdHJvbmc+JHt0KCd0aWxlUmVjJyl9PC9zdHJvbmc+JHtub3RlKGNudCgncmVjdW5vc3RpbnRlJykpfTwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlIiBkYXRhLWdvPSJidWN1cmllIj4ke2hleCgnYnVjdXJpZScpfTxzdHJvbmc+JHt0KCd0aWxlSm95Jyl9PC9zdHJvbmc+JHtub3RlKGNudCgnYnVjdXJpZScpKX08L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSIgZGF0YS1nbz0icHV0ZXJpIj4ke2hleCgncHV0ZXJpJyl9PHN0cm9uZz4ke3QoJ3RpbGVQb3cnKX08L3N0cm9uZz4ke25vdGUoY250KCdwdXRlcmknKSl9PC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj5gOwp9CgovKiA9PT09PT09PT09PT0gUHJvZmlsZSA9PT09PT09PT09PT0gKi8KY29uc3QgQVZBVEFSUyA9IHsKICBzYW1hbnRhOic8cGF0aCBkPSJNMjAgMjlWMjBNMjAgMjIuNWMwLTMuNS0yLjYtNS41LTYtNS41IDAgMy41IDIuNiA1LjUgNiA1LjVaTTIwIDIwYzAtMy42IDIuNi02IDYtNiAwIDMuNi0yLjYgNi02IDZaIi8+JywKICBmcnVuemE6JzxwYXRoIGQ9Ik0xMiAyOWMwLTkgNS0xNSAxNi0xNiAwIDEwLTUgMTYtMTQgMTZaIi8+PHBhdGggZD0iTTEyIDI5YzQtNSA4LTkgMTMtMTIiLz4nLAogIGZsb2FyZTonPGNpcmNsZSBjeD0iMjAiIGN5PSIxOCIgcj0iMi40Ii8+PHBhdGggZD0iTTIwIDE1LjZjLTEuNi0yLTEuNi00LjYgMC02LjEgMS42IDEuNSAxLjYgNC4xIDAgNi4xWk0yMi4zIDE3LjJjMS4xLTIuMyAzLjQtMy40IDUuNC0yLjgtLjEgMi4xLTIuMSAzLjctNC43IDMuNlpNMjEuNCAyMGMyLjYuMiA0LjQgMS45IDQuNiA0LTIgLjUtNC4yLS43LTUuMi0zWk0xOC42IDIwYy0yLjYuMi00LjQgMS45LTQuNiA0IDIgLjUgNC4yLS43IDUuMi0zWk0xNy43IDE3LjJjLTEuMS0yLjMtMy40LTMuNC01LjQtMi44LjEgMi4xIDIuMSAzLjcgNC43IDMuNloiLz48cGF0aCBkPSJNMjAgMjAuNFYzMSIvPicsCiAgY29wYWM6JzxwYXRoIGQ9Ik0yMCAzMXYtOU0yMCAyNWwtNC0zTTIwIDIzbDQtMyIvPjxwYXRoIGQ9Ik0yMCAxMGMtNSAwLTggMy40LTggNy4yIDAgMy4zIDIuNiA1LjMgNS40IDUuM2g1LjJjMi44IDAgNS40LTIgNS40LTUuM0MyOCAxMy40IDI1IDEwIDIwIDEwWiIvPicsCiAgc29hcmU6JzxjaXJjbGUgY3g9IjIwIiBjeT0iMjEiIHI9IjQuNSIvPjxwYXRoIGQ9Ik0yMCAxMXYyLjZNMjAgMjguNFYzMU0xMCAyMWgyLjZNMjcuNCAyMUgzME0xMi45IDEzLjlsMS44IDEuOE0yNS4zIDI2LjNsMS44IDEuOE0xMi45IDI4LjFsMS44LTEuOE0yNS4zIDE1LjdsMS44LTEuOCIvPicsCiAgbHVuYTonPHBhdGggZD0iTTI0IDEyLjVhOC41IDguNSAwIDEgMCA0IDE1LjYgNyA3IDAgMCAxLTQtMTUuNloiLz48cGF0aCBkPSJNMTQgMTQuNWwuNiAxLjQgMS40LjYtMS40LjYtLjYgMS40LS42LTEuNC0xLjQtLjYgMS40LS42WiIvPicsCiAgcGljYXR1cmE6JzxwYXRoIGQ9Ik0yMCAxMWMzLjggNC42IDYgOC40IDYgMTEuNmE2IDYgMCAwIDEtMTIgMGMwLTMuMiAyLjItNyA2LTExLjZaIi8+PHBhdGggZD0iTTE3LjUgMjRhMi43IDIuNyAwIDAgMCAyLjUgMi4yIi8+JywKICBtdW50ZTonPHBhdGggZD0iTTkgMjkgMTcgMTZsNCA2IDMtNCA3IDExWiIvPjxwYXRoIGQ9Ik0xNSAxOS4ybDIgMS41IDItMS42Ii8+Jwp9Owpjb25zdCBBVl9DT0xPUlMgPSB7IHNhbWFudGE6JyM1QjdEMzYnLCBmcnVuemE6JyMzRTdENEUnLCBmbG9hcmU6JyNCODRFNzgnLCBjb3BhYzonIzZFNEEyQycsIHNvYXJlOicjQzA4QTFFJywgbHVuYTonIzNCNUI4NicsIHBpY2F0dXJhOicjMkY3RjczJywgbXVudGU6JyM3QTVDOEMnIH07CmNvbnN0IGF2YXRhclN2ZyA9IChrLHNpemU9NjQpID0+IHsgaz1BVkFUQVJTW2tdP2s6J3NhbWFudGEnOwogIHJldHVybiBgPHN2ZyB3aWR0aD0iJHtzaXplfSIgaGVpZ2h0PSIke3NpemUqMS4xfSIgdmlld0JveD0iMCAwIDQwIDQ0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTIwIDIgMzggMTJ2MjBMMjAgNDIgMiAzMlYxMloiIGZpbGw9IiR7QVZfQ09MT1JTW2tdfSIvPjxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+JHtBVkFUQVJTW2tdfTwvZz48L3N2Zz5gIH07CmxldCBhdk9wZW49ZmFsc2U7CmZ1bmN0aW9uIHJlbmRlclByb2ZpbCgpewogIGNvbnN0IGVudHM9REFUQS5lbnRyaWVzLCB0b2RvRG9uZT1EQVRBLnRvZG9zLmZpbHRlcih4PT54LmRvbmUpLmxlbmd0aCwgbWlucz1lbnRzLnJlZHVjZSgoYSxlKT0+YSsoZS5taW51dGVzfHwwKSwwKTsKICBjb25zdCBuYW1lPURBVEEuY29tbS5uYW1lLCBjdXJMYW5nPShMQU5HUy5maW5kKHg9PnhbMF09PT1sYW5nKCkpfHxbXSlbMV18fCcnOwogIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyBwcm9maWwiPgogICAgPGRpdiBjbGFzcz0icGhlYWQiPiR7YXZhdGFyU3ZnKERBVEEuc2V0dGluZ3MuYXZhdGFyLDc2KX0KICAgICAgPGRpdj48aDI+JHtuYW1lP2VzYyhuYW1lKTp0KCdteVByb2ZpbGUnKX08L2gyPjxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtdWFjdD0ibmFtZSI+JHt0KG5hbWU\/J2NoYW5nZU5hbWUnOidwaWNrTmFtZScpfTwvYnV0dG9uPjwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhdHMgZm91ciI+CiAgICAgIDxkaXYgY2xhc3M9InN0YXQiPjxiPiR7c3RyZWFrKCl9PC9iPjxzcGFuPiR7dCgnc3RyZWFrJyl9PC9zcGFuPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdGF0Ij48Yj4ke2VudHMubGVuZ3RofTwvYj48c3Bhbj4ke3QoJ3N0UHJhY3QnKX08L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN0YXQiPjxiPiR7bWluc308L2I+PHNwYW4+JHt0KCdzdE1pbicpfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic3RhdCI+PGI+JHt0b2RvRG9uZX08L2I+PHNwYW4+JHt0KCdzdFRvZG8nKX08L3NwYW4+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQgcGxpc3QiPgogICAgICA8YnV0dG9uIGNsYXNzPSJwcm93IiBkYXRhLXVhY3Q9ImF2YXRhciI+PHNwYW4+JHt0KCdhdmF0YXInKX08L3NwYW4+PHNwYW4gY2xhc3M9InB2Ij4ke2F2T3Blbj8n4oyDJzon4oC6J308L3NwYW4+PC9idXR0b24+CiAgICAgICR7YXZPcGVuP2A8ZGl2IGNsYXNzPSJhdmdyaWQiPiR7T2JqZWN0LmtleXMoQVZBVEFSUykubWFwKGs9PmA8YnV0dG9uIGRhdGEtYXY9IiR7a30iIGFyaWEtcHJlc3NlZD0iJHsoREFUQS5zZXR0aW5ncy5hdmF0YXJ8fCdzYW1hbnRhJyk9PT1rfSIgYXJpYS1sYWJlbD0iQXZhdGFyICR7a30iPiR7YXZhdGFyU3ZnKGssNDQpfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmA6Jyd9CiAgICAgIDxidXR0b24gY2xhc3M9InByb3ciIGRhdGEtdWFjdD0ibGFuZyI+PHNwYW4+JHt0KCdsYW5ndWFnZScpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPiR7ZXNjKGN1ckxhbmcpfSDigLo8L3NwYW4+PC9idXR0b24+CiAgICAgICR7bmVlZHNHZW4oKT9gPGRpdiBjbGFzcz0icHJvdyBzdGF0aWMiPjxzcGFuPiR7dCgnYWRkcmVzcycpfTwvc3Bhbj48c3BhbiBjbGFzcz0ibWluaSI+PGJ1dHRvbiBkYXRhLWdlbj0iZiIgYXJpYS1wcmVzc2VkPSIke0RBVEEuc2V0dGluZ3MuZ2VuIT09J20nfSI+JHt0KCdmZW0nKX08L2J1dHRvbj48YnV0dG9uIGRhdGEtZ2VuPSJtIiBhcmlhLXByZXNzZWQ9IiR7REFUQS5zZXR0aW5ncy5nZW49PT0nbSd9Ij4ke3QoJ21hc2MnKX08L2J1dHRvbj48L3NwYW4+PC9kaXY+YDonJ30KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCBwbGlzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9InByb3ciIGRhdGEtdWFjdD0iaW50cm8iPjxzcGFuPiR7dCgnaW50cm8nKX08L3NwYW4+PHNwYW4gY2xhc3M9InB2Ij7igLo8L3NwYW4+PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InByb3ciIGRhdGEtdWFjdD0iYWJvdXQiPjxzcGFuPiR7dCgnYWJvdXQnKX08L3NwYW4+PHNwYW4gY2xhc3M9InB2Ij7igLo8L3NwYW4+PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InByb3ciIGRhdGEtdWFjdD0icHJlY2VwdGUiPjxzcGFuPiR7dCgna2FybWEnKX08c21hbGw+JHt0KCdrYXJtYVN1YicpfTwvc21hbGw+PC9zcGFuPjxzcGFuIGNsYXNzPSJwdiI+4oC6PC9zcGFuPjwvYnV0dG9uPgogICAgICAke0NPTkZJRy5jb3Vyc2VzVXJsP2A8YSBjbGFzcz0icHJvdyIgaHJlZj0iJHtlc2MoQ09ORklHLmNvdXJzZXNVcmwpfSIgdGFyZ2V0PSJfdG9wIj48c3Bhbj4ke3QoJ2NvdXJzZXMnKX08L3NwYW4+PHNwYW4gY2xhc3M9InB2Ij7igLo8L3NwYW4+PC9hPmA6Jyd9CiAgICAgIDxhIGNsYXNzPSJwcm93IiBocmVmPSJtYWlsdG86Y29udGFjdEBkb3JlbGFpZXBhbi5jb20iPjxzcGFuPiR7dCgnY29udGFjdCcpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPmNvbnRhY3RAZG9yZWxhaWVwYW4uY29tPC9zcGFuPjwvYT4KICAgIDwvZGl2PgogICAgJHtDT05GSUcuYXBpPycnOmA8cCBjbGFzcz0iYmFubmVyIj4ke3QoJ3Byb2ZCYW5uZXInKX08L3A+YH0KICA8L2Rpdj5gOwp9CgovKiA9PT09PT09PT09PT0gSW50cm9kdWN0aW9uLCBBYm91dCwgMTAgUG9zaXRpdmUgS2FybWFzID09PT09PT09PT09PSAqLwpjb25zdCBJTlRST19CRyA9IFsnbGluZWFyLWdyYWRpZW50KDE2MGRlZywjRERFOUM4LCM5REJCNzIpJywnbGluZWFyLWdyYWRpZW50KDE2MGRlZywjRUZFNUQ4LCNDOUE0N0UpJywnbGluZWFyLWdyYWRpZW50KDE2MGRlZywjRTFFOEYyLCM5RkI0RDMpJywnbGluZWFyLWdyYWRpZW50KDE2MGRlZywjRjdFMkVCLCNEOTlBQjUpJywnbGluZWFyLWdyYWRpZW50KDE2MGRlZywjRERFRkVDLCM4Q0MyQjgpJ107CmNvbnN0IEtBUk1BX0dST1VQUyA9IFtbMCwzXSxbMyw3XSxbNywxMF1dOwpjb25zdCBLQVJNQV9ET01BSU5TID0gW1syLDgsOV0sWzMsNCw1LDZdLFsxLDYsN11dOwpsZXQgb3Y9bnVsbCwgb3ZJZHg9MDsKZnVuY3Rpb24gcmVuZGVyT3ZlcmxheSgpewogIGxldCBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZsJyk7CiAgaWYgKCFvdil7IGlmKGVsKSBlbC5yZW1vdmUoKTsgcmV0dXJuIH0KICBpZiAoIWVsKXsgZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGVsLmlkPSdvdmwnOyBlbC5jbGFzc05hbWU9J292bCc7IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hcHAnKS5hcHBlbmRDaGlsZChlbCkgfQogIGNvbnN0IFg9eHQoKTsKICBpZiAob3Y9PT0naW50cm8nKXsKICAgIGNvbnN0IHM9WC5pbnRyb1tvdklkeF0sIGxhc3Q9b3ZJZHg9PT1YLmludHJvLmxlbmd0aC0xOwogICAgY29uc3QgdGl0bGUgPSAob3ZJZHg9PT0wICYmIEdVSVtsYW5nKCldICYmIEdVSVtsYW5nKCldLmludHJvSGVsbG8pID8gR1VJW2xhbmcoKV0uaW50cm9IZWxsbygpIDogc1swXTsKICAgIGVsLmlubmVySFRNTD1gPGRpdiBjbGFzcz0ic2xpZGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7SU5UUk9fQkdbb3ZJZHhdfSI+PGJ1dHRvbiBjbGFzcz0ieCIgZGF0YS1vdj0iY2xvc2UiIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ2Nsb3NlJykpfSI+w5c8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0iaGV4bnVtIj4ke292SWR4KzF9PC9kaXY+PGgyPiR7ZXNjKHRpdGxlKX08L2gyPjxwPiR7ZXNjKHNbMV0pfTwvcD4KICAgICAgPGRpdiBjbGFzcz0iZG90cyI+JHtYLmludHJvLm1hcCgoXyxpKT0+YDxzcGFuIGNsYXNzPSIke2k9PT1vdklkeD8nb24nOicnfSI+PC9zcGFuPmApLmpvaW4oJycpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJidG5zIj4ke292SWR4P2A8YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtb3Y9InByZXYiPiR7dCgnb3ZQcmV2Jyl9PC9idXR0b24+YDonJ308YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtb3Y9IiR7bGFzdD8nY2xvc2UnOiduZXh0J30iPiR7dChsYXN0PydvdlN0YXJ0Jzonb3ZOZXh0Jyl9PC9idXR0b24+PC9kaXY+PC9kaXY+YDsKICB9IGVsc2UgaWYgKG92PT09J3ByZWNlcHRlJyl7CiAgICBlbC5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImFib3V0Ij48ZGl2IGNsYXNzPSJhdG9wIj48aDI+JHt0KCdrYXJtYScpfTwvaDI+PGJ1dHRvbiBjbGFzcz0ieCIgZGF0YS1vdj0iY2xvc2UiIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ2Nsb3NlJykpfSI+w5c8L2J1dHRvbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYXN0ZXBzIj48cCBjbGFzcz0ibGVhZCIgc3R5bGU9Im1hcmdpbjowIj4ke3QoJ2thcm1hTGVhZCcpfTwvcD4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjowIj4ke2VzYyhYLmtpbnRybyl9PC9wPgogICAgICAke0tBUk1BX0dST1VQUy5tYXAoKFthLGJdLGdpKT0+YDxoNCBjbGFzcz0ia2dyb3VwIj4ke1guZ3JvdXBzW2dpXX08L2g0PmArWC5rYXJtYS5zbGljZShhLGIpLm1hcCgocCxrKT0+eyBjb25zdCB4PVgua2FybWFYW2Era10sIEw9WC5rbGFiZWxzOyByZXR1cm4gYDxzZWN0aW9uPjxkaXYgY2xhc3M9ImhleG51bSBzbSI+JHthK2srMX08L2Rpdj48ZGl2PjxoMz4ke2VzYyhwWzBdKX08L2gzPjxwPiR7ZXNjKHBbMV0pfTwvcD4KICAgICAgICA8cCBjbGFzcz0ia2wiPiR7ZXNjKExbMF0pfTwvcD48cD4ke2VzYyh4LmMpfTwvcD4KICAgICAgICA8cCBjbGFzcz0ia2wiPiR7ZXNjKExbMV0pfTwvcD48dWwgY2xhc3M9ImtjIj4ke3guay5tYXAoaT0+YDxsaT4ke2VzYyhpKX08L2xpPmApLmpvaW4oJycpfTwvdWw+CiAgICAgICAgPHAgY2xhc3M9ImtsIj4ke2VzYyhMWzJdKX08L3A+PHA+PGI+JHtlc2MoTFszXSl9PC9iPiAke2VzYyh4LnYpfTxicj48Yj4ke2VzYyhMWzRdKX08L2I+ICR7ZXNjKHguail9PC9wPgogICAgICAgIDxwIGNsYXNzPSJzZWVkIj4ke2VzYyhwWzJdKX08L3A+PC9kaXY+PC9zZWN0aW9uPmAgfSkuam9pbignJykpLmpvaW4oJycpfQogICAgICA8aDQgY2xhc3M9Imtncm91cCI+JHt0KCdieURvbWFpbicpfTwvaDQ+CiAgICAgIDxkaXYgY2xhc3M9Imtkb20iPiR7S0FSTUFfRE9NQUlOUy5tYXAoKGwsZGkpPT5gPGRpdj48Yj4ke1guZG9tYWluc1tkaV19PC9iPiR7bC5tYXAobj0+YDxzcGFuPjxpPiR7bn08L2k+JHtlc2MoWC5rYXJtYVtuLTFdWzBdKX08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+PC9kaXY+YDsKICB9IGVsc2UgewogICAgZWwuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJhYm91dCI+PGRpdiBjbGFzcz0iYXRvcCI+PGgyPiR7dCgnYWJvdXQnKX08L2gyPjxidXR0b24gY2xhc3M9IngiIGRhdGEtb3Y9ImNsb3NlIiBhcmlhLWxhYmVsPSIke2VzYyh0KCdjbG9zZScpKX0iPsOXPC9idXR0b24+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFzdGVwcyI+JHtYLmFib3V0Lm1hcCgocyxpKT0+YDxzZWN0aW9uPjxkaXYgY2xhc3M9ImhleG51bSBzbSI+JHtpKzF9PC9kaXY+PGRpdj48aDM+JHtlc2Moc1swXSl9PC9oMz4ke3NbMV0ubWFwKHA9PnR5cGVvZiBwPT09J3N0cmluZyc\/YDxwPiR7ZXNjKHApfTwvcD5gOmA8cD4ke2VzYyhwLnN1YnMpfTwvcD4ke0NPTkZJRy5zdWJzVXJsP2A8YSBjbGFzcz0iYnRuIHNvZnQiIGhyZWY9IiR7ZXNjKENPTkZJRy5zdWJzVXJsKX0iIHRhcmdldD0iX3RvcCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206OHB4Ij4ke3QoJ3VTZWVTdWJzJyl9PC9hPmA6Jyd9YCkuam9pbignJyl9PC9kaXY+PC9zZWN0aW9uPmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PmA7CiAgfQp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57CiAgY29uc3QgYj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1vdl0nKTsgaWYoIWIpIHJldHVybjsKICBjb25zdCBhPWIuZGF0YXNldC5vdjsKICBpZihhPT09J25leHQnKSBvdklkeCsrOyBlbHNlIGlmKGE9PT0ncHJldicpIG92SWR4LS07IGVsc2UgeyBpZihvdj09PSdpbnRybycgJiYgIURBVEEuc2V0dGluZ3MuaW50cm9TZWVuKXsgREFUQS5zZXR0aW5ncy5pbnRyb1NlZW49dHJ1ZTsgcGVyc2lzdCgpIH0gb3Y9bnVsbCB9CiAgcmVuZGVyT3ZlcmxheSgpOwp9KTsKCi8qID09PT09PT09PT09PSBOZXcgYWN0aW9ucyA9PT09PT09PT09PT0gKi8KJCgnI21haW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZT0+ewogIGNvbnN0IGF2PWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWF2XScpOyBpZihhdil7IERBVEEuc2V0dGluZ3MuYXZhdGFyPWF2LmRhdGFzZXQuYXY7IHBlcnNpc3QoKTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgYj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS11YWN0XScpOyBpZighYikgcmV0dXJuOwogIGNvbnN0IGE9Yi5kYXRhc2V0LnVhY3Q7CiAgaWYoYT09PSdkcmF3J3x8YT09PSdhZ2FpbicpIHVEcmF3KCk7CiAgaWYoYT09PSdzYXZlJykgdVNhdmUoKTsKICBpZihhPT09J3NpbScpeyBEQVRBLnNldHRpbmdzLnNpbVN1Yj0hREFUQS5zZXR0aW5ncy5zaW1TdWI7IHBlcnNpc3QoKTsgcmVuZGVyKCkgfQogIGlmKGE9PT0nYXZhdGFyJyl7IGF2T3Blbj0hYXZPcGVuOyByZW5kZXIoKSB9CiAgaWYoYT09PSdsYW5nJyl7ICQoJyNsYW5nQnRuJykuY2xpY2soKSB9CiAgaWYoYT09PSdpbnRybycpeyBvdj0naW50cm8nOyBvdklkeD0wOyByZW5kZXJPdmVybGF5KCkgfQogIGlmKGE9PT0nYWJvdXQnKXsgb3Y9J2Fib3V0JzsgcmVuZGVyT3ZlcmxheSgpIH0KICBpZihhPT09J3ByZWNlcHRlJyl7IG92PSdwcmVjZXB0ZSc7IHJlbmRlck92ZXJsYXkoKSB9CiAgaWYoYT09PSduYW1lJyl7IHNoYXJlT3Blbj0nX19uYW1lJzsgbmFtZURyYWZ0PURBVEEuY29tbS5uYW1lfHwnJzsgcmVuZGVyU2hhcmUoKTsgY29uc3QgaT0kKCcjY29tbU5hbWUnKTsgaSYmaS5mb2N1cygpIH0KfSk7CiQoJyNtYWluJykuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGU9PnsgaWYoZS50YXJnZXQuaWQ9PT0ndU5vdGUnKXsgY29uc3QgdT11VG9kYXkoKTsgaWYodSl7IHUubm90ZT1lLnRhcmdldC52YWx1ZSB9IH0gfSk7CgovKiA9PT09PT09PT09PT0gQWN0aW9ucyA9PT09PT09PT09PT0gKi8KJCgnI21haW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZT0+ewogIGNvbnN0IG9wPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLW9wZW5wdXRdJyk7IGlmKG9wICYmICFlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1kZWxdJykpeyB0YWI9J3B1dGVyaSc7IHBWaWV3PW9wLmRhdGFzZXQub3BlbnB1dDsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTA7IHJldHVybiB9CiAgY29uc3QgcHY9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcHZdJyk7IGlmKHB2ICYmICFwdi5kaXNhYmxlZCl7IHBDYXB0dXJlKCk7IHBEcmFmdC52PStwdi5kYXRhc2V0LnB2OyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCB0bT1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS10ZW1hXScpOyBpZih0bSl7IHBDYXB0dXJlKCk7IHBEcmFmdC50ZW1hID0gcERyYWZ0LnRlbWE9PT10bS5kYXRhc2V0LnRlbWEgPyAnJyA6IHRtLmRhdGFzZXQudGVtYTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3Qgemk9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtemldJyk7IGlmKHppKXsgcENhcHR1cmUoKTsgcERyYWZ0LnppPXppLmRhdGFzZXQuemk7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IGR1PWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWR1cl0nKTsgaWYoZHUpeyBjb25zdCBmPSQoJyNwZl9wMycpOyBpZihmKXsgY29uc3QgZD1kdS5kYXRhc2V0LmR1cjsKICAgICAgaWYoZHUuZGF0YXNldC5tb2RlPT09J3NldCcpIGYudmFsdWU9ZDsgZWxzZSB7IGNvbnN0IGJhc2U9Zi52YWx1ZS5yZXBsYWNlKHR4KCkuZHVyU3RyaXAsJycpOyBmLnZhbHVlPShiYXNlP2Jhc2UrJyAnOicnKSt0eCgpLmR1ckFwcGVuZChkKSB9CiAgICAgIHBEcmFmdC5wMz1mLnZhbHVlOyBmLmZvY3VzKCkgfSByZXR1cm4gfQogIGNvbnN0IG9iPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLW9wZW5idWNdJyk7IGlmKG9iICYmICFlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1kZWxdJykpeyB0YWI9J2J1Y3VyaWUnOyBidWNWaWV3PW9iLmRhdGFzZXQub3BlbmJ1YzsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTA7IHJldHVybiB9CiAgY29uc3QgZ2I9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZ2VuXScpOyBpZihnYil7IHJlY1Jvd3MmJnRhYj09PSdyZWN1bm9zdGludGUnJiZyZWNDYXB0dXJlKCk7IERBVEEuc2V0dGluZ3MuZ2VuPWdiLmRhdGFzZXQuZ2VuOyBwZXJzaXN0KCk7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHBvPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXByZXZvYmpdJyk7IGlmKHBvKXsgY29uc3Qgbz1wcmV2TGlzdCgpWytwby5kYXRhc2V0LnByZXZvYmpdOyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1idWNdJykuZm9yRWFjaChlbD0+YnVjRHJhZnRbZWwuZGF0YXNldC5idWNdPWVsLnZhbHVlKTsgYnVjRHJhZnQub2JpZWN0aXY9bzsgb2JqT3Blbj1mYWxzZTsgb2JqUXVlcnk9Jyc7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHRkPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRkb25lXScpOyBpZih0ZCl7IGNvbnN0IHg9REFUQS50b2Rvcy5maW5kKHk9PnkuaWQ9PT10ZC5kYXRhc2V0LnRkb25lKTsgeC5kb25lPSF4LmRvbmU7IHguZG9uZUF0PXguZG9uZT9uZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk6bnVsbDsgcGVyc2lzdCgpOyByZW5kZXIoKTsgaWYoeC5kb25lKSB0b2FzdCh0KCdkb25lVG9hc3QnKSk7IHJldHVybiB9CiAgY29uc3QgdGRsPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRkZWxdJyk7IGlmKHRkbCl7IHBlbmRpbmdEZWw9dGRsLmRhdGFzZXQudGRlbDsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgdGR5PWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRkZWwteWVzXScpOyBpZih0ZHkpeyBEQVRBLnRvZG9zPURBVEEudG9kb3MuZmlsdGVyKHg9PnguaWQhPT10ZHkuZGF0YXNldC50ZGVsWWVzKTsgcGVuZGluZ0RlbD1udWxsOyBwZXJzaXN0KCk7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHJrPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXJrXScpOyBpZihyayl7IHJlY0NhcHR1cmUoKTsgcmVjUm93c1srcmsuZGF0YXNldC5yaV0uaz1yay5kYXRhc2V0LnJrOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBycm09ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcnJtXScpOyBpZihycm0peyByZWNDYXB0dXJlKCk7IHJlY1Jvd3Muc3BsaWNlKCtycm0uZGF0YXNldC5ycm0sMSk7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IGc9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZ29dJyk7IGlmKGcpeyBpZihnLmRhdGFzZXQuZ289PT0nanVybmFsJyl7IGpWaWV3PWcuZGF0YXNldC5qdnx8J21pbmUnOyBpZihqVmlldz09PSdjb21tJykgY29tbUxvYWQoKSB9IGdvKGcuZGF0YXNldC5nbyk7IHJldHVybiB9CiAgY29uc3Qgc2V0PWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNldF0nKTsKICBpZihzZXQpeyBjb25zdCBrPXNldC5kYXRhc2V0LnNldCwgdj1zZXQuZGF0YXNldC52YWw7IERBVEEuc2V0dGluZ3Nba109IChrPT09J2tpbmQnfHxrPT09J3NvdW5kJyk\/IHYgOiBOdW1iZXIodik7IHBlcnNpc3QoKTsKICAgIGNvbnN0IGtlZXBUPSQoJyN0VGl0bGUnKT8udmFsdWUsIGtlZXBNPSQoJyNtVGl0bGUnKT8udmFsdWUsIGtlZXBEPSQoJyNtRGF0ZScpPy52YWx1ZTsKICAgIHJlbmRlcigpOyBpZigkKCcjdFRpdGxlJykmJmtlZXBUKSAkKCcjdFRpdGxlJykudmFsdWU9a2VlcFQ7IGlmKCQoJyNtVGl0bGUnKSYma2VlcE0pICQoJyNtVGl0bGUnKS52YWx1ZT1rZWVwTTsgaWYoJCgnI21EYXRlJykmJmtlZXBEKSAkKCcjbURhdGUnKS52YWx1ZT1rZWVwRDsgcmV0dXJuIH0KICBjb25zdCBmPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWZpbHRlcl0nKTsgaWYoZil7IGpGaWx0ZXI9Zi5kYXRhc2V0LmZpbHRlcjsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgcHI9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcHJpdl0nKTsgaWYocHIpeyBjb25zdCBrPXByLmRhdGFzZXQucHJpdjsgaWYoaz09PSdyZWN1bm9zdGludGUnKSByZWNDYXB0dXJlKCk7IGlmKGs9PT0ncHV0ZXJpJykgcENhcHR1cmUoKTsgaWYoaz09PSdidWN1cmllJykgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYnVjXScpLmZvckVhY2goZWw9PmJ1Y0RyYWZ0W2VsLmRhdGFzZXQuYnVjXT1lbC52YWx1ZSk7IHNoYXJlTmV4dFtrXT1wci5kYXRhc2V0LnZhbD09PScxJzsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QganY9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtanZpZXddJyk7IGlmKGp2KXsgalZpZXc9anYuZGF0YXNldC5qdmlldzsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTA7IGlmKGpWaWV3PT09J2NvbW0nKSBjb21tTG9hZCgpOyByZXR1cm4gfQogIGNvbnN0IGNmPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWNmaWx0ZXJdJyk7IGlmKGNmKXsgY0ZpbHRlcj1jZi5kYXRhc2V0LmNmaWx0ZXI7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IGNsPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWNsYW5nXScpOyBpZihjbCl7IERBVEEuc2V0dGluZ3MuY29tbUxhbmc9Y2wuZGF0YXNldC5jbGFuZzsgcGVyc2lzdCgpOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCByYz1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1yZWFjdF0nKTsgaWYocmMpeyBjb25zdCBpZD1yYy5kYXRhc2V0LnJlYWN0LCBwPWNvbW1Qb3N0cygpLmZpbmQoeD0+eC5pZD09PWlkKTsgaWYoIXApIHJldHVybjsKICAgIGlmKENPTkZJRy5hcGkpeyBjb25zdCBvbj0hcC5yZWFjdGVkOyBwLnJlYWN0ZWQ9b247IHAucmVhY3RzPShwLnJlYWN0c3x8MCkrKG9uPzE6LTEpOyByZW5kZXIoKTsgaWYob24pIHRvYXN0KHJlYWN0T2YocC50eXBlKS50b2FzdCk7CiAgICAgIGFwaUMoJ2NvbW11bml0eS8nK2lkKycvcmVhY3QnLHttZXRob2Q6J1BPU1QnLGJvZHk6e29ufX0pLnRoZW4oaj0+eyBwLnJlYWN0cz1qLnJlYWN0czsgcC5yZWFjdGVkPWoucmVhY3RlZDsgcmVuZGVyKCkgfSkuY2F0Y2goZXJyPT50b2FzdChlcnIubWVzc2FnZSkpOyByZXR1cm4gfQogICAgY29uc3Qgb249IURBVEEuY29tbS5yZWFjdGVkW2lkXTsgaWYob24pIERBVEEuY29tbS5yZWFjdGVkW2lkXT0xOyBlbHNlIGRlbGV0ZSBEQVRBLmNvbW0ucmVhY3RlZFtpZF07IHBlcnNpc3QoKTsgcmVuZGVyKCk7IGlmKG9uKSB0b2FzdChyZWFjdE9mKHAudHlwZSkudG9hc3QpOyByZXR1cm4gfQogIGNvbnN0IG1vPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLW1vcmVdJyk7IGlmKG1vKXsgb3BlblBvc3RbbW8uZGF0YXNldC5tb3JlXT0hb3BlblBvc3RbbW8uZGF0YXNldC5tb3JlXTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgcnA9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcmVwb3J0XScpOyBpZihycCl7IGlmKHBlbmRpbmdSZXA9PT1ycC5kYXRhc2V0LnJlcG9ydCl7IGNvbnN0IGlkPXJwLmRhdGFzZXQucmVwb3J0OyBwZW5kaW5nUmVwPW51bGw7CiAgICAgIGlmKENPTkZJRy5hcGkpeyBhcGlDKCdjb21tdW5pdHkvJytpZCsnL3JlcG9ydCcse21ldGhvZDonUE9TVCcsYm9keTp7fX0pLnRoZW4oKCk9PnsgQ0MucG9zdHM9Q0MucG9zdHMuZmlsdGVyKHA9PnAuaWQhPT1pZCk7IHJlbmRlcigpOyB0b2FzdCh0KCdyZXBvcnRlZCcpKSB9KS5jYXRjaChlcnI9PnRvYXN0KGVyci5tZXNzYWdlKSkgfQogICAgICBlbHNlIHsgREFUQS5jb21tLmhpZGRlbltpZF09MTsgcGVyc2lzdCgpOyByZW5kZXIoKTsgdG9hc3QodCgncmVwb3J0ZWQnKSkgfSB9CiAgICBlbHNlIHsgcGVuZGluZ1JlcD1ycC5kYXRhc2V0LnJlcG9ydDsgcnAudGV4dENvbnRlbnQ9dCgncmVwb3J0QWdhaW4nKSB9IHJldHVybiB9CiAgY29uc3QgZD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1kZWxdJyk7IGlmKGQpeyBwZW5kaW5nRGVsPWQuZGF0YXNldC5kZWw7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IGR5PWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWRlbC15ZXNdJyk7IGlmKGR5KXsgREFUQS5lbnRyaWVzPURBVEEuZW50cmllcy5maWx0ZXIoeD0+eC5pZCE9PWR5LmRhdGFzZXQuZGVsWWVzKTsgcGVuZGluZ0RlbD1udWxsOyBwZXJzaXN0KCk7IHJlbmRlcigpOyB0b2FzdCh0KCdkZWxldGVkJykpOyByZXR1cm4gfQogIGlmKGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWRlbC1ub10nKSl7IHBlbmRpbmdEZWw9bnVsbDsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgYT1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1hY3RdJyk7IGlmKCFhKSByZXR1cm47CiAgY29uc3QgYWN0PWEuZGF0YXNldC5hY3Q7CiAgaWYoYWN0PT09J3N0YXJ0JykgdGltZXJTdGFydCgpOwogIGlmKGFjdD09PSdwYXVzZScpIHRpbWVyUGF1c2UoKTsKICBpZihhY3Q9PT0ncmVzdW1lJykgdGltZXJSZXN1bWUoKTsKICBpZihhY3Q9PT0nc3RvcCcpIHRpbWVyU3RvcCgpOwogIGlmKGFjdD09PSd0ZXN0Jyl7IGF1ZGlvVW5sb2NrKCk7IHN0cmlrZSgpIH0KICBpZihhY3Q9PT0ncmVjQWRkJyl7IHJlY0NhcHR1cmUoKTsgY29uc3QgbGFzdD1yZWNSb3dzW3JlY1Jvd3MubGVuZ3RoLTFdOyByZWNSb3dzLnB1c2goe2s6bGFzdD9sYXN0Lms6J3JlY3Vub3N0aW50YScsdDonJ30pOyByZW5kZXIoKTsgY29uc3QgaW5wPSQoJyNydF8nKyhyZWNSb3dzLmxlbmd0aC0xKSk7IGlucCYmaW5wLmZvY3VzKCkgfQogIGlmKGFjdD09PSdyZWNTYXZlJyl7IHJlY0NhcHR1cmUoKTsgY29uc3QgaXRlbXM9cmVjUm93cy5tYXAoeD0+KHtrOnguayx0OngudC50cmltKCl9KSkuZmlsdGVyKHg9PngudCk7CiAgICBpZighaXRlbXMubGVuZ3RoKXsgdG9hc3QodCgnd3JpdGVPbmUnKSk7IHJldHVybiB9CiAgICBhZGRFbnRyeSh7dHlwZToncmVjdW5vc3RpbnRlJyxpdGVtcyxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0pOyByZWNSb3dzPW51bGw7IGNvbnN0IG5pZD1EQVRBLmVudHJpZXNbREFUQS5lbnRyaWVzLmxlbmd0aC0xXS5pZDsgcmVuZGVyKCk7IHRvYXN0KHQoJ3NhdmVkSicpKTsgaWYoc2hhcmVOZXh0LnJlY3Vub3N0aW50ZSl7IHNoYXJlTmV4dC5yZWN1bm9zdGludGU9ZmFsc2U7IHJlbmRlcigpOyBvcGVuU2hhcmUobmlkKSB9IH0KICBpZihhY3Q9PT0nYnVjU2F2ZScpeyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1idWNdJykuZm9yRWFjaChlbD0+YnVjRHJhZnRbZWwuZGF0YXNldC5idWNdPWVsLnZhbHVlLnRyaW0oKSk7CiAgICBpZighUV9LRVlTLnNvbWUoaz0+YnVjRHJhZnRba10pKXsgdG9hc3QodCgnZmlsbEFuc3dlcnMnKSk7IHJldHVybiB9CiAgICBhZGRFbnRyeSh7dHlwZTonYnVjdXJpZScsLi4uYnVjRHJhZnQsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9KTsgYnVjVmlldz1EQVRBLmVudHJpZXNbREFUQS5lbnRyaWVzLmxlbmd0aC0xXS5pZDsKICAgIGlmKGJ1Y1RvZG9BZGRlZCl7IGNvbnN0IGxhc3Q9REFUQS50b2Rvc1tEQVRBLnRvZG9zLmxlbmd0aC0xXTsgaWYobGFzdCYmIWxhc3QuZnJvbSl7IGxhc3QuZnJvbT1idWNWaWV3OyBwZXJzaXN0KCkgfSB9CiAgICBidWNEcmFmdD17fTsgYnVjVG9kb0FkZGVkPWZhbHNlOyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MDsgaWYoc2hhcmVOZXh0LmJ1Y3VyaWUpeyBzaGFyZU5leHQuYnVjdXJpZT1mYWxzZTsgb3BlblNoYXJlKGJ1Y1ZpZXcpIH0gfQogIGlmKGFjdD09PSdidWNUb2RvJyl7IGNvbnN0IHY9KCQoJyNiX2FqdXRvcicpLnZhbHVlfHwnJykudHJpbSgpOyBpZih2JiYhYnVjVG9kb0FkZGVkKXsgYWRkVG9kbyh2LCdidWN1cmllJyk7IGJ1Y1RvZG9BZGRlZD10cnVlOyBhLmRpc2FibGVkPXRydWU7IGEudGV4dENvbnRlbnQ9dCgnYWRkZWRUb2RvJyk7IHRvYXN0KHQoJ3RvYXN0QWRkZWQnKSkgfSB9CiAgaWYoYWN0PT09J2J1Y1RvZG9SZWNhcCcpeyBjb25zdCBlbj1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09YS5kYXRhc2V0LmlkKTsgaWYoZW4peyBhZGRUb2RvKGVuLmFqdXRvciwnYnVjdXJpZScsZW4uaWQpOyByZW5kZXIoKTsgdG9hc3QodCgndG9hc3RBZGRlZCcpKSB9IH0KICBpZihhY3Q9PT0ndG9kb0FkZCcpeyBjb25zdCB2PSgkKCcjdG9kb05ldycpLnZhbHVlfHwnJykudHJpbSgpOyBpZih2KXsgYWRkVG9kbyh2LCdtYW51YWwnKTsgcmVuZGVyKCk7ICQoJyN0b2RvTmV3JykmJiQoJyN0b2RvTmV3JykuZm9jdXMoKSB9IH0KICBpZihhY3Q9PT0ndG9kb1RvZ2dsZURvbmUnKXsgdG9kb1Nob3dEb25lPSF0b2RvU2hvd0RvbmU7IHJlbmRlcigpIH0KICBpZihhY3Q9PT0nb2JqVG9nZ2xlJyl7IGlmKGEuY2xhc3NMaXN0LmNvbnRhaW5zKCdzaGVldC1iZycpICYmIGUudGFyZ2V0IT09YSkgcmV0dXJuOyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1idWNdJykuZm9yRWFjaChlbD0+YnVjRHJhZnRbZWwuZGF0YXNldC5idWNdPWVsLnZhbHVlKTsgb2JqT3Blbj0hb2JqT3BlbjsgcmVuZGVyKCk7IGlmKG9iak9wZW4peyBjb25zdCBzaT0kKCcjb2JqU2VhcmNoJyk7IHNpJiZzaS5mb2N1cygpIH0gfQogIGlmKGFjdD09PSdwU2F2ZScpeyBwQ2FwdHVyZSgpOyBjb25zdCBrZXlzPVsncDFlJywncDFhJywncDFiJywncDInLCdwMycsJ3A0J107CiAgICBpZigha2V5cy5zb21lKGs9PihwRHJhZnRba118fCcnKS50cmltKCkpKXsgdG9hc3QodCgnZmlsbFBvd2VycycpKTsgcmV0dXJuIH0KICAgIGNvbnN0IGU9e3R5cGU6J3B1dGVyaScsdjpwRHJhZnQudix6aTpwRHJhZnQueml8fCdhemknLHRlbWE6cERyYWZ0LnRlbWF8fCcnLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfTsga2V5cy5mb3JFYWNoKGs9PmVba109KHBEcmFmdFtrXXx8JycpLnRyaW0oKSk7IGlmKGUudj09PTIpIGUucDFhPScnOyBpZihlLnY9PT00KSBlLnAxYj0nJzsgaWYoZS52IT09MykgZS5wMWU9Jyc7CiAgICBhZGRFbnRyeShlKTsgcFZpZXc9REFUQS5lbnRyaWVzW0RBVEEuZW50cmllcy5sZW5ndGgtMV0uaWQ7CiAgICBpZihlLnA0KSBhZGRUb2RvKG5vTGVhZChlLnA0KSwncHV0ZXJpJyxwVmlldyxlLnppKTsKICAgIHBEcmFmdD17djoxLHppOidhemknfTsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTA7IGlmKHNoYXJlTmV4dC5wdXRlcmkpeyBzaGFyZU5leHQucHV0ZXJpPWZhbHNlOyBvcGVuU2hhcmUocFZpZXcpIH0gfQogIGlmKGFjdD09PSdwQ29weScpeyBjb25zdCBlbj1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09YS5kYXRhc2V0LmlkKTsgaWYoZW4pIGNvcHlSaWNoKHB1dGVyaVRleHQoZW4pLHB1dGVyaUh0bWwoZW4pKSB9CiAgaWYoYWN0PT09J3BQZGYnKXsgdHJ5eyB3aW5kb3cucHJpbnQoKSB9Y2F0Y2goZXJyKXt9IH0KICBpZihhY3Q9PT0nZmlyc3ROYW1lJyl7IChhc3luYygpPT57IGlmKCEoYXdhaXQgc2V0TmFtZSgkKCcjZmlyc3ROYW1lJykudmFsdWUpKSkgcmV0dXJuOyByZW5kZXIoKTsgdG9hc3QodCgnd2VsY29tZScpKERBVEEuY29tbS5uYW1lKSkgfSkoKSB9CiAgaWYoYWN0PT09J25hbWVMYXRlcicpeyBuYW1lTGF0ZXI9dHJ1ZTsgcmVuZGVyKCkgfQogIGlmKGFjdD09PSduYW1lRWRpdCcgJiYgIWUudGFyZ2V0LmNsb3Nlc3QoJyNzaGFyZVNoZWV0JykpeyBzaGFyZU9wZW49J19fbmFtZSc7IG5hbWVEcmFmdD1EQVRBLmNvbW0ubmFtZXx8Jyc7IHJlbmRlclNoYXJlKCk7IGNvbnN0IGk9JCgnI2NvbW1OYW1lJyk7IGkmJmkuZm9jdXMoKTsgcmV0dXJuIH0KICBpZihhY3Q9PT0ndGVtZUFsbCcpeyBwQ2FwdHVyZSgpOyB0ZW1lQWxsPSF0ZW1lQWxsOyByZW5kZXIoKSB9CiAgaWYoYWN0PT09J3RlbWFBZGQnKXsgcENhcHR1cmUoKTsgY29uc3Qgdj0oJCgnI3RlbWFOb3VhJykudmFsdWV8fCcnKS50cmltKCk7IGlmKHYpeyBjb25zdCBiYXNlPVRFTUVfQkFaQS5maW5kKGI9Pm5vcm0odGVtYUxhYmVsKGIpKT09PW5vcm0odikpOyBjb25zdCB2YWw9YmFzZXx8djsgY29uc3QgTD1EQVRBLnNldHRpbmdzLnRlbWU9REFUQS5zZXR0aW5ncy50ZW1lfHxbXTsgaWYoIXRlbWVUb2F0ZSgpLmluY2x1ZGVzKHZhbCkpIEwucHVzaCh2YWwpOyBwRHJhZnQudGVtYT12YWw7IHBlcnNpc3QoKTsgcmVuZGVyKCkgfSB9CiAgaWYoYWN0PT09J2V4cE9wZW4nKXsgcENhcHR1cmUoKTsgcEV4cG9ydD10cnVlOyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MCB9CiAgaWYoYWN0PT09J2V4cENsb3NlJyl7IHBFeHBvcnQ9ZmFsc2U7IHJlbmRlcigpOyAkKCcjbWFpbicpLnNjcm9sbFRvcD0wIH0KICBpZihhY3Q9PT0nZXhwQ29weScpeyBjb25zdCBsPWV4cExpc3QoKTsgY29weVJpY2gobC5tYXAocHV0ZXJpVGV4dCkuam9pbignXG7igJQg4oCUIOKAlFxuXG4nKSwgbC5tYXAocHV0ZXJpSHRtbCkuam9pbignPGhyPicpKSB9CiAgaWYoYWN0PT09J3BOZXcnKXsgcFZpZXc9bnVsbDsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTAgfQogIGlmKGFjdD09PSdidWNOZXcnKXsgYnVjVmlldz1udWxsOyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MCB9CiAgaWYoYWN0PT09J2JyZWF0aGUnKSBicmVhdGhlKCk7CiAgaWYoYWN0PT09J3Jlc2V0Jyl7IFQucGhhc2U9J2lkbGUnOyByZW5kZXJQcmFjdGljYSgpIH0KICBpZihhY3Q9PT0nc2F2ZVRpdGxlJyl7IGNvbnN0IHg9REFUQS5lbnRyaWVzLmZpbmQoeT0+eS5pZD09PVQuc2F2ZWRJZCk7IGlmKHgpeyB4LnRpdGxlPSQoJyNkb25lVGl0bGUnKS52YWx1ZS50cmltKCk7IHBlcnNpc3QoKTsgdG9hc3QodCgnc2F2ZWRKJykpIH0gfQogIGlmKGFjdD09PSdzYXZlUGFydGlhbCcpeyBhZGRFbnRyeSh7dHlwZTpULmtpbmQsdGl0bGU6VC50aXRsZSxtaW51dGVzOlQuZG9uZU1pbixkYXRlOm5ldyBEYXRlKFQuc3RhcnRlZEF0KS50b0lTT1N0cmluZygpfSk7IFQucGhhc2U9J2lkbGUnOyByZW5kZXJQcmFjdGljYSgpOyB0b2FzdCh0KCdzYXZlZEonKSkgfQogIGlmKGFjdD09PSdtYW51YWwnKXsgbWFudWFsPXRydWU7IHJlbmRlclByYWN0aWNhKCkgfQogIGlmKGFjdD09PSdjYW5jZWxNYW51YWwnKXsgbWFudWFsPWZhbHNlOyByZW5kZXJQcmFjdGljYSgpIH0KICBpZihhY3Q9PT0nc2F2ZU1hbnVhbCcpewogICAgY29uc3QgbWluPURBVEEuc2V0dGluZ3MuZHVyOwogICAgY29uc3QgZHY9JCgnI21EYXRlJykudmFsdWV8fHRvZGF5S2V5KCk7IGNvbnN0IFt5LG1vLGRhXT1kdi5zcGxpdCgnLScpLm1hcChOdW1iZXIpOyBjb25zdCBub3c9bmV3IERhdGUoKTsKICAgIGNvbnN0IGR0ID0gZHY9PT10b2RheUtleSgpPyBub3cgOiBuZXcgRGF0ZSh5LG1vLTEsZGEsMTIsMCk7CiAgICBhZGRFbnRyeSh7dHlwZTpEQVRBLnNldHRpbmdzLmtpbmQsdGl0bGU6JCgnI21UaXRsZScpLnZhbHVlLnRyaW0oKSxtaW51dGVzOm1pbixkYXRlOmR0LnRvSVNPU3RyaW5nKCksbWFudWFsOnRydWV9KTsKICAgIG1hbnVhbD1mYWxzZTsgdGFiPSdqdXJuYWwnOyByZW5kZXIoKTsgdG9hc3QodCgnc2F2ZWRKJykpOwogIH0KfSk7CgokKCcjbWFpbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxlPT57CiAgY29uc3QgZWw9ZS50YXJnZXQ7CiAgaWYoZWwudHlwZT09PSdyYW5nZScpewogICAgY29uc3Qgdj1OdW1iZXIoZWwudmFsdWUpLCBrZXk9ZWwuaWQ9PT0nZHVyUic\/J2R1cic6J3ByZXAnOwogICAgREFUQS5zZXR0aW5nc1trZXldPXY7IGVsLnN0eWxlLnNldFByb3BlcnR5KCctLWZpbGwnLCgodi1lbC5taW4pLyhlbC5tYXgtZWwubWluKSkqMTAwKyclJyk7CiAgICAkKCcjJytlbC5pZCsnT3V0JykudGV4dENvbnRlbnQgPSBrZXk9PT0nZHVyJz9kdXJMYWJlbCh2KTpwcmVwTGFiZWwodik7CiAgICBpZiAoVC5waGFzZT09PSdpZGxlJykgcGFpbnREaWFsKCk7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IGs9ZWwuZGF0YXNldCYmZWwuZGF0YXNldC5idWM7IGlmKGspeyBidWNEcmFmdFtrXT1lbC52YWx1ZTsKICAgIGlmKGs9PT0nYWp1dG9yJyl7IGNvbnN0IGI9JCgnI3RvZG9CdG4nKTsgaWYoYil7IGIuaGlkZGVuPSFlbC52YWx1ZS50cmltKCk7IGlmKGJ1Y1RvZG9BZGRlZCl7IGJ1Y1RvZG9BZGRlZD1mYWxzZTsgYi5kaXNhYmxlZD1mYWxzZTsgYi50ZXh0Q29udGVudD10KCdhZGRUb2RvJykgfSB9IH0gfQogIGlmKGVsLmlkPT09J29ialNlYXJjaCcpeyBvYmpRdWVyeT1lbC52YWx1ZTsgY29uc3QgbD0kKCcjb2JqTGlzdCcpOyBpZihsKSBsLmlubmVySFRNTD1vYmpJdGVtcygpIH0KICBpZihlbC5kYXRhc2V0ICYmIGVsLmRhdGFzZXQucGYpeyBwRHJhZnRbZWwuZGF0YXNldC5wZl09ZWwudmFsdWUgfQp9KTsKJCgnI21haW4nKS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxlPT57CiAgaWYoZS5rZXkhPT0nRW50ZXInIHx8IGUuaXNDb21wb3NpbmcpIHJldHVybjsKICBpZihlLnRhcmdldC5kYXRhc2V0ICYmIGUudGFyZ2V0LmRhdGFzZXQucnQhPT11bmRlZmluZWQpeyBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGk9K2UudGFyZ2V0LmRhdGFzZXQucnQ7IHJlY0NhcHR1cmUoKTsKICAgIGlmKGk9PT1yZWNSb3dzLmxlbmd0aC0xKXsgcmVjUm93cy5wdXNoKHtrOnJlY1Jvd3NbaV0uayx0OicnfSk7IHJlbmRlcigpIH0gY29uc3Qgbj0kKCcjcnRfJysoaSsxKSk7IG4mJm4uZm9jdXMoKTsgfQogIGlmKGUudGFyZ2V0LmlkPT09J2ZpcnN0TmFtZScpeyBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0PSJmaXJzdE5hbWUiXScpOyBiJiZiLmNsaWNrKCk7IHJldHVybiB9CiAgaWYoZS50YXJnZXQuaWQ9PT0ndGVtYU5vdWEnKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFjdD0idGVtYUFkZCJdJyk7IGImJmIuY2xpY2soKTsgcmV0dXJuIH0KICBpZihlLnRhcmdldC5pZD09PSd0b2RvTmV3Jyl7IGUucHJldmVudERlZmF1bHQoKTsgY29uc3Qgdj1lLnRhcmdldC52YWx1ZS50cmltKCk7IGlmKHYpeyBhZGRUb2RvKHYsJ21hbnVhbCcpOyByZW5kZXIoKTsgJCgnI3RvZG9OZXcnKS5mb2N1cygpIH0gfQp9KTsKJCgnI21haW4nKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGU9PnsgaWYoZS50YXJnZXQuaWQ9PT0nZXhwRnJvbSd8fGUudGFyZ2V0LmlkPT09J2V4cFRvJyl7IGlmKGUudGFyZ2V0LmlkPT09J2V4cEZyb20nKSBleHBGcm9tPWUudGFyZ2V0LnZhbHVlfHxleHBGcm9tOyBlbHNlIGV4cFRvPWUudGFyZ2V0LnZhbHVlfHxleHBUbzsgaWYoZXhwRnJvbT5leHBUbyl7IGNvbnN0IHg9ZXhwRnJvbTsgZXhwRnJvbT1leHBUbzsgZXhwVG89eCB9IHJlbmRlcigpOyByZXR1cm4gfSBpZihlLnRhcmdldC50eXBlPT09J3JhbmdlJykgcGVyc2lzdCgpIH0pOwooYXN5bmMoKT0+ewogIHRyeXsgY29uc3QgZD1hd2FpdCBTdG9yZS5sb2FkKCk7IGlmKGQpeyBEQVRBPXsuLi5EQVRBLC4uLmQsdG9kb3M6ZC50b2Rvc3x8W10sY29tbTp7Li4uREFUQS5jb21tLC4uLihkLmNvbW18fHt9KX0sc2V0dGluZ3M6ey4uLkRBVEEuc2V0dGluZ3MsLi4uKGQuc2V0dGluZ3N8fHt9KX19IH0gfWNhdGNoKGUpeyB0b2FzdCh0KCdsb2FkRmFpbCcpKSB9CiAgaWYgKFBBR0VfTEFORykgREFUQS5zZXR0aW5ncy5sYW5nID0gUEFHRV9MQU5HOwogIERBVEEuc2V0dGluZ3MuZHVyPU1hdGgubWluKDYwLE1hdGgubWF4KDIsTWF0aC5yb3VuZChEQVRBLnNldHRpbmdzLmR1cnx8MTApKSk7CiAgREFUQS5zZXR0aW5ncy5wcmVwPU1hdGgubWluKDE4MCxNYXRoLm1heCgwLE1hdGgucm91bmQoKERBVEEuc2V0dGluZ3MucHJlcHx8MCkvNSkqNSkpOwogIGlmKCFEQVRBLnNldHRpbmdzLmxhbmcpIERBVEEuc2V0dGluZ3MubGFuZz1ndWVzc0xhbmcoKTsKICByZW5kZXIoKTsgY29tbUxvYWQoKTsgc3ViTG9hZCgpOwogIGlmKCFEQVRBLnNldHRpbmdzLmludHJvU2Vlbil7IG92PSdpbnRybyc7IG92SWR4PTA7IHJlbmRlck92ZXJsYXkoKSB9Cn0pKCk7Cg==\");var u=new Uint8Array(b.length);for(var i=0;i<b.length;i++){u[i]=b.charCodeAt(i);}(new Function(new TextDecoder(\"utf-8\").decode(u)))();})();<\/script><script>document.addEventListener('click',function(e){if(e.target.closest&&e.target.closest('#nav button,[data-go],[data-openbuc],[data-openput],[data-act=\"pSave\"],[data-act=\"bucSave\"],[data-act=\"pNew\"],[data-act=\"bucNew\"]')){setTimeout(function(){window.scrollTo(0,0)},0)}},true);<\/script>","protected":false},"excerpt":{"rendered":"<p>Good Seeds Dorela Iepan Good Seeds EN My courses<\/p>\n","protected":false},"author":1,"featured_media":9801,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"pmpro_default_level":"","footnotes":""},"class_list":["post-11055","page","type-page","status-publish","has-post-thumbnail","hentry","pmpro-has-access"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/pages\/11055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/comments?post=11055"}],"version-history":[{"count":0,"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/pages\/11055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/media\/9801"}],"wp:attachment":[{"href":"https:\/\/dorelaiepan.com\/fr\/wp-json\/wp\/v2\/media?parent=11055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}