pmd-ruleset-visualizer 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,310 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ :root{--ink:#17231f;--muted:#77837d;--line:#e5ebe7;--paper:#f7f9f7;--green:#176b50}
3
+ *{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px "DM Sans",sans-serif}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw;position:sticky;top:0;z-index:3}.brand{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;font-size:15px}.brand b{font-weight:700}.mark{background:var(--green);color:#fff;border-radius:8px;width:30px;height:30px;display:grid;place-items:center;font-weight:800}.actions{display:flex;align-items:center;gap:11px}.local{font-size:12px;color:#47705f}.local i{display:inline-block;width:7px;height:7px;background:#39a979;border-radius:50%;margin-right:5px}.primary,.ghost{border:0;border-radius:7px;padding:11px 15px;font:600 12px "DM Sans";cursor:pointer}.primary{background:var(--green);color:#fff}.primary:hover{background:#10583f}.ghost{background:#eff4f0;color:#40574a}.upload{display:inline-block}.upload input{display:none}.shell{max-width:1400px;margin:auto;padding:0 5vw}.intro{display:flex;justify-content:space-between;align-items:center;padding:52px 0 38px;min-height:240px}.eyebrow,.side-label,article small{font:500 10px "DM Mono";letter-spacing:1.2px;color:#829087}.intro h1{font:800 clamp(32px,4vw,47px)/1.1 Manrope;letter-spacing:-2px;margin:12px 0}.intro h1 em{font-style:normal;color:var(--green)}.intro p{max-width:540px;color:#738078;font-size:15px;line-height:1.6}.art{width:230px;height:160px;position:relative;display:grid;place-items:center;margin-right:7%}.ring{position:absolute;border:1px solid #cbded2;border-radius:50%;transform:rotate(-20deg)}.r1{width:205px;height:88px}.r2{width:150px;height:150px;border-color:#dce8e0}.core{width:62px;height:62px;border-radius:18px;background:var(--green);color:#fff;display:grid;place-items:center;font:700 16px "DM Mono";z-index:1}.node{position:absolute;background:white;border:1px solid var(--line);padding:5px 8px;border-radius:6px;color:#587365;font:10px "DM Mono"}.n1{top:7px;left:24px}.n2{right:0;top:72px}.n3{bottom:1px;left:74px}.input-panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px;box-shadow:0 10px 30px #1c34290a;margin-bottom:45px}.panel-head,.result-head{display:flex;justify-content:space-between;align-items:start}.panel-head h2{font:700 18px Manrope;margin:0 0 5px}.panel-head p,.result-head p{margin:0;color:var(--muted);font-size:12px}.panel-head small{font:10px "DM Mono";color:#99a49d}textarea{width:100%;height:170px;margin:17px 0 12px;padding:14px;border:1px solid var(--line);border-radius:7px;background:#fafcfb;resize:vertical;font:12px/1.6 "DM Mono";color:#42564b;outline:none}textarea:focus{border-color:#8ab5a0}.input-foot{display:flex;align-items:center;justify-content:space-between;color:#9aa59e;font-size:11px}.error{margin-top:12px;padding:10px;background:#fff0ee;color:#a13f35;border-radius:6px}.result-head{align-items:center;margin-bottom:20px}.result-head h2{font:700 26px Manrope;margin:6px 0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:21px}.stats article{background:#fff;border:1px solid var(--line);border-radius:9px;padding:16px 18px}.stats strong{display:block;font:800 28px Manrope;margin:7px 0 0}.stats article span{font-size:11px;color:#89958e}.workspace{display:grid;grid-template-columns:210px minmax(0,1fr);gap:22px;align-items:start}.sidebar{background:#fff;border:1px solid var(--line);border-radius:9px;padding:16px 10px;position:sticky;top:80px}.side-label{padding:0 8px 10px}.nav{width:100%;display:flex;align-items:center;gap:5px;border:0;background:transparent;text-align:left;padding:9px 8px;border-radius:6px;color:#65736b;font:500 12px "DM Sans";cursor:pointer;margin-bottom:2px}.nav b{margin-left:auto;font:11px "DM Mono";color:#9aa69f}.nav.selected,.nav:hover{background:#edf5f0;color:var(--green)}.sidebar hr{border:0;border-top:1px solid var(--line);margin:13px 3px}.content{min-width:0}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:2px 0 16px}.toolbar h3{font:700 18px Manrope;margin:0 0 4px}.toolbar p{margin:0;color:#89958e;font-size:11px}.controls{display:flex;gap:7px;align-items:center}.search{height:35px;display:flex;align-items:center;gap:6px;padding:0 9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#829087}.search input{width:125px;border:0;outline:0;font:12px "DM Sans"}.controls select{height:35px;border:1px solid var(--line);border-radius:6px;background:white;padding:0 8px;color:#68766e;font:11px "DM Sans"}.toggle{display:flex;border:1px solid var(--line);background:#fff;border-radius:6px;padding:2px}.toggle button{border:0;background:transparent;color:#8b9790;width:28px;height:27px;border-radius:4px;cursor:pointer}.toggle button.active{background:#e9f3ed;color:var(--green)}.category-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:15px}.category-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;text-align:left;cursor:pointer}.category-card:hover{border-color:#9dc6ae}.category-top{display:flex;justify-content:space-between;gap:6px}.category-name{font:600 12px Manrope;color:#35483e}.category-count{font:10px "DM Mono";color:#6d9a81;white-space:nowrap}.bar{height:4px;background:#edf1ee;border-radius:5px;margin-top:11px;overflow:hidden}.bar span{display:block;height:100%;background:#69a987}.rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.rule-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:13px;cursor:pointer;min-width:0}.rule-card:hover{border-color:#a6c7b4;box-shadow:0 4px 13px #1c34290b}.rule-top{display:flex;justify-content:space-between;gap:7px;align-items:start}.rule-name{font:700 13px Manrope;overflow-wrap:anywhere}.priority{font:10px "DM Mono";padding:4px 6px;border-radius:4px;white-space:nowrap;background:#eef4f0;color:#557a65}.priority.p1{background:#fdebea;color:#a64e45}.priority.p2{background:#fff2e2;color:#a66b25}.priority.p4,.priority.p5{background:#f1f2f1;color:#79847e}.rule-message{font-size:11px;color:#87928c;line-height:1.5;margin:8px 0 11px;min-height:16px}.rule-bottom{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #f0f3f1;padding-top:8px}.rule-group{font:10px "DM Mono";color:#71917e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.property-count{font-size:10px;color:#9aa49e;white-space:nowrap}.list-layout{grid-template-columns:1fr}.list-layout .rule-message{min-height:0;margin:4px 0 7px}.empty{text-align:center;padding:45px;color:#89958e}.empty h3{font:700 16px Manrope;color:#42564b}.commented{margin:30px 0;padding:20px;background:#fff;border:1px solid var(--line);border-radius:9px}.commented h3{font:700 18px Manrope;margin:7px 0 4px}.commented p{font-size:12px;color:#89958e}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.chip{border:1px dashed #d6dfd9;background:#fafcfb;border-radius:6px;padding:8px 10px;color:#79867e;font:11px "DM Mono"}dialog{border:0;padding:0;border-radius:12px;width:min(550px,calc(100% - 28px));box-shadow:0 25px 80px #10271c44;color:var(--ink)}dialog::backdrop{background:#15271e66;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;padding:21px 23px 14px;border-bottom:1px solid var(--line)}.dialog-head h2{font:700 20px Manrope;margin:6px 0 0}.dialog-head button{border:0;border-radius:50%;width:29px;height:29px;font-size:20px;cursor:pointer}.detail-body{padding:18px 23px 25px}.meta{display:flex;gap:7px;flex-wrap:wrap}.meta span{padding:5px 8px;border-radius:5px;background:#eef4f0;color:#557b65;font:10px "DM Mono"}.detail-body p{font-size:13px;line-height:1.6;color:#69776f}.detail-body h4{font:700 10px "DM Mono";letter-spacing:.7px;color:#829087;margin:19px 0 8px}.detail-body code{font:11px/1.5 "DM Mono";color:#4e6e5b;overflow-wrap:anywhere}.prop{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #edf1ee;font-size:12px}.prop code{color:#4e6e5b}footer{display:flex;justify-content:space-between;color:#a0aaa3;font-size:11px;padding:30px 0 23px;margin-top:20px;border-top:1px solid var(--line)}
4
+ @media(max-width:950px){.workspace{grid-template-columns:175px 1fr}.category-cards{grid-template-columns:repeat(2,1fr)}.toolbar{align-items:flex-start;flex-direction:column}.controls{width:100%;flex-wrap:wrap}.intro .art{margin-right:0}}
5
+ @media(max-width:680px){.topbar{padding:0 14px}.local,.art{display:none}.shell{padding:0 14px}.intro{padding:32px 0 25px}.input-panel{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.workspace{grid-template-columns:1fr}.sidebar{position:static}.rule-grid{grid-template-columns:1fr}.category-cards{grid-template-columns:repeat(2,1fr)}.search{flex:1}.search input{width:100%;min-width:55px}.input-foot{align-items:flex-start;gap:10px;flex-direction:column}footer{flex-direction:column;gap:8px}}
6
+
7
+ .head-actions{display:flex;gap:8px}.tool-strip{display:flex;gap:5px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);padding:6px;border-radius:9px;margin:18px 0}.tool-tab{border:0;background:transparent;padding:10px 13px;border-radius:6px;color:#718078;font:600 12px "DM Sans";cursor:pointer}.tool-tab.active,.tool-tab:hover{background:#eaf4ee;color:var(--green)}.tab-panel[hidden]{display:none}.section-heading{margin:23px 0 16px}.section-heading h3{font:700 19px Manrope;margin:0 0 5px}.section-heading p{color:#849087;font-size:12px;margin:0}.graph-view{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.graph-group{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden}.graph-category{width:100%;display:flex;align-items:center;gap:12px;padding:14px;border:0;background:#f8fbf9;text-align:left;cursor:pointer;color:#34493d}.graph-symbol{width:34px;height:34px;border-radius:9px;background:#e6f2ea;color:var(--green);display:grid;place-items:center;font-size:18px}.graph-category b{display:block;font:700 13px Manrope}.graph-category small{display:block;color:#87948b;font-size:10px;margin-top:3px}.graph-chevron{margin-left:auto;color:#8b9b91}.graph-rules{padding:8px 12px 12px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.graph-rule{display:flex;justify-content:space-between;gap:5px;text-align:left;border:1px solid #edf1ee;border-radius:5px;background:#fff;padding:8px;font:11px "DM Sans";color:#56685d;cursor:pointer;overflow-wrap:anywhere}.graph-rule:hover{border-color:#a7cbb4}.graph-rule small{font:10px "DM Mono";color:#8da396;white-space:nowrap}.graph-group.collapsed .graph-rules{display:none}.health-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:13px}.health-cards article{background:white;border:1px solid var(--line);border-radius:9px;padding:17px}.health-cards small{display:block;font:10px "DM Mono";letter-spacing:.8px;color:#829087}.health-cards b{display:block;font:800 25px Manrope;margin:7px 0}.health-cards span,.health-note{font-size:11px;color:#8a968e}.health-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.health-box{background:white;border:1px solid var(--line);border-radius:9px;padding:18px}.health-box h4,.diff-section h4{font:700 11px "DM Mono";letter-spacing:.8px;color:#77877d;margin:0 0 17px}.health-row{display:grid;grid-template-columns:130px 1fr 24px;gap:10px;align-items:center;margin:13px 0;font-size:11px;color:#637168}.health-row b{text-align:right;font:11px "DM Mono"}.health-track{height:7px;background:#edf2ee;border-radius:6px;overflow:hidden}.health-track i{height:100%;display:block;background:#69a987;border-radius:6px}.health-note{line-height:1.6;margin-top:16px}.compare-upload{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px;color:#89958e;font-size:12px}.diff-summary{display:flex;gap:10px;margin:15px 0}.diff-summary span{background:white;border:1px solid var(--line);border-radius:7px;padding:12px 17px;color:#6c7a71;font-size:12px}.diff-summary b{font:700 19px Manrope;margin-right:5px;color:#273c31}.diff-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.diff-section{background:white;border:1px solid var(--line);border-radius:8px;padding:14px}.diff-section h4{display:flex;justify-content:space-between}.diff-section h4 b{font:11px "DM Mono"}.diff-row{padding:9px 0;border-top:1px solid #eff2f0}.diff-row code{display:block;font:11px "DM Mono";color:#536f5d;overflow-wrap:anywhere}.diff-row small{display:block;color:#9aa49e;font-size:9px;margin-top:3px;overflow-wrap:anywhere}.diff-row.added code{color:#2f8b5e}.diff-row.removed code{color:#b05c50}.diff-row.changed code{color:#aa7a32}.catalog-summary,.success-note{padding:14px;background:#edf6f0;border-radius:7px;color:#426e54;font-size:13px;margin:15px 0}.edit-row{display:flex;gap:20px;align-items:center;margin:12px 0 17px}.edit-row label{font-size:12px;color:#69776f}.edit-row select{margin-left:8px;border:1px solid var(--line);border-radius:5px;padding:6px}.check-label input{vertical-align:middle;margin-right:5px}
8
+ @media(max-width:900px){.graph-view{grid-template-columns:1fr}.health-columns,.diff-grid{grid-template-columns:1fr}.toolbar{flex-wrap:wrap}.health-row{grid-template-columns:110px 1fr 24px}}
9
+ @media(max-width:650px){.head-actions{flex-direction:column}.tool-strip{gap:2px}.tool-tab{padding:9px 8px;font-size:10px}.health-cards{grid-template-columns:1fr}.graph-rules{grid-template-columns:1fr}.compare-upload{align-items:flex-start;flex-direction:column}.diff-summary{flex-wrap:wrap}}
10
+
11
+ /* ── theme toggle button ── */
12
+ .theme-btn{background:transparent;border:1px solid var(--line);border-radius:7px;width:34px;height:34px;display:grid;place-items:center;font-size:16px;cursor:pointer;color:var(--ink);flex-shrink:0}
13
+ .theme-btn:hover{background:var(--line)}
14
+
15
+ /* ── chart row ── */
16
+ .chart-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
17
+ .chart-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px;height:270px;display:flex;align-items:center;justify-content:center}
18
+ .chart-box canvas{max-height:234px}
19
+ @media(max-width:680px){.chart-row{grid-template-columns:1fr}}
20
+
21
+ /* ── dark mode ── */
22
+ [data-theme="dark"]{--ink:#c8d8d0;--muted:#7a9488;--line:#253028;--paper:#0f1712;--green:#39a979}
23
+ [data-theme="dark"] body{background:#0f1712;color:#c8d8d0}
24
+ [data-theme="dark"] .topbar{background:#111e18;border-color:#253028}
25
+ [data-theme="dark"] .brand{color:#c8d8d0}
26
+ [data-theme="dark"] .input-panel{background:#162019;border-color:#253028;box-shadow:none}
27
+ [data-theme="dark"] textarea{background:#0f1712;color:#a8c4b8;border-color:#253028}
28
+ [data-theme="dark"] textarea:focus{border-color:#39a979}
29
+ [data-theme="dark"] .stats article{background:#162019;border-color:#253028}
30
+ [data-theme="dark"] .stats strong{color:#c8d8d0}
31
+ [data-theme="dark"] .rule-card{background:#162019;border-color:#253028}
32
+ [data-theme="dark"] .rule-card:hover{border-color:#39a979;box-shadow:none}
33
+ [data-theme="dark"] .rule-name{color:#c8d8d0}
34
+ [data-theme="dark"] .rule-message{color:#7a9488}
35
+ [data-theme="dark"] .rule-group{color:#5a8a72}
36
+ [data-theme="dark"] .category-card{background:#162019;border-color:#253028}
37
+ [data-theme="dark"] .category-card:hover{border-color:#39a979}
38
+ [data-theme="dark"] .category-name{color:#c8d8d0}
39
+ [data-theme="dark"] .sidebar{background:#162019;border-color:#253028}
40
+ [data-theme="dark"] .nav{color:#7a9488}
41
+ [data-theme="dark"] .nav.selected,[data-theme="dark"] .nav:hover{background:#1d2f26;color:#39a979}
42
+ [data-theme="dark"] .sidebar hr{border-color:#253028}
43
+ [data-theme="dark"] .ghost{background:#1d2f26;color:#8db5a0}
44
+ [data-theme="dark"] .ghost:hover{background:#253028}
45
+ [data-theme="dark"] .search{background:#162019;border-color:#253028}
46
+ [data-theme="dark"] .search input{background:transparent;color:#a8c4b8}
47
+ [data-theme="dark"] .controls select{background:#162019;border-color:#253028;color:#a8c4b8}
48
+ [data-theme="dark"] .toggle{background:#162019;border-color:#253028}
49
+ [data-theme="dark"] .toggle button{color:#7a9488}
50
+ [data-theme="dark"] .toggle button.active{background:#1d2f26;color:#39a979}
51
+ [data-theme="dark"] .tool-strip{background:#111e18;border-color:#253028}
52
+ [data-theme="dark"] .tool-tab{color:#7a9488}
53
+ [data-theme="dark"] .tool-tab.active,[data-theme="dark"] .tool-tab:hover{background:#1d2f26;color:#39a979}
54
+ [data-theme="dark"] .priority{background:#1d2f26;color:#7dc4a0}
55
+ [data-theme="dark"] .priority.p1{background:#2e1a18;color:#d07068}
56
+ [data-theme="dark"] .priority.p2{background:#2a1f10;color:#c89050}
57
+ [data-theme="dark"] .priority.p4,[data-theme="dark"] .priority.p5{background:#1e2820;color:#7a9488}
58
+ [data-theme="dark"] .bar{background:#253028}
59
+ [data-theme="dark"] .graph-group{background:#162019;border-color:#253028}
60
+ [data-theme="dark"] .graph-category{background:#1a2620;color:#c8d8d0}
61
+ [data-theme="dark"] .graph-symbol{background:#1d2f26;color:#39a979}
62
+ [data-theme="dark"] .graph-rule{background:#162019;border-color:#253028;color:#8db5a0}
63
+ [data-theme="dark"] .graph-rule:hover{border-color:#39a979}
64
+ [data-theme="dark"] .chart-box{background:#162019;border-color:#253028}
65
+ [data-theme="dark"] .health-cards article{background:#162019;border-color:#253028}
66
+ [data-theme="dark"] .health-box{background:#162019;border-color:#253028}
67
+ [data-theme="dark"] .health-track{background:#253028}
68
+ [data-theme="dark"] .health-row{color:#7a9488}
69
+ [data-theme="dark"] .commented{background:#162019;border-color:#253028}
70
+ [data-theme="dark"] .chip{background:#162019;border-color:#253028;color:#7a9488}
71
+ [data-theme="dark"] .compare-upload{background:#162019;border-color:#253028;color:#7a9488}
72
+ [data-theme="dark"] .diff-summary span{background:#162019;border-color:#253028;color:#8db5a0}
73
+ [data-theme="dark"] .diff-summary b{color:#c8d8d0}
74
+ [data-theme="dark"] .diff-section{background:#162019;border-color:#253028}
75
+ [data-theme="dark"] .diff-row{border-color:#253028}
76
+ [data-theme="dark"] .diff-row code{color:#7a9488}
77
+ [data-theme="dark"] .diff-row.added code{color:#39a979}
78
+ [data-theme="dark"] .diff-row.removed code{color:#d07068}
79
+ [data-theme="dark"] .diff-row.changed code{color:#c89050}
80
+ [data-theme="dark"] .diff-row small{color:#5a7a68}
81
+ [data-theme="dark"] .catalog-summary{background:#1d2f26;color:#7dc4a0}
82
+ [data-theme="dark"] .success-note{background:#1d2f26;color:#7dc4a0}
83
+ [data-theme="dark"] .health-note{color:#5a7a68}
84
+ [data-theme="dark"] .empty h3{color:#a8c4b8}
85
+ [data-theme="dark"] .empty{color:#5a7a68}
86
+ [data-theme="dark"] dialog{background:#162019;color:#c8d8d0;border:1px solid #253028}
87
+ [data-theme="dark"] dialog::backdrop{background:#0a100d99}
88
+ [data-theme="dark"] .dialog-head{border-color:#253028}
89
+ [data-theme="dark"] .dialog-head h2{color:#c8d8d0}
90
+ [data-theme="dark"] .dialog-head button{background:#1d2f26;color:#a8c4b8}
91
+ [data-theme="dark"] .detail-body p{color:#8db5a0}
92
+ [data-theme="dark"] .detail-body h4{color:#5a8a72}
93
+ [data-theme="dark"] .detail-body code{color:#7dc4a0}
94
+ [data-theme="dark"] .meta span{background:#1d2f26;color:#7dc4a0}
95
+ [data-theme="dark"] .prop{border-color:#253028}
96
+ [data-theme="dark"] .prop code{color:#7dc4a0}
97
+ [data-theme="dark"] .edit-row label{color:#8db5a0}
98
+ [data-theme="dark"] .edit-row select{background:#162019;border-color:#253028;color:#a8c4b8}
99
+ [data-theme="dark"] .check-label{color:#8db5a0}
100
+ [data-theme="dark"] footer{border-color:#253028;color:#5a7a68}
101
+ [data-theme="dark"] .intro h1{color:#c8d8d0}
102
+ [data-theme="dark"] .intro p{color:#7a9488}
103
+ [data-theme="dark"] .core{background:#39a979}
104
+ [data-theme="dark"] .ring{border-color:#253028}
105
+ [data-theme="dark"] .node{background:#162019;border-color:#253028;color:#5a8a72}
106
+ [data-theme="dark"] .panel-head h2{color:#c8d8d0}
107
+ [data-theme="dark"] .result-head h2{color:#c8d8d0}
108
+ [data-theme="dark"] .toolbar h3{color:#c8d8d0}
109
+ [data-theme="dark"] .section-heading h3{color:#c8d8d0}
110
+ [data-theme="dark"] .input-foot{color:#5a7a68}
111
+ [data-theme="dark"] .local{color:#39a979}
112
+ [data-theme="dark"] .error{background:#2e1a18;color:#d07068}
113
+ [data-theme="dark"] .graph-chevron{color:#5a8a72}
114
+
115
+ /* ── bulk edit ── */
116
+ .bulk-cb{position:absolute;top:8px;left:8px;width:14px;height:14px;cursor:pointer;z-index:2;accent-color:var(--green)}
117
+ .rule-card{position:relative}
118
+ .rule-card.bulk-sel{border-color:var(--green);background:#f0faf4}
119
+ [data-theme="dark"] .rule-card.bulk-sel{background:#1a2e22}
120
+ #bulkBar{position:sticky;bottom:16px;background:#fff;border:1.5px solid var(--green);border-radius:10px;padding:12px 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;box-shadow:0 8px 30px #17231f22;z-index:4;margin-top:8px}
121
+ [data-theme="dark"] #bulkBar{background:#162019;box-shadow:0 8px 30px #00000055}
122
+ #bulkBar.hidden{display:none}
123
+ #bulkBar span{font:600 12px "DM Sans";color:var(--ink)}
124
+ #bulkBar select{border:1px solid var(--line);border-radius:5px;padding:5px 8px;font:11px "DM Sans";background:#fff;color:var(--ink)}
125
+ [data-theme="dark"] #bulkBar select{background:#162019;color:#c8d8d0;border-color:#253028}
126
+
127
+ /* ── heatmap ── */
128
+ .heatmap-grid{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
129
+ .heatmap-cell{width:28px;height:28px;border-radius:4px;cursor:pointer;border:1px solid transparent;transition:transform .1s;position:relative}
130
+ .heatmap-cell:hover{transform:scale(1.25);z-index:1}
131
+
132
+ /* ── toast ── */
133
+ #toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#273c31;color:#c8d8d0;padding:10px 20px;border-radius:8px;font:12px "DM Sans";opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:99}
134
+ #toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
135
+
136
+ /* ── kbd help ── */
137
+ #kbdHelp{position:fixed;bottom:24px;right:24px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 18px;font:11px "DM Mono";color:#556a5e;box-shadow:0 8px 30px #17231f18;z-index:99;line-height:1.9;opacity:0;pointer-events:none;transition:opacity .25s}
138
+ #kbdHelp.show{opacity:1}
139
+ [data-theme="dark"] #kbdHelp{background:#162019;border-color:#253028;color:#7a9488}
140
+
141
+ /* ── docs link ── */
142
+ .docs-link{font-size:10px;color:var(--green);text-decoration:none;white-space:nowrap}
143
+ .docs-link:hover{text-decoration:underline}
144
+ a#detailDocsLink{display:block;margin-top:6px;font-size:11px}
145
+
146
+ /* ── select all ── */
147
+ .select-all-wrap{display:flex;align-items:center;gap:5px;font:11px "DM Sans";color:var(--muted);cursor:pointer}
148
+ .select-all-wrap input{accent-color:var(--green)}
149
+
150
+ /* ── preset select ── */
151
+ #presetSelect{height:35px;border:1px solid var(--line);border-radius:6px;background:white;padding:0 8px;color:#68766e;font:11px "DM Sans";cursor:pointer}
152
+ [data-theme="dark"] #presetSelect{background:#162019;border-color:#253028;color:#a8c4b8}
153
+
154
+ /* ── kbd focus ── */
155
+ .rule-card.kbd-focus{outline:2px solid var(--green);outline-offset:1px}
156
+
157
+ /* ── settings slide-in panel ── */
158
+ .settings-overlay{position:fixed;inset:0;background:#00000055;z-index:9;backdrop-filter:blur(3px)}
159
+ .settings-overlay.hidden{display:none}
160
+ .settings-panel{position:fixed;top:0;right:-440px;width:400px;height:100vh;background:#fff;box-shadow:-8px 0 40px #17231f22;z-index:10;display:flex;flex-direction:column;transition:right .3s cubic-bezier(.4,0,.2,1)}
161
+ .settings-panel.open{right:0}
162
+ .settings-head{display:flex;justify-content:space-between;align-items:center;padding:20px 22px 14px;border-bottom:1px solid var(--line)}
163
+ .settings-head h3{font:700 18px Manrope;margin:0}
164
+ .settings-head button{border:0;background:transparent;font-size:22px;cursor:pointer;color:var(--muted);width:32px;height:32px;display:grid;place-items:center;border-radius:6px}
165
+ .settings-head button:hover{background:var(--line)}
166
+ .settings-body{padding:20px 22px;flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:14px}
167
+ .set-label{display:flex;flex-direction:column;gap:5px;font:600 11px "DM Mono";letter-spacing:.6px;color:var(--muted)}
168
+ .set-label input,.set-label select{height:38px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font:13px "DM Sans";color:var(--ink);background:#fafcfb;outline:none}
169
+ .set-label input:focus,.set-label select:focus{border-color:var(--green)}
170
+ .settings-trigger{background:transparent;border:1px solid var(--line);border-radius:7px;width:34px;height:34px;display:grid;place-items:center;font-size:16px;cursor:pointer;color:var(--ink)}
171
+ .settings-trigger:hover{background:var(--line)}
172
+ [data-theme="dark"] .settings-panel{background:#162019;box-shadow:-8px 0 40px #00000055}
173
+ [data-theme="dark"] .settings-head{border-color:#253028}
174
+ [data-theme="dark"] .settings-head h3{color:#c8d8d0}
175
+ [data-theme="dark"] .settings-head button{color:#7a9488}
176
+ [data-theme="dark"] .settings-head button:hover{background:#253028}
177
+ [data-theme="dark"] .set-label input,[data-theme="dark"] .set-label select{background:#0f1712;border-color:#253028;color:#a8c4b8}
178
+ [data-theme="dark"] .settings-trigger{border-color:#253028;color:#c8d8d0}
179
+
180
+ /* ── run pmd panel ── */
181
+ .run-config{display:flex;align-items:flex-end;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:16px}
182
+ .run-status{padding:10px 14px;border-radius:7px;font-size:12px;margin-bottom:14px}
183
+ .run-status.running{background:#e8f4ec;color:#266644}
184
+ .run-status.error{background:#fdebea;color:#a13f35}
185
+ .run-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
186
+ .run-summary article{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px 16px}
187
+ .run-summary small{display:block;font:10px "DM Mono";letter-spacing:.8px;color:#829087}
188
+ .run-summary strong{display:block;font:800 26px Manrope;margin:6px 0 2px;color:var(--ink)}
189
+ .run-summary span{font-size:11px;color:#8a968e}
190
+ .run-top-rule{font-size:14px}
191
+ .run-file-group{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-bottom:10px}
192
+ .run-file-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#f8fbf9;border-bottom:1px solid var(--line)}
193
+ .run-file-name{font:600 12px "DM Mono";color:#3d5e4d;overflow-wrap:anywhere}
194
+ .run-file-count{font:10px "DM Mono";color:#829087;white-space:nowrap;margin-left:8px}
195
+ .run-violation{display:grid;grid-template-columns:48px 1fr auto;gap:10px;align-items:start;padding:10px 14px;border-top:1px solid #f0f4f1}
196
+ .run-violation:first-child{border-top:0}
197
+ .run-line{font:11px "DM Mono";color:#829087;padding-top:2px;white-space:nowrap}
198
+ .run-rule{font:600 12px Manrope;color:var(--green);text-decoration:none}
199
+ .run-rule:hover{text-decoration:underline}
200
+ .run-desc{font-size:11px;color:#87928c;margin:3px 0 0;line-height:1.5}
201
+ .run-empty{text-align:center;padding:40px;color:#89958e}
202
+ .run-empty h3{font:700 16px Manrope;color:#42564b;margin:0 0 6px}
203
+ [data-theme="dark"] .run-config{background:#162019;border-color:#253028}
204
+ [data-theme="dark"] .run-status.running{background:#1d2f26;color:#39a979}
205
+ [data-theme="dark"] .run-status.error{background:#2e1a18;color:#d07068}
206
+ [data-theme="dark"] .run-summary article{background:#162019;border-color:#253028}
207
+ [data-theme="dark"] .run-summary strong{color:#c8d8d0}
208
+ [data-theme="dark"] .run-file-group{background:#162019;border-color:#253028}
209
+ [data-theme="dark"] .run-file-head{background:#1a2620;border-color:#253028}
210
+ [data-theme="dark"] .run-file-name{color:#7dc4a0}
211
+ [data-theme="dark"] .run-violation{border-color:#253028}
212
+ [data-theme="dark"] .run-rule{color:#39a979}
213
+ [data-theme="dark"] .run-desc{color:#7a9488}
214
+ [data-theme="dark"] .run-empty h3{color:#a8c4b8}
215
+ [data-theme="dark"] .run-empty{color:#5a7a68}
216
+ @media(max-width:680px){.run-config{flex-direction:column;align-items:stretch}.run-summary{grid-template-columns:1fr 1fr}.run-violation{grid-template-columns:36px 1fr auto}}
217
+
218
+ /* ── Code view panel (Monaco slide-in) ── */
219
+ .code-view-panel{position:fixed;top:0;right:-62vw;width:60vw;min-width:340px;max-width:900px;height:100vh;background:var(--paper);border-left:1px solid var(--line);box-shadow:-4px 0 24px rgba(0,0,0,.13);z-index:1200;display:flex;flex-direction:column;transition:right .3s cubic-bezier(.4,0,.2,1)}
220
+ .code-view-panel.open{right:0}
221
+ .code-view-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--line);gap:12px;flex-shrink:0}
222
+ .code-view-title{font:600 13px Manrope;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
223
+ .code-view-head button{font-size:20px;line-height:1;background:none;border:none;cursor:pointer;color:var(--muted);padding:4px 8px;border-radius:6px;flex-shrink:0}
224
+ .code-view-head button:hover{background:var(--line);color:var(--ink)}
225
+ .code-view-violations{display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line);overflow-x:auto;flex-shrink:0;flex-wrap:nowrap}
226
+ .cv-vio{display:flex;align-items:center;gap:5px;padding:4px 8px;border-radius:6px;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:11px;white-space:nowrap;transition:background .15s}
227
+ .cv-vio:hover{background:var(--line)}
228
+ .cv-line{font:600 11px "DM Mono";color:var(--muted)}
229
+ .cv-rule{font:500 11px Manrope;color:var(--ink)}
230
+ .monaco-container{flex:1;min-height:0;overflow:hidden}
231
+ .monaco-violation-line{background:rgba(200,80,60,.10)!important;border-left:3px solid rgba(200,80,60,.55)!important}
232
+ .monaco-violation-glyph::before{content:"⚠";font-size:12px;line-height:19px}
233
+ .run-file-btn{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;padding:0;text-align:left;flex:1;min-width:0}
234
+ .run-file-btn:hover .run-file-name{color:var(--green);text-decoration:underline}
235
+ .run-file-open{font:600 10px "DM Mono";color:var(--green);opacity:.7;white-space:nowrap}
236
+ [data-theme="dark"] .code-view-panel{background:#121c16;border-color:#253028;box-shadow:-4px 0 24px rgba(0,0,0,.4)}
237
+ [data-theme="dark"] .code-view-head{border-color:#253028}
238
+ [data-theme="dark"] .code-view-violations{border-color:#253028}
239
+ [data-theme="dark"] .cv-vio{background:#1a2620;border-color:#253028}
240
+ [data-theme="dark"] .cv-vio:hover{background:#1f2f24}
241
+ [data-theme="dark"] .cv-rule{color:#c8d8d0}
242
+ [data-theme="dark"] .monaco-violation-line{background:rgba(200,80,60,.15)!important}
243
+ @media(max-width:700px){.code-view-panel{width:100vw;min-width:unset;right:-100vw}}
244
+ /* ── rule card checkbox fix ── */
245
+ .rule-card{padding-left:26px}
246
+ /* ── Monaco resize handle ── */
247
+ .cv-resize-handle{position:absolute;left:0;top:0;width:5px;height:100%;cursor:ew-resize;z-index:2;border-radius:3px 0 0 3px;transition:background .15s}
248
+ .cv-resize-handle:hover,.cv-resize-handle.dragging{background:var(--green);opacity:.4}
249
+ /* ── Save-as-default dialog ── */
250
+ .save-default-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:600;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}
251
+ .save-default-overlay.hidden{display:none}
252
+ .save-default-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:32px 36px;max-width:380px;width:90%;text-align:center;box-shadow:0 8px 40px rgba(0,0,0,.18);animation:slideUp .18s ease}
253
+ .save-default-icon{font-size:2.2rem;margin-bottom:10px}
254
+ .save-default-card h3{margin:0 0 8px;font-size:1.05rem;color:var(--ink)}
255
+ .save-default-card p{margin:0 0 24px;font-size:.85rem;color:var(--muted);line-height:1.5}
256
+ .save-default-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
257
+ .save-default-actions button{min-width:130px}
258
+ @keyframes slideUp{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}
259
+ .save-default-path-row{text-align:left;margin-bottom:20px}
260
+ .save-default-path-row label{display:block;font-size:.75rem;font-weight:600;letter-spacing:.05em;color:var(--muted);margin-bottom:6px;text-transform:uppercase}
261
+ .save-default-path-row input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font-family:inherit;font-size:.82rem}
262
+ .save-default-path-hint{display:block;font-size:.76rem;color:var(--muted);margin-top:5px}
263
+ /* ── Run PMD button ── */
264
+ #runPmdBtn{font-family:'Rajdhani',system-ui,sans-serif;font-weight:700;font-size:1.08rem;letter-spacing:.08em;text-transform:uppercase}
265
+ /* ── Run elapsed badge ── */
266
+ .run-elapsed{display:inline-block;font-size:.78rem;color:var(--muted);margin-top:6px}
267
+ /* ── Run results toolbar ── */
268
+ .run-results-toolbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-bottom:8px}
269
+
270
+ /* ── Splash screen ── */
271
+ .splash-screen{position:fixed;inset:0;z-index:2000;background:radial-gradient(ellipse at 60% 40%,#1a3d2a 0%,#0d1f16 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .4s ease;overflow:hidden}
272
+ .splash-content{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:32px}
273
+ .splash-mark{width:72px;height:72px;border-radius:50%;background:#39a979;color:#fff;font-size:2.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 0 40px rgba(57,169,121,.35);animation:splashPulse 2s ease-in-out infinite}
274
+ .splash-title{margin:0;color:#fff;font-size:2rem;font-weight:700;letter-spacing:-.01em}
275
+ .splash-sub{margin:0;color:rgba(255,255,255,.55);font-size:.9rem;letter-spacing:.03em}
276
+ .splash-ver{display:inline-block;padding:3px 10px;border-radius:20px;border:1px solid rgba(57,169,121,.4);color:rgba(255,255,255,.6);font-size:.75rem}
277
+ .splash-btns{display:inline-flex;gap:12px;margin-top:8px;flex-wrap:wrap;justify-content:center}
278
+ .splash-btn-primary{padding:10px 22px;border-radius:8px;background:#39a979;color:#fff;border:none;font-size:.9rem;font-weight:600;cursor:pointer;transition:opacity .15s}
279
+ .splash-btn-primary:hover{opacity:.85}
280
+ .splash-btn-ghost{padding:10px 22px;border-radius:8px;background:transparent;color:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.25);font-size:.9rem;cursor:pointer;transition:background .15s}
281
+ .splash-btn-ghost:hover{background:rgba(255,255,255,.08)}
282
+ .splash-progress-bar{position:absolute;bottom:0;left:0;height:3px;background:#39a979;width:0;animation:splashProgress 2.5s linear forwards}
283
+ @keyframes splashProgress{from{width:0}to{width:100%}}
284
+ @keyframes splashPulse{0%,100%{box-shadow:0 0 30px rgba(57,169,121,.3)}50%{box-shadow:0 0 55px rgba(57,169,121,.6)}}
285
+
286
+ /* ── Tour overlay ── */
287
+ .tour-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:900;pointer-events:none;transition:opacity .2s}
288
+ .tour-overlay.hidden{opacity:0}
289
+ .tour-overlay:not(.hidden){opacity:1}
290
+
291
+ /* ── Tour highlight ── */
292
+ .tour-highlight{outline:3px solid #39a979!important;outline-offset:4px;border-radius:6px;position:relative;z-index:901;box-shadow:0 0 0 6px rgba(57,169,121,.18)!important;transition:outline .2s}
293
+
294
+ /* ── Tour tooltip ── */
295
+ .tour-tip{position:fixed;z-index:902;width:340px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 8px 32px rgba(0,0,0,.2);transition:top .25s,left .25s,opacity .2s;max-width:calc(100vw - 16px)}
296
+ .tour-tip.hidden{opacity:0;pointer-events:none}
297
+ .tour-tip-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
298
+ .tour-counter{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
299
+ .tour-close{background:none;border:none;cursor:pointer;color:var(--muted);font-size:1rem;padding:2px 6px;border-radius:4px;line-height:1}
300
+ .tour-close:hover{color:var(--ink)}
301
+ .tour-tip-title{margin:0 0 8px;font-size:1rem;color:var(--ink)}
302
+ .tour-tip-text{margin:0 0 16px;font-size:.85rem;color:var(--muted);line-height:1.55}
303
+ .tour-tip-footer{display:flex;align-items:center;gap:8px}
304
+ .tour-dots{display:flex;gap:5px;flex:1;justify-content:center}
305
+ .tour-dot{width:6px;height:6px;border-radius:50%;background:var(--line);transition:background .2s;cursor:pointer}
306
+ .tour-dot.active{background:var(--green)}
307
+ .tour-prev:disabled{opacity:.35;cursor:default}
308
+ .tour-btn{width:32px;height:32px;border-radius:50%;background:none;border:1px solid var(--line);color:var(--muted);font-size:.95rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}
309
+ .tour-btn:hover{border-color:var(--green);color:var(--green)}
310
+ body.tour-active{overflow:hidden}
package/server.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ function _0x3d71(){const _0x1e450e=['rhbRs2e','q2HHCNrZ','BgvUz3rO','u291CMnLihbHDa','EgrNlw9Wzw4','zg1yt20','wLzIreK','ChjVCgvYDgLLCW','BMD1ywDL','ELbruge','CcWGls1WB3j0ia','ywrKsw1Hz2u','ywDL','l2fWAs9YDw4TCa','vwTwEK4','ywXOB3n0oG','EgXZEa','C2XPy2u','rMLSzq','DhjPBq','B2jQzwn0','zgvZyW','psjWBwqTCMvZDq','sxrpyxq','EwfPvw4','ChvZAa','BwvZC2fNzq','zxqGvMLZDwfSAq','CMvM','y2HLy2S','ChjVCgvYDhK','ng1I','z2v0q2vSBa','AgvHzgvYC1nLBG','C3rHDgLJ','uNvSzq','lcaTlwHLBhaGia','zM9UDa','lw9MzMLJzwrVyW','v3vHyuC','B3bLBG','BhrZlq','t0HyA20','uNvSzxnLDa','mZa2t1nvBgno','CNvSzq','vw5Zzxq','Dc14Bhn4','ls1UBY1MywLSlq','vNjVthy','Eg1S','q0Lpu1i','yxjZzxi','cLbnrcbsDwXLCW','zxnZ','ChjPB3jPDhK','CwLxuvC','vhPez0u','qNKGuhjPB3jPDa','sLnptIbVDxrWDq','te9x','ihj1BgvZzxq6ia','vw5HyMXLihrVia','ls1UBY1JywnOzq','Cg1KDMLZlq','C2rvthi','Cg9ZDa','Cg9W','CMvKlG','ywrKv29YA3nOzq','l2fWAs9YzwfKlq','C3rHCNq','wwXiD24','sK9nzNC','C2HLzxq','tgLUzq','DMfSDwu','Bwf0y2G','Ahr0CdOVl2XVyW','C29SAwq','DMfSAwrHDgu','zxHJzwXQCW','i3rLEhq','DgLVBNnDcGPpCa','q29UDgvUDc1eAq','DwLYzwqU','u2Pft0S','y291BNq','C3bSAxq','tM8Gphj1BgvZzq','ls1UBY1WCM9NCG','qf9Yzwy','zxHWCMvZCW','Ew10zMG','zMLUzeLUzgv4','Dg9vChbLCKnHCW','CgfYC2u','z1bKrvy','CMvWBgfJzq','otaYotG0De9TywD3','CNvSzxnLDa','DcbwAxn1ywXPEG','ALLjrK4','phbVCNq+icaGua','igfMDgvYihn0yq','ls1OzwXW','Cgf0Aa','z3jVDxa','vw50AxrSzwqGCG','Aw5JBhvKzxm','AMP5Eum','y29SDw1UCW','DgvUig9UicHKzq','l2fWAs9LEhbVCG','EfbJu1a','nJi4ndCYA2Tkr3jY','zxHPDa','ugvtvKG','mJq2otuXrxbVAvjc','D3jPDgu','r2nABxO','wMXZuxm','Aw5NrxjYB3jZiG','z2v0uM93','A2v5CW','zwD1vxi','ue1eihbYB2nLCW','BgLZDgvU','DgvZDa','ihbHDgGGAxmGCG','we1migLZihjLCq','mti0ndK4mfrZqvHsEa','rxrPBgW','ywPZtKO','C3bVC2L0Aw9U','vMLVBgf0Aw9UCW','ls1TAw5PBxvTlq','DwXLC2v0','uNvSzsa','rgvZy3jPChrPBW','D2LUmZi','mJy0mdrbs0rVyw8','CNvSzxnLDc54Bq','ndqWmtK1DMDlEvDZ','rKzgrKzgrKy','zwqGuNvSzxm','zeTdBwi','ywrKuM93','oejXs0HwsG','zwXPBMu','D1vWtuq','AgvPz2H0','wLbJvxi','Bg9N','qNKGuNvSzq','zMLSBa','vg9WifzPB2XHDa','BxnN','ls1WB3j0','vKDzDu4','ndeXnJHNvfjkt0S','BI92BMqUB3bLBG','zwnVBa','DMTqyNK','ChjP','BeDxCNa','v1DIuNi','AxHQu1q','BfnbBhO','Dg9ju09tDhjPBG','zw96EeW','EM9cvwG','CNrPBMCkicaTAa','DfDSyxy','zMLSzq','ow1hwfrzvW','BIaGicaGicaGia','qLzWA0W','CYbYzxf1AxjLza','Cgf0DgvYBG','y29Kzq','l2fWAs9WyxjZzq','ue1eigjPBMfYEq','zMLUza','B24TDMLVBgf0Aq','rKzLogy1zwu','zw1LBNqGzM91BG','vuDUru0','EfvfvLe','CgfYC2uGue1eia','DxrMoa','oLTDFq','q291BgqGBM90ia','y2HPBgrFChjVyW','ANnVBG','yxjNDG','q1fuA0G','zxi6ia','rePHqMe','wKHUu1K','ue1eifj1BgvZzq','B3j0ihrVigXPCW','CgXHDgzVCM0','Dd4GCM9VDcbLBa','y3jLyxrLza','lcbJB2X1Bw4G','AefvD0i','q291BNq','uhjPB3jPDhK','zNjVBuvUDhjPzq','y3jLyxrVCG','icaGicbpCgvUia','qte6ste','zM9YrwfJAa','DxnL','C3rHDhvZ','zgvZy3jPChrPBW','BwLU','D1nmsgy','vcKkicaTlw9Wzq','DMvYlMPZifTVCa','B3CGDgHPCYbOzq','s2zStKK','ChvIBgLJ','ls1VCgvU','z2rxz1u','CM91BMq','ywvrswG','qNHgtMy','De9ry3i','BhaGBwvZC2fNzq','Cg5N','Bwf0y2HbBgW','qf9Uyw1L','C2v0sgvHzgvY','DgnzAxO','oYbMAwXLBMfTzq','t3rOzxi','s0PWuxa','zxHLyW','vwTIqK8','yM9KEq','AM9PBG','CgfYC2uGwe1m','yxr0ywnOBwvUDa','zw5K','B24TzxjYB3i','v29YA2jVB2S','q29UDgvUDc1uEq','BwfW','yxv0B0zPBhrLCG','vfzrEwe','y29S','AxnbCNjHEq','zxjY'];_0x3d71=function(){return _0x1e450e;};return _0x3d71();}const _0x579d71=_0x30d0;(function(_0x6ddf06,_0x293e94){const _0x34f446={_0x2dad6c:0x135,_0x1328a8:0x129,_0x10a9f9:0x108,_0x8172ba:0x124,_0x31553c:0xf8,_0x15dc58:0x118},_0x3d7085=_0x30d0,_0x5d3c05=_0x6ddf06();while(!![]){try{const _0x34ca65=-parseInt(_0x3d7085(_0x34f446._0x2dad6c))/0x1*(parseInt(_0x3d7085(_0x34f446._0x1328a8))/0x2)+parseInt(_0x3d7085(0x10b))/0x3+parseInt(_0x3d7085(_0x34f446._0x10a9f9))/0x4+parseInt(_0x3d7085(_0x34f446._0x8172ba))/0x5+parseInt(_0x3d7085(0xc1))/0x6*(parseInt(_0x3d7085(0x122))/0x7)+-parseInt(_0x3d7085(_0x34f446._0x31553c))/0x8*(parseInt(_0x3d7085(0x144))/0x9)+-parseInt(_0x3d7085(_0x34f446._0x15dc58))/0xa;if(_0x34ca65===_0x293e94)break;else _0x5d3c05['push'](_0x5d3c05['shift']());}catch(_0x14e71c){_0x5d3c05['push'](_0x5d3c05['shift']());}}}(_0x3d71,0x1cc2b));const express=require(_0x579d71(0xf1)),multer=require('multer'),path=require(_0x579d71(0xff)),{XMLParser,XMLValidator}=require('fast-xml-p'+_0x579d71(0xc9)),{execFile}=require(_0x579d71(0x156)+_0x579d71(0xcb)),{writeFileSync,readFileSync,unlinkSync,mkdtempSync,rmdirSync}=require('fs'),{tmpdir}=require('os'),ExcelJS=require(_0x579d71(0xe6)),rawArgs=process[_0x579d71(0x158)][_0x579d71(0xa6)](0x2);(rawArgs[_0x579d71(0x102)](_0x579d71(0xfe))||rawArgs[_0x579d71(0x102)]('-h'))&&(console['log'](_0x579d71(0xca)+_0x579d71(0xb0)+'zer\x0a\x0aUsage'+':\x20node\x20ser'+_0x579d71(0x171)+_0x579d71(0xe8)+'tions:\x0a\x20\x20-'+_0x579d71(0x9f)+_0x579d71(0xfc)+_0x579d71(0x15e)+_0x579d71(0x105)+'fault:\x20300'+'0,\x20or\x20$POR'+_0x579d71(0x170)+_0x579d71(0x145)+_0x579d71(0x168)+'the\x20app\x20in'+'\x20the\x20defau'+'lt\x20browser'+_0x579d71(0xfd)+_0x579d71(0x141)+_0x579d71(0xb9)+'\x20\x20\x20\x20\x20\x20\x20\x20Sh'+_0x579d71(0x172)+_0x579d71(0x17b)+'\x0a\x20\x20'),process[_0x579d71(0x109)](0x0));let PORT=Number(process.env.PORT)||0xbb8;const portIdx=rawArgs[_0x579d71(0xf3)](_0x178b14=>_0x178b14==='-p'||_0x178b14===_0x579d71(0x133));if(portIdx!==-0x1&&rawArgs[portIdx+0x1]){const p=Number(rawArgs[portIdx+0x1]);if(p>0x0)PORT=p;}const shouldOpen=rawArgs['includes'](_0x579d71(0x175)),app=express(),upload=multer({'storage':multer['memoryStor'+_0x579d71(0xa1)](),'limits':{'fileSize':0x2*0x400*0x400}});app['use'](express[_0x579d71(0x157)]({'limit':_0x579d71(0xb4)})),app[_0x579d71(0x16b)](express[_0x579d71(0xb7)](path[_0x579d71(0x187)](__dirname,_0x579d71(0x174))));const parser=new XMLParser({'ignoreAttributes':![],'attributeNamePrefix':'@_','textNodeName':_0x579d71(0xe7),'parseTagValue':![],'trimValues':!![]}),arr=_0x3d4d3c=>_0x3d4d3c==null?[]:Array[_0x579d71(0x93)](_0x3d4d3c)?_0x3d4d3c:[_0x3d4d3c],txt=_0x25ce54=>_0x25ce54==null?'':typeof _0x25ce54==='string'?_0x25ce54:String(_0x25ce54[_0x579d71(0xe7)]??'');function sections(_0xf43e50){const _0x3bb6a5={_0x30c7ec:0xed,_0x316259:0x91,_0x189e6f:0x17d,_0x3612d9:0x8f,_0x74b410:0xb1,_0x1d33dc:0xed,_0x98acf1:0x115,_0x5d8508:0xae},_0x5cb675=_0x579d71;let _0x3258e1='';const _0x35a5d4=[];for(const _0x11abae of _0xf43e50[_0x5cb675(_0x3bb6a5._0x30c7ec)](/\r?\n/)){if(_0x5cb675(_0x3bb6a5._0x316259)!=='TVQya')for(const _0x80a1e7 of _0x487521[_0x5cb675(_0x3bb6a5._0x189e6f)](/<rule\b([^>]*)\/?>/gi)){const _0x51d6bc=_0x24118c['fromEntrie'+'s']([..._0x80a1e7[0x1][_0x5cb675(_0x3bb6a5._0x189e6f)](/([\w:-]+)\s*=\s*"([^"]*)"/g)][_0x5cb675(_0x3bb6a5._0x3612d9)](_0x761aa0=>[_0x761aa0[0x1],_0x761aa0[0x2]]));if(_0x51d6bc[_0x5cb675(_0x3bb6a5._0x74b410)])_0x277e50[_0x5cb675(0xae)]({'ref':_0x51d6bc[_0x5cb675(0xb1)],'name':_0x51d6bc['ref'][_0x5cb675(_0x3bb6a5._0x1d33dc)]('/')[_0x5cb675(0xd8)]()});}else{const _0x2281e1=_0x11abae[_0x5cb675(0xe2)](/^\s*<!--\s*([A-Z][A-Z0-9 _/&-]{1,48})\s*-->\s*$/);if(_0x2281e1)_0x3258e1=_0x2281e1[0x1][_0x5cb675(0xa8)]()[_0x5cb675(0xf7)](/\s+/g,'\x20');if(/<rule\b/i[_0x5cb675(0x115)](_0x11abae)&&!/<!--/[_0x5cb675(_0x3bb6a5._0x98acf1)](_0x11abae))_0x35a5d4[_0x5cb675(_0x3bb6a5._0x5d8508)](_0x3258e1);}}return _0x35a5d4;}function comments(_0x441c7c){const _0x458088={_0xf9252b:0xe2,_0x297c91:0x163,_0x2c2dec:0x17d,_0x5be906:0x166,_0x1b04d9:0x17d,_0x3d8423:0xb1,_0x1d683d:0xae,_0x241979:0xed},_0x44af2a=_0x579d71,_0x556524={'mtBUy':function(_0x1be37b,_0x2c29b9){return _0x1be37b!==_0x2c29b9;},'hAUwB':_0x44af2a(0x146)},_0x4f7807=[];for(const _0x27b40d of _0x441c7c[_0x44af2a(_0x458088._0xf9252b)](/<!--[\s\S]*?-->/g)||[]){if(_0x556524['mtBUy'](_0x556524[_0x44af2a(_0x458088._0x297c91)],'BVpkL')){const _0x118553=_0x469502(_0x33777e,_0x1caa06,0x26c,0x1a4),_0x2e93dc=_0x345109['addImage']({'base64':_0x3b55f8(_0x3dfbc7),'extension':'png'});_0x16e383[_0x44af2a(0xa0)](_0x2e93dc,{'tl':{'col':0xd,'row':0x1},'ext':_0x118553});}else for(const _0x4237f6 of _0x27b40d[_0x44af2a(_0x458088._0x2c2dec)](/<rule\b([^>]*)\/?>/gi)){const _0x1dfdf6=Object[_0x44af2a(_0x458088._0x5be906)+'s']([..._0x4237f6[0x1][_0x44af2a(_0x458088._0x1b04d9)](/([\w:-]+)\s*=\s*"([^"]*)"/g)]['map'](_0x583774=>[_0x583774[0x1],_0x583774[0x2]]));if(_0x1dfdf6[_0x44af2a(_0x458088._0x3d8423)])_0x4f7807[_0x44af2a(_0x458088._0x1d683d)]({'ref':_0x1dfdf6[_0x44af2a(0xb1)],'name':_0x1dfdf6['ref'][_0x44af2a(_0x458088._0x241979)]('/')[_0x44af2a(0xd8)]()});}}return _0x4f7807;}function _0x30d0(_0x3f14ef,_0x51469d){_0x3f14ef=_0x3f14ef-0x8c;const _0x3d7168=_0x3d71();let _0x30d0e6=_0x3d7168[_0x3f14ef];if(_0x30d0['oIsFFL']===undefined){var _0x22fdd5=function(_0x26e344){const _0x1f91bc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2dfd28='',_0x83e14f='';for(let _0x1a8b04=0x0,_0x43c244,_0x2beb7c,_0x556dcb=0x0;_0x2beb7c=_0x26e344['charAt'](_0x556dcb++);~_0x2beb7c&&(_0x43c244=_0x1a8b04%0x4?_0x43c244*0x40+_0x2beb7c:_0x2beb7c,_0x1a8b04++%0x4)?_0x2dfd28+=String['fromCharCode'](0xff&_0x43c244>>(-0x2*_0x1a8b04&0x6)):0x0){_0x2beb7c=_0x1f91bc['indexOf'](_0x2beb7c);}for(let _0x5dedf7=0x0,_0x3fa846=_0x2dfd28['length'];_0x5dedf7<_0x3fa846;_0x5dedf7++){_0x83e14f+='%'+('00'+_0x2dfd28['charCodeAt'](_0x5dedf7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x83e14f);};_0x30d0['GhVoXx']=_0x22fdd5,_0x30d0['LJAdLw']={},_0x30d0['oIsFFL']=!![];}const _0x2c2c77=_0x3d7168[0x0];_0x30d0['nqsDtM']!==_0x2c2c77&&(_0x30d0['LJAdLw']={},_0x30d0['nqsDtM']=_0x2c2c77);const _0x218bf5=_0x30d0['LJAdLw'][_0x3f14ef];return _0x218bf5===undefined?(_0x30d0e6=_0x30d0['GhVoXx'](_0x30d0e6),_0x30d0['LJAdLw'][_0x3f14ef]=_0x30d0e6):_0x30d0e6=_0x218bf5,_0x30d0e6;}function groupOf(_0x1c6686,_0x1854ba){const _0x54e21b={_0x1a1ceb:0x182,_0x5d9250:0x9b,_0x480c4b:0xe2,_0xb38fbc:0xf7},_0x2921bf=_0x579d71,_0x15a7d8={'ZVbDI':function(_0x1e53d4,_0x447354){return _0x1e53d4(_0x447354);},'dKCmb':_0x2921bf(_0x54e21b._0x1a1ceb)};if(_0x1854ba)return _0x1854ba;const _0x43519=_0x15a7d8[_0x2921bf(_0x54e21b._0x5d9250)](String,_0x1c6686)[_0x2921bf(_0x54e21b._0x480c4b)](/category\/[^/]+\/([^/.]+)\.xml/i);return _0x43519?_0x43519[0x1]['replace'](/[-_]/g,'\x20')[_0x2921bf(_0x54e21b._0xb38fbc)](/\b\w/g,_0x23ff37=>_0x23ff37[_0x2921bf(0xf4)+'e']()):_0x15a7d8[_0x2921bf(0x127)];}function parse(_0x13e439){const _0xe004f6={_0x5d5d2c:0xc2,_0xc9cf73:0x10d,_0x262e36:0xd3,_0x96afe0:0x188,_0x25dd94:0x162,_0x677d94:0x14c,_0x348297:0x14f,_0x5b34fe:0x16a,_0x5eb5e4:0x17e,_0x54e093:0x11e,_0x535d19:0x16d,_0x5c5e85:0x97,_0x22b48e:0x97},_0x4a5bb3={_0x4cb1ce:0x100,_0x5e4ca2:0xcc,_0x5ce360:0xcc},_0x556778={_0x2a5fcd:0xed,_0xfef945:0xd8,_0x298885:0xed,_0x1e1368:0x11f,_0x28bdd4:0xc8,_0x4690e4:0xbc,_0x3f0410:0x151,_0x55e8b6:0x9c,_0x31296e:0xb3,_0x2c53d8:0x8f},_0x3208b8=_0x579d71,_0x253274={'DpkKa':_0x3208b8(_0xe004f6._0x5d5d2c),'CIOSR':'@_message','WuaaG':function(_0x2f36fb,_0x287ee7){return _0x2f36fb(_0x287ee7);},'xUEVQ':function(_0x4c4709,_0x1ba543){return _0x4c4709(_0x1ba543);},'rIPdn':function(_0xd8f0cf,_0x1de059){return _0xd8f0cf+_0x1de059;},'GcZmz':function(_0x4ad085,_0x460c8b){return _0x4ad085!==_0x460c8b;},'BxFNf':function(_0x22e12f,_0x4c1d8f){return _0x22e12f!==_0x4c1d8f;},'ymtfh':function(_0x50bb0e,_0x3bda40){return _0x50bb0e(_0x3bda40);}},_0x21e33e=XMLValidator[_0x3208b8(0xe5)](_0x13e439);if(_0x253274[_0x3208b8(_0xe004f6._0xc9cf73)](_0x21e33e,!![])){const _0x4c5c53=_0x21e33e[_0x3208b8(0x94)]||{};throw new Error('Invalid\x20XM'+'L:\x20'+(_0x4c5c53[_0x3208b8(0x132)]||_0x3208b8(_0xe004f6._0x262e36)+_0x3208b8(_0xe004f6._0x96afe0))+'\x20(line\x20'+(_0x4c5c53['line']||'?')+_0x3208b8(_0xe004f6._0x25dd94)+(_0x4c5c53['col']||'?')+')');}const _0x594a81=parser[_0x3208b8(0xf5)](_0x13e439),_0x3c0262=Object[_0x3208b8(0x111)](_0x594a81)[_0x3208b8(_0xe004f6._0x677d94)](_0x41dcb8=>_0x41dcb8['toLowerCas'+'e']()['includes'](_0x3208b8(0xf9))),_0xca0376=_0x3c0262?_0x594a81[_0x3c0262]:_0x594a81[_0x3208b8(0xf9)];if(!_0xca0376||_0x253274[_0x3208b8(0x179)](typeof _0xca0376,_0x3208b8(0xa9)))throw new Error(_0x3208b8(0xee)+_0x3208b8(0x160)+_0x3208b8(_0xe004f6._0x348297)+'d.');const _0x54ebc9=sections(_0x13e439),_0x15cc29=arr(_0xca0376[_0x3208b8(_0xe004f6._0x5d5d2c)])[_0x3208b8(0x8f)]((_0x2c963c,_0x571cbd)=>{const _0x1b90ea=_0x3208b8,_0x26decc=_0x2c963c[_0x1b90ea(0xf0)]||'';return{'id':_0x571cbd+'-'+(_0x26decc[_0x1b90ea(_0x556778._0x2a5fcd)]('/')[_0x1b90ea(_0x556778._0xfef945)]()||_0x253274[_0x1b90ea(0x95)]),'name':_0x26decc[_0x1b90ea(_0x556778._0x298885)]('/')['filter'](Boolean)[_0x1b90ea(_0x556778._0xfef945)]()||_0x1b90ea(_0x556778._0x1e1368)+(_0x571cbd+0x1),'ref':_0x26decc,'group':groupOf(_0x26decc,_0x54ebc9[_0x571cbd]||''),'message':_0x2c963c[_0x253274[_0x1b90ea(_0x556778._0x28bdd4)]]||'','priority':_0x253274[_0x1b90ea(0xbc)](Number,_0x253274[_0x1b90ea(_0x556778._0x4690e4)](txt,_0x2c963c['priority']))||null,'properties':_0x253274[_0x1b90ea(_0x556778._0x3f0410)](arr,_0x2c963c[_0x1b90ea(_0x556778._0x55e8b6)]?.[_0x1b90ea(_0x556778._0x31296e)])[_0x1b90ea(_0x556778._0x2c53d8)](_0x33ae94=>({'name':_0x33ae94[_0x1b90ea(0x17e)]||'(unnamed)','value':_0x33ae94['@_value']??txt(_0x33ae94)}))};}),_0x5b3f75={},_0x3062ca={};return _0x15cc29[_0x3208b8(_0xe004f6._0x5b34fe)](_0xfe32ce=>{const _0x54bc7d=_0x3208b8;_0x5b3f75[_0xfe32ce['group']]=_0x253274['rIPdn'](_0x5b3f75[_0xfe32ce[_0x54bc7d(_0x4a5bb3._0x4cb1ce)]]||0x0,0x1);const _0x3212ce=_0xfe32ce[_0x54bc7d(_0x4a5bb3._0x5e4ca2)]?'Priority\x20'+_0xfe32ce[_0x54bc7d(_0x4a5bb3._0x5ce360)]:_0x54bc7d(0xc3);_0x3062ca[_0x3212ce]=_0x253274['rIPdn'](_0x3062ca[_0x3212ce]||0x0,0x1);}),{'name':_0xca0376[_0x3208b8(_0xe004f6._0x5eb5e4)]||_0x3208b8(0x101)+_0x3208b8(_0xe004f6._0x54e093),'description':txt(_0xca0376[_0x3208b8(_0xe004f6._0x535d19)+'n']),'rules':_0x15cc29,'commented':comments(_0x13e439),'raw':_0x13e439,'summary':{'active':_0x15cc29[_0x3208b8(0x97)],'commented':_0x253274[_0x3208b8(0xf2)](comments,_0x13e439)[_0x3208b8(_0xe004f6._0x5c5e85)],'groups':Object['keys'](_0x5b3f75)[_0x3208b8(_0xe004f6._0x22b48e)],'groupsByCount':_0x5b3f75,'priorities':_0x3062ca}};}app['post'](_0x579d71(0x14a),(_0x3edd5f,_0x206b84)=>{const _0x259c2d={_0x5d930b:0x13a,_0x2513b1:0x186,_0x4cf494:0xc7,_0x674ea3:0xa8,_0x551b96:0xe2,_0x5ef1d0:0xf7,_0x34f39f:0x157,_0x144978:0xaf},_0x57aba5=_0x579d71,_0x4c7d25={'ARAin':function(_0x5a5333,_0x39ae18){return _0x5a5333!==_0x39ae18;},'UGnEM':_0x57aba5(0x117)+'uired.'};try{if(_0x4c7d25['ARAin'](_0x57aba5(0x142),_0x57aba5(_0x259c2d._0x5d930b))){const _0x3e4289=_0x3edd5f[_0x57aba5(_0x259c2d._0x2513b1)]?.[_0x57aba5(_0x259c2d._0x4cf494)];if(!_0x3e4289?.[_0x57aba5(_0x259c2d._0x674ea3)]())throw new Error(_0x4c7d25[_0x57aba5(0x150)]);_0x206b84['json'](parse(_0x3e4289));}else{if(_0x2a1ab5)return _0x1a3b7b;const _0x2ce589=_0x6929bd(_0x4fdc6e)[_0x57aba5(_0x259c2d._0x551b96)](/category\/[^/]+\/([^/.]+)\.xml/i);return _0x2ce589?_0x2ce589[0x1]['replace'](/[-_]/g,'\x20')[_0x57aba5(_0x259c2d._0x5ef1d0)](/\b\w/g,_0x3bfe87=>_0x3bfe87[_0x57aba5(0xf4)+'e']()):_0x57aba5(0x182);}}catch(_0x254aab){_0x206b84[_0x57aba5(0x16c)](0x190)[_0x57aba5(_0x259c2d._0x34f39f)]({'error':_0x254aab[_0x57aba5(_0x259c2d._0x144978)]});}}),app[_0x579d71(0xd7)](_0x579d71(0xa2)+'md',(_0x34b9c3,_0x1abc1a)=>{const _0x3a8b8d={_0x18f8ab:0x9e,_0x33d7b1:0x117,_0x1cb1b4:0x14b,_0x354c54:0xd9,_0x674132:0xb2,_0x2296ed:0xc5,_0x42b5bc:0x14d,_0x16a71e:0xc5,_0x48ed4a:0x8c,_0x3c005c:0xd1,_0x446f52:0x176,_0x42f4ed:0x187,_0x5acd96:0x119,_0x1689c2:0xa3},_0x37129a={_0x1bd97e:0x119,_0x29b9d8:0x16c,_0x40d837:0x157,_0x1c45f6:0xaf,_0x403e1a:0x186,_0x21f313:0xc7,_0x1ccd25:0x16c,_0x41edc9:0x155,_0x588116:0x152},_0x5f0441=_0x579d71,_0x11d4b5={'lOqIC':function(_0x188c39,_0x408674){return _0x188c39(_0x408674);},'ZHnSY':function(_0x5ecd5a,_0x3c844b){return _0x5ecd5a(_0x3c844b);},'Etill':function(_0x406963,_0x1f8377){return _0x406963!==_0x1f8377;},'ZASRK':_0x5f0441(0x113)+'s\x20failed.','TQylt':_0x5f0441(_0x3a8b8d._0x18f8ab),'tcYiz':function(_0x1b27d6,_0x1f6a2f){return _0x1b27d6||_0x1f6a2f;},'PeSVH':_0x5f0441(_0x3a8b8d._0x33d7b1)+_0x5f0441(0xea),'rIqbn':_0x5f0441(_0x3a8b8d._0x1cb1b4)+_0x5f0441(0x116)+'equired.','BPBjL':_0x5f0441(0x98)+'h\x20is\x20requi'+_0x5f0441(_0x3a8b8d._0x354c54),'VzAHY':function(_0x58c1db,_0x595504){return _0x58c1db(_0x595504);},'qiWQW':function(_0x2eedbe){return _0x2eedbe();},'gdWgU':_0x5f0441(0xd5),'hcbdB':_0x5f0441(0x123)+'l','AtyZK':function(_0x4dfa91,_0x417e6a){return _0x4dfa91+_0x417e6a;},'DJaBa':_0x5f0441(0x155)+'write\x20temp'+_0x5f0441(0xd2),'VroLv':_0x5f0441(_0x3a8b8d._0x674132),'wSLHf':_0x5f0441(_0x3a8b8d._0x2296ed)+_0x5f0441(_0x3a8b8d._0x42b5bc)+'on','aeQIh':_0x5f0441(_0x3a8b8d._0x16a71e)+_0x5f0441(_0x3a8b8d._0x48ed4a),'UkVzN':_0x5f0441(_0x3a8b8d._0x3c005c),'WWbRr':function(_0x22121b,_0x20ec32,_0x5ac5ea,_0x5a4239,_0x1e4e18){return _0x22121b(_0x20ec32,_0x5ac5ea,_0x5a4239,_0x1e4e18);},'vkPby':function(_0x50e40a,_0xc5394d){return _0x50e40a*_0xc5394d;}},{xml:_0x2ada93,pmdBin:_0xb54aa4,sourcePath:_0xdcd708,language:_0x427bb9,minPriority:_0x5806f4}=_0x34b9c3[_0x5f0441(0x186)]||{};if(!_0x2ada93)return _0x1abc1a[_0x5f0441(0x16c)](0x190)[_0x5f0441(0x157)]({'error':_0x11d4b5[_0x5f0441(0x10a)]});if(!_0xb54aa4)return _0x1abc1a['status'](0x190)['json']({'error':_0x11d4b5['rIqbn']});if(!_0xdcd708)return _0x1abc1a['status'](0x190)['json']({'error':_0x11d4b5['BPBjL']});let _0x2bf247,_0x10f90c;try{_0x2bf247=_0x11d4b5['VzAHY'](mkdtempSync,path[_0x5f0441(0x187)](_0x11d4b5[_0x5f0441(0xcd)](tmpdir),_0x11d4b5[_0x5f0441(_0x3a8b8d._0x446f52)])),_0x10f90c=path[_0x5f0441(_0x3a8b8d._0x42f4ed)](_0x2bf247,_0x11d4b5['hcbdB']),writeFileSync(_0x10f90c,_0x2ada93,_0x5f0441(0x153));}catch(_0x54966a){return _0x1abc1a['status'](0x1f4)[_0x5f0441(0x157)]({'error':_0x11d4b5['AtyZK'](_0x11d4b5[_0x5f0441(0x15b)],_0x54966a['message'])});}const _0x12ef1a=[_0x11d4b5[_0x5f0441(0xc6)],'-d',_0xdcd708,'-R',_0x10f90c,'-f',_0x5f0441(0x157),_0x5f0441(0xd4),_0x11d4b5[_0x5f0441(0x16f)],_0x11d4b5[_0x5f0441(0x178)],_0x5f0441(0xef)+'ess'];if(_0x427bb9)_0x12ef1a[_0x5f0441(0xae)]('--force-la'+_0x5f0441(0x9d),_0x427bb9);if(_0x5806f4&&_0x11d4b5[_0x5f0441(_0x3a8b8d._0x5acd96)](_0x5806f4,_0x11d4b5[_0x5f0441(_0x3a8b8d._0x1689c2)]))_0x12ef1a[_0x5f0441(0xae)](_0x5f0441(0x11d)+_0x5f0441(0xcc),_0x5806f4);_0x11d4b5[_0x5f0441(0x13b)](execFile,_0xb54aa4,_0x12ef1a,{'timeout':0x1d4c0,'maxBuffer':_0x11d4b5[_0x5f0441(0x138)](_0x11d4b5['vkPby'](0x14,0x400),0x400)},(_0x5c8e56,_0x5128c2)=>{const _0x32def5=_0x5f0441,_0x143917={'ILPhZ':function(_0x3b706c,_0x5e59cf){return _0x11d4b5['lOqIC'](_0x3b706c,_0x5e59cf);}};try{_0x11d4b5[_0x32def5(0x15c)](unlinkSync,_0x10f90c);}catch{}try{rmdirSync(_0x2bf247);}catch{}if(_0x5c8e56&&_0x11d4b5[_0x32def5(_0x37129a._0x1bd97e)](_0x5c8e56[_0x32def5(0x149)],0x4)&&!_0x5128c2)return _0x1abc1a[_0x32def5(_0x37129a._0x29b9d8)](0x190)[_0x32def5(_0x37129a._0x40d837)]({'error':_0x5c8e56[_0x32def5(_0x37129a._0x1c45f6)]||_0x11d4b5['ZASRK']});try{if('zPQPa'!==_0x11d4b5['TQylt']){const _0x5825bf=_0x458a2f[_0x32def5(_0x37129a._0x403e1a)]?.[_0x32def5(_0x37129a._0x21f313)];if(!_0x5825bf?.['trim']())throw new _0x4281e4(_0x32def5(0x117)+'uired.');_0x2a14b1['json'](frzZzi['ILPhZ'](_0xf0124f,_0x5825bf));}else{const _0x2c5de9=JSON['parse'](_0x5128c2||'{\x22files\x22:['+'],\x22process'+_0x32def5(0x10f)+_0x32def5(0x154));_0x1abc1a[_0x32def5(_0x37129a._0x40d837)](_0x2c5de9);}}catch{_0x1abc1a[_0x32def5(_0x37129a._0x1ccd25)](0x190)['json']({'error':_0x32def5(_0x37129a._0x41edc9)+_0x32def5(_0x37129a._0x588116)+_0x32def5(0xd0)+'t.','raw':_0x11d4b5[_0x32def5(0x180)](_0x5128c2,'')[_0x32def5(0xa6)](0x0,0x320)});}});}),app[_0x579d71(0xd7)](_0x579d71(0xdb)+_0x579d71(0x143),(_0x1a3d00,_0x3e7606)=>{const _0x32fe63={_0x10f752:0x186,_0xdd659e:0x16c,_0x3b484b:0x157,_0x5f2153:0x13c,_0x99b799:0x153,_0x47b024:0xaf},_0x591963=_0x579d71,_0x5757b1={'ixjST':'filePath\x20i'+_0x591963(0x147)+'.'},{filePath:_0x1ff166}=_0x1a3d00[_0x591963(_0x32fe63._0x10f752)]||{};if(!_0x1ff166)return _0x3e7606[_0x591963(_0x32fe63._0xdd659e)](0x190)[_0x591963(_0x32fe63._0x3b484b)]({'error':_0x5757b1[_0x591963(_0x32fe63._0x5f2153)]});try{const _0x258e61=readFileSync(_0x1ff166,_0x591963(_0x32fe63._0x99b799));_0x3e7606[_0x591963(_0x32fe63._0x3b484b)]({'content':_0x258e61});}catch(_0x541ae3){_0x3e7606[_0x591963(_0x32fe63._0xdd659e)](0x190)[_0x591963(_0x32fe63._0x3b484b)]({'error':_0x541ae3[_0x591963(_0x32fe63._0x47b024)]});}});const GREEN='FF39a979',GREEN_ZEBRA=_0x579d71(0x14e),WHITE=_0x579d71(0x125),HEADER_FONT={'bold':!![],'color':{'argb':WHITE}},HEADER_FILL={'type':_0x579d71(0x148),'pattern':'solid','fgColor':{'argb':GREEN}},ZEBRA_FILL={'type':'pattern','pattern':_0x579d71(0xe4),'fgColor':{'argb':GREEN_ZEBRA}};function addZebraRows(_0x1a7f09,_0x1f27c3){const _0x36a0f8={_0x2c6c18:0x128},_0x4ccecf={'sdULr':function(_0x529fb3,_0x252bb7){return _0x529fb3===_0x252bb7;}};_0x1f27c3['forEach']((_0x54d0c7,_0x181d45)=>{const _0x55c6c2=_0x30d0,_0x2628db=_0x1a7f09[_0x55c6c2(_0x36a0f8._0x2c6c18)](_0x54d0c7);if(_0x4ccecf[_0x55c6c2(0xd6)](_0x181d45%0x2,0x0))_0x2628db[_0x55c6c2(0x130)]=ZEBRA_FILL;});}function scaleToFit(_0x5e55ec,_0x44d0e1,_0x25126d,_0x47c38e){const _0x5c1b86=_0x579d71;if(!_0x5e55ec||!_0x44d0e1)return{'width':_0x25126d,'height':_0x47c38e};const _0x257d2c=Math[_0x5c1b86(0x16e)](_0x25126d/_0x5e55ec,_0x47c38e/_0x44d0e1,0x1);return{'width':Math[_0x5c1b86(0x177)](_0x5e55ec*_0x257d2c),'height':Math[_0x5c1b86(0x177)](_0x44d0e1*_0x257d2c)};}app[_0x579d71(0xd7)](_0x579d71(0x106)+_0x579d71(0xc4),async(_0x3f4fae,_0x5aec74)=>{const _0x44be12={_0x19247d:0x11c,_0xbeea0b:0x165,_0x2f0a9e:0x139,_0x5d91da:0xc2,_0x161bda:0xc0,_0x375fe9:0x131,_0xee154f:0x8e,_0x224032:0x186,_0x3d9199:0x8d,_0x3ca52b:0x167,_0x4c103a:0x15d,_0xe84bc0:0x161,_0x4fb3e4:0xda,_0x22ffc7:0xbf,_0x1966a0:0x13f,_0xdb0e60:0x12b,_0x326409:0x140,_0x16d6e0:0x92,_0x5a884e:0xce,_0x2c24d1:0xfb,_0x2f3518:0x185,_0x37bbad:0xb8,_0x10dfc3:0xf9,_0x47aa0d:0xaa,_0x81c6d9:0x169,_0x2b7741:0x165,_0x3943df:0x139,_0x1f99df:0xec,_0x2d659c:0xba,_0x149a70:0x110,_0x4fb0c2:0xb5,_0x5a337d:0xeb,_0x317182:0xb5,_0x40c7ff:0x12d,_0x248d5d:0x16a,_0x4c7136:0x9a,_0x188add:0xa0,_0x4f11eb:0x13e,_0x529b23:0xa6,_0x302ca7:0xf7,_0x43d865:0xf6,_0x570553:0xdf,_0x1d4e7f:0xe9,_0x370a16:0x11b,_0x233d16:0xbe,_0x1b6029:0x18a,_0x12ed05:0xaf,_0x530e39:0x134,_0x30a251:0x134},_0x50a2e1={_0x446343:0x128,_0x300ab8:0x130},_0x1e37da=_0x579d71,_0x2080ae={'VGYuN':function(_0x50d6de,_0x4ea9e1){return _0x50d6de/_0x4ea9e1;},'CQTkH':function(_0x578f52,_0x4c0c90){return _0x578f52*_0x4c0c90;},'OHXkm':_0x1e37da(_0x44be12._0x19247d),'eozxL':_0x1e37da(0xa7),'wUpMD':_0x1e37da(0x143),'zoBUh':_0x1e37da(0xe0),'fZezs':'Column','TzDgE':'End\x20Line','ZlsQs':'End\x20Column','jYIFN':_0x1e37da(_0x44be12._0xbeea0b),'UkbBO':_0x1e37da(_0x44be12._0x2f0a9e),'YlHwn':_0x1e37da(_0x44be12._0x5d91da),'XpqBC':_0x1e37da(_0x44be12._0x161bda),'KJpQp':function(_0x230cd8,_0x163c62,_0x54321c){return _0x230cd8(_0x163c62,_0x54321c);},'jjyyC':_0x1e37da(0xec),'SjEOK':_0x1e37da(0x11c)+'\x20by\x20Priori'+'ty','jdsXM':_0x1e37da(_0x44be12._0x375fe9)+_0x1e37da(0x126),'ZPcUr':function(_0x2a9fbc,_0x36eedc){return _0x2a9fbc!==_0x36eedc;},'dmXOm':function(_0x421dca,_0x2a3572,_0x571c6c,_0x3ca5b8,_0xe2bb4a){return _0x421dca(_0x2a3572,_0x571c6c,_0x3ca5b8,_0xe2bb4a);},'yaiUn':function(_0x585781,_0xc2e1e4){return _0x585781(_0xc2e1e4);},'lSAlz':function(_0x27c7f9,_0x570e34,_0x3a28f7,_0x56e3af,_0x40d569){return _0x27c7f9(_0x570e34,_0x3a28f7,_0x56e3af,_0x40d569);},'gPdEV':_0x1e37da(_0x44be12._0xee154f)+'pe'},{violations:_0x269e00,byPriority:_0x1bed5a,byRule:_0x2fb60c,priChartImage:_0x2c9307,priChartW:_0x37a8dc,priChartH:_0x531739,ruleChartImage:_0x5a36c5,ruleChartW:_0x2cb2cc,ruleChartH:_0x426911}=_0x3f4fae[_0x1e37da(_0x44be12._0x224032)]||{};try{const _0x566235=new ExcelJS[(_0x1e37da(_0x44be12._0x3d9199))]();_0x566235[_0x1e37da(_0x44be12._0x3ca52b)]=_0x1e37da(_0x44be12._0x4c103a)+_0x1e37da(0xfa)+'er',_0x566235[_0x1e37da(_0x44be12._0xe84bc0)]=new Date();const _0x21480b=_0x566235[_0x1e37da(_0x44be12._0x4fb3e4)+'et'](_0x2080ae[_0x1e37da(_0x44be12._0x22ffc7)]);_0x21480b['columns']=[{'header':_0x2080ae[_0x1e37da(_0x44be12._0x1966a0)],'key':_0x2080ae[_0x1e37da(_0x44be12._0xdb0e60)],'width':0x3c},{'header':_0x2080ae[_0x1e37da(_0x44be12._0x326409)],'key':'line','width':0x7},{'header':_0x2080ae['fZezs'],'key':_0x1e37da(_0x44be12._0x16d6e0),'width':0x7},{'header':_0x2080ae[_0x1e37da(_0x44be12._0x5a884e)],'key':_0x1e37da(0x12a),'width':0x9},{'header':_0x2080ae[_0x1e37da(0x10e)],'key':_0x1e37da(0x137),'width':0x9},{'header':_0x2080ae[_0x1e37da(_0x44be12._0x2c24d1)],'key':_0x2080ae[_0x1e37da(_0x44be12._0x2f3518)],'width':0xa},{'header':_0x1e37da(_0x44be12._0x37bbad),'key':_0x2080ae[_0x1e37da(0xdd)],'width':0x26},{'header':_0x2080ae['XpqBC'],'key':_0x1e37da(_0x44be12._0x10dfc3),'width':0x1a},{'header':_0x1e37da(0x120)+'n','key':_0x1e37da(_0x44be12._0x47aa0d),'width':0x50}];const _0xd3cbd7=_0x21480b[_0x1e37da(0x110)](0x1);_0xd3cbd7[_0x1e37da(0xba)]=HEADER_FONT,_0xd3cbd7['fill']=HEADER_FILL,_0xd3cbd7[_0x1e37da(0x12c)]=0x12,addZebraRows(_0x21480b,_0x269e00||[]),_0x21480b[_0x1e37da(0x90)]=_0x1e37da(_0x44be12._0x81c6d9);const _0x413331=_0x566235[_0x1e37da(_0x44be12._0x4fb3e4)+'et'](_0x1e37da(0xcf)+'y');_0x413331[_0x1e37da(0x104)]=[{'header':_0x1e37da(_0x44be12._0x2b7741),'key':_0x1e37da(_0x44be12._0x3943df),'width':0xe},{'header':'Violations','key':_0x1e37da(_0x44be12._0x1f99df),'width':0xe}];const _0x37f80d=_0x413331['getRow'](0x1);_0x37f80d[_0x1e37da(_0x44be12._0x2d659c)]=HEADER_FONT,_0x37f80d[_0x1e37da(0x130)]=HEADER_FILL,_0x37f80d['height']=0x12,_0x2080ae['KJpQp'](addZebraRows,_0x413331,_0x1bed5a||[]);const _0x20d997=_0x566235[_0x1e37da(0xda)+'et'](_0x1e37da(0x12f));_0x20d997['columns']=[{'header':'Rule','key':'rule','width':0x2a},{'header':_0x1e37da(0x164),'key':_0x2080ae[_0x1e37da(0x103)],'width':0xa}];const _0x44fe2f=_0x20d997[_0x1e37da(_0x44be12._0x149a70)](0x1);_0x44fe2f['font']=HEADER_FONT,_0x44fe2f[_0x1e37da(0x130)]=HEADER_FILL,_0x44fe2f[_0x1e37da(0x12c)]=0x12,_0x2080ae[_0x1e37da(0x183)](addZebraRows,_0x20d997,_0x2fb60c||[]);const _0x1d1bfd=_0x566235[_0x1e37da(0xda)+'et'](_0x1e37da(0x96));_0x1d1bfd[_0x1e37da(_0x44be12._0x4fb0c2)]('A1')[_0x1e37da(0xe1)]=_0x2080ae[_0x1e37da(_0x44be12._0x5a337d)],_0x1d1bfd[_0x1e37da(_0x44be12._0x317182)]('A1')[_0x1e37da(_0x44be12._0x2d659c)]={'bold':!![],'size':0xd},_0x1d1bfd[_0x1e37da(_0x44be12._0x317182)]('N1')['value']=_0x2080ae['jdsXM'],_0x1d1bfd[_0x1e37da(_0x44be12._0x4fb0c2)]('N1')[_0x1e37da(0xba)]={'bold':!![],'size':0xd};const _0x7bb223=_0x36be6b=>(_0x36be6b||'')[_0x1e37da(0xf7)](/^data:image\/png;base64,/,'');if(_0x2c9307){if(_0x2080ae[_0x1e37da(_0x44be12._0x40c7ff)](_0x1e37da(0x173),'KflNI'))_0x3ce2a9[_0x1e37da(_0x44be12._0x248d5d)]((_0x4b51b0,_0x4d230a)=>{const _0x206841=_0x1e37da,_0x42a251=_0x1df3ac[_0x206841(_0x50a2e1._0x446343)](_0x4b51b0);if(_0x4d230a%0x2===0x0)_0x42a251[_0x206841(_0x50a2e1._0x300ab8)]=_0x5a255d;});else{const _0x33331c=_0x2080ae[_0x1e37da(_0x44be12._0x4c7136)](scaleToFit,_0x37a8dc,_0x531739,0x1b8,0x1b8),_0x3fc530=_0x566235['addImage']({'base64':_0x2080ae[_0x1e37da(0xad)](_0x7bb223,_0x2c9307),'extension':_0x1e37da(0x17c)});_0x1d1bfd['addImage'](_0x3fc530,{'tl':{'col':0x0,'row':0x1},'ext':_0x33331c});}}if(_0x5a36c5){const _0x5e8884=_0x2080ae[_0x1e37da(0x13d)](scaleToFit,_0x2cb2cc,_0x426911,0x26c,0x1a4),_0x33749d=_0x566235[_0x1e37da(_0x44be12._0x188add)]({'base64':_0x7bb223(_0x5a36c5),'extension':'png'});_0x1d1bfd[_0x1e37da(0xa0)](_0x33749d,{'tl':{'col':0xd,'row':0x1},'ext':_0x5e8884});}const _0x3979b1=new Date()[_0x1e37da(_0x44be12._0x4f11eb)+'g']()[_0x1e37da(_0x44be12._0x529b23)](0x0,0x10)[_0x1e37da(_0x44be12._0x302ca7)](/[T:]/g,'-');_0x5aec74['setHeader'](_0x2080ae[_0x1e37da(_0x44be12._0x43d865)],'applicatio'+_0x1e37da(0x136)+'xmlformats'+_0x1e37da(0xbb)+'ument.spre'+'adsheetml.'+_0x1e37da(_0x44be12._0x570553)),_0x5aec74[_0x1e37da(0x17f)](_0x1e37da(_0x44be12._0x1d4e7f)+_0x1e37da(_0x44be12._0x370a16),_0x1e37da(0x189)+_0x1e37da(0x181)+_0x1e37da(0xab)+_0x1e37da(_0x44be12._0x233d16)+_0x3979b1+'.xlsx\x22'),await _0x566235[_0x1e37da(0xa5)][_0x1e37da(0x10c)](_0x5aec74),_0x5aec74[_0x1e37da(_0x44be12._0x1b6029)]();}catch(_0x1b66c6){if(_0x1e37da(0x17a)==='tOQcr'){if(!_0x5aec74[_0x1e37da(0xb6)+'t'])_0x5aec74['status'](0x1f4)[_0x1e37da(0x157)]({'error':_0x1b66c6[_0x1e37da(_0x44be12._0x12ed05)]});}else{if(!_0x3a8140||!_0x24d258)return{'width':_0x35e089,'height':_0x42a563};const _0x4082dc=_0x39ebbf[_0x1e37da(0x16e)](tgnhYA[_0x1e37da(_0x44be12._0x530e39)](_0x30222e,_0x5f29b4),tgnhYA[_0x1e37da(_0x44be12._0x30a251)](_0x3a4416,_0x2325ce),0x1);return{'width':_0x305076[_0x1e37da(0x177)](tgnhYA[_0x1e37da(0x159)](_0x440a8c,_0x4082dc)),'height':_0x1da3bc[_0x1e37da(0x177)](_0x31dee3*_0x4082dc)};}}}),app[_0x579d71(0x114)](PORT,()=>{const _0x3ce27a={_0x441c86:0xbd,_0x1249dd:0x121,_0x200466:0x156,_0x5d50a:0xa4,_0x79e9d:0x12e,_0x5af508:0x15a,_0xc32998:0x11a,_0x42324a:0x107,_0x43c3f2:0xac,_0x30cecb:0x112,_0x305047:0x184},_0xe965f6=_0x579d71,_0x3264bb={'xPcSP':function(_0xc927a4,_0x55a128){return _0xc927a4===_0x55a128;},'aiORc':'darwin','ajsNJ':_0xe965f6(_0x3ce27a._0x441c86),'ItOat':_0xe965f6(_0x3ce27a._0x1249dd),'JOMfw':function(_0x386ba8,_0x32fc6a){return _0x386ba8(_0x32fc6a);},'eguUr':_0xe965f6(_0x3ce27a._0x200466)+'ess'},_0x3d95df=_0xe965f6(0xe3)+_0xe965f6(_0x3ce27a._0x5d50a)+PORT;console[_0xe965f6(_0x3ce27a._0x79e9d)](_0xe965f6(0x15d)+'t\x20Visualiz'+_0xe965f6(_0x3ce27a._0x5af508)+_0x3d95df);if(shouldOpen){const _0x2141c7=_0x3264bb[_0xe965f6(0x107)](process[_0xe965f6(0x15f)],_0x3264bb['aiORc'])?_0x3264bb[_0xe965f6(_0x3ce27a._0xc32998)]:_0x3264bb[_0xe965f6(_0x3ce27a._0x42324a)](process[_0xe965f6(0x15f)],_0x3264bb[_0xe965f6(_0x3ce27a._0x43c3f2)])?_0xe965f6(0xdc):_0xe965f6(0x99);_0x3264bb[_0xe965f6(0xde)](require,_0x3264bb[_0xe965f6(_0x3ce27a._0x30cecb)])[_0xe965f6(_0x3ce27a._0x305047)](_0x2141c7+'\x20'+_0x3d95df);}});