@syke1/mcp-server 1.5.6 → 1.6.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.
@@ -1,221 +1 @@
1
- "use strict";
2
- /**
3
- * PageRank scoring for SYKE dependency graphs.
4
- *
5
- * Uses the Power Iteration algorithm to compute recursive importance scores.
6
- * A file imported by many important files ranks higher than one imported by
7
- * many leaf files. This provides a more nuanced importance signal than
8
- * simple reverse dependent count (fan-in).
9
- *
10
- * In dependency graph terms:
11
- * - If A imports B, the forward edge is A -> B.
12
- * - B receives importance from A (B is important because A depends on it).
13
- * - So we iterate over graph.reverse to find incoming "importance links".
14
- *
15
- * Dangling nodes (files that import nothing) distribute their rank
16
- * equally to all nodes, preventing rank from leaking out of the graph.
17
- */
18
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- var desc = Object.getOwnPropertyDescriptor(m, k);
21
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
- desc = { enumerable: true, get: function() { return m[k]; } };
23
- }
24
- Object.defineProperty(o, k2, desc);
25
- }) : (function(o, m, k, k2) {
26
- if (k2 === undefined) k2 = k;
27
- o[k2] = m[k];
28
- }));
29
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
- Object.defineProperty(o, "default", { enumerable: true, value: v });
31
- }) : function(o, v) {
32
- o["default"] = v;
33
- });
34
- var __importStar = (this && this.__importStar) || (function () {
35
- var ownKeys = function(o) {
36
- ownKeys = Object.getOwnPropertyNames || function (o) {
37
- var ar = [];
38
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
- return ar;
40
- };
41
- return ownKeys(o);
42
- };
43
- return function (mod) {
44
- if (mod && mod.__esModule) return mod;
45
- var result = {};
46
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
- __setModuleDefault(result, mod);
48
- return result;
49
- };
50
- })();
51
- Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.invalidatePageRank = invalidatePageRank;
53
- exports.computePageRank = computePageRank;
54
- exports.getFileRank = getFileRank;
55
- const path = __importStar(require("path"));
56
- // ── Module-level Cache ──
57
- let cachedResult = null;
58
- /**
59
- * Invalidate the cached PageRank result.
60
- * Call this when the dependency graph is rebuilt.
61
- */
62
- function invalidatePageRank() {
63
- cachedResult = null;
64
- }
65
- // ── Core Algorithm ──
66
- /**
67
- * Compute PageRank scores for all files in the dependency graph
68
- * using the Power Iteration method.
69
- *
70
- * The algorithm:
71
- * 1. Initialize rank[i] = 1/N for all N files.
72
- * 2. Repeat until convergence or maxIterations:
73
- * For each file i:
74
- * newRank[i] = (1 - d) / N + d * SUM(rank[j] / outDegree[j])
75
- * for all j that link to i (j imports i -> j is in reverse[i])
76
- * Handle dangling nodes: files with outDegree=0 distribute rank to all.
77
- * If max|newRank - rank| < tolerance: break
78
- * rank = newRank
79
- *
80
- * Direction clarification:
81
- * - forward[A] = [B] means "A imports B" (A -> B).
82
- * - reverse[B] = [A] means "A imports B" — A gives importance to B.
83
- * - outDegree of A = forward[A].length (how many files A imports).
84
- * - When computing rank for B, sum over reverse[B]: each file A that
85
- * imports B contributes rank[A] / outDegree[A] to B.
86
- */
87
- function computePageRank(graph, options) {
88
- // Return cached result if available
89
- if (cachedResult) {
90
- return cachedResult;
91
- }
92
- const d = options?.dampingFactor ?? 0.85;
93
- const maxIter = options?.maxIterations ?? 100;
94
- const tol = options?.tolerance ?? 1e-6;
95
- const files = [...graph.files];
96
- const N = files.length;
97
- // Handle empty graph
98
- if (N === 0) {
99
- const result = {
100
- scores: new Map(),
101
- ranked: [],
102
- iterations: 0,
103
- computedAt: Date.now(),
104
- };
105
- cachedResult = result;
106
- return result;
107
- }
108
- // Build index maps for fast array-based iteration
109
- const fileToIdx = new Map();
110
- for (let i = 0; i < N; i++) {
111
- fileToIdx.set(files[i], i);
112
- }
113
- // Compute out-degree for each file (number of files it imports)
114
- const outDegree = new Float64Array(N);
115
- for (let i = 0; i < N; i++) {
116
- const deps = graph.forward.get(files[i]);
117
- outDegree[i] = deps ? deps.length : 0;
118
- }
119
- // Identify dangling nodes (files with no outgoing edges / no imports)
120
- const danglingNodes = [];
121
- for (let i = 0; i < N; i++) {
122
- if (outDegree[i] === 0) {
123
- danglingNodes.push(i);
124
- }
125
- }
126
- // Build reverse adjacency list as index arrays for performance
127
- // reverseAdj[i] = list of indices j where file j imports file i
128
- const reverseAdj = new Array(N);
129
- for (let i = 0; i < N; i++) {
130
- reverseAdj[i] = [];
131
- }
132
- for (const [target, sources] of graph.reverse) {
133
- const targetIdx = fileToIdx.get(target);
134
- if (targetIdx === undefined)
135
- continue;
136
- for (const source of sources) {
137
- const sourceIdx = fileToIdx.get(source);
138
- if (sourceIdx !== undefined) {
139
- reverseAdj[targetIdx].push(sourceIdx);
140
- }
141
- }
142
- }
143
- // Initialize ranks
144
- let rank = new Float64Array(N);
145
- const initRank = 1.0 / N;
146
- for (let i = 0; i < N; i++) {
147
- rank[i] = initRank;
148
- }
149
- let iterations = 0;
150
- const baseTeleport = (1.0 - d) / N;
151
- for (let iter = 0; iter < maxIter; iter++) {
152
- iterations = iter + 1;
153
- // Compute dangling rank sum: total rank held by dangling nodes
154
- let danglingSum = 0;
155
- for (const idx of danglingNodes) {
156
- danglingSum += rank[idx];
157
- }
158
- // Each node gets an equal share of the dangling rank (redistributed)
159
- const danglingContribution = d * danglingSum / N;
160
- const newRank = new Float64Array(N);
161
- for (let i = 0; i < N; i++) {
162
- // Sum contributions from all files that import file i
163
- let incomingSum = 0;
164
- for (const j of reverseAdj[i]) {
165
- incomingSum += rank[j] / outDegree[j];
166
- }
167
- newRank[i] = baseTeleport + danglingContribution + d * incomingSum;
168
- }
169
- // Check convergence: max absolute difference
170
- let maxDiff = 0;
171
- for (let i = 0; i < N; i++) {
172
- const diff = Math.abs(newRank[i] - rank[i]);
173
- if (diff > maxDiff)
174
- maxDiff = diff;
175
- }
176
- rank = newRank;
177
- if (maxDiff < tol) {
178
- break;
179
- }
180
- }
181
- // Build scores map
182
- const scores = new Map();
183
- for (let i = 0; i < N; i++) {
184
- scores.set(files[i], rank[i]);
185
- }
186
- // Build sorted ranked list
187
- const indexedScores = [];
188
- for (let i = 0; i < N; i++) {
189
- indexedScores.push({ idx: i, score: rank[i] });
190
- }
191
- indexedScores.sort((a, b) => b.score - a.score);
192
- const ranked = indexedScores.map((entry, position) => ({
193
- filePath: files[entry.idx],
194
- relativePath: path.relative(graph.sourceDir, files[entry.idx]).replace(/\\/g, "/"),
195
- score: entry.score,
196
- rank: position + 1,
197
- percentile: Math.round(((N - 1 - position) / Math.max(1, N - 1)) * 100),
198
- }));
199
- const result = {
200
- scores,
201
- ranked,
202
- iterations,
203
- computedAt: Date.now(),
204
- };
205
- cachedResult = result;
206
- console.error(`[syke:pagerank] Computed PageRank for ${N} files in ${iterations} iterations`);
207
- return result;
208
- }
209
- // ── Lookup ──
210
- /**
211
- * O(1) lookup of a file's PageRank data from a precomputed result.
212
- * Returns null if the file is not in the result.
213
- */
214
- function getFileRank(filePath, result) {
215
- const score = result.scores.get(filePath);
216
- if (score === undefined)
217
- return null;
218
- // Find the ranked entry (scores map guarantees it exists in ranked array)
219
- const entry = result.ranked.find(r => r.filePath === filePath);
220
- return entry || null;
221
- }
1
+ 'use strict';const _0x273bfc=_0x3f18;(function(_0x58a888,_0x7b4f5e){const _0x5079d4={_0x5910ef:0x9c,_0x5d9c00:0x8a,_0x214685:0x82,_0x33d700:0x81},_0x3edcc3=_0x3f18,_0x373222=_0x58a888();while(!![]){try{const _0x5243b5=parseInt(_0x3edcc3(0x80))/0x1+-parseInt(_0x3edcc3(_0x5079d4._0x5910ef))/0x2+parseInt(_0x3edcc3(0x99))/0x3*(parseInt(_0x3edcc3(0x8f))/0x4)+parseInt(_0x3edcc3(0x95))/0x5*(-parseInt(_0x3edcc3(0x8c))/0x6)+parseInt(_0x3edcc3(_0x5079d4._0x5d9c00))/0x7+parseInt(_0x3edcc3(0x87))/0x8+-parseInt(_0x3edcc3(_0x5079d4._0x214685))/0x9*(parseInt(_0x3edcc3(_0x5079d4._0x33d700))/0xa);if(_0x5243b5===_0x7b4f5e)break;else _0x373222['push'](_0x373222['shift']());}catch(_0x29dccd){_0x373222['push'](_0x373222['shift']());}}}(_0x2887,0x6ff57));function _0x3f18(_0x2f8f44,_0x274c70){_0x2f8f44=_0x2f8f44-0x7b;const _0x288712=_0x2887();let _0x3f1833=_0x288712[_0x2f8f44];if(_0x3f18['jITutk']===undefined){var _0x39f46e=function(_0x1a2f14){const _0x46b45d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5d56d9='',_0x4ccb8b='';for(let _0x1af5da=0x0,_0x2972fc,_0x1fe58d,_0x27bdaf=0x0;_0x1fe58d=_0x1a2f14['charAt'](_0x27bdaf++);~_0x1fe58d&&(_0x2972fc=_0x1af5da%0x4?_0x2972fc*0x40+_0x1fe58d:_0x1fe58d,_0x1af5da++%0x4)?_0x5d56d9+=String['fromCharCode'](0xff&_0x2972fc>>(-0x2*_0x1af5da&0x6)):0x0){_0x1fe58d=_0x46b45d['indexOf'](_0x1fe58d);}for(let _0x34741a=0x0,_0x4160f7=_0x5d56d9['length'];_0x34741a<_0x4160f7;_0x34741a++){_0x4ccb8b+='%'+('00'+_0x5d56d9['charCodeAt'](_0x34741a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4ccb8b);};_0x3f18['dboizk']=_0x39f46e,_0x3f18['IjYqdy']={},_0x3f18['jITutk']=!![];}const _0x178f18=_0x288712[0x0],_0x579c8f=_0x2f8f44+_0x178f18,_0x24d95d=_0x3f18['IjYqdy'][_0x579c8f];return!_0x24d95d?(_0x3f1833=_0x3f18['dboizk'](_0x3f1833),_0x3f18['IjYqdy'][_0x579c8f]=_0x3f1833):_0x3f1833=_0x24d95d,_0x3f1833;}var __createBinding=this&&this['__createBinding']||(Object['create']?function(_0x564ccb,_0x3f3eaa,_0x2f6199,_0x3b0520){const _0x29ce31={_0x1a1f08:0x83,_0x302517:0x83,_0x377bf4:0xa3},_0xa26d6=_0x3f18,_0x365559={};_0x365559[_0xa26d6(0x7c)]=function(_0x49f0c6,_0x306516){return _0x49f0c6===_0x306516;},_0x365559[_0xa26d6(_0x29ce31._0x1a1f08)]='get';const _0x4185eb=_0x365559;if(_0x4185eb['PQJyb'](_0x3b0520,undefined))_0x3b0520=_0x2f6199;var _0x3922d7=Object[_0xa26d6(0x84)](_0x3f3eaa,_0x2f6199);if(!_0x3922d7||(_0x4185eb[_0xa26d6(_0x29ce31._0x302517)]in _0x3922d7?!_0x3f3eaa[_0xa26d6(_0x29ce31._0x377bf4)]:_0x3922d7[_0xa26d6(0xa0)]||_0x3922d7['configurable'])){const _0x582256={};_0x582256['enumerable']=!![],_0x582256['get']=function(){return _0x3f3eaa[_0x2f6199];},_0x3922d7=_0x582256;}Object['defineProperty'](_0x564ccb,_0x3b0520,_0x3922d7);}:function(_0x4489a3,_0x3f963a,_0x531f21,_0x546e0b){const _0x2d18e9={_0x11220b:0x9a},_0x5a17d7=_0x3f18,_0x420366={};_0x420366[_0x5a17d7(0x9a)]=function(_0x54801c,_0x3f02b8){return _0x54801c===_0x3f02b8;};const _0x6d0f1b=_0x420366;if(_0x6d0f1b[_0x5a17d7(_0x2d18e9._0x11220b)](_0x546e0b,undefined))_0x546e0b=_0x531f21;_0x4489a3[_0x546e0b]=_0x3f963a[_0x531f21];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object['create']?function(_0x4892f3,_0x4acec4){const _0x4fda6e={_0x1e5c27:0x9e,_0x458095:0x93},_0x4bbac8=_0x3f18,_0x4eb67a={};_0x4eb67a['enumerable']=!![],_0x4eb67a['value']=_0x4acec4,Object[_0x4bbac8(_0x4fda6e._0x1e5c27)](_0x4892f3,_0x4bbac8(_0x4fda6e._0x458095),_0x4eb67a);}:function(_0x4dc5de,_0x2adb66){const _0x3ef1b7={_0x4d079a:0x93},_0x5dab80=_0x3f18,_0x165bd7={};_0x165bd7['ahYbG']=_0x5dab80(_0x3ef1b7._0x4d079a);const _0x1e7f33=_0x165bd7;_0x4dc5de[_0x1e7f33['ahYbG']]=_0x2adb66;}),__importStar=this&&this['__importStar']||(function(){const _0x321f3a={_0x34e915:0xa5},_0x3139ac={_0x12aefa:0x7d},_0x5d701c={'QGDmD':function(_0x5ea906,_0x2bf4c2){return _0x5ea906<_0x2bf4c2;},'vekGd':'default','dnAkI':function(_0x3b7f93,_0x4f325c,_0x4f2494,_0x43a442){return _0x3b7f93(_0x4f325c,_0x4f2494,_0x43a442);},'dwNcm':function(_0xac250f,_0x30d780,_0x523ced){return _0xac250f(_0x30d780,_0x523ced);}};var _0x98ec17=function(_0x54c76c){const _0x1e2192={_0x2b509b:0x7f},_0x36d7fc=_0x3f18;return _0x98ec17=Object[_0x36d7fc(_0x3139ac._0x12aefa)]||function(_0x228822){const _0x905bcc=_0x36d7fc;var _0x49cce5=[];for(var _0x2bc4d0 in _0x228822)if(Object[_0x905bcc(_0x1e2192._0x2b509b)]['hasOwnProperty']['call'](_0x228822,_0x2bc4d0))_0x49cce5[_0x49cce5['length']]=_0x2bc4d0;return _0x49cce5;},_0x98ec17(_0x54c76c);};return function(_0x178ce4){const _0x109d09=_0x3f18;if(_0x178ce4&&_0x178ce4['__esModule'])return _0x178ce4;var _0x40c872={};if(_0x178ce4!=null){for(var _0x3d0368=_0x98ec17(_0x178ce4),_0x6aa7f8=0x0;_0x5d701c[_0x109d09(0x91)](_0x6aa7f8,_0x3d0368['length']);_0x6aa7f8++)if(_0x3d0368[_0x6aa7f8]!==_0x5d701c[_0x109d09(0xa1)])_0x5d701c[_0x109d09(_0x321f3a._0x34e915)](__createBinding,_0x40c872,_0x178ce4,_0x3d0368[_0x6aa7f8]);}return _0x5d701c['dwNcm'](__setModuleDefault,_0x40c872,_0x178ce4),_0x40c872;};}());const _0x11662f={};_0x11662f['value']=!![],Object[_0x273bfc(0x9e)](exports,'__esModule',_0x11662f),exports[_0x273bfc(0x92)]=invalidatePageRank,exports['computePageRank']=computePageRank,exports['getFileRank']=getFileRank;const path=__importStar(require(_0x273bfc(0x8b)));let cachedResult=null;function invalidatePageRank(){cachedResult=null;}function computePageRank(_0x5e8444,_0x25596c){const _0x3b61eb={_0x3e1edc:0x9f,_0x7ba8c7:0xa8,_0x47dd42:0x7e,_0x181d5c:0xa7,_0x2f299c:0x98,_0x4f024a:0x90,_0x4b9cc2:0x9b,_0x3a4ac3:0x7b,_0x19ec3a:0xa4},_0x303374=_0x273bfc,_0x59e92d={};_0x59e92d['SkMvs']=function(_0x79350,_0x43b9bf){return _0x79350<_0x43b9bf;},_0x59e92d['kzaar']=function(_0x1be11e,_0x1f0fe6){return _0x1be11e===_0x1f0fe6;},_0x59e92d['SZkcw']=function(_0x9eca9e,_0x5c1f59){return _0x9eca9e!==_0x5c1f59;},_0x59e92d['ymUPL']=function(_0x172fc9,_0x1b4af5){return _0x172fc9<_0x1b4af5;},_0x59e92d['dbySk']=function(_0x1f7b2b,_0x27ab1d){return _0x1f7b2b-_0x27ab1d;},_0x59e92d[_0x303374(0x98)]=function(_0x28d3a0,_0x45a969){return _0x28d3a0/_0x45a969;},_0x59e92d['fQRMX']=function(_0x1f4ddb,_0x8c7173){return _0x1f4ddb*_0x8c7173;},_0x59e92d['oKSjO']=function(_0x2e3fb7,_0x2ae2dd){return _0x2e3fb7+_0x2ae2dd;},_0x59e92d['mSJgJ']=function(_0x3afbab,_0x367afe){return _0x3afbab<_0x367afe;},_0x59e92d[_0x303374(0x89)]=function(_0x5727fb,_0x596d17){return _0x5727fb-_0x596d17;},_0x59e92d['bLUEB']=function(_0x60c40a,_0x109808){return _0x60c40a>_0x109808;},_0x59e92d[_0x303374(_0x3b61eb._0x3e1edc)]=function(_0x149a89,_0x2b31b4){return _0x149a89<_0x2b31b4;};const _0x1fd0ec=_0x59e92d;if(cachedResult)return cachedResult;const _0xb238b4=_0x25596c?.['dampingFactor']??0.85,_0x5d3cae=_0x25596c?.['maxIterations']??0x64,_0x483c71=_0x25596c?.[_0x303374(0x96)]??0.000001,_0x38900d=[..._0x5e8444['files']],_0x2e9031=_0x38900d[_0x303374(_0x3b61eb._0x7ba8c7)];if(_0x2e9031===0x0){const _0x558586={'scores':new Map(),'ranked':[],'iterations':0x0,'computedAt':Date['now']()};return cachedResult=_0x558586,_0x558586;}const _0x390fc7=new Map();for(let _0x3254d2=0x0;_0x1fd0ec['SkMvs'](_0x3254d2,_0x2e9031);_0x3254d2++){_0x390fc7['set'](_0x38900d[_0x3254d2],_0x3254d2);}const _0x397e60=new Float64Array(_0x2e9031);for(let _0x38a985=0x0;_0x38a985<_0x2e9031;_0x38a985++){const _0x4c2556=_0x5e8444[_0x303374(_0x3b61eb._0x47dd42)][_0x303374(0xa2)](_0x38900d[_0x38a985]);_0x397e60[_0x38a985]=_0x4c2556?_0x4c2556['length']:0x0;}const _0x1fe797=[];for(let _0x23f2d7=0x0;_0x23f2d7<_0x2e9031;_0x23f2d7++){_0x1fd0ec['kzaar'](_0x397e60[_0x23f2d7],0x0)&&_0x1fe797['push'](_0x23f2d7);}const _0x4f7d6b=new Array(_0x2e9031);for(let _0x37e820=0x0;_0x37e820<_0x2e9031;_0x37e820++){_0x4f7d6b[_0x37e820]=[];}for(const [_0x57469d,_0x3fc86a]of _0x5e8444['reverse']){const _0x957549=_0x390fc7['get'](_0x57469d);if(_0x957549===undefined)continue;for(const _0x1c660a of _0x3fc86a){const _0x49f4b5=_0x390fc7['get'](_0x1c660a);_0x1fd0ec['SZkcw'](_0x49f4b5,undefined)&&_0x4f7d6b[_0x957549]['push'](_0x49f4b5);}}let _0x2fabf2=new Float64Array(_0x2e9031);const _0x16103f=0x1/_0x2e9031;for(let _0x157e65=0x0;_0x1fd0ec['ymUPL'](_0x157e65,_0x2e9031);_0x157e65++){_0x2fabf2[_0x157e65]=_0x16103f;}let _0x3136c6=0x0;const _0x30fc49=_0x1fd0ec[_0x303374(0x88)](0x1,_0xb238b4)/_0x2e9031;for(let _0x40691f=0x0;_0x1fd0ec[_0x303374(_0x3b61eb._0x181d5c)](_0x40691f,_0x5d3cae);_0x40691f++){_0x3136c6=_0x40691f+0x1;let _0x3fffdc=0x0;for(const _0x54e0e4 of _0x1fe797){_0x3fffdc+=_0x2fabf2[_0x54e0e4];}const _0x336287=_0x1fd0ec[_0x303374(0x98)](_0x1fd0ec['fQRMX'](_0xb238b4,_0x3fffdc),_0x2e9031),_0x3577e5=new Float64Array(_0x2e9031);for(let _0x52203e=0x0;_0x52203e<_0x2e9031;_0x52203e++){let _0x1335d8=0x0;for(const _0xd2660b of _0x4f7d6b[_0x52203e]){_0x1335d8+=_0x1fd0ec[_0x303374(_0x3b61eb._0x2f299c)](_0x2fabf2[_0xd2660b],_0x397e60[_0xd2660b]);}_0x3577e5[_0x52203e]=_0x1fd0ec['oKSjO'](_0x30fc49+_0x336287,_0xb238b4*_0x1335d8);}let _0x47de14=0x0;for(let _0x41f471=0x0;_0x1fd0ec['mSJgJ'](_0x41f471,_0x2e9031);_0x41f471++){const _0x543466=Math['abs'](_0x1fd0ec[_0x303374(0x89)](_0x3577e5[_0x41f471],_0x2fabf2[_0x41f471]));if(_0x1fd0ec[_0x303374(0x8d)](_0x543466,_0x47de14))_0x47de14=_0x543466;}_0x2fabf2=_0x3577e5;if(_0x1fd0ec['INqfI'](_0x47de14,_0x483c71))break;}const _0x3ca2fb=new Map();for(let _0x4de007=0x0;_0x4de007<_0x2e9031;_0x4de007++){_0x3ca2fb['set'](_0x38900d[_0x4de007],_0x2fabf2[_0x4de007]);}const _0x20f5df=[];for(let _0x1a91d5=0x0;_0x1fd0ec[_0x303374(0x86)](_0x1a91d5,_0x2e9031);_0x1a91d5++){const _0x114d43={};_0x114d43['idx']=_0x1a91d5,_0x114d43['score']=_0x2fabf2[_0x1a91d5],_0x20f5df[_0x303374(_0x3b61eb._0x4f024a)](_0x114d43);}_0x20f5df['sort']((_0xb53ce2,_0x162184)=>_0x162184['score']-_0xb53ce2['score']);const _0x2d6b8c=_0x20f5df[_0x303374(_0x3b61eb._0x4b9cc2)]((_0x4b32ad,_0x17284f)=>({'filePath':_0x38900d[_0x4b32ad[_0x303374(0x9d)]],'relativePath':path['relative'](_0x5e8444['sourceDir'],_0x38900d[_0x4b32ad[_0x303374(0x9d)]])['replace'](/\\/g,'/'),'score':_0x4b32ad['score'],'rank':_0x17284f+0x1,'percentile':Math['round']((_0x2e9031-0x1-_0x17284f)/Math['max'](0x1,_0x2e9031-0x1)*0x64)})),_0x4accd9={'scores':_0x3ca2fb,'ranked':_0x2d6b8c,'iterations':_0x3136c6,'computedAt':Date['now']()};return cachedResult=_0x4accd9,console['error'](_0x303374(_0x3b61eb._0x3a4ac3)+_0x2e9031+_0x303374(_0x3b61eb._0x19ec3a)+_0x3136c6+_0x303374(0xa6)),_0x4accd9;}function getFileRank(_0x14a222,_0x4b6675){const _0x57011e={_0x20bd25:0x94},_0x3268c8=_0x273bfc,_0xdc7bdf={};_0xdc7bdf['adMfD']=function(_0x3ec728,_0x904eff){return _0x3ec728===_0x904eff;},_0xdc7bdf[_0x3268c8(_0x57011e._0x20bd25)]=function(_0x3e0013,_0x2bd7da){return _0x3e0013||_0x2bd7da;};const _0x12acd1=_0xdc7bdf,_0x44d249=_0x4b6675[_0x3268c8(0x97)]['get'](_0x14a222);if(_0x12acd1[_0x3268c8(0x8e)](_0x44d249,undefined))return null;const _0x52e0b9=_0x4b6675['ranked'][_0x3268c8(0x85)](_0x193f9c=>_0x193f9c['filePath']===_0x14a222);return _0x12acd1[_0x3268c8(_0x57011e._0x20bd25)](_0x52e0b9,null);}function _0x2887(){const _0x4d9fc4=['mJKWnde1m0LKqLfIsa','Cgf0Aa','mZbowKvMtfK','yKXvrui','ywrnzKq','mZa4vhPIvMH2','ChvZAa','uuDeBuq','Aw52ywXPzgf0zvbHz2vsyw5R','zgvMyxvSDa','Au15tLa','mJiZmty1CKDQDxni','Dg9SzxjHBMnL','C2nVCMvZ','qKjiDeO','mJuZmJLyA05RAfq','BgrUywO','BwfW','mteZmJmZoffUt1z0AW','Awr4','zgvMAw5LuhjVCgvYDhK','su5XzKK','D3jPDgfIBgu','DMvRr2q','z2v0','x19LC01VzhvSzq','igzPBgvZigLUia','zg5bA0K','igL0zxjHDgLVBNm','Ew1vueW','BgvUz3rO','w3n5A2u6CgfNzxjHBMTDienVBxb1DgvKifbHz2vsyw5RigzVCIa','uffkEwi','z2v0t3DUuhjVCgvYDhLoyw1LCW','zM9YD2fYza','ChjVDg90ExbL','ntqXmtrsseLJwhu','ote3odeWv2rlDfHf','mtHNwLbgEe0','rNPpD2u','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','zMLUza','u2TnDNm','mJq5otaWmgvwCeHLzq','zgj5u2S','AeHLuge'];_0x2887=function(){return _0x4d9fc4;};return _0x2887();}