diff --git a/pdf-reader-mcp/.dockerignore b/pdf-reader-mcp/.dockerignore new file mode 100644 index 0000000..dc9d84c --- /dev/null +++ b/pdf-reader-mcp/.dockerignore @@ -0,0 +1,18 @@ +# Git files +.git +.gitignore + +# Node modules +node_modules + +# Build artifacts (we only need the build output in the final stage) +build + +# Docker files +Dockerfile +.dockerignore + +# Documentation / Other +README.md +memory-bank +.vscode \ No newline at end of file diff --git a/pdf-reader-mcp/.eslintcache b/pdf-reader-mcp/.eslintcache new file mode 100644 index 0000000..dd4287b --- /dev/null +++ b/pdf-reader-mcp/.eslintcache @@ -0,0 +1 @@ +[{"C:\\Users\\shtse\\pdf-reader\\.prettierrc.cjs":"1","C:\\Users\\shtse\\pdf-reader\\commitlint.config.cjs":"2","C:\\Users\\shtse\\pdf-reader\\coverage\\block-navigation.js":"3","C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\block-navigation.js":"4","C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\prettify.js":"5","C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\sorter.js":"6","C:\\Users\\shtse\\pdf-reader\\coverage\\prettify.js":"7","C:\\Users\\shtse\\pdf-reader\\coverage\\sorter.js":"8","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\@theme_index.js":"9","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\chunk-LW4I4DCF.js":"10","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\chunk-Z5QSWKN2.js":"11","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\vitepress___@vueuse_core.js":"12","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\vitepress___@vue_devtools-api.js":"13","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\vue.js":"14","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\config.mts":"15","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_index.md.C4iFcCrY.js":"16","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_index.md.C4iFcCrY.lean.js":"17","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_read_pdf.md.CAPAZ4W_.js":"18","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_read_pdf.md.CAPAZ4W_.lean.js":"19","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\app.Yv9tMCdR.js":"20","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\changelog.md.COqysqoc.js":"21","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\changelog.md.COqysqoc.lean.js":"22","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\chunks\\framework.Dh1jimFm.js":"23","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\chunks\\theme.CDm2W-g2.js":"24","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\comparison_index.md.3fbzKobm.js":"25","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\comparison_index.md.3fbzKobm.lean.js":"26","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\contributing.md.efYUDgNc.js":"27","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\contributing.md.efYUDgNc.lean.js":"28","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\design_index.md.EnD_J2y2.js":"29","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\design_index.md.EnD_J2y2.lean.js":"30","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_getting-started.md.CjYAV2_-.js":"31","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_getting-started.md.CjYAV2_-.lean.js":"32","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_index.md.DF2RneM6.js":"33","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_index.md.DF2RneM6.lean.js":"34","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_installation.md.BLv8dp-W.js":"35","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_installation.md.BLv8dp-W.lean.js":"36","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\index.md.CnKfSF3J.js":"37","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\index.md.CnKfSF3J.lean.js":"38","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\license.md.CeoZrgzJ.js":"39","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\license.md.CeoZrgzJ.lean.js":"40","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance.md.BW9V8WyF.js":"41","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance.md.BW9V8WyF.lean.js":"42","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance_index.md.Dcko1qZh.js":"43","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance_index.md.Dcko1qZh.lean.js":"44","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\principles.md.CC6cTTac.js":"45","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\principles.md.CC6cTTac.lean.js":"46","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\testing.md.BXvjimk4.js":"47","C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\testing.md.BXvjimk4.lean.js":"48","C:\\Users\\shtse\\pdf-reader\\src\\handlers\\index.ts":"49","C:\\Users\\shtse\\pdf-reader\\src\\handlers\\readPdf.ts":"50","C:\\Users\\shtse\\pdf-reader\\src\\index.ts":"51","C:\\Users\\shtse\\pdf-reader\\src\\utils\\pathUtils.ts":"52","C:\\Users\\shtse\\pdf-reader\\test\\benchmark\\readPdf.bench.ts":"53","C:\\Users\\shtse\\pdf-reader\\test\\handlers\\readPdf.test.ts":"54","C:\\Users\\shtse\\pdf-reader\\test\\pathUtils.test.ts":"55","C:\\Users\\shtse\\pdf-reader\\vitest.config.ts":"56"},{"size":1140,"mtime":1743942312355,"results":"57","hashOfConfig":"58"},{"size":67,"mtime":1743978894126,"results":"59","hashOfConfig":"58"},{"size":2655,"mtime":1743957990026,"results":"60","hashOfConfig":"58"},{"size":2655,"mtime":1743957990040,"results":"61","hashOfConfig":"58"},{"size":17590,"mtime":1743957990043,"results":"62","hashOfConfig":"58"},{"size":6181,"mtime":1743957990042,"results":"63","hashOfConfig":"58"},{"size":17590,"mtime":1743957990030,"results":"64","hashOfConfig":"58"},{"size":6181,"mtime":1743957990028,"results":"65","hashOfConfig":"58"},{"size":11045,"mtime":1743944849296,"results":"66","hashOfConfig":"58"},{"size":370005,"mtime":1743944849295},{"size":280076,"mtime":1743944849295,"results":"67","hashOfConfig":"58"},{"size":10339,"mtime":1743944849295,"results":"68","hashOfConfig":"58"},{"size":133655,"mtime":1743944849296},{"size":5563,"mtime":1743944849296,"results":"69","hashOfConfig":"58"},{"size":2127,"mtime":1743978894171,"results":"70","hashOfConfig":"71"},{"size":868,"mtime":1743978289809,"results":"72","hashOfConfig":"58"},{"size":868,"mtime":1743978289814,"results":"73","hashOfConfig":"58"},{"size":23440,"mtime":1743978289810,"results":"74","hashOfConfig":"58"},{"size":416,"mtime":1743978289814,"results":"75","hashOfConfig":"58"},{"size":1352,"mtime":1743978289809,"results":"76","hashOfConfig":"58"},{"size":6875,"mtime":1743978289809,"results":"77","hashOfConfig":"58"},{"size":411,"mtime":1743978289814,"results":"78","hashOfConfig":"58"},{"size":99112,"mtime":1743978289808,"results":"79","hashOfConfig":"58"},{"size":53207,"mtime":1743978289809,"results":"80","hashOfConfig":"58"},{"size":3656,"mtime":1743978289813,"results":"81","hashOfConfig":"58"},{"size":444,"mtime":1743978289814,"results":"82","hashOfConfig":"58"},{"size":3269,"mtime":1743978289813,"results":"83","hashOfConfig":"58"},{"size":448,"mtime":1743978289815,"results":"84","hashOfConfig":"58"},{"size":3083,"mtime":1743978289813,"results":"85","hashOfConfig":"58"},{"size":418,"mtime":1743978289815,"results":"86","hashOfConfig":"58"},{"size":27227,"mtime":1743978289813,"results":"87","hashOfConfig":"58"},{"size":444,"mtime":1743978289815,"results":"88","hashOfConfig":"58"},{"size":1868,"mtime":1743978289813,"results":"89","hashOfConfig":"58"},{"size":414,"mtime":1743978289815,"results":"90","hashOfConfig":"58"},{"size":6866,"mtime":1743978289813,"results":"91","hashOfConfig":"58"},{"size":432,"mtime":1743978289817,"results":"92","hashOfConfig":"58"},{"size":1199,"mtime":1743978289814,"results":"93","hashOfConfig":"58"},{"size":1199,"mtime":1743978289817,"results":"94","hashOfConfig":"58"},{"size":1551,"mtime":1743978289814,"results":"95","hashOfConfig":"58"},{"size":1551,"mtime":1743978289817,"results":"96","hashOfConfig":"58"},{"size":4705,"mtime":1743978289814,"results":"97","hashOfConfig":"58"},{"size":419,"mtime":1743978289817,"results":"98","hashOfConfig":"58"},{"size":1969,"mtime":1743978289814,"results":"99","hashOfConfig":"58"},{"size":427,"mtime":1743978289817,"results":"100","hashOfConfig":"58"},{"size":4104,"mtime":1743978289814,"results":"101","hashOfConfig":"58"},{"size":422,"mtime":1743978289817,"results":"102","hashOfConfig":"58"},{"size":5276,"mtime":1743978289814,"results":"103","hashOfConfig":"58"},{"size":412,"mtime":1743978289817,"results":"104","hashOfConfig":"58"},{"size":709,"mtime":1743979582978,"results":"105","hashOfConfig":"106"},{"size":15737,"mtime":1743979897906,"results":"107","hashOfConfig":"108"},{"size":2748,"mtime":1743979631599,"results":"109","hashOfConfig":"106"},{"size":1496,"mtime":1743979620985,"results":"110","hashOfConfig":"106"},{"size":2821,"mtime":1743979872088,"results":"111","hashOfConfig":"108"},{"size":29750,"mtime":1743979582978,"results":"112","hashOfConfig":"108"},{"size":4587,"mtime":1743942526811,"results":"113","hashOfConfig":"108"},{"size":910,"mtime":1743958014561,"results":"114","hashOfConfig":"106"},{"filePath":"115","messages":"116","suppressedMessages":"117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1twchs6",{"filePath":"118","messages":"119","suppressedMessages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"121","messages":"122","suppressedMessages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","suppressedMessages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"127","messages":"128","suppressedMessages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"130","messages":"131","suppressedMessages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"133","messages":"134","suppressedMessages":"135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","suppressedMessages":"138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"139","messages":"140","suppressedMessages":"141","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"142","messages":"143","suppressedMessages":"144","errorCount":206,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1sepfse",{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":555,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":208,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"lpmmuq",{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"17pjjoc",{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\shtse\\pdf-reader\\.prettierrc.cjs",[],[],"C:\\Users\\shtse\\pdf-reader\\commitlint.config.cjs",[],[],"C:\\Users\\shtse\\pdf-reader\\coverage\\block-navigation.js",[],["277","278","279","280","281"],"C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\block-navigation.js",[],["282","283","284","285","286"],"C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\prettify.js",[],["287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454"],"C:\\Users\\shtse\\pdf-reader\\coverage\\lcov-report\\sorter.js",[],["455","456","457","458","459","460"],"C:\\Users\\shtse\\pdf-reader\\coverage\\prettify.js",[],["461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","543","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","620","621","622","623","624","625","626","627","628"],"C:\\Users\\shtse\\pdf-reader\\coverage\\sorter.js",[],["629","630","631","632","633","634"],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\@theme_index.js",["635","636","637","638"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\chunk-Z5QSWKN2.js",["639","640","641","642","643","644","645","646","647","648","649","650","651","652","653","654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672","673","674","675","676","677","678","679","680","681","682","683","684","685","686","687","688","689","690","691","692","693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737","738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778","779","780","781","782","783","784","785","786","787","788","789","790","791","792","793","794","795","796","797","798","799","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\vitepress___@vueuse_core.js",[],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\cache\\deps\\vue.js",[],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\config.mts",[],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_index.md.C4iFcCrY.js",["845","846","847","848"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_index.md.C4iFcCrY.lean.js",["849","850","851","852"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_read_pdf.md.CAPAZ4W_.js",["853","854","855","856","857","858","859","860"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\api_read_pdf.md.CAPAZ4W_.lean.js",["861","862","863","864"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\app.Yv9tMCdR.js",["865","866","867","868","869","870"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\changelog.md.COqysqoc.js",["871","872","873","874"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\changelog.md.COqysqoc.lean.js",["875","876","877","878"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\chunks\\framework.Dh1jimFm.js",["879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197","1198","1199","1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1270","1271","1272","1273","1274","1275","1276","1277","1278","1279","1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290","1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301","1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422","1423","1424","1425","1426","1427","1428","1429","1430","1431","1432","1433"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\chunks\\theme.CDm2W-g2.js",["1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485","1486","1487","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516","1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544","1545","1546","1547","1548","1549","1550","1551","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1563","1564","1565","1566","1567","1568","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\comparison_index.md.3fbzKobm.js",["1642","1643","1644","1645"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\comparison_index.md.3fbzKobm.lean.js",["1646","1647","1648","1649"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\contributing.md.efYUDgNc.js",["1650","1651","1652","1653"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\contributing.md.efYUDgNc.lean.js",["1654","1655","1656","1657"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\design_index.md.EnD_J2y2.js",["1658","1659","1660","1661"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\design_index.md.EnD_J2y2.lean.js",["1662","1663","1664","1665"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_getting-started.md.CjYAV2_-.js",["1666","1667","1668","1669","1670","1671","1672","1673"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_getting-started.md.CjYAV2_-.lean.js",["1674","1675","1676","1677"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_index.md.DF2RneM6.js",["1678","1679","1680","1681"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_index.md.DF2RneM6.lean.js",["1682","1683","1684","1685"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_installation.md.BLv8dp-W.js",["1686","1687","1688","1689","1690","1691","1692","1693","1694"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\guide_installation.md.BLv8dp-W.lean.js",["1695","1696","1697","1698"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\index.md.CnKfSF3J.js",["1699","1700","1701","1702","1703","1704"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\index.md.CnKfSF3J.lean.js",["1705","1706","1707","1708","1709","1710"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\license.md.CeoZrgzJ.js",["1711","1712","1713","1714"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\license.md.CeoZrgzJ.lean.js",["1715","1716","1717","1718"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance.md.BW9V8WyF.js",["1719","1720","1721","1722"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance.md.BW9V8WyF.lean.js",["1723","1724","1725","1726"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance_index.md.Dcko1qZh.js",["1727","1728","1729","1730"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\performance_index.md.Dcko1qZh.lean.js",["1731","1732","1733","1734"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\principles.md.CC6cTTac.js",["1735","1736","1737","1738"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\principles.md.CC6cTTac.lean.js",["1739","1740","1741","1742"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\testing.md.BXvjimk4.js",["1743","1744","1745","1746"],[],"C:\\Users\\shtse\\pdf-reader\\docs\\.vitepress\\dist\\assets\\testing.md.BXvjimk4.lean.js",["1747","1748","1749","1750"],[],"C:\\Users\\shtse\\pdf-reader\\src\\handlers\\index.ts",[],[],"C:\\Users\\shtse\\pdf-reader\\src\\handlers\\readPdf.ts",[],[],"C:\\Users\\shtse\\pdf-reader\\src\\index.ts",[],[],"C:\\Users\\shtse\\pdf-reader\\src\\utils\\pathUtils.ts",[],[],"C:\\Users\\shtse\\pdf-reader\\test\\benchmark\\readPdf.bench.ts",["1751","1752","1753","1754","1755"],[],"C:\\Users\\shtse\\pdf-reader\\test\\handlers\\readPdf.test.ts",[],["1756","1757","1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770","1771","1772","1773","1774"],"C:\\Users\\shtse\\pdf-reader\\test\\pathUtils.test.ts",[],[],"C:\\Users\\shtse\\pdf-reader\\vitest.config.ts",[],[],{"ruleId":"1775","severity":2,"message":"1776","line":20,"column":35,"nodeType":"1777","messageId":"1778","endLine":20,"endColumn":43,"suppressions":"1779"},{"ruleId":"1775","severity":2,"message":"1776","line":67,"column":13,"nodeType":"1777","messageId":"1778","endLine":67,"endColumn":21,"suppressions":"1780"},{"ruleId":"1775","severity":2,"message":"1776","line":67,"column":55,"nodeType":"1777","messageId":"1778","endLine":67,"endColumn":63,"suppressions":"1781"},{"ruleId":"1775","severity":2,"message":"1776","line":68,"column":13,"nodeType":"1777","messageId":"1778","endLine":68,"endColumn":21,"suppressions":"1782"},{"ruleId":"1775","severity":2,"message":"1783","line":87,"column":1,"nodeType":"1777","messageId":"1778","endLine":87,"endColumn":7,"suppressions":"1784"},{"ruleId":"1775","severity":2,"message":"1776","line":20,"column":35,"nodeType":"1777","messageId":"1778","endLine":20,"endColumn":43,"suppressions":"1785"},{"ruleId":"1775","severity":2,"message":"1776","line":67,"column":13,"nodeType":"1777","messageId":"1778","endLine":67,"endColumn":21,"suppressions":"1786"},{"ruleId":"1775","severity":2,"message":"1776","line":67,"column":55,"nodeType":"1777","messageId":"1778","endLine":67,"endColumn":63,"suppressions":"1787"},{"ruleId":"1775","severity":2,"message":"1776","line":68,"column":13,"nodeType":"1777","messageId":"1778","endLine":68,"endColumn":21,"suppressions":"1788"},{"ruleId":"1775","severity":2,"message":"1783","line":87,"column":1,"nodeType":"1777","messageId":"1778","endLine":87,"endColumn":7,"suppressions":"1789"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":1,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":7,"suppressions":"1790"},{"ruleId":"1791","severity":2,"message":"1792","line":2,"column":3893,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":3895,"suppressions":"1794"},{"ruleId":"1791","severity":2,"message":"1792","line":2,"column":4061,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4063,"suppressions":"1795"},{"ruleId":"1791","severity":2,"message":"1796","line":2,"column":4089,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4091,"suppressions":"1797"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4604,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4606,"suppressions":"1799"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4665,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4667,"suppressions":"1800"},{"ruleId":"1791","severity":2,"message":"1801","line":2,"column":4670,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4672,"suppressions":"1802"},{"ruleId":"1791","severity":2,"message":"1803","line":2,"column":4691,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4693,"suppressions":"1804"},{"ruleId":"1791","severity":2,"message":"1805","line":2,"column":4789,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4791,"suppressions":"1806"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4854,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4856,"suppressions":"1807"},{"ruleId":"1791","severity":2,"message":"1801","line":2,"column":4859,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4861,"suppressions":"1808"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4949,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4951,"suppressions":"1809"},{"ruleId":"1791","severity":2,"message":"1803","line":2,"column":4970,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4972,"suppressions":"1810"},{"ruleId":"1791","severity":2,"message":"1811","line":2,"column":5216,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5217,"suppressions":"1812"},{"ruleId":"1791","severity":2,"message":"1813","line":2,"column":5220,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5221,"suppressions":"1814"},{"ruleId":"1791","severity":2,"message":"1815","line":2,"column":5244,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5246,"suppressions":"1816"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":5512,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":5518,"suppressions":"1817"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":5539,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":5547,"suppressions":"1818"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":6621,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":6635,"suggestions":"1823","suppressions":"1824"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7590,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7591,"suggestions":"1829","suppressions":"1830"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7592,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7593,"suggestions":"1831","suppressions":"1832"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7594,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7595,"suggestions":"1833","suppressions":"1834"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7601,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7602,"suggestions":"1835","suppressions":"1836"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7616,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7617,"suggestions":"1837","suppressions":"1838"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7628,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7629,"suggestions":"1839","suppressions":"1840"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7637,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7638,"suggestions":"1841","suppressions":"1842"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7639,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7640,"suggestions":"1843","suppressions":"1844"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7641,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7642,"suggestions":"1845","suppressions":"1846"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7647,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7648,"suggestions":"1848","suppressions":"1849"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7649,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7650,"suggestions":"1850","suppressions":"1851"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7651,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7652,"suggestions":"1852","suppressions":"1853"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7658,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7659,"suggestions":"1854","suppressions":"1855"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7673,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7674,"suggestions":"1856","suppressions":"1857"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7685,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7686,"suggestions":"1858","suppressions":"1859"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7694,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7695,"suggestions":"1860","suppressions":"1861"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7696,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7697,"suggestions":"1862","suppressions":"1863"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7698,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7699,"suggestions":"1864","suppressions":"1865"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7704,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7705,"suggestions":"1866","suppressions":"1867"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7713,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7714,"suggestions":"1868","suppressions":"1869"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7730,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7731,"suggestions":"1870","suppressions":"1871"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7736,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7737,"suggestions":"1872","suppressions":"1873"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7745,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7746,"suggestions":"1874","suppressions":"1875"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7762,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7763,"suggestions":"1876","suppressions":"1877"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7826,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7827,"suggestions":"1878","suppressions":"1879"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7835,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7836,"suggestions":"1880","suppressions":"1881"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7852,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7853,"suggestions":"1882","suppressions":"1883"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7858,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7859,"suggestions":"1884","suppressions":"1885"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7867,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7868,"suggestions":"1886","suppressions":"1887"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7884,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7885,"suggestions":"1888","suppressions":"1889"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7890,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7891,"suggestions":"1891","suppressions":"1892"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7899,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7900,"suggestions":"1893","suppressions":"1894"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7916,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7917,"suggestions":"1895","suppressions":"1896"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7958,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7959,"suggestions":"1897","suppressions":"1898"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7967,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7968,"suggestions":"1899","suppressions":"1900"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7983,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7984,"suggestions":"1901","suppressions":"1902"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7989,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7990,"suggestions":"1903","suppressions":"1904"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7998,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7999,"suggestions":"1905","suppressions":"1906"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8014,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8015,"suggestions":"1907","suppressions":"1908"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8071,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8072,"suggestions":"1909","suppressions":"1910"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8078,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8079,"suggestions":"1911","suppressions":"1912"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8082,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8083,"suggestions":"1913","suppressions":"1914"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8084,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8085,"suggestions":"1915","suppressions":"1916"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8091,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8092,"suggestions":"1917","suppressions":"1918"},{"ruleId":"1825","severity":2,"message":"1919","line":2,"column":9231,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9232,"suggestions":"1920","suppressions":"1921"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":9235,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9236,"suggestions":"1922","suppressions":"1923"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":9237,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9238,"suggestions":"1924","suppressions":"1925"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":9239,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9240,"suggestions":"1926","suppressions":"1927"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":9241,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9242,"suggestions":"1929","suppressions":"1930"},{"ruleId":"1825","severity":2,"message":"1931","line":2,"column":9243,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9244,"suggestions":"1932","suppressions":"1933"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":9523,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":9529,"suppressions":"1934"},{"ruleId":"1791","severity":2,"message":"1935","line":2,"column":10812,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":10813,"suppressions":"1936"},{"ruleId":"1775","severity":2,"message":"1937","line":2,"column":11008,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":11017,"suppressions":"1938"},{"ruleId":"1939","severity":2,"message":"1940","line":2,"column":11414,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11416,"suppressions":"1942"},{"ruleId":"1939","severity":2,"message":"1943","line":2,"column":11438,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11440,"suppressions":"1944"},{"ruleId":"1939","severity":2,"message":"1945","line":2,"column":11471,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11473,"suppressions":"1946"},{"ruleId":"1791","severity":2,"message":"1947","line":2,"column":11501,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":11502,"suppressions":"1948"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":11964,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":11978,"suggestions":"1949","suppressions":"1950"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":11998,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":12004,"suppressions":"1951"},{"ruleId":"1775","severity":2,"message":"1952","line":2,"column":12014,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":12021,"suppressions":"1953"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":12097,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":12111,"suggestions":"1954","suppressions":"1955"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":12253,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12254,"suggestions":"1957","suppressions":"1958"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":12269,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12270,"suggestions":"1960","suppressions":"1961"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12685,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12686,"suggestions":"1962","suppressions":"1963"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12689,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12690,"suggestions":"1964","suppressions":"1965"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12693,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12694,"suggestions":"1966","suppressions":"1967"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12697,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12698,"suggestions":"1968","suppressions":"1969"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12701,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12702,"suggestions":"1970","suppressions":"1971"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12705,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12706,"suggestions":"1972","suppressions":"1973"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12835,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12836,"suggestions":"1974","suppressions":"1975"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12837,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12838,"suggestions":"1976","suppressions":"1977"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12849,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12850,"suggestions":"1978","suppressions":"1979"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12851,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12852,"suggestions":"1980","suppressions":"1981"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":12855,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12856,"suggestions":"1982","suppressions":"1983"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":12881,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12882,"suggestions":"1984","suppressions":"1985"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12913,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12914,"suggestions":"1986","suppressions":"1987"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12918,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12919,"suggestions":"1988","suppressions":"1989"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12923,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12924,"suggestions":"1990","suppressions":"1991"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12954,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12955,"suggestions":"1992","suppressions":"1993"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12959,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12960,"suggestions":"1994","suppressions":"1995"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12964,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12965,"suggestions":"1996","suppressions":"1997"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12998,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12999,"suggestions":"1998","suppressions":"1999"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13000,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13001,"suggestions":"2000","suppressions":"2001"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13038,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13039,"suggestions":"2002","suppressions":"2003"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13043,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13044,"suggestions":"2004","suppressions":"2005"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13048,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13049,"suggestions":"2006","suppressions":"2007"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13080,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13081,"suggestions":"2008","suppressions":"2009"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13085,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13086,"suggestions":"2010","suppressions":"2011"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13090,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13091,"suggestions":"2012","suppressions":"2013"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13125,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13126,"suggestions":"2014","suppressions":"2015"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13127,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13128,"suggestions":"2016","suppressions":"2017"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":14225,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14231,"suppressions":"2018"},{"ruleId":"1775","severity":2,"message":"1952","line":2,"column":14233,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14240,"suppressions":"2019"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":14293,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14301,"suppressions":"2020"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":14462,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14470,"suppressions":"2021"},{"ruleId":"1939","severity":2,"message":"1940","line":2,"column":14757,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":14759,"suppressions":"2022"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":14799,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14805,"suppressions":"2023"},{"ruleId":"1775","severity":2,"message":"2024","line":2,"column":15450,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15460,"suppressions":"2025"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15491,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15497,"suppressions":"2026"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15515,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15521,"suppressions":"2027"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15536,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15542,"suppressions":"2028"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15786,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15788,"suppressions":"2030"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15809,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15811,"suppressions":"2031"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15835,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15837,"suppressions":"2032"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15875,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15877,"suppressions":"2033"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":15892,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":15893,"suggestions":"2034","suppressions":"2035"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":15908,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":15909,"suggestions":"2036","suppressions":"2037"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15918,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15920,"suppressions":"2038"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16362,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16364,"suppressions":"2039"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16410,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16412,"suppressions":"2040"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16453,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16455,"suppressions":"2041"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16498,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16500,"suppressions":"2042"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16551,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16553,"suppressions":"2043"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16574,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16576,"suppressions":"2044"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16597,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16599,"suppressions":"2045"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16646,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16648,"suppressions":"2046"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16661,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16662,"suggestions":"2047","suppressions":"2048"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16676,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16677,"suggestions":"2049","suppressions":"2050"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16708,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16709,"suggestions":"2051","suppressions":"2052"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16719,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16721,"suppressions":"2053"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16734,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16735,"suggestions":"2054","suppressions":"2055"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16749,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16750,"suggestions":"2056","suppressions":"2057"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16781,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16782,"suggestions":"2058","suppressions":"2059"},{"ruleId":"1825","severity":2,"message":"2060","line":2,"column":16817,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16818,"suggestions":"2061","suppressions":"2062"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16819,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16820,"suggestions":"2063","suppressions":"2064"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16821,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16822,"suggestions":"2065","suppressions":"2066"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16833,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16835,"suppressions":"2067"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":16860,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16861,"suggestions":"2068","suppressions":"2069"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":16991,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16992,"suggestions":"2070","suppressions":"2071"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17026,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17028,"suppressions":"2072"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":17059,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17060,"suggestions":"2073","suppressions":"2074"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17079,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17081,"suppressions":"2075"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17111,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17113,"suppressions":"2076"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17161,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17163,"suppressions":"2077"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17203,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17205,"suppressions":"2078"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":17256,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17257,"suggestions":"2079","suppressions":"2080"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17285,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17287,"suppressions":"2081"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":17311,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17312,"suggestions":"2082","suppressions":"2083"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":17313,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17314,"suggestions":"2084","suppressions":"2085"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17331,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17333,"suppressions":"2086"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17354,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17356,"suppressions":"2087"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17380,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17382,"suppressions":"2088"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":17435,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17436,"suggestions":"2089","suppressions":"2090"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17477,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17479,"suppressions":"2091"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17500,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17502,"suppressions":"2092"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17526,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17528,"suppressions":"2093"},{"ruleId":"1825","severity":2,"message":"2060","line":2,"column":17543,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17544,"suggestions":"2094","suppressions":"2095"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":17545,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17546,"suggestions":"2096","suppressions":"2097"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":17547,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17548,"suggestions":"2098","suppressions":"2099"},{"ruleId":"1775","severity":2,"message":"1776","line":12,"column":16,"nodeType":"1777","messageId":"1778","endLine":12,"endColumn":24,"suppressions":"2100"},{"ruleId":"1775","severity":2,"message":"1776","line":28,"column":29,"nodeType":"1777","messageId":"1778","endLine":28,"endColumn":37,"suppressions":"2101"},{"ruleId":"1775","severity":2,"message":"1776","line":29,"column":22,"nodeType":"1777","messageId":"1778","endLine":29,"endColumn":30,"suppressions":"2102"},{"ruleId":"1775","severity":2,"message":"1776","line":46,"column":24,"nodeType":"1777","messageId":"1778","endLine":46,"endColumn":32,"suppressions":"2103"},{"ruleId":"1775","severity":2,"message":"1776","line":114,"column":25,"nodeType":"1777","messageId":"1778","endLine":114,"endColumn":33,"suppressions":"2104"},{"ruleId":"1775","severity":2,"message":"1783","line":196,"column":1,"nodeType":"1777","messageId":"1778","endLine":196,"endColumn":7,"suppressions":"2105"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":1,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":7,"suppressions":"2106"},{"ruleId":"1791","severity":2,"message":"1792","line":2,"column":3893,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":3895,"suppressions":"2107"},{"ruleId":"1791","severity":2,"message":"1792","line":2,"column":4061,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4063,"suppressions":"2108"},{"ruleId":"1791","severity":2,"message":"1796","line":2,"column":4089,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4091,"suppressions":"2109"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4604,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4606,"suppressions":"2110"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4665,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4667,"suppressions":"2111"},{"ruleId":"1791","severity":2,"message":"1801","line":2,"column":4670,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4672,"suppressions":"2112"},{"ruleId":"1791","severity":2,"message":"1803","line":2,"column":4691,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4693,"suppressions":"2113"},{"ruleId":"1791","severity":2,"message":"1805","line":2,"column":4789,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4791,"suppressions":"2114"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4854,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4856,"suppressions":"2115"},{"ruleId":"1791","severity":2,"message":"1801","line":2,"column":4859,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4861,"suppressions":"2116"},{"ruleId":"1791","severity":2,"message":"1798","line":2,"column":4949,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4951,"suppressions":"2117"},{"ruleId":"1791","severity":2,"message":"1803","line":2,"column":4970,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":4972,"suppressions":"2118"},{"ruleId":"1791","severity":2,"message":"1811","line":2,"column":5216,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5217,"suppressions":"2119"},{"ruleId":"1791","severity":2,"message":"1813","line":2,"column":5220,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5221,"suppressions":"2120"},{"ruleId":"1791","severity":2,"message":"1815","line":2,"column":5244,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":5246,"suppressions":"2121"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":5512,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":5518,"suppressions":"2122"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":5539,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":5547,"suppressions":"2123"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":6621,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":6635,"suggestions":"2124","suppressions":"2125"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7590,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7591,"suggestions":"2126","suppressions":"2127"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7592,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7593,"suggestions":"2128","suppressions":"2129"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7594,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7595,"suggestions":"2130","suppressions":"2131"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7601,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7602,"suggestions":"2132","suppressions":"2133"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7616,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7617,"suggestions":"2134","suppressions":"2135"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7628,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7629,"suggestions":"2136","suppressions":"2137"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7637,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7638,"suggestions":"2138","suppressions":"2139"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7639,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7640,"suggestions":"2140","suppressions":"2141"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7641,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7642,"suggestions":"2142","suppressions":"2143"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7647,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7648,"suggestions":"2144","suppressions":"2145"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7649,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7650,"suggestions":"2146","suppressions":"2147"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7651,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7652,"suggestions":"2148","suppressions":"2149"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7658,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7659,"suggestions":"2150","suppressions":"2151"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7673,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7674,"suggestions":"2152","suppressions":"2153"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7685,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7686,"suggestions":"2154","suppressions":"2155"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7694,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7695,"suggestions":"2156","suppressions":"2157"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7696,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7697,"suggestions":"2158","suppressions":"2159"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7698,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7699,"suggestions":"2160","suppressions":"2161"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7704,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7705,"suggestions":"2162","suppressions":"2163"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7713,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7714,"suggestions":"2164","suppressions":"2165"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7730,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7731,"suggestions":"2166","suppressions":"2167"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7736,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7737,"suggestions":"2168","suppressions":"2169"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7745,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7746,"suggestions":"2170","suppressions":"2171"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7762,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7763,"suggestions":"2172","suppressions":"2173"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7826,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7827,"suggestions":"2174","suppressions":"2175"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7835,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7836,"suggestions":"2176","suppressions":"2177"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7852,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7853,"suggestions":"2178","suppressions":"2179"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7858,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7859,"suggestions":"2180","suppressions":"2181"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7867,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7868,"suggestions":"2182","suppressions":"2183"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7884,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7885,"suggestions":"2184","suppressions":"2185"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7890,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7891,"suggestions":"2186","suppressions":"2187"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7899,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7900,"suggestions":"2188","suppressions":"2189"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":7916,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7917,"suggestions":"2190","suppressions":"2191"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7958,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7959,"suggestions":"2192","suppressions":"2193"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7967,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7968,"suggestions":"2194","suppressions":"2195"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":7983,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7984,"suggestions":"2196","suppressions":"2197"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7989,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7990,"suggestions":"2198","suppressions":"2199"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":7998,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":7999,"suggestions":"2200","suppressions":"2201"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8014,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8015,"suggestions":"2202","suppressions":"2203"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8071,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8072,"suggestions":"2204","suppressions":"2205"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8078,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8079,"suggestions":"2206","suppressions":"2207"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8082,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8083,"suggestions":"2208","suppressions":"2209"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8084,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8085,"suggestions":"2210","suppressions":"2211"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":8091,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":8092,"suggestions":"2212","suppressions":"2213"},{"ruleId":"1825","severity":2,"message":"1919","line":2,"column":9231,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9232,"suggestions":"2214","suppressions":"2215"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":9235,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9236,"suggestions":"2216","suppressions":"2217"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":9237,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9238,"suggestions":"2218","suppressions":"2219"},{"ruleId":"1825","severity":2,"message":"1890","line":2,"column":9239,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9240,"suggestions":"2220","suppressions":"2221"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":9241,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9242,"suggestions":"2222","suppressions":"2223"},{"ruleId":"1825","severity":2,"message":"1931","line":2,"column":9243,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":9244,"suggestions":"2224","suppressions":"2225"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":9523,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":9529,"suppressions":"2226"},{"ruleId":"1791","severity":2,"message":"1935","line":2,"column":10812,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":10813,"suppressions":"2227"},{"ruleId":"1775","severity":2,"message":"1937","line":2,"column":11008,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":11017,"suppressions":"2228"},{"ruleId":"1939","severity":2,"message":"1940","line":2,"column":11414,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11416,"suppressions":"2229"},{"ruleId":"1939","severity":2,"message":"1943","line":2,"column":11438,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11440,"suppressions":"2230"},{"ruleId":"1939","severity":2,"message":"1945","line":2,"column":11471,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":11473,"suppressions":"2231"},{"ruleId":"1791","severity":2,"message":"1947","line":2,"column":11501,"nodeType":"1777","messageId":"1793","endLine":2,"endColumn":11502,"suppressions":"2232"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":11964,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":11978,"suggestions":"2233","suppressions":"2234"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":11998,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":12004,"suppressions":"2235"},{"ruleId":"1775","severity":2,"message":"1952","line":2,"column":12014,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":12021,"suppressions":"2236"},{"ruleId":"1819","severity":2,"message":"1820","line":2,"column":12097,"nodeType":"1821","messageId":"1822","endLine":2,"endColumn":12111,"suggestions":"2237","suppressions":"2238"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":12253,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12254,"suggestions":"2239","suppressions":"2240"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":12269,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12270,"suggestions":"2241","suppressions":"2242"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12685,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12686,"suggestions":"2243","suppressions":"2244"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12689,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12690,"suggestions":"2245","suppressions":"2246"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12693,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12694,"suggestions":"2247","suppressions":"2248"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12697,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12698,"suggestions":"2249","suppressions":"2250"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12701,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12702,"suggestions":"2251","suppressions":"2252"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12705,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12706,"suggestions":"2253","suppressions":"2254"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12835,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12836,"suggestions":"2255","suppressions":"2256"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12837,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12838,"suggestions":"2257","suppressions":"2258"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12849,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12850,"suggestions":"2259","suppressions":"2260"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12851,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12852,"suggestions":"2261","suppressions":"2262"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":12855,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12856,"suggestions":"2263","suppressions":"2264"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":12881,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12882,"suggestions":"2265","suppressions":"2266"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12913,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12914,"suggestions":"2267","suppressions":"2268"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12918,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12919,"suggestions":"2269","suppressions":"2270"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12923,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12924,"suggestions":"2271","suppressions":"2272"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12954,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12955,"suggestions":"2273","suppressions":"2274"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12959,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12960,"suggestions":"2275","suppressions":"2276"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":12964,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12965,"suggestions":"2277","suppressions":"2278"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":12998,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":12999,"suggestions":"2279","suppressions":"2280"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13000,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13001,"suggestions":"2281","suppressions":"2282"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13038,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13039,"suggestions":"2283","suppressions":"2284"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13043,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13044,"suggestions":"2285","suppressions":"2286"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13048,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13049,"suggestions":"2287","suppressions":"2288"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13080,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13081,"suggestions":"2289","suppressions":"2290"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13085,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13086,"suggestions":"2291","suppressions":"2292"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13090,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13091,"suggestions":"2293","suppressions":"2294"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":13125,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13126,"suggestions":"2295","suppressions":"2296"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":13127,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":13128,"suggestions":"2297","suppressions":"2298"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":14225,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14231,"suppressions":"2299"},{"ruleId":"1775","severity":2,"message":"1952","line":2,"column":14233,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14240,"suppressions":"2300"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":14293,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14301,"suppressions":"2301"},{"ruleId":"1775","severity":2,"message":"1776","line":2,"column":14462,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14470,"suppressions":"2302"},{"ruleId":"1939","severity":2,"message":"1940","line":2,"column":14757,"nodeType":null,"messageId":"1941","endLine":2,"endColumn":14759,"suppressions":"2303"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":14799,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":14805,"suppressions":"2304"},{"ruleId":"1775","severity":2,"message":"2024","line":2,"column":15450,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15460,"suppressions":"2305"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15491,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15497,"suppressions":"2306"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15515,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15521,"suppressions":"2307"},{"ruleId":"1775","severity":2,"message":"1783","line":2,"column":15536,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15542,"suppressions":"2308"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15786,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15788,"suppressions":"2309"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15809,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15811,"suppressions":"2310"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15835,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15837,"suppressions":"2311"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15875,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15877,"suppressions":"2312"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":15892,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":15893,"suggestions":"2313","suppressions":"2314"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":15908,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":15909,"suggestions":"2315","suppressions":"2316"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":15918,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":15920,"suppressions":"2317"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16362,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16364,"suppressions":"2318"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16410,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16412,"suppressions":"2319"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16453,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16455,"suppressions":"2320"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16498,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16500,"suppressions":"2321"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16551,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16553,"suppressions":"2322"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16574,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16576,"suppressions":"2323"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16597,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16599,"suppressions":"2324"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16646,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16648,"suppressions":"2325"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16661,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16662,"suggestions":"2326","suppressions":"2327"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16676,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16677,"suggestions":"2328","suppressions":"2329"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16708,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16709,"suggestions":"2330","suppressions":"2331"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16719,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16721,"suppressions":"2332"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16734,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16735,"suggestions":"2333","suppressions":"2334"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16749,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16750,"suggestions":"2335","suppressions":"2336"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16781,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16782,"suggestions":"2337","suppressions":"2338"},{"ruleId":"1825","severity":2,"message":"2060","line":2,"column":16817,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16818,"suggestions":"2339","suppressions":"2340"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":16819,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16820,"suggestions":"2341","suppressions":"2342"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":16821,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16822,"suggestions":"2343","suppressions":"2344"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":16833,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":16835,"suppressions":"2345"},{"ruleId":"1825","severity":2,"message":"1956","line":2,"column":16860,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16861,"suggestions":"2346","suppressions":"2347"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":16991,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":16992,"suggestions":"2348","suppressions":"2349"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17026,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17028,"suppressions":"2350"},{"ruleId":"1825","severity":2,"message":"1928","line":2,"column":17059,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17060,"suggestions":"2351","suppressions":"2352"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17079,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17081,"suppressions":"2353"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17111,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17113,"suppressions":"2354"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17161,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17163,"suppressions":"2355"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17203,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17205,"suppressions":"2356"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":17256,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17257,"suggestions":"2357","suppressions":"2358"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17285,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17287,"suppressions":"2359"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":17311,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17312,"suggestions":"2360","suppressions":"2361"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":17313,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17314,"suggestions":"2362","suppressions":"2363"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17331,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17333,"suppressions":"2364"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17354,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17356,"suppressions":"2365"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17380,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17382,"suppressions":"2366"},{"ruleId":"1825","severity":2,"message":"1959","line":2,"column":17435,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17436,"suggestions":"2367","suppressions":"2368"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17477,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17479,"suppressions":"2369"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17500,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17502,"suppressions":"2370"},{"ruleId":"1775","severity":2,"message":"2029","line":2,"column":17526,"nodeType":"1777","messageId":"1778","endLine":2,"endColumn":17528,"suppressions":"2371"},{"ruleId":"1825","severity":2,"message":"2060","line":2,"column":17543,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17544,"suggestions":"2372","suppressions":"2373"},{"ruleId":"1825","severity":2,"message":"1847","line":2,"column":17545,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17546,"suggestions":"2374","suppressions":"2375"},{"ruleId":"1825","severity":2,"message":"1826","line":2,"column":17547,"nodeType":"1827","messageId":"1828","endLine":2,"endColumn":17548,"suggestions":"2376","suppressions":"2377"},{"ruleId":"1775","severity":2,"message":"1776","line":12,"column":16,"nodeType":"1777","messageId":"1778","endLine":12,"endColumn":24,"suppressions":"2378"},{"ruleId":"1775","severity":2,"message":"1776","line":28,"column":29,"nodeType":"1777","messageId":"1778","endLine":28,"endColumn":37,"suppressions":"2379"},{"ruleId":"1775","severity":2,"message":"1776","line":29,"column":22,"nodeType":"1777","messageId":"1778","endLine":29,"endColumn":30,"suppressions":"2380"},{"ruleId":"1775","severity":2,"message":"1776","line":46,"column":24,"nodeType":"1777","messageId":"1778","endLine":46,"endColumn":32,"suppressions":"2381"},{"ruleId":"1775","severity":2,"message":"1776","line":114,"column":25,"nodeType":"1777","messageId":"1778","endLine":114,"endColumn":33,"suppressions":"2382"},{"ruleId":"1775","severity":2,"message":"1783","line":196,"column":1,"nodeType":"1777","messageId":"1778","endLine":196,"endColumn":7,"suppressions":"2383"},{"ruleId":"1939","severity":2,"message":"2384","line":49,"column":10,"nodeType":null,"messageId":"1941","endLine":49,"endColumn":25},{"ruleId":"1939","severity":2,"message":"2385","line":52,"column":10,"nodeType":null,"messageId":"1941","endLine":52,"endColumn":18},{"ruleId":"2386","severity":2,"message":"2387","line":147,"column":5,"nodeType":"2388","messageId":"2389","endLine":147,"endColumn":37},{"ruleId":"1775","severity":2,"message":"1776","line":168,"column":8,"nodeType":"1777","messageId":"1778","endLine":168,"endColumn":16},{"ruleId":"2386","severity":2,"message":"2387","line":77,"column":9,"nodeType":"2388","messageId":"2389","endLine":77,"endColumn":42},{"ruleId":"1775","severity":2,"message":"2390","line":309,"column":82,"nodeType":"1777","messageId":"1778","endLine":309,"endColumn":99},{"ruleId":"1775","severity":2,"message":"1952","line":314,"column":5,"nodeType":"1777","messageId":"1778","endLine":314,"endColumn":12},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":29,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":35},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":55,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":61},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":134,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":140},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":172,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":178},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":198,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":204},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":283,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":289},{"ruleId":"1775","severity":2,"message":"1783","line":332,"column":309,"nodeType":"1777","messageId":"1778","endLine":332,"endColumn":315},{"ruleId":"1775","severity":2,"message":"2391","line":350,"column":5,"nodeType":"1777","messageId":"1778","endLine":350,"endColumn":17},{"ruleId":"1775","severity":2,"message":"2024","line":371,"column":20,"nodeType":"1777","messageId":"1778","endLine":371,"endColumn":30},{"ruleId":"1775","severity":2,"message":"2024","line":378,"column":15,"nodeType":"1777","messageId":"1778","endLine":378,"endColumn":25},{"ruleId":"1775","severity":2,"message":"2391","line":404,"column":7,"nodeType":"1777","messageId":"1778","endLine":404,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2024","line":427,"column":17,"nodeType":"1777","messageId":"1778","endLine":427,"endColumn":27},{"ruleId":"1775","severity":2,"message":"2024","line":436,"column":15,"nodeType":"1777","messageId":"1778","endLine":436,"endColumn":25},{"ruleId":"1775","severity":2,"message":"2024","line":475,"column":7,"nodeType":"1777","messageId":"1778","endLine":475,"endColumn":17},{"ruleId":"1775","severity":2,"message":"2024","line":477,"column":7,"nodeType":"1777","messageId":"1778","endLine":477,"endColumn":17},{"ruleId":"1775","severity":2,"message":"2024","line":557,"column":30,"nodeType":"1777","messageId":"1778","endLine":557,"endColumn":40},{"ruleId":"1775","severity":2,"message":"2391","line":562,"column":7,"nodeType":"1777","messageId":"1778","endLine":562,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2391","line":572,"column":9,"nodeType":"1777","messageId":"1778","endLine":572,"endColumn":21},{"ruleId":"2386","severity":2,"message":"2387","line":648,"column":5,"nodeType":"2388","messageId":"2389","endLine":648,"endColumn":78},{"ruleId":"2386","severity":2,"message":"2387","line":880,"column":11,"nodeType":"2388","messageId":"2389","endLine":880,"endColumn":42},{"ruleId":"1775","severity":2,"message":"2392","line":1170,"column":7,"nodeType":"1777","messageId":"1778","endLine":1170,"endColumn":20},{"ruleId":"1775","severity":2,"message":"2393","line":1187,"column":15,"nodeType":"1777","messageId":"1778","endLine":1187,"endColumn":26},{"ruleId":"1775","severity":2,"message":"2391","line":1253,"column":7,"nodeType":"1777","messageId":"1778","endLine":1253,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2024","line":1266,"column":13,"nodeType":"1777","messageId":"1778","endLine":1266,"endColumn":23},{"ruleId":"1775","severity":2,"message":"1783","line":1736,"column":32,"nodeType":"1777","messageId":"1778","endLine":1736,"endColumn":38},{"ruleId":"1775","severity":2,"message":"1783","line":1737,"column":34,"nodeType":"1777","messageId":"1778","endLine":1737,"endColumn":40},{"ruleId":"1775","severity":2,"message":"1783","line":1738,"column":35,"nodeType":"1777","messageId":"1778","endLine":1738,"endColumn":41},{"ruleId":"1775","severity":2,"message":"1783","line":1739,"column":34,"nodeType":"1777","messageId":"1778","endLine":1739,"endColumn":40},{"ruleId":"1775","severity":2,"message":"2394","line":1830,"column":25,"nodeType":"1777","messageId":"1778","endLine":1830,"endColumn":32},{"ruleId":"1775","severity":2,"message":"2024","line":1847,"column":9,"nodeType":"1777","messageId":"1778","endLine":1847,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2024","line":1858,"column":7,"nodeType":"1777","messageId":"1778","endLine":1858,"endColumn":17},{"ruleId":"2386","severity":2,"message":"2387","line":1896,"column":5,"nodeType":"2388","messageId":"2389","endLine":1896,"endColumn":21},{"ruleId":"1775","severity":2,"message":"2395","line":1920,"column":24,"nodeType":"1777","messageId":"1778","endLine":1920,"endColumn":40},{"ruleId":"2386","severity":2,"message":"2387","line":1950,"column":5,"nodeType":"2388","messageId":"2389","endLine":1950,"endColumn":40},{"ruleId":"1775","severity":2,"message":"2391","line":2045,"column":7,"nodeType":"1777","messageId":"1778","endLine":2045,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2024","line":2083,"column":15,"nodeType":"1777","messageId":"1778","endLine":2083,"endColumn":25},{"ruleId":"1775","severity":2,"message":"1776","line":2120,"column":35,"nodeType":"1777","messageId":"1778","endLine":2120,"endColumn":43},{"ruleId":"1775","severity":2,"message":"1952","line":2298,"column":7,"nodeType":"1777","messageId":"1778","endLine":2298,"endColumn":14},{"ruleId":"1775","severity":2,"message":"2396","line":2301,"column":53,"nodeType":"1777","messageId":"1778","endLine":2301,"endColumn":64},{"ruleId":"1775","severity":2,"message":"2396","line":2301,"column":81,"nodeType":"1777","messageId":"1778","endLine":2301,"endColumn":92},{"ruleId":"2386","severity":2,"message":"2387","line":2373,"column":7,"nodeType":"2388","messageId":"2389","endLine":2373,"endColumn":58},{"ruleId":"2386","severity":2,"message":"2387","line":2384,"column":7,"nodeType":"2388","messageId":"2389","endLine":2384,"endColumn":60},{"ruleId":"2386","severity":2,"message":"2387","line":2394,"column":7,"nodeType":"2388","messageId":"2389","endLine":2394,"endColumn":59},{"ruleId":"2386","severity":2,"message":"2387","line":2403,"column":7,"nodeType":"2388","messageId":"2389","endLine":2403,"endColumn":59},{"ruleId":"1775","severity":2,"message":"2397","line":2421,"column":36,"nodeType":"1777","messageId":"1778","endLine":2421,"endColumn":50},{"ruleId":"2386","severity":2,"message":"2387","line":2445,"column":5,"nodeType":"2388","messageId":"2389","endLine":2445,"endColumn":55},{"ruleId":"2386","severity":2,"message":"2387","line":2452,"column":7,"nodeType":"2388","messageId":"2389","endLine":2452,"endColumn":65},{"ruleId":"1775","severity":2,"message":"2398","line":2655,"column":36,"nodeType":"1777","messageId":"1778","endLine":2655,"endColumn":40},{"ruleId":"1775","severity":2,"message":"2398","line":2656,"column":39,"nodeType":"1777","messageId":"1778","endLine":2656,"endColumn":43},{"ruleId":"1775","severity":2,"message":"1783","line":2659,"column":19,"nodeType":"1777","messageId":"1778","endLine":2659,"endColumn":25},{"ruleId":"1775","severity":2,"message":"2399","line":2660,"column":39,"nodeType":"1777","messageId":"1778","endLine":2660,"endColumn":56},{"ruleId":"1775","severity":2,"message":"2400","line":2662,"column":39,"nodeType":"1777","messageId":"1778","endLine":2662,"endColumn":55},{"ruleId":"1775","severity":2,"message":"1776","line":2666,"column":28,"nodeType":"1777","messageId":"1778","endLine":2666,"endColumn":36},{"ruleId":"1775","severity":2,"message":"2398","line":2676,"column":43,"nodeType":"1777","messageId":"1778","endLine":2676,"endColumn":47},{"ruleId":"1775","severity":2,"message":"2401","line":2713,"column":20,"nodeType":"1777","messageId":"1778","endLine":2713,"endColumn":30},{"ruleId":"2386","severity":2,"message":"2387","line":2804,"column":7,"nodeType":"2388","messageId":"2389","endLine":2804,"endColumn":64},{"ruleId":"2386","severity":2,"message":"2387","line":2809,"column":7,"nodeType":"2388","messageId":"2389","endLine":2809,"endColumn":67},{"ruleId":"1775","severity":2,"message":"2402","line":3048,"column":27,"nodeType":"1777","messageId":"1778","endLine":3048,"endColumn":43},{"ruleId":"1939","severity":2,"message":"2403","line":3149,"column":16,"nodeType":null,"messageId":"1941","endLine":3149,"endColumn":17},{"ruleId":"1939","severity":2,"message":"2403","line":3189,"column":16,"nodeType":null,"messageId":"1941","endLine":3189,"endColumn":17},{"ruleId":"1939","severity":2,"message":"2403","line":3205,"column":18,"nodeType":null,"messageId":"1941","endLine":3205,"endColumn":19},{"ruleId":"1775","severity":2,"message":"1776","line":3217,"column":16,"nodeType":"1777","messageId":"1778","endLine":3217,"endColumn":24},{"ruleId":"1775","severity":2,"message":"1776","line":3221,"column":5,"nodeType":"1777","messageId":"1778","endLine":3221,"endColumn":13},{"ruleId":"1775","severity":2,"message":"1776","line":3223,"column":5,"nodeType":"1777","messageId":"1778","endLine":3223,"endColumn":13},{"ruleId":"1775","severity":2,"message":"1776","line":3228,"column":30,"nodeType":"1777","messageId":"1778","endLine":3228,"endColumn":38},{"ruleId":"1775","severity":2,"message":"1776","line":3228,"column":58,"nodeType":"1777","messageId":"1778","endLine":3228,"endColumn":66},{"ruleId":"1775","severity":2,"message":"1776","line":3228,"column":108,"nodeType":"1777","messageId":"1778","endLine":3228,"endColumn":116},{"ruleId":"1775","severity":2,"message":"1783","line":3315,"column":96,"nodeType":"1777","messageId":"1778","endLine":3315,"endColumn":102},{"ruleId":"1775","severity":2,"message":"2404","line":3315,"column":137,"nodeType":"1777","messageId":"1778","endLine":3315,"endColumn":143},{"ruleId":"1775","severity":2,"message":"2405","line":3315,"column":176,"nodeType":"1777","messageId":"1778","endLine":3315,"endColumn":180},{"ruleId":"1775","severity":2,"message":"1952","line":3382,"column":7,"nodeType":"1777","messageId":"1778","endLine":3382,"endColumn":14},{"ruleId":"1775","severity":2,"message":"2406","line":3411,"column":30,"nodeType":"1777","messageId":"1778","endLine":3411,"endColumn":37},{"ruleId":"1775","severity":2,"message":"2406","line":3429,"column":48,"nodeType":"1777","messageId":"1778","endLine":3429,"endColumn":55},{"ruleId":"1775","severity":2,"message":"2407","line":3429,"column":62,"nodeType":"1777","messageId":"1778","endLine":3429,"endColumn":74},{"ruleId":"1775","severity":2,"message":"2408","line":3429,"column":101,"nodeType":"1777","messageId":"1778","endLine":3429,"endColumn":112},{"ruleId":"1775","severity":2,"message":"1776","line":3546,"column":27,"nodeType":"1777","messageId":"1778","endLine":3546,"endColumn":35},{"ruleId":"2386","severity":2,"message":"2387","line":3559,"column":9,"nodeType":"2388","messageId":"2389","endLine":3559,"endColumn":49},{"ruleId":"1775","severity":2,"message":"1776","line":3560,"column":9,"nodeType":"1777","messageId":"1778","endLine":3560,"endColumn":17},{"ruleId":"2386","severity":2,"message":"2387","line":3625,"column":5,"nodeType":"2388","messageId":"2389","endLine":3625,"endColumn":92},{"ruleId":"2386","severity":2,"message":"2387","line":3628,"column":7,"nodeType":"2388","messageId":"2389","endLine":3628,"endColumn":98},{"ruleId":"2386","severity":2,"message":"2387","line":3772,"column":9,"nodeType":"2388","messageId":"2389","endLine":3772,"endColumn":111},{"ruleId":"1775","severity":2,"message":"2409","line":3950,"column":93,"nodeType":"1777","messageId":"1778","endLine":3950,"endColumn":110},{"ruleId":"1775","severity":2,"message":"2409","line":3950,"column":121,"nodeType":"1777","messageId":"1778","endLine":3950,"endColumn":138},{"ruleId":"1775","severity":2,"message":"2409","line":3993,"column":33,"nodeType":"1777","messageId":"1778","endLine":3993,"endColumn":50},{"ruleId":"1775","severity":2,"message":"1952","line":4001,"column":9,"nodeType":"1777","messageId":"1778","endLine":4001,"endColumn":16},{"ruleId":"2386","severity":2,"message":"2387","line":4079,"column":5,"nodeType":"2388","messageId":"2389","endLine":4079,"endColumn":61},{"ruleId":"1939","severity":2,"message":"2403","line":4097,"column":16,"nodeType":null,"messageId":"1941","endLine":4097,"endColumn":17},{"ruleId":"2386","severity":2,"message":"2387","line":4141,"column":5,"nodeType":"2388","messageId":"2389","endLine":4141,"endColumn":131},{"ruleId":"2386","severity":2,"message":"2387","line":4146,"column":5,"nodeType":"2388","messageId":"2389","endLine":4146,"endColumn":86},{"ruleId":"2386","severity":2,"message":"2387","line":4261,"column":5,"nodeType":"2388","messageId":"2389","endLine":4261,"endColumn":57},{"ruleId":"2386","severity":2,"message":"2387","line":4270,"column":5,"nodeType":"2388","messageId":"2389","endLine":4270,"endColumn":55},{"ruleId":"1775","severity":2,"message":"1937","line":4327,"column":68,"nodeType":"1777","messageId":"1778","endLine":4327,"endColumn":77},{"ruleId":"1775","severity":2,"message":"1783","line":4327,"column":106,"nodeType":"1777","messageId":"1778","endLine":4327,"endColumn":112},{"ruleId":"2386","severity":2,"message":"2387","line":4350,"column":11,"nodeType":"2388","messageId":"2389","endLine":4350,"endColumn":85},{"ruleId":"2386","severity":2,"message":"2387","line":4353,"column":11,"nodeType":"2388","messageId":"2389","endLine":4353,"endColumn":84},{"ruleId":"2386","severity":2,"message":"2387","line":4359,"column":11,"nodeType":"2388","messageId":"2389","endLine":4359,"endColumn":85},{"ruleId":"2386","severity":2,"message":"2387","line":4366,"column":13,"nodeType":"2388","messageId":"2389","endLine":4366,"endColumn":94},{"ruleId":"1775","severity":2,"message":"2410","line":4400,"column":24,"nodeType":"1777","messageId":"1778","endLine":4400,"endColumn":38},{"ruleId":"1775","severity":2,"message":"2411","line":4464,"column":7,"nodeType":"1777","messageId":"1778","endLine":4464,"endColumn":28},{"ruleId":"1775","severity":2,"message":"2391","line":4529,"column":7,"nodeType":"1777","messageId":"1778","endLine":4529,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2024","line":4533,"column":15,"nodeType":"1777","messageId":"1778","endLine":4533,"endColumn":25},{"ruleId":"1775","severity":2,"message":"2412","line":4628,"column":28,"nodeType":"1777","messageId":"1778","endLine":4628,"endColumn":48},{"ruleId":"2386","severity":2,"message":"2387","line":4708,"column":5,"nodeType":"2388","messageId":"2389","endLine":4708,"endColumn":85},{"ruleId":"2386","severity":2,"message":"2387","line":4731,"column":5,"nodeType":"2388","messageId":"2389","endLine":4731,"endColumn":84},{"ruleId":"1775","severity":2,"message":"2413","line":4767,"column":20,"nodeType":"1777","messageId":"1778","endLine":4767,"endColumn":31},{"ruleId":"1775","severity":2,"message":"2024","line":4786,"column":11,"nodeType":"1777","messageId":"1778","endLine":4786,"endColumn":21},{"ruleId":"1775","severity":2,"message":"2024","line":4788,"column":11,"nodeType":"1777","messageId":"1778","endLine":4788,"endColumn":21},{"ruleId":"2386","severity":2,"message":"2387","line":4790,"column":11,"nodeType":"2388","messageId":"2389","endLine":4790,"endColumn":50},{"ruleId":"1775","severity":2,"message":"1783","line":4831,"column":91,"nodeType":"1777","messageId":"1778","endLine":4831,"endColumn":97},{"ruleId":"1775","severity":2,"message":"1783","line":4836,"column":28,"nodeType":"1777","messageId":"1778","endLine":4836,"endColumn":34},{"ruleId":"2386","severity":2,"message":"2387","line":4858,"column":9,"nodeType":"2388","messageId":"2389","endLine":4858,"endColumn":66},{"ruleId":"2386","severity":2,"message":"2387","line":4862,"column":5,"nodeType":"2388","messageId":"2389","endLine":4862,"endColumn":89},{"ruleId":"1775","severity":2,"message":"2414","line":4886,"column":60,"nodeType":"1777","messageId":"1778","endLine":4886,"endColumn":67},{"ruleId":"2386","severity":2,"message":"2387","line":5004,"column":7,"nodeType":"2388","messageId":"2389","endLine":5004,"endColumn":56},{"ruleId":"1775","severity":2,"message":"2415","line":5005,"column":24,"nodeType":"1777","messageId":"1778","endLine":5005,"endColumn":39},{"ruleId":"1775","severity":2,"message":"2416","line":5037,"column":122,"nodeType":"1777","messageId":"1778","endLine":5037,"endColumn":130},{"ruleId":"1775","severity":2,"message":"2417","line":5228,"column":24,"nodeType":"1777","messageId":"1778","endLine":5228,"endColumn":32},{"ruleId":"1775","severity":2,"message":"2418","line":5230,"column":18,"nodeType":"1777","messageId":"1778","endLine":5230,"endColumn":30},{"ruleId":"2386","severity":2,"message":"2387","line":5398,"column":9,"nodeType":"2388","messageId":"2389","endLine":5398,"endColumn":65},{"ruleId":"2386","severity":2,"message":"2387","line":5400,"column":9,"nodeType":"2388","messageId":"2389","endLine":5400,"endColumn":83},{"ruleId":"1775","severity":2,"message":"2419","line":5438,"column":14,"nodeType":"1777","messageId":"1778","endLine":5438,"endColumn":25},{"ruleId":"1775","severity":2,"message":"2419","line":5443,"column":20,"nodeType":"1777","messageId":"1778","endLine":5443,"endColumn":31},{"ruleId":"1775","severity":2,"message":"2391","line":5752,"column":5,"nodeType":"1777","messageId":"1778","endLine":5752,"endColumn":17},{"ruleId":"1775","severity":2,"message":"2024","line":5753,"column":13,"nodeType":"1777","messageId":"1778","endLine":5753,"endColumn":23},{"ruleId":"1775","severity":2,"message":"2420","line":5783,"column":21,"nodeType":"1777","messageId":"1778","endLine":5783,"endColumn":26},{"ruleId":"1775","severity":2,"message":"2421","line":5831,"column":54,"nodeType":"1777","messageId":"1778","endLine":5831,"endColumn":60},{"ruleId":"1775","severity":2,"message":"2422","line":5833,"column":56,"nodeType":"1777","messageId":"1778","endLine":5833,"endColumn":64},{"ruleId":"1775","severity":2,"message":"1952","line":5857,"column":7,"nodeType":"1777","messageId":"1778","endLine":5857,"endColumn":14},{"ruleId":"2386","severity":2,"message":"2387","line":5885,"column":5,"nodeType":"2388","messageId":"2389","endLine":5889,"endColumn":8},{"ruleId":"1775","severity":2,"message":"2422","line":5885,"column":31,"nodeType":"1777","messageId":"1778","endLine":5885,"endColumn":39},{"ruleId":"1775","severity":2,"message":"2423","line":5925,"column":51,"nodeType":"1777","messageId":"1778","endLine":5925,"endColumn":67},{"ruleId":"1775","severity":2,"message":"2024","line":6034,"column":36,"nodeType":"1777","messageId":"1778","endLine":6034,"endColumn":46},{"ruleId":"1775","severity":2,"message":"2419","line":6522,"column":92,"nodeType":"1777","messageId":"1778","endLine":6522,"endColumn":103},{"ruleId":"1775","severity":2,"message":"2419","line":6526,"column":22,"nodeType":"1777","messageId":"1778","endLine":6526,"endColumn":33},{"ruleId":"1775","severity":2,"message":"2424","line":6535,"column":41,"nodeType":"1777","messageId":"1778","endLine":6535,"endColumn":51},{"ruleId":"1775","severity":2,"message":"2424","line":6580,"column":36,"nodeType":"1777","messageId":"1778","endLine":6580,"endColumn":46},{"ruleId":"1775","severity":2,"message":"2394","line":6631,"column":36,"nodeType":"1777","messageId":"1778","endLine":6631,"endColumn":43},{"ruleId":"1775","severity":2,"message":"1776","line":6654,"column":7,"nodeType":"1777","messageId":"1778","endLine":6654,"endColumn":15},{"ruleId":"2386","severity":2,"message":"2387","line":6694,"column":5,"nodeType":"2388","messageId":"2389","endLine":6694,"endColumn":73},{"ruleId":"2386","severity":2,"message":"2387","line":6700,"column":5,"nodeType":"2388","messageId":"2389","endLine":6700,"endColumn":74},{"ruleId":"1775","severity":2,"message":"2425","line":6813,"column":7,"nodeType":"1777","messageId":"1778","endLine":6813,"endColumn":10},{"ruleId":"1775","severity":2,"message":"2425","line":6821,"column":21,"nodeType":"1777","messageId":"1778","endLine":6821,"endColumn":24},{"ruleId":"2386","severity":2,"message":"2387","line":7041,"column":5,"nodeType":"2388","messageId":"2389","endLine":7041,"endColumn":55},{"ruleId":"1775","severity":2,"message":"2426","line":7046,"column":22,"nodeType":"1777","messageId":"1778","endLine":7046,"endColumn":41},{"ruleId":"1775","severity":2,"message":"2427","line":7125,"column":41,"nodeType":"1777","messageId":"1778","endLine":7125,"endColumn":46},{"ruleId":"1775","severity":2,"message":"2427","line":7126,"column":34,"nodeType":"1777","messageId":"1778","endLine":7126,"endColumn":39},{"ruleId":"2386","severity":2,"message":"2387","line":7194,"column":7,"nodeType":"2388","messageId":"2389","endLine":7194,"endColumn":81},{"ruleId":"2386","severity":2,"message":"2387","line":7198,"column":7,"nodeType":"2388","messageId":"2389","endLine":7198,"endColumn":55},{"ruleId":"2386","severity":2,"message":"2387","line":7210,"column":9,"nodeType":"2388","messageId":"2389","endLine":7210,"endColumn":47},{"ruleId":"2386","severity":2,"message":"2387","line":7216,"column":9,"nodeType":"2388","messageId":"2389","endLine":7216,"endColumn":70},{"ruleId":"2386","severity":2,"message":"2387","line":7223,"column":5,"nodeType":"2388","messageId":"2389","endLine":7223,"endColumn":121},{"ruleId":"2386","severity":2,"message":"2387","line":7225,"column":7,"nodeType":"2388","messageId":"2389","endLine":7225,"endColumn":130},{"ruleId":"2386","severity":2,"message":"2387","line":7226,"column":7,"nodeType":"2388","messageId":"2389","endLine":7226,"endColumn":126},{"ruleId":"2386","severity":2,"message":"2387","line":7227,"column":7,"nodeType":"2388","messageId":"2389","endLine":7227,"endColumn":122},{"ruleId":"1775","severity":2,"message":"2423","line":7340,"column":10,"nodeType":"1777","messageId":"1778","endLine":7340,"endColumn":26},{"ruleId":"1775","severity":2,"message":"1776","line":7340,"column":27,"nodeType":"1777","messageId":"1778","endLine":7340,"endColumn":35},{"ruleId":"1775","severity":2,"message":"1783","line":7424,"column":17,"nodeType":"1777","messageId":"1778","endLine":7424,"endColumn":23},{"ruleId":"1775","severity":2,"message":"1783","line":7435,"column":25,"nodeType":"1777","messageId":"1778","endLine":7435,"endColumn":31},{"ruleId":"2386","severity":2,"message":"2387","line":7488,"column":7,"nodeType":"2388","messageId":"2389","endLine":7488,"endColumn":72},{"ruleId":"1775","severity":2,"message":"2428","line":7690,"column":30,"nodeType":"1777","messageId":"1778","endLine":7690,"endColumn":54},{"ruleId":"1775","severity":2,"message":"1952","line":7821,"column":7,"nodeType":"1777","messageId":"1778","endLine":7821,"endColumn":14},{"ruleId":"2386","severity":2,"message":"2387","line":7974,"column":7,"nodeType":"2388","messageId":"2389","endLine":7974,"endColumn":68},{"ruleId":"2386","severity":2,"message":"2387","line":7984,"column":7,"nodeType":"2388","messageId":"2389","endLine":7984,"endColumn":55},{"ruleId":"2386","severity":2,"message":"2387","line":7996,"column":9,"nodeType":"2388","messageId":"2389","endLine":7996,"endColumn":47},{"ruleId":"2386","severity":2,"message":"2387","line":8054,"column":9,"nodeType":"2388","messageId":"2389","endLine":8054,"endColumn":103},{"ruleId":"2386","severity":2,"message":"2387","line":8056,"column":9,"nodeType":"2388","messageId":"2389","endLine":8056,"endColumn":95},{"ruleId":"1775","severity":2,"message":"2411","line":8416,"column":9,"nodeType":"1777","messageId":"1778","endLine":8416,"endColumn":30},{"ruleId":"2386","severity":2,"message":"2387","line":8442,"column":5,"nodeType":"2388","messageId":"2389","endLine":8442,"endColumn":66},{"ruleId":"2386","severity":2,"message":"2387","line":8450,"column":5,"nodeType":"2388","messageId":"2389","endLine":8450,"endColumn":67},{"ruleId":"1775","severity":2,"message":"2429","line":8499,"column":16,"nodeType":"1777","messageId":"1778","endLine":8499,"endColumn":31},{"ruleId":"1775","severity":2,"message":"2429","line":8513,"column":26,"nodeType":"1777","messageId":"1778","endLine":8513,"endColumn":41},{"ruleId":"2386","severity":2,"message":"2387","line":8600,"column":5,"nodeType":"2388","messageId":"2389","endLine":8600,"endColumn":86},{"ruleId":"2386","severity":2,"message":"2387","line":8737,"column":5,"nodeType":"2388","messageId":"2389","endLine":8737,"endColumn":66},{"ruleId":"1775","severity":2,"message":"2430","line":8988,"column":9,"nodeType":"1777","messageId":"1778","endLine":8988,"endColumn":21},{"ruleId":"1775","severity":2,"message":"2430","line":8991,"column":33,"nodeType":"1777","messageId":"1778","endLine":8991,"endColumn":45},{"ruleId":"1775","severity":2,"message":"2430","line":9001,"column":77,"nodeType":"1777","messageId":"1778","endLine":9001,"endColumn":89},{"ruleId":"1775","severity":2,"message":"2430","line":9001,"column":93,"nodeType":"1777","messageId":"1778","endLine":9001,"endColumn":105},{"ruleId":"1775","severity":2,"message":"2430","line":9006,"column":37,"nodeType":"1777","messageId":"1778","endLine":9006,"endColumn":49},{"ruleId":"1775","severity":2,"message":"2430","line":9007,"column":28,"nodeType":"1777","messageId":"1778","endLine":9007,"endColumn":40},{"ruleId":"1775","severity":2,"message":"2430","line":9021,"column":30,"nodeType":"1777","messageId":"1778","endLine":9021,"endColumn":42},{"ruleId":"1775","severity":2,"message":"2391","line":9095,"column":7,"nodeType":"1777","messageId":"1778","endLine":9095,"endColumn":19},{"ruleId":"1775","severity":2,"message":"2391","line":9100,"column":5,"nodeType":"1777","messageId":"1778","endLine":9100,"endColumn":17},{"ruleId":"2386","severity":2,"message":"2387","line":9109,"column":5,"nodeType":"2388","messageId":"2389","endLine":9109,"endColumn":56},{"ruleId":"1775","severity":2,"message":"2431","line":9126,"column":20,"nodeType":"1777","messageId":"1778","endLine":9126,"endColumn":29},{"ruleId":"2386","severity":2,"message":"2387","line":9132,"column":7,"nodeType":"2388","messageId":"2389","endLine":9132,"endColumn":54},{"ruleId":"2386","severity":2,"message":"2387","line":9133,"column":7,"nodeType":"2388","messageId":"2389","endLine":9133,"endColumn":60},{"ruleId":"2386","severity":2,"message":"2387","line":9139,"column":7,"nodeType":"2388","messageId":"2389","endLine":9139,"endColumn":58},{"ruleId":"2386","severity":2,"message":"2387","line":9140,"column":7,"nodeType":"2388","messageId":"2389","endLine":9140,"endColumn":64},{"ruleId":"1775","severity":2,"message":"2024","line":9150,"column":26,"nodeType":"1777","messageId":"1778","endLine":9150,"endColumn":36},{"ruleId":"2386","severity":2,"message":"2387","line":9152,"column":11,"nodeType":"2388","messageId":"2389","endLine":9152,"endColumn":50},{"ruleId":"2386","severity":2,"message":"2387","line":9157,"column":7,"nodeType":"2388","messageId":"2389","endLine":9157,"endColumn":49},{"ruleId":"2386","severity":2,"message":"2387","line":9170,"column":7,"nodeType":"2388","messageId":"2389","endLine":9170,"endColumn":53},{"ruleId":"1775","severity":2,"message":"2024","line":9184,"column":27,"nodeType":"1777","messageId":"1778","endLine":9184,"endColumn":37},{"ruleId":"1775","severity":2,"message":"2432","line":9239,"column":26,"nodeType":"1777","messageId":"1778","endLine":9239,"endColumn":32},{"ruleId":"1775","severity":2,"message":"2433","line":9279,"column":7,"nodeType":"1777","messageId":"1778","endLine":9279,"endColumn":18},{"ruleId":"1775","severity":2,"message":"2433","line":9281,"column":7,"nodeType":"1777","messageId":"1778","endLine":9281,"endColumn":18},{"ruleId":"1775","severity":2,"message":"2398","line":9287,"column":20,"nodeType":"1777","messageId":"1778","endLine":9287,"endColumn":24},{"ruleId":"1775","severity":2,"message":"2425","line":9288,"column":15,"nodeType":"1777","messageId":"1778","endLine":9288,"endColumn":18},{"ruleId":"1775","severity":2,"message":"2425","line":9305,"column":7,"nodeType":"1777","messageId":"1778","endLine":9305,"endColumn":10},{"ruleId":"1775","severity":2,"message":"2432","line":9316,"column":27,"nodeType":"1777","messageId":"1778","endLine":9316,"endColumn":33},{"ruleId":"1775","severity":2,"message":"2024","line":9342,"column":25,"nodeType":"1777","messageId":"1778","endLine":9342,"endColumn":35},{"ruleId":"2386","severity":2,"message":"2387","line":9355,"column":5,"nodeType":"2388","messageId":"2389","endLine":9355,"endColumn":74},{"ruleId":"1775","severity":2,"message":"1952","line":9360,"column":7,"nodeType":"1777","messageId":"1778","endLine":9360,"endColumn":14},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":284,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":285},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":286,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":287},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":288,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":289},{"ruleId":"1939","severity":2,"message":"2437","line":1,"column":290,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":291},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":284,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":285},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":286,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":287},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":288,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":289},{"ruleId":"1939","severity":2,"message":"2437","line":1,"column":290,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":291},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":293,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":294},{"ruleId":"1939","severity":2,"message":"2439","line":1,"column":295,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":296},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":297,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":298},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":299,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":300},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":494,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":495},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":758,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":759},{"ruleId":"2442","severity":2,"message":"2443","line":23,"column":1881,"nodeType":"2444","messageId":"2445","endLine":23,"endColumn":1882},{"ruleId":"2442","severity":2,"message":"2443","line":23,"column":3567,"nodeType":"2444","messageId":"2445","endLine":23,"endColumn":3568},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":293,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":294},{"ruleId":"1939","severity":2,"message":"2439","line":1,"column":295,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":296},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":297,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":298},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":299,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":300},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":325,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":396},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":506,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":580},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":506,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":514},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":544,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":552},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":1234,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":1329},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":1291,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":1324},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":288,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":289},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":290,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":291},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":292,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":293},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":294,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":295},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":288,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":289},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":290,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":291},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":292,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":293},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":294,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":295},{"ruleId":"2386","severity":2,"message":"2387","line":5,"column":339,"nodeType":"2388","messageId":"2389","endLine":5,"endColumn":358},{"ruleId":"1775","severity":2,"message":"2405","line":5,"column":1568,"nodeType":"1777","messageId":"1778","endLine":5,"endColumn":1572},{"ruleId":"1775","severity":2,"message":"1783","line":5,"column":1591,"nodeType":"1777","messageId":"1778","endLine":5,"endColumn":1597},{"ruleId":"1775","severity":2,"message":"2404","line":5,"column":1616,"nodeType":"1777","messageId":"1778","endLine":5,"endColumn":1622},{"ruleId":"2386","severity":2,"message":"2387","line":5,"column":1950,"nodeType":"2388","messageId":"2389","endLine":5,"endColumn":1990},{"ruleId":"2386","severity":2,"message":"2387","line":5,"column":2091,"nodeType":"2388","messageId":"2389","endLine":5,"endColumn":2104},{"ruleId":"2386","severity":2,"message":"2387","line":5,"column":2136,"nodeType":"2388","messageId":"2389","endLine":5,"endColumn":2153},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":38,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":197},{"ruleId":"2447","severity":2,"message":"2448","line":9,"column":674,"nodeType":"1777","messageId":"2449","endLine":9,"endColumn":676},{"ruleId":"2447","severity":2,"message":"2448","line":9,"column":706,"nodeType":"1777","messageId":"2449","endLine":9,"endColumn":708},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1115,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1181},{"ruleId":"1939","severity":2,"message":"2450","line":9,"column":1241,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":1242},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1247,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1270},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1323,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1479},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1512,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1591},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1601,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1655},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1698,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1730},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1746,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1760},{"ruleId":"2447","severity":2,"message":"2448","line":9,"column":1746,"nodeType":"1777","messageId":"2449","endLine":9,"endColumn":1748},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1789,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1822},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1888,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":1969},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":1981,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2057},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2071,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2091},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2173,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2188},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2195,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2209},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2309,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2338},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2462,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2470},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2535,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2600},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2666,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2773},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":2774,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":2795},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3170,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3181},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3214,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3271},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3309,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3336},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3573,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3612},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3657,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3724},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3761,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":3778},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":3965,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4088},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4114,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4226},{"ruleId":"1939","severity":2,"message":"2451","line":9,"column":4233,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":4234},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4323,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4453},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4531,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4683},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4704,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4738},{"ruleId":"1939","severity":2,"message":"2451","line":9,"column":4746,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":4747},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4792,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":4826},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":4996,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5046},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5157,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5180},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5195,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5243},{"ruleId":"1939","severity":2,"message":"2440","line":9,"column":5265,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":5266},{"ruleId":"1939","severity":2,"message":"2452","line":9,"column":5267,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":5268},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5319,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5333},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5453,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5495},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5580,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5639},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5658,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5696},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":5712,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":5732},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":7597,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":7712},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":8096,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":8106},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":8327,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":8348},{"ruleId":"1819","severity":2,"message":"1820","line":9,"column":8387,"nodeType":"1821","messageId":"1822","endLine":9,"endColumn":8401,"suggestions":"2453"},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":8437,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":8473},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":9369,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":9374},{"ruleId":"1939","severity":2,"message":"2451","line":9,"column":9652,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":9653},{"ruleId":"1939","severity":2,"message":"2446","line":9,"column":9654,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":9655},{"ruleId":"1939","severity":2,"message":"2451","line":9,"column":9681,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":9682},{"ruleId":"1939","severity":2,"message":"2446","line":9,"column":9683,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":9684},{"ruleId":"1939","severity":2,"message":"2451","line":9,"column":10152,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":10153},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":10271,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":10313},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":10415,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":10430},{"ruleId":"2447","severity":2,"message":"2448","line":9,"column":10666,"nodeType":"1777","messageId":"2449","endLine":9,"endColumn":10667},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":10868,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":10897},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":10983,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":11012},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":11066,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":11092},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":11243,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":11284},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":12859,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":12981},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":13101,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":13180},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":13477,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":13514},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":13589,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":13612},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":13743,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":13827},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":14034,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":14108},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":14336,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":14564},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":14751,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":14778},{"ruleId":"1939","severity":2,"message":"2450","line":9,"column":14906,"nodeType":null,"messageId":"1941","endLine":9,"endColumn":14907},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":14939,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":14966},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":15505,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":15542},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":15574,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":15585},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":15742,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":15749},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":15815,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":15837},{"ruleId":"2386","severity":2,"message":"2387","line":9,"column":16459,"nodeType":"2388","messageId":"2389","endLine":9,"endColumn":16520},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":556,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":588},{"ruleId":"1939","severity":2,"message":"2454","line":13,"column":628,"nodeType":null,"messageId":"1941","endLine":13,"endColumn":629},{"ruleId":"1775","severity":2,"message":"1952","line":13,"column":652,"nodeType":"1777","messageId":"1778","endLine":13,"endColumn":659},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":909,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":940},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1014,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1088},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1104,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1124},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1140,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1232},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1338,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1410},{"ruleId":"1939","severity":2,"message":"2403","line":13,"column":1425,"nodeType":null,"messageId":"1941","endLine":13,"endColumn":1426},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1580,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1631},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1632,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1644},{"ruleId":"1939","severity":2,"message":"2403","line":13,"column":1703,"nodeType":null,"messageId":"1941","endLine":13,"endColumn":1704},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1753,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1841},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1890,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1906},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":1907,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":1966},{"ruleId":"1939","severity":2,"message":"2446","line":13,"column":2076,"nodeType":null,"messageId":"1941","endLine":13,"endColumn":2077},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":2117,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":2130},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":2172,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":2189},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":2322,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":2349},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":2364,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":2401},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3242,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3263},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3435,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3504},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3512,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3721},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3577,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3711},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3607,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3654},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3676,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3710},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":3727,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":3741},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4256,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4270},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4295,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4352},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4439,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4456},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4469,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4510},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4558,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4579},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4619,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4695},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4697,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4713},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4830,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4898},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":4900,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":4923},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":5230,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":5422},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":5557,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":5672},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":5976,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":6078},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":6430,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":6542},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":6548,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":6604},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":6606,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":6629},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":6656,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":6729},{"ruleId":"1775","severity":2,"message":"1952","line":13,"column":6661,"nodeType":"1777","messageId":"1778","endLine":13,"endColumn":6668},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7087,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7115},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7122,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7170},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7326,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7371},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7400,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7511},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7525,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7595},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7717,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7809},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7848,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7873},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":7894,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":7981},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8167,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8283},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8290,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8393},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8583,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8609},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8709,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8746},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8835,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8849},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8860,"nodeType":"2388","messageId":"2389","endLine":13,"endColumn":8881},{"ruleId":"2386","severity":2,"message":"2387","line":13,"column":8913,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":123},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":197,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":309},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":415,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":425},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":432,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":598},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":542,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":594},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":760,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":957},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":1010,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":1033},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":1517,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":1540},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":1556,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":1610},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":2001,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":2026},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":2026,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":2050},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":2340,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":2382},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":2646,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":2686},{"ruleId":"1939","severity":2,"message":"2455","line":14,"column":2987,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":2988},{"ruleId":"1939","severity":2,"message":"2434","line":14,"column":3242,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":3243},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":3307,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":3351},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":3873,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":3897},{"ruleId":"1939","severity":2,"message":"2451","line":14,"column":4204,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":4205},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":5129,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":5141},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":6060,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":6108},{"ruleId":"1939","severity":2,"message":"2456","line":14,"column":6268,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":6269},{"ruleId":"1939","severity":2,"message":"2457","line":14,"column":6296,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":6297},{"ruleId":"1939","severity":2,"message":"2458","line":14,"column":6444,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":6445},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":6501,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":6523},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":6550,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":6571},{"ruleId":"2459","severity":2,"message":"2460","line":14,"column":6803,"nodeType":"2461","messageId":"2462","endLine":14,"endColumn":6814},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":6929,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":6944},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":6960,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7009},{"ruleId":"2459","severity":2,"message":"2460","line":14,"column":7223,"nodeType":"2461","messageId":"2462","endLine":14,"endColumn":7230},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7240,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7266},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7266,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7373},{"ruleId":"1939","severity":2,"message":"2455","line":14,"column":7390,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":7391},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7396,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7412},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7449,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7626},{"ruleId":"2459","severity":2,"message":"2460","line":14,"column":7608,"nodeType":"2461","messageId":"2462","endLine":14,"endColumn":7617},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7785,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7798},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":7933,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":7948},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":8253,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":8299},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":9662,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":9707},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":10397,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":10475},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":10683,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":10729},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11134,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11182},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11215,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11237},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11237,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11299},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11560,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11584},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11630,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11653},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11661,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11681},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11704,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11825},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11851,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11884},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":11885,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":11908},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12025,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12142},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12465,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12490},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12501,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12525},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12526,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12578},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12766,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12789},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12791,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12885},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":12978,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":12994},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":13217,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":13237},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":13270,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":13314},{"ruleId":"1939","severity":2,"message":"2446","line":14,"column":13555,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":13556},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":13770,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":13795},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":13868,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":13907},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":13913,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":13923},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14008,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14060},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14066,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14093},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14115,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14146},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14491,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14582},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14684,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14704},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14753,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14849},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14850,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":14886},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":14962,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15002},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15019,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15066},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15180,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15200},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15253,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15269},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15299,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15395},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15639,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15685},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15685,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15761},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15762,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15792},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15808,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15934},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":15878,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":15930},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":16856,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":16896},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":16898,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":16943},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":16948,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":16974},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":16974,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17050},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17009,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17046},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17258,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17298},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17354,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17388},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17389,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17432},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17565,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17779},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":17805,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":17898},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18212,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18232},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18237,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18256},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18371,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18439},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18418,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18436},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18458,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18571},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18599,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18748},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18925,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":18965},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":18967,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19019},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19025,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19060},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19085,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19116},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19195,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19293},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19410,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19461},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19511,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19585},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19787,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19907},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":19934,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":19950},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20077,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":20119},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20406,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":20413},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20470,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":20520},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20545,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":20565},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20647,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":20677},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":20936,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":21029},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":21132,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":21206},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":21545,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":21592},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":21672,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":21682},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":21686,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":21702},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22107,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22266},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22267,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22355},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22311,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22351},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22469,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22519},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22599,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22616},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22656,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22672},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":22743,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":22969},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":23225,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":23346},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":23673,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":23726},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":23913,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":24068},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":24207,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":24224},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":24259,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":24288},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":24288,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":24326},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":24360,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":24374},{"ruleId":"1939","severity":2,"message":"2451","line":14,"column":24630,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":24631},{"ruleId":"1939","severity":2,"message":"2463","line":14,"column":24747,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":24748},{"ruleId":"1939","severity":2,"message":"2464","line":14,"column":24762,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":24763},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25006,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25178},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25092,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25103},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25123,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25176},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25327,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25354},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25781,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25849},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":25884,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":25925},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26006,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26033},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26183,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26200},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26202,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26296},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26750,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26781},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26797,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26871},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26882,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":26912},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":26974,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":27033},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":27194,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":27251},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":27300,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":27341},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":28037,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":28065},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":28121,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":28189},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":28360,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":28393},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":28423,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":28456},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":29728,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":29804},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31188,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31235},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31264,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31344},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31350,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31424},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31424,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31451},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31554,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31605},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31690,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31749},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":31755,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":31774},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":32860,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":32897},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":32900,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":32976},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33032,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33051},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33062,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33089},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33168,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33177},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33219,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33241},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33317,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33379},{"ruleId":"1939","severity":2,"message":"2446","line":14,"column":33654,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":33655},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33657,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33745},{"ruleId":"1939","severity":2,"message":"2451","line":14,"column":33760,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":33761},{"ruleId":"1939","severity":2,"message":"2446","line":14,"column":33762,"nodeType":null,"messageId":"1941","endLine":14,"endColumn":33763},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33780,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33814},{"ruleId":"2386","severity":2,"message":"2387","line":14,"column":33852,"nodeType":"2388","messageId":"2389","endLine":14,"endColumn":33860},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":39,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":45},{"ruleId":"2465","severity":2,"message":"2466","line":18,"column":118,"nodeType":"2467","messageId":"2468","endLine":18,"endColumn":120,"suggestions":"2469"},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":252,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":260},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":382,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":401},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":1852,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":1889},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":1983,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2004},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2510,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2561},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2573,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2619},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2664,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2730},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2685,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2728},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2762,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2787},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2807,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":2832},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2911,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3039},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":2975,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3025},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3061,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3088},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3111,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3138},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3160,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3174},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3330,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3410},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3494,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3533},{"ruleId":"1775","severity":2,"message":"2411","line":18,"column":3549,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":3570},{"ruleId":"1775","severity":2,"message":"2411","line":18,"column":3576,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":3597},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3662,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3679},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":3699,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":3709},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3813,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3843},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3851,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3876},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3878,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3932},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":3878,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":3888},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":3894,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":3902},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":3958,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":3964},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":4130,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":4268},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":4600,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":4608},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":4660,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":4773},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5001,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5023},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5046,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5069},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5086,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5120},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5156,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5194},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5201,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5231},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5231,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5288},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5449,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5516},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":5809,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":5992},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6055,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6095},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6275,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6354},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6410,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6490},{"ruleId":"2465","severity":2,"message":"2466","line":18,"column":6507,"nodeType":"2467","messageId":"2468","endLine":18,"endColumn":6509,"suggestions":"2470"},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6509,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6535},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6802,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6830},{"ruleId":"2471","severity":2,"message":"2472","line":18,"column":6921,"nodeType":"2461","messageId":"2473","endLine":18,"endColumn":6934},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":6936,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":6994},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":7377,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":7400},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":7585,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":7976},{"ruleId":"1775","severity":2,"message":"2474","line":18,"column":9435,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":9445},{"ruleId":"1775","severity":2,"message":"2475","line":18,"column":9508,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":9521},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":9565,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":9573},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":9602,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":9608},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":9925,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":9995},{"ruleId":"1775","severity":2,"message":"2390","line":18,"column":9977,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":9994},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10122,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10128},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10142,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10148},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10212,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10218},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10245,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10251},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10265,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10271},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10339,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10345},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":10359,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10365},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":10605,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":10629},{"ruleId":"1775","severity":2,"message":"2391","line":18,"column":10605,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10617},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":10776,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":10899},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":10813,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10823},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":10829,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":10850},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":10858,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":10868},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":10874,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":10895},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":10951,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":11067},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":11080,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":11118},{"ruleId":"1775","severity":2,"message":"2391","line":18,"column":11084,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":11096},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":11266,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":11338},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":11276,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":11286},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":11292,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":11320},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":11353,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":11363},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":11526,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":11542},{"ruleId":"1939","severity":2,"message":"2403","line":18,"column":11695,"nodeType":null,"messageId":"1941","endLine":18,"endColumn":11696},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":12298,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":12322},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":12389,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":12395},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":12515,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":12543},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":13096,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":13103},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":13403,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":13525},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":13619,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":13646},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":14272,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":14334},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":14443,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":14449},{"ruleId":"1775","severity":2,"message":"2404","line":18,"column":14468,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":14474},{"ruleId":"1775","severity":2,"message":"2405","line":18,"column":14491,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":14495},{"ruleId":"1775","severity":2,"message":"1952","line":18,"column":15567,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":15574},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":15906,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16023},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":15944,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16013},{"ruleId":"1775","severity":2,"message":"2406","line":18,"column":15957,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":15964},{"ruleId":"1775","severity":2,"message":"2406","line":18,"column":16132,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":16139},{"ruleId":"1775","severity":2,"message":"2407","line":18,"column":16144,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":16156},{"ruleId":"1775","severity":2,"message":"2408","line":18,"column":16174,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":16185},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":16259,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16291},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":16315,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16351},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":16748,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16810},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":16833,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":16844},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":17774,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":17805},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":17880,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":17995},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":17934,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":17942},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":18070,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":18166},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":18137,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":18145},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":18229,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":18262},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":18263,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":18318},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":18530,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":18594},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":18720,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":18756},{"ruleId":"1775","severity":2,"message":"2421","line":18,"column":18814,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":18820},{"ruleId":"1775","severity":2,"message":"2422","line":18,"column":18882,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":18890},{"ruleId":"1775","severity":2,"message":"1952","line":18,"column":19130,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":19137},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":19335,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":19476},{"ruleId":"1775","severity":2,"message":"2422","line":18,"column":19351,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":19359},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":19586,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":19648},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":19754,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":19822},{"ruleId":"1775","severity":2,"message":"2423","line":18,"column":20015,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":20031},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20067,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20102},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20199,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20283},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20301,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20386},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20481,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20567},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20648,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20673},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":20875,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":20885},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":20911,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":20917},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":21188,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":21194},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":21640,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":21741},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":21768,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":21845},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":21893,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":21902},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":22188,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":22231},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":22320,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":22367},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":22373,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":22516},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":22518,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":22528},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":23185,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":23193},{"ruleId":"2477","severity":2,"message":"2478","line":18,"column":24468,"nodeType":"1827","messageId":"2468","endLine":18,"endColumn":24513},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":25577,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":25585},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":25606,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":25612},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":25656,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":25664},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":25702,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":25710},{"ruleId":"1775","severity":2,"message":"2479","line":18,"column":26513,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":26528},{"ruleId":"1775","severity":2,"message":"2479","line":18,"column":26627,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":26642},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":26792,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":26835},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":27122,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27130},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":27373,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27381},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":27400,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":27670},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":27484,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27492},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":27501,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27508},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":27538,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27544},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":27558,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27565},{"ruleId":"1775","severity":2,"message":"2425","line":18,"column":27801,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":27804},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":27997,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":28485},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":28290,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28297},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":28350,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28358},{"ruleId":"1775","severity":2,"message":"1952","line":18,"column":28420,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28427},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":28463,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28469},{"ruleId":"1775","severity":2,"message":"1952","line":18,"column":28572,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28579},{"ruleId":"1775","severity":2,"message":"2481","line":18,"column":28610,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28615},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":28646,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":28700},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":28646,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28652},{"ruleId":"2465","severity":2,"message":"2466","line":18,"column":28712,"nodeType":"2467","messageId":"2468","endLine":18,"endColumn":28714,"suggestions":"2482"},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":28724,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":28774},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":28915,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28922},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":28937,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28944},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":28965,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":28971},{"ruleId":"1775","severity":2,"message":"2394","line":18,"column":29046,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29053},{"ruleId":"1775","severity":2,"message":"2483","line":18,"column":29313,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29324},{"ruleId":"1775","severity":2,"message":"2425","line":18,"column":29432,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29435},{"ruleId":"1775","severity":2,"message":"2425","line":18,"column":29455,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29458},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":29459,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29467},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":29474,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":29742},{"ruleId":"1775","severity":2,"message":"2480","line":18,"column":29558,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29565},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":29585,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29591},{"ruleId":"1775","severity":2,"message":"2484","line":18,"column":29610,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29625},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":29715,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29721},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":29758,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29764},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":29845,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29853},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":29860,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":29978},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":29981,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":29987},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":30260,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30268},{"ruleId":"1775","severity":2,"message":"1952","line":18,"column":30325,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30332},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":30364,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":30484},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30379,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30385},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30395,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30401},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30414,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30420},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30435,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30441},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30503,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30509},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":30547,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30553},{"ruleId":"1775","severity":2,"message":"2411","line":18,"column":30599,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30620},{"ruleId":"1775","severity":2,"message":"2425","line":18,"column":30652,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":30655},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":31472,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":32055},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":31476,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":31482},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":31890,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":31945},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":32008,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":32052},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":32097,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32103},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":32516,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":32716},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":32575,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":32624},{"ruleId":"1775","severity":2,"message":"2391","line":18,"column":32601,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32613},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":32632,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32642},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":32648,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":32697},{"ruleId":"1775","severity":2,"message":"1937","line":18,"column":32753,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32762},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":32800,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32808},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":32837,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":32845},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":32860,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33000},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33008,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33016},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33073,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33265},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33073,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33081},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33156,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33164},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33185,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33193},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33316,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33428},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33364,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33372},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33453,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33663},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33533,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33585},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33604,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33612},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33755,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33794},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33759,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33767},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33776,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33784},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":33825,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":33833},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":33874,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":33998},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":34030,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34038},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":34301,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34309},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":34352,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":34406},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":34378,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34386},{"ruleId":"1775","severity":2,"message":"2485","line":18,"column":34427,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34441},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":34442,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":34487},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":34614,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34620},{"ruleId":"1775","severity":2,"message":"1937","line":18,"column":34661,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34670},{"ruleId":"1775","severity":2,"message":"1783","line":18,"column":34740,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34746},{"ruleId":"1775","severity":2,"message":"2024","line":18,"column":34768,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34778},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":34803,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":35287},{"ruleId":"1775","severity":2,"message":"2412","line":18,"column":34827,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":34847},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":34978,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":34986},{"ruleId":"1775","severity":2,"message":"1776","line":18,"column":35000,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":35008},{"ruleId":"1775","severity":2,"message":"2425","line":18,"column":35081,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":35084},{"ruleId":"1775","severity":2,"message":"2486","line":18,"column":35103,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":35120},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":35174,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":35283},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":35218,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":35226},{"ruleId":"1775","severity":2,"message":"2476","line":18,"column":35242,"nodeType":"1777","messageId":"1778","endLine":18,"endColumn":35250},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":35308,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":35352},{"ruleId":"2386","severity":2,"message":"2387","line":18,"column":35333,"nodeType":"2388","messageId":"2389","endLine":18,"endColumn":35350},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":509,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":510},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":521,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":522},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":714,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":715},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":726,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":727},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":903,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":978},{"ruleId":"1775","severity":2,"message":"2391","line":1,"column":906,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":918},{"ruleId":"1775","severity":2,"message":"2024","line":1,"column":926,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":936},{"ruleId":"2487","severity":2,"message":"2488","line":1,"column":948,"nodeType":"2461","messageId":"2489","endLine":1,"endColumn":952},{"ruleId":"1775","severity":2,"message":"2024","line":1,"column":955,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":965},{"ruleId":"1775","severity":2,"message":"2425","line":1,"column":1094,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":1097},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":2185,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":2186},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":3220,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":3263},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":3330,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":3429},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":3871,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":3927},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":4299,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":4314},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":4460,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":4601},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":4477,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":4485},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":4516,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":4522},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":4561,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":4567},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":4615,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":4666},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":4834,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":4852},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":4983,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":5074},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":5039,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":5071},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":5087,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":5114},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":5607,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":5615},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":5937,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":5972},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":6221,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":6367},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":6228,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":6288},{"ruleId":"1775","severity":2,"message":"2411","line":1,"column":6228,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6249},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":6253,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6259},{"ruleId":"1775","severity":2,"message":"2476","line":1,"column":6301,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6309},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":6326,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6332},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":6407,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6413},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":6424,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6430},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":6445,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":6453},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":6776,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":6885},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":6895,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":7041},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":7075,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":7083},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":7114,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":7145},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":7296,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":7320},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":7440,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":7545},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":7653,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":7654},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":7710,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":7718},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":7757,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":7793},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":7803,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":7804},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":8340,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":8341},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":8473,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":8474},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":8475,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":8476},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":8934,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":8935},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":8963,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":8964},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":9103,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":9104},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":11137,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":11138},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":11534,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":11535},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":11920,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":11921},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":11922,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":11923},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":12473,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":12474},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":14136,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":14137},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":15652,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":15653},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":16038,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":16039},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":16050,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":16051},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":16927,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":16928},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":18102,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":18103},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":18139,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":18140},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":18945,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":18946},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":20183,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20184},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":20618,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20619},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":20653,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20654},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":20655,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20656},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":20806,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20807},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":20874,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":20875},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":21093,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":21094},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":21138,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":21139},{"ruleId":"1939","severity":2,"message":"2403","line":1,"column":22033,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":22034},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":22198,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":22199},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":22261,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":22262},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":24289,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":24290},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":24351,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":24352},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":24353,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":24354},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":25139,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":25192},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":25193,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":25343},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":25207,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":25215},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":25251,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":25259},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":25356,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":25438},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":25381,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":25387},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":25409,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":25415},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":25453,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":25563},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":25577,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":25637},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":25588,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":25594},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":26511,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":26512},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":26601,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":26761},{"ruleId":"1775","severity":2,"message":"2423","line":1,"column":26625,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":26641},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":26642,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":26650},{"ruleId":"1939","severity":2,"message":"2492","line":1,"column":27126,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":27127},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":27457,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":27503},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":27468,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":27474},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":27517,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":27566},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":27528,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":27534},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":27580,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":27595},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":27609,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":27636},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":27609,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":27615},{"ruleId":"1939","severity":2,"message":"2403","line":1,"column":27850,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":27851},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":28081,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":28082},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":28681,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":28682},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":28709,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":28710},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":28711,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":28712},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":28934,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":28949},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":28976,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":29114},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":29125,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":29142},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":29172,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":29249},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":29172,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":29180},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":29227,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":29235},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":29264,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":29272},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":29330,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":29338},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":29448,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":29449},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":29478,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":29479},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":29946,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":29947},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":29958,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":29959},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":30282,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":30283},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":30294,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":30295},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":30925,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":30926},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":31080,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":31081},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":31120,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":31121},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":31266,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":31267},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":31933,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":32169},{"ruleId":"1775","severity":2,"message":"2396","line":1,"column":31946,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":31957},{"ruleId":"1775","severity":2,"message":"2423","line":1,"column":31999,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":32015},{"ruleId":"1775","severity":2,"message":"2423","line":1,"column":32030,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":32046},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":32276,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":32277},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":32601,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":32602},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":32613,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":32614},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":33086,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":33087},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":33258,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":33259},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":33260,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":33261},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":34014,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":34015},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":34218,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":34219},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":34493,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":34494},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":34523,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":34524},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":35114,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":35115},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":35425,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":35426},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":36252,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":36263},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":36292,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":36305},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":36334,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":36375},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":36611,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":36612},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":37205,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":37206},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":37289,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":37327},{"ruleId":"1775","severity":2,"message":"2024","line":1,"column":37310,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":37320},{"ruleId":"1775","severity":2,"message":"2427","line":1,"column":37353,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":37358},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":37370,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":37485},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":37393,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":37399},{"ruleId":"1775","severity":2,"message":"2024","line":1,"column":37417,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":37427},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":37433,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":37480},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":37433,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":37441},{"ruleId":"1939","severity":2,"message":"2493","line":1,"column":37628,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":37629},{"ruleId":"1939","severity":2,"message":"2493","line":1,"column":37693,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":37694},{"ruleId":"1939","severity":2,"message":"2493","line":1,"column":37874,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":37875},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":38037,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":38038},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":38066,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":38067},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":38068,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":38069},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":38322,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":38323},{"ruleId":"1939","severity":2,"message":"2494","line":1,"column":38716,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":38717},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":39324,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":39325},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":39409,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":39410},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":39411,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":39412},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":40764,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":40765},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":41051,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41052},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":41087,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41088},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":41089,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41090},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":41382,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41383},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":41420,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41421},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":41793,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41794},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":41831,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":41832},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":42270,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":42271},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":42282,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":42283},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":43588,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":43589},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":43617,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":43618},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":43619,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":43620},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":44010,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":44011},{"ruleId":"1939","severity":2,"message":"2451","line":1,"column":44039,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":44040},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":44041,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":44042},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":44228,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":44229},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":44960,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":44961},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":44987,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":44995},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":45063,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":45064},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":45103,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":45104},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":45572,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":45573},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":45715,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":45781},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":45719,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":45727},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":45787,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":45788},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":47039,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":47084},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":47098,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":47114},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":48352,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":48353},{"ruleId":"1775","severity":2,"message":"2024","line":1,"column":48396,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":48406},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":48412,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":48429},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":48446,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":48479},{"ruleId":"1775","severity":2,"message":"2391","line":1,"column":48456,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":48468},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":48485,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":48486},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":48899,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":48907},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":48938,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":48997},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":49614,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":49615},{"ruleId":"1775","severity":2,"message":"1776","line":1,"column":49713,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":49721},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":49793,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":49854},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":49856,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":49947},{"ruleId":"1775","severity":2,"message":"1783","line":1,"column":49927,"nodeType":"1777","messageId":"1778","endLine":1,"endColumn":49933},{"ruleId":"1939","severity":2,"message":"2452","line":1,"column":49956,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":49957},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":49958,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":49959},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":50238,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":50239},{"ruleId":"2386","severity":2,"message":"2387","line":1,"column":50282,"nodeType":"2388","messageId":"2389","endLine":1,"endColumn":50306},{"ruleId":"1939","severity":2,"message":"2494","line":1,"column":50411,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":50412},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":322,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":323},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":324,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":325},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":326,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":327},{"ruleId":"1939","severity":2,"message":"2495","line":1,"column":328,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":329},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":322,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":323},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":324,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":325},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":326,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":327},{"ruleId":"1939","severity":2,"message":"2495","line":1,"column":328,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":329},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":325,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":326},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":327,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":328},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":329,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":330},{"ruleId":"1939","severity":2,"message":"2496","line":1,"column":331,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":332},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":325,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":326},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":327,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":328},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":329,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":330},{"ruleId":"1939","severity":2,"message":"2496","line":1,"column":331,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":332},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":300,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":301},{"ruleId":"1939","severity":2,"message":"2495","line":1,"column":302,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":303},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":300,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":301},{"ruleId":"1939","severity":2,"message":"2495","line":1,"column":302,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":303},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":321,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":322},{"ruleId":"1939","severity":2,"message":"2439","line":1,"column":323,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":324},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":325,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":326},{"ruleId":"1939","severity":2,"message":"2497","line":1,"column":327,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":328},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":528,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":529},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":855,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":856},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":1631,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":1632},{"ruleId":"2442","severity":2,"message":"2443","line":81,"column":1078,"nodeType":"2444","messageId":"2445","endLine":81,"endColumn":1079},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":321,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":322},{"ruleId":"1939","severity":2,"message":"2439","line":1,"column":323,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":324},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":325,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":326},{"ruleId":"1939","severity":2,"message":"2497","line":1,"column":327,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":328},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":292,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":293},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":294,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":295},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":292,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":293},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":294,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":295},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":309,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":310},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":311,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":312},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":313,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":314},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":315,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":316},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":504,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":505},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":664,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":665},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":945,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":946},{"ruleId":"2442","severity":2,"message":"2443","line":1,"column":1916,"nodeType":"2444","messageId":"2445","endLine":1,"endColumn":1917},{"ruleId":"2442","severity":2,"message":"2443","line":2,"column":2469,"nodeType":"2444","messageId":"2445","endLine":2,"endColumn":2470},{"ruleId":"1939","severity":2,"message":"2440","line":1,"column":309,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":310},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":311,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":312},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":313,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":314},{"ruleId":"1939","severity":2,"message":"2438","line":1,"column":315,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":316},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":1101,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1102},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":1103,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1104},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":1105,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1106},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":1107,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1108},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":1109,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1110},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":1111,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1112},{"ruleId":"1939","severity":2,"message":"2446","line":1,"column":1101,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1102},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":1103,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1104},{"ruleId":"1939","severity":2,"message":"2490","line":1,"column":1105,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1106},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":1107,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1108},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":1109,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1110},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":1111,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":1112},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":272,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":273},{"ruleId":"1939","severity":2,"message":"2498","line":1,"column":274,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":275},{"ruleId":"1939","severity":2,"message":"2499","line":1,"column":276,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":277},{"ruleId":"1939","severity":2,"message":"2497","line":1,"column":278,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":279},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":272,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":273},{"ruleId":"1939","severity":2,"message":"2498","line":1,"column":274,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":275},{"ruleId":"1939","severity":2,"message":"2499","line":1,"column":276,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":277},{"ruleId":"1939","severity":2,"message":"2497","line":1,"column":278,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":279},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":300,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":301},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":302,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":303},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":296,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":297},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":298,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":299},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":300,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":301},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":302,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":303},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":305,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":306},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":307,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":308},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":309,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":310},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":311,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":312},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":305,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":306},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":307,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":308},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":309,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":310},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":311,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":312},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":299,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":300},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":301,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":302},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":303,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":304},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":305,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":306},{"ruleId":"1939","severity":2,"message":"2434","line":1,"column":299,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":300},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":301,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":302},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":303,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":304},{"ruleId":"1939","severity":2,"message":"2436","line":1,"column":305,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":306},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":289,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":290},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":291,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":292},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":293,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":294},{"ruleId":"1939","severity":2,"message":"2496","line":1,"column":295,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":296},{"ruleId":"1939","severity":2,"message":"2491","line":1,"column":289,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":290},{"ruleId":"1939","severity":2,"message":"2441","line":1,"column":291,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":292},{"ruleId":"1939","severity":2,"message":"2435","line":1,"column":293,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":294},{"ruleId":"1939","severity":2,"message":"2496","line":1,"column":295,"nodeType":null,"messageId":"1941","endLine":1,"endColumn":296},{"ruleId":"2500","severity":1,"message":"2501","line":27,"column":13,"nodeType":"1777","messageId":"2502","endLine":27,"endColumn":30},{"ruleId":"2500","severity":1,"message":"2501","line":42,"column":13,"nodeType":"1777","messageId":"2502","endLine":42,"endColumn":30},{"ruleId":"2500","severity":1,"message":"2501","line":57,"column":13,"nodeType":"1777","messageId":"2502","endLine":57,"endColumn":30},{"ruleId":"2500","severity":1,"message":"2501","line":73,"column":13,"nodeType":"1777","messageId":"2502","endLine":73,"endColumn":30},{"ruleId":"2500","severity":1,"message":"2501","line":86,"column":13,"nodeType":"1777","messageId":"2502","endLine":86,"endColumn":30},{"ruleId":"2503","severity":2,"message":"2504","line":77,"column":60,"nodeType":"2505","messageId":"2506","endLine":77,"endColumn":62,"suggestions":"2507","suppressions":"2508"},{"ruleId":"2509","severity":2,"message":"2510","line":125,"column":23,"nodeType":"2511","messageId":"2512","endLine":125,"endColumn":25,"fix":"2513","suppressions":"2514"},{"ruleId":"2509","severity":2,"message":"2510","line":166,"column":23,"nodeType":"2511","messageId":"2512","endLine":166,"endColumn":25,"fix":"2515","suppressions":"2516"},{"ruleId":"2509","severity":2,"message":"2510","line":201,"column":23,"nodeType":"2511","messageId":"2512","endLine":201,"endColumn":25,"fix":"2517","suppressions":"2518"},{"ruleId":"2509","severity":2,"message":"2510","line":237,"column":23,"nodeType":"2511","messageId":"2512","endLine":237,"endColumn":25,"fix":"2519","suppressions":"2520"},{"ruleId":"2503","severity":2,"message":"2504","line":254,"column":82,"nodeType":"2505","messageId":"2506","endLine":254,"endColumn":84,"suggestions":"2521","suppressions":"2522"},{"ruleId":"2509","severity":2,"message":"2510","line":317,"column":23,"nodeType":"2511","messageId":"2512","endLine":317,"endColumn":25,"fix":"2523","suppressions":"2524"},{"ruleId":"2509","severity":2,"message":"2510","line":345,"column":23,"nodeType":"2511","messageId":"2512","endLine":345,"endColumn":25,"fix":"2525","suppressions":"2526"},{"ruleId":"2509","severity":2,"message":"2510","line":362,"column":23,"nodeType":"2511","messageId":"2512","endLine":362,"endColumn":25,"fix":"2527","suppressions":"2528"},{"ruleId":"2509","severity":2,"message":"2510","line":425,"column":23,"nodeType":"2511","messageId":"2512","endLine":425,"endColumn":25,"fix":"2529","suppressions":"2530"},{"ruleId":"2509","severity":2,"message":"2510","line":449,"column":23,"nodeType":"2511","messageId":"2512","endLine":449,"endColumn":25,"fix":"2531","suppressions":"2532"},{"ruleId":"2509","severity":2,"message":"2510","line":473,"column":23,"nodeType":"2511","messageId":"2512","endLine":473,"endColumn":25,"fix":"2533","suppressions":"2534"},{"ruleId":"2509","severity":2,"message":"2510","line":515,"column":23,"nodeType":"2511","messageId":"2512","endLine":515,"endColumn":25,"fix":"2535","suppressions":"2536"},{"ruleId":"2503","severity":2,"message":"2504","line":524,"column":60,"nodeType":"2505","messageId":"2506","endLine":524,"endColumn":62,"suggestions":"2537","suppressions":"2538"},{"ruleId":"2509","severity":2,"message":"2510","line":563,"column":23,"nodeType":"2511","messageId":"2512","endLine":563,"endColumn":25,"fix":"2539","suppressions":"2540"},{"ruleId":"2509","severity":2,"message":"2510","line":594,"column":27,"nodeType":"2511","messageId":"2512","endLine":594,"endColumn":29,"fix":"2541","suppressions":"2542"},{"ruleId":"2509","severity":2,"message":"2510","line":622,"column":23,"nodeType":"2511","messageId":"2512","endLine":622,"endColumn":25,"fix":"2543","suppressions":"2544"},{"ruleId":"2509","severity":2,"message":"2510","line":657,"column":23,"nodeType":"2511","messageId":"2512","endLine":657,"endColumn":25,"fix":"2545","suppressions":"2546"},{"ruleId":"2509","severity":2,"message":"2510","line":683,"column":23,"nodeType":"2511","messageId":"2512","endLine":683,"endColumn":25,"fix":"2547","suppressions":"2548"},"no-undef","'document' is not defined.","Identifier","undef",["2549"],["2550"],["2551"],["2552"],"'window' is not defined.",["2553"],["2554"],["2555"],["2556"],["2557"],["2558"],["2559"],"no-redeclare","'ar' is already defined.","redeclared",["2560"],["2561"],"'at' is already defined.",["2562"],"'ak' is already defined.",["2563"],["2564"],"'am' is already defined.",["2565"],"'ag' is already defined.",["2566"],"'af' is already defined.",["2567"],["2568"],["2569"],["2570"],["2571"],"'V' is already defined.",["2572"],"'U' is already defined.",["2573"],"'ae' is already defined.",["2574"],["2575"],["2576"],"no-prototype-builtins","Do not access Object.prototype method 'hasOwnProperty' from target object.","CallExpression","prototypeBuildIn",["2577"],["2578"],"no-useless-escape","Unnecessary escape character: \\'.","Literal","unnecessaryEscape",["2579","2580"],["2581"],["2582","2583"],["2584"],["2585","2586"],["2587"],["2588","2589"],["2590"],["2591","2592"],["2593"],["2594","2595"],["2596"],["2597","2598"],["2599"],["2600","2601"],["2602"],["2603","2604"],["2605"],"Unnecessary escape character: \\\".",["2606","2607"],["2608"],["2609","2610"],["2611"],["2612","2613"],["2614"],["2615","2616"],["2617"],["2618","2619"],["2620"],["2621","2622"],["2623"],["2624","2625"],["2626"],["2627","2628"],["2629"],["2630","2631"],["2632"],["2633","2634"],["2635"],["2636","2637"],["2638"],["2639","2640"],["2641"],["2642","2643"],["2644"],["2645","2646"],["2647"],["2648","2649"],["2650"],["2651","2652"],["2653"],["2654","2655"],["2656"],["2657","2658"],["2659"],["2660","2661"],["2662"],["2663","2664"],["2665"],["2666","2667"],["2668"],"Unnecessary escape character: \\`.",["2669","2670"],["2671"],["2672","2673"],["2674"],["2675","2676"],["2677"],["2678","2679"],["2680"],["2681","2682"],["2683"],["2684","2685"],["2686"],["2687","2688"],["2689"],["2690","2691"],["2692"],["2693","2694"],["2695"],["2696","2697"],["2698"],["2699","2700"],["2701"],["2702","2703"],["2704"],["2705","2706"],["2707"],["2708","2709"],["2710"],"Unnecessary escape character: \\..",["2711","2712"],["2713"],["2714","2715"],["2716"],["2717","2718"],["2719"],["2720","2721"],["2722"],"Unnecessary escape character: \\/.",["2723","2724"],["2725"],"Unnecessary escape character: \\#.",["2726","2727"],["2728"],["2729"],"'Y' is already defined.",["2730"],"'navigator' is not defined.",["2731"],"@typescript-eslint/no-unused-vars","'ae' is assigned a value but never used.","unusedVar",["2732"],"'af' is assigned a value but never used.",["2733"],"'ag' is assigned a value but never used.",["2734"],"'W' is already defined.",["2735"],["2736"],["2737"],["2738"],"'console' is not defined.",["2739"],["2740"],["2741"],"Unnecessary escape character: \\!.",["2742","2743"],["2744"],"Unnecessary escape character: \\-.",["2745","2746"],["2747"],["2748","2749"],["2750"],["2751","2752"],["2753"],["2754","2755"],["2756"],["2757","2758"],["2759"],["2760","2761"],["2762"],["2763","2764"],["2765"],["2766","2767"],["2768"],["2769","2770"],["2771"],["2772","2773"],["2774"],["2775","2776"],["2777"],["2778","2779"],["2780"],["2781","2782"],["2783"],["2784","2785"],["2786"],["2787","2788"],["2789"],["2790","2791"],["2792"],["2793","2794"],["2795"],["2796","2797"],["2798"],["2799","2800"],["2801"],["2802","2803"],["2804"],["2805","2806"],["2807"],["2808","2809"],["2810"],["2811","2812"],["2813"],["2814","2815"],["2816"],["2817","2818"],["2819"],["2820","2821"],["2822"],["2823","2824"],["2825"],["2826","2827"],["2828"],["2829","2830"],["2831"],["2832"],["2833"],["2834"],["2835"],["2836"],["2837"],"'setTimeout' is not defined.",["2838"],["2839"],["2840"],["2841"],"'PR' is not defined.",["2842"],["2843"],["2844"],["2845"],["2846","2847"],["2848"],["2849","2850"],["2851"],["2852"],["2853"],["2854"],["2855"],["2856"],["2857"],["2858"],["2859"],["2860"],["2861","2862"],["2863"],["2864","2865"],["2866"],["2867","2868"],["2869"],["2870"],["2871","2872"],["2873"],["2874","2875"],["2876"],["2877","2878"],["2879"],"Unnecessary escape character: \\).",["2880","2881"],["2882"],["2883","2884"],["2885"],["2886","2887"],["2888"],["2889"],["2890","2891"],["2892"],["2893","2894"],["2895"],["2896"],["2897","2898"],["2899"],["2900"],["2901"],["2902"],["2903"],["2904","2905"],["2906"],["2907"],["2908","2909"],["2910"],["2911","2912"],["2913"],["2914"],["2915"],["2916"],["2917","2918"],["2919"],["2920"],["2921"],["2922"],["2923","2924"],["2925"],["2926","2927"],["2928"],["2929","2930"],["2931"],["2932"],["2933"],["2934"],["2935"],["2936"],["2937"],["2938"],["2939"],["2940"],["2941"],["2942"],["2943"],["2944"],["2945"],["2946"],["2947"],["2948"],["2949"],["2950"],["2951"],["2952"],["2953"],["2954"],["2955"],["2956"],["2957"],["2958","2959"],["2960"],["2961","2962"],["2963"],["2964","2965"],["2966"],["2967","2968"],["2969"],["2970","2971"],["2972"],["2973","2974"],["2975"],["2976","2977"],["2978"],["2979","2980"],["2981"],["2982","2983"],["2984"],["2985","2986"],["2987"],["2988","2989"],["2990"],["2991","2992"],["2993"],["2994","2995"],["2996"],["2997","2998"],["2999"],["3000","3001"],["3002"],["3003","3004"],["3005"],["3006","3007"],["3008"],["3009","3010"],["3011"],["3012","3013"],["3014"],["3015","3016"],["3017"],["3018","3019"],["3020"],["3021","3022"],["3023"],["3024","3025"],["3026"],["3027","3028"],["3029"],["3030","3031"],["3032"],["3033","3034"],["3035"],["3036","3037"],["3038"],["3039","3040"],["3041"],["3042","3043"],["3044"],["3045","3046"],["3047"],["3048","3049"],["3050"],["3051","3052"],["3053"],["3054","3055"],["3056"],["3057","3058"],["3059"],["3060","3061"],["3062"],["3063","3064"],["3065"],["3066","3067"],["3068"],["3069","3070"],["3071"],["3072","3073"],["3074"],["3075","3076"],["3077"],["3078","3079"],["3080"],["3081","3082"],["3083"],["3084","3085"],["3086"],["3087","3088"],["3089"],["3090","3091"],["3092"],["3093","3094"],["3095"],["3096","3097"],["3098"],["3099","3100"],["3101"],["3102","3103"],["3104"],["3105","3106"],["3107"],["3108"],["3109"],["3110"],["3111"],["3112"],["3113"],["3114"],["3115"],["3116"],["3117"],["3118"],["3119"],["3120"],["3121","3122"],["3123"],["3124","3125"],["3126"],["3127","3128"],["3129"],["3130","3131"],["3132"],["3133","3134"],["3135"],["3136","3137"],["3138"],["3139","3140"],["3141"],["3142","3143"],["3144"],["3145","3146"],["3147"],["3148","3149"],["3150"],["3151","3152"],["3153"],["3154","3155"],["3156"],["3157","3158"],["3159"],["3160","3161"],["3162"],["3163","3164"],["3165"],["3166","3167"],["3168"],["3169","3170"],["3171"],["3172","3173"],["3174"],["3175","3176"],["3177"],["3178","3179"],["3180"],["3181","3182"],["3183"],["3184","3185"],["3186"],["3187","3188"],["3189"],["3190","3191"],["3192"],["3193","3194"],["3195"],["3196","3197"],["3198"],["3199","3200"],["3201"],["3202","3203"],["3204"],["3205","3206"],["3207"],["3208","3209"],["3210"],["3211"],["3212"],["3213"],["3214"],["3215"],["3216"],["3217"],["3218"],["3219"],["3220"],["3221"],["3222"],["3223"],["3224"],["3225","3226"],["3227"],["3228","3229"],["3230"],["3231"],["3232"],["3233"],["3234"],["3235"],["3236"],["3237"],["3238"],["3239"],["3240","3241"],["3242"],["3243","3244"],["3245"],["3246","3247"],["3248"],["3249"],["3250","3251"],["3252"],["3253","3254"],["3255"],["3256","3257"],["3258"],["3259","3260"],["3261"],["3262","3263"],["3264"],["3265","3266"],["3267"],["3268"],["3269","3270"],["3271"],["3272","3273"],["3274"],["3275"],["3276","3277"],["3278"],["3279"],["3280"],["3281"],["3282"],["3283","3284"],["3285"],["3286"],["3287","3288"],["3289"],["3290","3291"],["3292"],["3293"],["3294"],["3295"],["3296","3297"],["3298"],["3299"],["3300"],["3301"],["3302","3303"],["3304"],["3305","3306"],["3307"],["3308","3309"],["3310"],["3311"],["3312"],["3313"],["3314"],["3315"],["3316"],"'getScrollOffset' is defined but never used.","'withBase' is defined but never used.","@typescript-eslint/no-unused-expressions","Expected an assignment or function call and instead saw an expression.","ExpressionStatement","unusedExpression","'WorkerGlobalScope' is not defined.","'clearTimeout' is not defined.","'clearInterval' is not defined.","'setInterval' is not defined.","'Element' is not defined.","'MutationObserver' is not defined.","'HTMLElement' is not defined.","'KeyframeEffect' is not defined.","'Blob' is not defined.","'HTMLCanvasElement' is not defined.","'HTMLImageElement' is not defined.","'FileReader' is not defined.","'BroadcastChannel' is not defined.","'e' is defined but never used.","'global' is not defined.","'self' is not defined.","'Storage' is not defined.","'StorageEvent' is not defined.","'CustomEvent' is not defined.","'DeviceMotionEvent' is not defined.","'ResizeObserver' is not defined.","'requestAnimationFrame' is not defined.","'IntersectionObserver' is not defined.","'EventSource' is not defined.","'Headers' is not defined.","'AbortController' is not defined.","'FormData' is not defined.","'FileList' is not defined.","'DataTransfer' is not defined.","'performance' is not defined.","'Image' is not defined.","'Window' is not defined.","'Document' is not defined.","'getComputedStyle' is not defined.","'MouseEvent' is not defined.","'URL' is not defined.","'PerformanceObserver' is not defined.","'Event' is not defined.","'SpeechSynthesisUtterance' is not defined.","'URLSearchParams' is not defined.","'Notification' is not defined.","'WebSocket' is not defined.","'Worker' is not defined.","'postMessage' is not defined.","'s' is defined but never used.","'c' is defined but never used.","'p' is defined but never used.","'f' is defined but never used.","'h' is defined but never used.","'k' is defined but never used.","'r' is defined but never used.","'d' is defined but never used.","no-irregular-whitespace","Irregular whitespace not allowed.","Program","noIrregularWhitespace","'n' is defined but never used.","@typescript-eslint/no-this-alias","Unexpected aliasing of 'this' to local variable.","thisAssignment","'t' is assigned a value but never used.","'t' is defined but never used.","'i' is defined but never used.",["3317"],"'s' is assigned a value but never used.","'n' is assigned a value but never used.","'H' is assigned a value but never used.","'p' is assigned a value but never used.","'Y' is assigned a value but never used.","no-setter-return","Setter cannot return a value.","AssignmentExpression","returnsValue","'r' is assigned a value but never used.","'o' is assigned a value but never used.","no-empty","Empty block statement.","BlockStatement","unexpected",["3318"],["3319"],"no-cond-assign","Expected a conditional expression and instead saw an assignment.","missing","'SVGElement' is not defined.","'MathMLElement' is not defined.","'location' is not defined.","no-control-regex","Unexpected control character(s) in regular expression: \\x00, \\x1f.","'__VP_HASH_MAP__' is not defined.","'history' is not defined.","'fetch' is not defined.",["3320"],"'SVGAElement' is not defined.","'HashChangeEvent' is not defined.","'XMLHttpRequest' is not defined.","'SVGAnimatedString' is not defined.","no-constant-binary-expression","Unexpected constant truthiness on the left-hand side of a `&&` expression.","constantShortCircuit","'o' is defined but never used.","'l' is defined but never used.","'V' is defined but never used.","'I' is defined but never used.","'y' is defined but never used.","'g' is defined but never used.","'u' is defined but never used.","'E' is defined but never used.","'T' is defined but never used.","'O' is defined but never used.","@typescript-eslint/no-unsafe-call","Unsafe call of a(n) `error` type typed value.","unsafeCall","@typescript-eslint/require-await","Async arrow function has no 'await' expression.","ArrowFunctionExpression","missingAwait",["3321"],["3322"],"@typescript-eslint/no-unnecessary-condition","Unnecessary optional chain on a non-nullish value.","MemberExpression","neverOptionalChain",{"range":"3323","text":"3324"},["3325"],{"range":"3326","text":"3324"},["3327"],{"range":"3328","text":"3324"},["3329"],{"range":"3330","text":"3324"},["3331"],["3332"],["3333"],{"range":"3334","text":"3324"},["3335"],{"range":"3336","text":"3324"},["3337"],{"range":"3338","text":"3324"},["3339"],{"range":"3340","text":"3324"},["3341"],{"range":"3342","text":"3324"},["3343"],{"range":"3344","text":"3324"},["3345"],{"range":"3346","text":"3324"},["3347"],["3348"],["3349"],{"range":"3350","text":"3324"},["3351"],{"range":"3352","text":"3324"},["3353"],{"range":"3354","text":"3324"},["3355"],{"range":"3356","text":"3324"},["3357"],{"range":"3358","text":"3324"},["3359"],{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3362","fix":"3363","desc":"3364"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3366","desc":"3367"},{"messageId":"3368","fix":"3369","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3371","desc":"3367"},{"messageId":"3368","fix":"3372","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3373","desc":"3367"},{"messageId":"3368","fix":"3374","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3375","desc":"3367"},{"messageId":"3368","fix":"3376","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3377","desc":"3367"},{"messageId":"3368","fix":"3378","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3379","desc":"3367"},{"messageId":"3368","fix":"3380","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3381","desc":"3367"},{"messageId":"3368","fix":"3382","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3383","desc":"3367"},{"messageId":"3368","fix":"3384","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3385","desc":"3367"},{"messageId":"3368","fix":"3386","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3387","desc":"3367"},{"messageId":"3368","fix":"3388","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3389","desc":"3367"},{"messageId":"3368","fix":"3390","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3391","desc":"3367"},{"messageId":"3368","fix":"3392","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3393","desc":"3367"},{"messageId":"3368","fix":"3394","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3395","desc":"3367"},{"messageId":"3368","fix":"3396","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3397","desc":"3367"},{"messageId":"3368","fix":"3398","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3399","desc":"3367"},{"messageId":"3368","fix":"3400","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3401","desc":"3367"},{"messageId":"3368","fix":"3402","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3403","desc":"3367"},{"messageId":"3368","fix":"3404","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3405","desc":"3367"},{"messageId":"3368","fix":"3406","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3407","desc":"3367"},{"messageId":"3368","fix":"3408","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3409","desc":"3367"},{"messageId":"3368","fix":"3410","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3411","desc":"3367"},{"messageId":"3368","fix":"3412","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3413","desc":"3367"},{"messageId":"3368","fix":"3414","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3415","desc":"3367"},{"messageId":"3368","fix":"3416","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3417","desc":"3367"},{"messageId":"3368","fix":"3418","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3419","desc":"3367"},{"messageId":"3368","fix":"3420","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3421","desc":"3367"},{"messageId":"3368","fix":"3422","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3423","desc":"3367"},{"messageId":"3368","fix":"3424","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3425","desc":"3367"},{"messageId":"3368","fix":"3426","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3427","desc":"3367"},{"messageId":"3368","fix":"3428","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3429","desc":"3367"},{"messageId":"3368","fix":"3430","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3431","desc":"3367"},{"messageId":"3368","fix":"3432","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3433","desc":"3367"},{"messageId":"3368","fix":"3434","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3435","desc":"3367"},{"messageId":"3368","fix":"3436","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3437","desc":"3367"},{"messageId":"3368","fix":"3438","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3439","desc":"3367"},{"messageId":"3368","fix":"3440","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3441","desc":"3367"},{"messageId":"3368","fix":"3442","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3443","desc":"3367"},{"messageId":"3368","fix":"3444","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3445","desc":"3367"},{"messageId":"3368","fix":"3446","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3447","desc":"3367"},{"messageId":"3368","fix":"3448","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3449","desc":"3367"},{"messageId":"3368","fix":"3450","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3451","desc":"3367"},{"messageId":"3368","fix":"3452","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3453","desc":"3367"},{"messageId":"3368","fix":"3454","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3455","desc":"3367"},{"messageId":"3368","fix":"3456","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3457","desc":"3367"},{"messageId":"3368","fix":"3458","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3459","desc":"3367"},{"messageId":"3368","fix":"3460","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3461","desc":"3367"},{"messageId":"3368","fix":"3462","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3463","desc":"3367"},{"messageId":"3368","fix":"3464","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3465","desc":"3367"},{"messageId":"3368","fix":"3466","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3467","desc":"3367"},{"messageId":"3368","fix":"3468","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3469","fix":"3470","desc":"3364"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3471","fix":"3472","desc":"3364"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3473","desc":"3367"},{"messageId":"3368","fix":"3474","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3475","desc":"3367"},{"messageId":"3368","fix":"3476","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3477","desc":"3367"},{"messageId":"3368","fix":"3478","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3479","desc":"3367"},{"messageId":"3368","fix":"3480","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3481","desc":"3367"},{"messageId":"3368","fix":"3482","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3483","desc":"3367"},{"messageId":"3368","fix":"3484","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3485","desc":"3367"},{"messageId":"3368","fix":"3486","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3487","desc":"3367"},{"messageId":"3368","fix":"3488","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3489","desc":"3367"},{"messageId":"3368","fix":"3490","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3491","desc":"3367"},{"messageId":"3368","fix":"3492","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3493","desc":"3367"},{"messageId":"3368","fix":"3494","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3495","desc":"3367"},{"messageId":"3368","fix":"3496","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3497","desc":"3367"},{"messageId":"3368","fix":"3498","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3499","desc":"3367"},{"messageId":"3368","fix":"3500","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3501","desc":"3367"},{"messageId":"3368","fix":"3502","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3503","desc":"3367"},{"messageId":"3368","fix":"3504","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3505","desc":"3367"},{"messageId":"3368","fix":"3506","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3507","desc":"3367"},{"messageId":"3368","fix":"3508","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3509","desc":"3367"},{"messageId":"3368","fix":"3510","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3511","desc":"3367"},{"messageId":"3368","fix":"3512","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3513","desc":"3367"},{"messageId":"3368","fix":"3514","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3515","desc":"3367"},{"messageId":"3368","fix":"3516","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3517","desc":"3367"},{"messageId":"3368","fix":"3518","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3519","desc":"3367"},{"messageId":"3368","fix":"3520","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3521","desc":"3367"},{"messageId":"3368","fix":"3522","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3523","desc":"3367"},{"messageId":"3368","fix":"3524","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3525","desc":"3367"},{"messageId":"3368","fix":"3526","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3527","desc":"3367"},{"messageId":"3368","fix":"3528","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3529","desc":"3367"},{"messageId":"3368","fix":"3530","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3531","desc":"3367"},{"messageId":"3368","fix":"3532","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3533","desc":"3367"},{"messageId":"3368","fix":"3534","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3535","desc":"3367"},{"messageId":"3368","fix":"3536","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3537","desc":"3367"},{"messageId":"3368","fix":"3538","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3539","desc":"3367"},{"messageId":"3368","fix":"3540","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3541","desc":"3367"},{"messageId":"3368","fix":"3542","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3543","desc":"3367"},{"messageId":"3368","fix":"3544","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3545","desc":"3367"},{"messageId":"3368","fix":"3546","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3547","desc":"3367"},{"messageId":"3368","fix":"3548","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3549","desc":"3367"},{"messageId":"3368","fix":"3550","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3551","desc":"3367"},{"messageId":"3368","fix":"3552","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3553","desc":"3367"},{"messageId":"3368","fix":"3554","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3555","desc":"3367"},{"messageId":"3368","fix":"3556","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3557","desc":"3367"},{"messageId":"3368","fix":"3558","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3559","desc":"3367"},{"messageId":"3368","fix":"3560","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3561","desc":"3367"},{"messageId":"3368","fix":"3562","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3563","desc":"3367"},{"messageId":"3368","fix":"3564","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3565","desc":"3367"},{"messageId":"3368","fix":"3566","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3567","desc":"3367"},{"messageId":"3368","fix":"3568","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3569","desc":"3367"},{"messageId":"3368","fix":"3570","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3571","desc":"3367"},{"messageId":"3368","fix":"3572","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3573","desc":"3367"},{"messageId":"3368","fix":"3574","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3575","fix":"3576","desc":"3364"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3577","desc":"3367"},{"messageId":"3368","fix":"3578","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3579","desc":"3367"},{"messageId":"3368","fix":"3580","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3581","desc":"3367"},{"messageId":"3368","fix":"3582","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3583","desc":"3367"},{"messageId":"3368","fix":"3584","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3585","desc":"3367"},{"messageId":"3368","fix":"3586","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3587","desc":"3367"},{"messageId":"3368","fix":"3588","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3589","desc":"3367"},{"messageId":"3368","fix":"3590","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3591","desc":"3367"},{"messageId":"3368","fix":"3592","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3593","desc":"3367"},{"messageId":"3368","fix":"3594","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3595","desc":"3367"},{"messageId":"3368","fix":"3596","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3597","desc":"3367"},{"messageId":"3368","fix":"3598","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3599","desc":"3367"},{"messageId":"3368","fix":"3600","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3601","desc":"3367"},{"messageId":"3368","fix":"3602","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3603","desc":"3367"},{"messageId":"3368","fix":"3604","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3605","desc":"3367"},{"messageId":"3368","fix":"3606","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3607","desc":"3367"},{"messageId":"3368","fix":"3608","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3609","desc":"3367"},{"messageId":"3368","fix":"3610","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3611","desc":"3367"},{"messageId":"3368","fix":"3612","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3613","desc":"3367"},{"messageId":"3368","fix":"3614","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3615","desc":"3367"},{"messageId":"3368","fix":"3616","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3617","desc":"3367"},{"messageId":"3368","fix":"3618","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3619","desc":"3367"},{"messageId":"3368","fix":"3620","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3621","desc":"3367"},{"messageId":"3368","fix":"3622","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3623","desc":"3367"},{"messageId":"3368","fix":"3624","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3625","desc":"3367"},{"messageId":"3368","fix":"3626","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3627","desc":"3367"},{"messageId":"3368","fix":"3628","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3629","desc":"3367"},{"messageId":"3368","fix":"3630","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3631","desc":"3367"},{"messageId":"3368","fix":"3632","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3633","desc":"3367"},{"messageId":"3368","fix":"3634","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3635","desc":"3367"},{"messageId":"3368","fix":"3636","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3637","desc":"3367"},{"messageId":"3368","fix":"3638","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3639","desc":"3367"},{"messageId":"3368","fix":"3640","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3641","desc":"3367"},{"messageId":"3368","fix":"3642","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3643","desc":"3367"},{"messageId":"3368","fix":"3644","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3645","desc":"3367"},{"messageId":"3368","fix":"3646","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3647","desc":"3367"},{"messageId":"3368","fix":"3648","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3649","desc":"3367"},{"messageId":"3368","fix":"3650","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3651","desc":"3367"},{"messageId":"3368","fix":"3652","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3653","desc":"3367"},{"messageId":"3368","fix":"3654","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3655","desc":"3367"},{"messageId":"3368","fix":"3656","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3657","desc":"3367"},{"messageId":"3368","fix":"3658","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3659","desc":"3367"},{"messageId":"3368","fix":"3660","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3661","desc":"3367"},{"messageId":"3368","fix":"3662","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3663","desc":"3367"},{"messageId":"3368","fix":"3664","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3665","desc":"3367"},{"messageId":"3368","fix":"3666","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3667","desc":"3367"},{"messageId":"3368","fix":"3668","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3669","desc":"3367"},{"messageId":"3368","fix":"3670","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3671","desc":"3367"},{"messageId":"3368","fix":"3672","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3673","desc":"3367"},{"messageId":"3368","fix":"3674","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3675","desc":"3367"},{"messageId":"3368","fix":"3676","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3677","fix":"3678","desc":"3364"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3679","fix":"3680","desc":"3364"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3681","desc":"3367"},{"messageId":"3368","fix":"3682","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3683","desc":"3367"},{"messageId":"3368","fix":"3684","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3685","desc":"3367"},{"messageId":"3368","fix":"3686","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3687","desc":"3367"},{"messageId":"3368","fix":"3688","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3689","desc":"3367"},{"messageId":"3368","fix":"3690","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3691","desc":"3367"},{"messageId":"3368","fix":"3692","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3693","desc":"3367"},{"messageId":"3368","fix":"3694","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3695","desc":"3367"},{"messageId":"3368","fix":"3696","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3697","desc":"3367"},{"messageId":"3368","fix":"3698","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3699","desc":"3367"},{"messageId":"3368","fix":"3700","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3701","desc":"3367"},{"messageId":"3368","fix":"3702","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3703","desc":"3367"},{"messageId":"3368","fix":"3704","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3705","desc":"3367"},{"messageId":"3368","fix":"3706","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3707","desc":"3367"},{"messageId":"3368","fix":"3708","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3709","desc":"3367"},{"messageId":"3368","fix":"3710","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3711","desc":"3367"},{"messageId":"3368","fix":"3712","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3713","desc":"3367"},{"messageId":"3368","fix":"3714","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3715","desc":"3367"},{"messageId":"3368","fix":"3716","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3717","desc":"3367"},{"messageId":"3368","fix":"3718","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3719","desc":"3367"},{"messageId":"3368","fix":"3720","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3721","desc":"3367"},{"messageId":"3368","fix":"3722","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3723","desc":"3367"},{"messageId":"3368","fix":"3724","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3725","desc":"3367"},{"messageId":"3368","fix":"3726","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3727","desc":"3367"},{"messageId":"3368","fix":"3728","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3729","desc":"3367"},{"messageId":"3368","fix":"3730","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3731","desc":"3367"},{"messageId":"3368","fix":"3732","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3733","desc":"3367"},{"messageId":"3368","fix":"3734","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3735","desc":"3367"},{"messageId":"3368","fix":"3736","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3737","desc":"3367"},{"messageId":"3368","fix":"3738","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3739","desc":"3367"},{"messageId":"3368","fix":"3740","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3741","desc":"3367"},{"messageId":"3368","fix":"3742","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3743","desc":"3367"},{"messageId":"3368","fix":"3744","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3745","desc":"3367"},{"messageId":"3368","fix":"3746","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3747","desc":"3367"},{"messageId":"3368","fix":"3748","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3749","desc":"3367"},{"messageId":"3368","fix":"3750","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3751","desc":"3367"},{"messageId":"3368","fix":"3752","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3753","desc":"3367"},{"messageId":"3368","fix":"3754","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3755","desc":"3367"},{"messageId":"3368","fix":"3756","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3757","desc":"3367"},{"messageId":"3368","fix":"3758","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3759","desc":"3367"},{"messageId":"3368","fix":"3760","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3761","desc":"3367"},{"messageId":"3368","fix":"3762","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3763","desc":"3367"},{"messageId":"3368","fix":"3764","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3765","desc":"3367"},{"messageId":"3368","fix":"3766","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3767","desc":"3367"},{"messageId":"3368","fix":"3768","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3769","desc":"3367"},{"messageId":"3368","fix":"3770","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3771","desc":"3367"},{"messageId":"3368","fix":"3772","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3773","desc":"3367"},{"messageId":"3368","fix":"3774","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3775","desc":"3367"},{"messageId":"3368","fix":"3776","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3777","desc":"3367"},{"messageId":"3368","fix":"3778","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3779","desc":"3367"},{"messageId":"3368","fix":"3780","desc":"3370"},{"kind":"3360","justification":"3324"},{"messageId":"3365","fix":"3781","desc":"3367"},{"messageId":"3368","fix":"3782","desc":"3370"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"kind":"3360","justification":"3324"},{"messageId":"3361","data":"3783","fix":"3784","desc":"3364"},{"messageId":"3785","data":"3786","fix":"3787","desc":"3788"},{"messageId":"3785","data":"3789","fix":"3790","desc":"3788"},{"messageId":"3785","data":"3791","fix":"3792","desc":"3788"},{"messageId":"3793","fix":"3794","desc":"3795"},{"kind":"3360","justification":"3324"},[4289,4291],"",{"kind":"3360","justification":"3324"},[5753,5755],{"kind":"3360","justification":"3324"},[6957,6959],{"kind":"3360","justification":"3324"},[8231,8233],{"kind":"3360","justification":"3324"},{"messageId":"3793","fix":"3796","desc":"3795"},{"kind":"3360","justification":"3324"},[11293,11295],{"kind":"3360","justification":"3324"},[12319,12321],{"kind":"3360","justification":"3324"},[13129,13131],{"kind":"3360","justification":"3324"},[16300,16302],{"kind":"3360","justification":"3324"},[17446,17448],{"kind":"3360","justification":"3324"},[18605,18607],{"kind":"3360","justification":"3324"},[20228,20230],{"kind":"3360","justification":"3324"},{"messageId":"3793","fix":"3797","desc":"3795"},{"kind":"3360","justification":"3324"},[22103,22105],{"kind":"3360","justification":"3324"},[23711,23713],{"kind":"3360","justification":"3324"},[24822,24824],{"kind":"3360","justification":"3324"},[26333,26335],{"kind":"3360","justification":"3324"},[27530,27532],{"kind":"3360","justification":"3324"},"directive","callObjectPrototype",{"prop":"3798"},{"range":"3799","text":"3800"},"Call Object.prototype.hasOwnProperty explicitly.","removeEscape",{"range":"3801","text":"3324"},"Remove the `\\`. This maintains the current functionality.","escapeBackslash",{"range":"3802","text":"3803"},"Replace the `\\` with `\\\\` to include the actual backslash character.",{"range":"3804","text":"3324"},{"range":"3805","text":"3803"},{"range":"3806","text":"3324"},{"range":"3807","text":"3803"},{"range":"3808","text":"3324"},{"range":"3809","text":"3803"},{"range":"3810","text":"3324"},{"range":"3811","text":"3803"},{"range":"3812","text":"3324"},{"range":"3813","text":"3803"},{"range":"3814","text":"3324"},{"range":"3815","text":"3803"},{"range":"3816","text":"3324"},{"range":"3817","text":"3803"},{"range":"3818","text":"3324"},{"range":"3819","text":"3803"},{"range":"3820","text":"3324"},{"range":"3821","text":"3803"},{"range":"3822","text":"3324"},{"range":"3823","text":"3803"},{"range":"3824","text":"3324"},{"range":"3825","text":"3803"},{"range":"3826","text":"3324"},{"range":"3827","text":"3803"},{"range":"3828","text":"3324"},{"range":"3829","text":"3803"},{"range":"3830","text":"3324"},{"range":"3831","text":"3803"},{"range":"3832","text":"3324"},{"range":"3833","text":"3803"},{"range":"3834","text":"3324"},{"range":"3835","text":"3803"},{"range":"3836","text":"3324"},{"range":"3837","text":"3803"},{"range":"3838","text":"3324"},{"range":"3839","text":"3803"},{"range":"3840","text":"3324"},{"range":"3841","text":"3803"},{"range":"3842","text":"3324"},{"range":"3843","text":"3803"},{"range":"3844","text":"3324"},{"range":"3845","text":"3803"},{"range":"3846","text":"3324"},{"range":"3847","text":"3803"},{"range":"3848","text":"3324"},{"range":"3849","text":"3803"},{"range":"3850","text":"3324"},{"range":"3851","text":"3803"},{"range":"3852","text":"3324"},{"range":"3853","text":"3803"},{"range":"3854","text":"3324"},{"range":"3855","text":"3803"},{"range":"3856","text":"3324"},{"range":"3857","text":"3803"},{"range":"3858","text":"3324"},{"range":"3859","text":"3803"},{"range":"3860","text":"3324"},{"range":"3861","text":"3803"},{"range":"3862","text":"3324"},{"range":"3863","text":"3803"},{"range":"3864","text":"3324"},{"range":"3865","text":"3803"},{"range":"3866","text":"3324"},{"range":"3867","text":"3803"},{"range":"3868","text":"3324"},{"range":"3869","text":"3803"},{"range":"3870","text":"3324"},{"range":"3871","text":"3803"},{"range":"3872","text":"3324"},{"range":"3873","text":"3803"},{"range":"3874","text":"3324"},{"range":"3875","text":"3803"},{"range":"3876","text":"3324"},{"range":"3877","text":"3803"},{"range":"3878","text":"3324"},{"range":"3879","text":"3803"},{"range":"3880","text":"3324"},{"range":"3881","text":"3803"},{"range":"3882","text":"3324"},{"range":"3883","text":"3803"},{"range":"3884","text":"3324"},{"range":"3885","text":"3803"},{"range":"3886","text":"3324"},{"range":"3887","text":"3803"},{"range":"3888","text":"3324"},{"range":"3889","text":"3803"},{"range":"3890","text":"3324"},{"range":"3891","text":"3803"},{"range":"3892","text":"3324"},{"range":"3893","text":"3803"},{"range":"3894","text":"3324"},{"range":"3895","text":"3803"},{"range":"3896","text":"3324"},{"range":"3897","text":"3803"},{"range":"3898","text":"3324"},{"range":"3899","text":"3803"},{"range":"3900","text":"3324"},{"range":"3901","text":"3803"},{"prop":"3798"},{"range":"3902","text":"3903"},{"prop":"3798"},{"range":"3904","text":"3903"},{"range":"3905","text":"3324"},{"range":"3906","text":"3803"},{"range":"3907","text":"3324"},{"range":"3908","text":"3803"},{"range":"3909","text":"3324"},{"range":"3910","text":"3803"},{"range":"3911","text":"3324"},{"range":"3912","text":"3803"},{"range":"3913","text":"3324"},{"range":"3914","text":"3803"},{"range":"3915","text":"3324"},{"range":"3916","text":"3803"},{"range":"3917","text":"3324"},{"range":"3918","text":"3803"},{"range":"3919","text":"3324"},{"range":"3920","text":"3803"},{"range":"3921","text":"3324"},{"range":"3922","text":"3803"},{"range":"3923","text":"3324"},{"range":"3924","text":"3803"},{"range":"3925","text":"3324"},{"range":"3926","text":"3803"},{"range":"3927","text":"3324"},{"range":"3928","text":"3803"},{"range":"3929","text":"3324"},{"range":"3930","text":"3803"},{"range":"3931","text":"3324"},{"range":"3932","text":"3803"},{"range":"3933","text":"3324"},{"range":"3934","text":"3803"},{"range":"3935","text":"3324"},{"range":"3936","text":"3803"},{"range":"3937","text":"3324"},{"range":"3938","text":"3803"},{"range":"3939","text":"3324"},{"range":"3940","text":"3803"},{"range":"3941","text":"3324"},{"range":"3942","text":"3803"},{"range":"3943","text":"3324"},{"range":"3944","text":"3803"},{"range":"3945","text":"3324"},{"range":"3946","text":"3803"},{"range":"3947","text":"3324"},{"range":"3948","text":"3803"},{"range":"3949","text":"3324"},{"range":"3950","text":"3803"},{"range":"3951","text":"3324"},{"range":"3952","text":"3803"},{"range":"3953","text":"3324"},{"range":"3954","text":"3803"},{"range":"3955","text":"3324"},{"range":"3956","text":"3803"},{"range":"3957","text":"3324"},{"range":"3958","text":"3803"},{"range":"3959","text":"3324"},{"range":"3960","text":"3803"},{"range":"3961","text":"3324"},{"range":"3962","text":"3803"},{"range":"3963","text":"3324"},{"range":"3964","text":"3803"},{"range":"3965","text":"3324"},{"range":"3966","text":"3803"},{"range":"3967","text":"3324"},{"range":"3968","text":"3803"},{"range":"3969","text":"3324"},{"range":"3970","text":"3803"},{"range":"3971","text":"3324"},{"range":"3972","text":"3803"},{"range":"3973","text":"3324"},{"range":"3974","text":"3803"},{"range":"3975","text":"3324"},{"range":"3976","text":"3803"},{"range":"3977","text":"3324"},{"range":"3978","text":"3803"},{"range":"3979","text":"3324"},{"range":"3980","text":"3803"},{"range":"3981","text":"3324"},{"range":"3982","text":"3803"},{"range":"3983","text":"3324"},{"range":"3984","text":"3803"},{"range":"3985","text":"3324"},{"range":"3986","text":"3803"},{"range":"3987","text":"3324"},{"range":"3988","text":"3803"},{"range":"3989","text":"3324"},{"range":"3990","text":"3803"},{"range":"3991","text":"3324"},{"range":"3992","text":"3803"},{"range":"3993","text":"3324"},{"range":"3994","text":"3803"},{"range":"3995","text":"3324"},{"range":"3996","text":"3803"},{"range":"3997","text":"3324"},{"range":"3998","text":"3803"},{"range":"3999","text":"3324"},{"range":"4000","text":"3803"},{"range":"4001","text":"3324"},{"range":"4002","text":"3803"},{"range":"4003","text":"3324"},{"range":"4004","text":"3803"},{"range":"4005","text":"3324"},{"range":"4006","text":"3803"},{"prop":"3798"},{"range":"4007","text":"3800"},{"range":"4008","text":"3324"},{"range":"4009","text":"3803"},{"range":"4010","text":"3324"},{"range":"4011","text":"3803"},{"range":"4012","text":"3324"},{"range":"4013","text":"3803"},{"range":"4014","text":"3324"},{"range":"4015","text":"3803"},{"range":"4016","text":"3324"},{"range":"4017","text":"3803"},{"range":"4018","text":"3324"},{"range":"4019","text":"3803"},{"range":"4020","text":"3324"},{"range":"4021","text":"3803"},{"range":"4022","text":"3324"},{"range":"4023","text":"3803"},{"range":"4024","text":"3324"},{"range":"4025","text":"3803"},{"range":"4026","text":"3324"},{"range":"4027","text":"3803"},{"range":"4028","text":"3324"},{"range":"4029","text":"3803"},{"range":"4030","text":"3324"},{"range":"4031","text":"3803"},{"range":"4032","text":"3324"},{"range":"4033","text":"3803"},{"range":"4034","text":"3324"},{"range":"4035","text":"3803"},{"range":"4036","text":"3324"},{"range":"4037","text":"3803"},{"range":"4038","text":"3324"},{"range":"4039","text":"3803"},{"range":"4040","text":"3324"},{"range":"4041","text":"3803"},{"range":"4042","text":"3324"},{"range":"4043","text":"3803"},{"range":"4044","text":"3324"},{"range":"4045","text":"3803"},{"range":"4046","text":"3324"},{"range":"4047","text":"3803"},{"range":"4048","text":"3324"},{"range":"4049","text":"3803"},{"range":"4050","text":"3324"},{"range":"4051","text":"3803"},{"range":"4052","text":"3324"},{"range":"4053","text":"3803"},{"range":"4054","text":"3324"},{"range":"4055","text":"3803"},{"range":"4056","text":"3324"},{"range":"4057","text":"3803"},{"range":"4058","text":"3324"},{"range":"4059","text":"3803"},{"range":"4060","text":"3324"},{"range":"4061","text":"3803"},{"range":"4062","text":"3324"},{"range":"4063","text":"3803"},{"range":"4064","text":"3324"},{"range":"4065","text":"3803"},{"range":"4066","text":"3324"},{"range":"4067","text":"3803"},{"range":"4068","text":"3324"},{"range":"4069","text":"3803"},{"range":"4070","text":"3324"},{"range":"4071","text":"3803"},{"range":"4072","text":"3324"},{"range":"4073","text":"3803"},{"range":"4074","text":"3324"},{"range":"4075","text":"3803"},{"range":"4076","text":"3324"},{"range":"4077","text":"3803"},{"range":"4078","text":"3324"},{"range":"4079","text":"3803"},{"range":"4080","text":"3324"},{"range":"4081","text":"3803"},{"range":"4082","text":"3324"},{"range":"4083","text":"3803"},{"range":"4084","text":"3324"},{"range":"4085","text":"3803"},{"range":"4086","text":"3324"},{"range":"4087","text":"3803"},{"range":"4088","text":"3324"},{"range":"4089","text":"3803"},{"range":"4090","text":"3324"},{"range":"4091","text":"3803"},{"range":"4092","text":"3324"},{"range":"4093","text":"3803"},{"range":"4094","text":"3324"},{"range":"4095","text":"3803"},{"range":"4096","text":"3324"},{"range":"4097","text":"3803"},{"range":"4098","text":"3324"},{"range":"4099","text":"3803"},{"range":"4100","text":"3324"},{"range":"4101","text":"3803"},{"range":"4102","text":"3324"},{"range":"4103","text":"3803"},{"range":"4104","text":"3324"},{"range":"4105","text":"3803"},{"range":"4106","text":"3324"},{"range":"4107","text":"3803"},{"prop":"3798"},{"range":"4108","text":"3903"},{"prop":"3798"},{"range":"4109","text":"3903"},{"range":"4110","text":"3324"},{"range":"4111","text":"3803"},{"range":"4112","text":"3324"},{"range":"4113","text":"3803"},{"range":"4114","text":"3324"},{"range":"4115","text":"3803"},{"range":"4116","text":"3324"},{"range":"4117","text":"3803"},{"range":"4118","text":"3324"},{"range":"4119","text":"3803"},{"range":"4120","text":"3324"},{"range":"4121","text":"3803"},{"range":"4122","text":"3324"},{"range":"4123","text":"3803"},{"range":"4124","text":"3324"},{"range":"4125","text":"3803"},{"range":"4126","text":"3324"},{"range":"4127","text":"3803"},{"range":"4128","text":"3324"},{"range":"4129","text":"3803"},{"range":"4130","text":"3324"},{"range":"4131","text":"3803"},{"range":"4132","text":"3324"},{"range":"4133","text":"3803"},{"range":"4134","text":"3324"},{"range":"4135","text":"3803"},{"range":"4136","text":"3324"},{"range":"4137","text":"3803"},{"range":"4138","text":"3324"},{"range":"4139","text":"3803"},{"range":"4140","text":"3324"},{"range":"4141","text":"3803"},{"range":"4142","text":"3324"},{"range":"4143","text":"3803"},{"range":"4144","text":"3324"},{"range":"4145","text":"3803"},{"range":"4146","text":"3324"},{"range":"4147","text":"3803"},{"range":"4148","text":"3324"},{"range":"4149","text":"3803"},{"range":"4150","text":"3324"},{"range":"4151","text":"3803"},{"range":"4152","text":"3324"},{"range":"4153","text":"3803"},{"range":"4154","text":"3324"},{"range":"4155","text":"3803"},{"range":"4156","text":"3324"},{"range":"4157","text":"3803"},{"range":"4158","text":"3324"},{"range":"4159","text":"3803"},{"range":"4160","text":"3324"},{"range":"4161","text":"3803"},{"range":"4162","text":"3324"},{"range":"4163","text":"3803"},{"range":"4164","text":"3324"},{"range":"4165","text":"3803"},{"range":"4166","text":"3324"},{"range":"4167","text":"3803"},{"range":"4168","text":"3324"},{"range":"4169","text":"3803"},{"range":"4170","text":"3324"},{"range":"4171","text":"3803"},{"range":"4172","text":"3324"},{"range":"4173","text":"3803"},{"range":"4174","text":"3324"},{"range":"4175","text":"3803"},{"range":"4176","text":"3324"},{"range":"4177","text":"3803"},{"range":"4178","text":"3324"},{"range":"4179","text":"3803"},{"range":"4180","text":"3324"},{"range":"4181","text":"3803"},{"range":"4182","text":"3324"},{"range":"4183","text":"3803"},{"range":"4184","text":"3324"},{"range":"4185","text":"3803"},{"range":"4186","text":"3324"},{"range":"4187","text":"3803"},{"range":"4188","text":"3324"},{"range":"4189","text":"3803"},{"range":"4190","text":"3324"},{"range":"4191","text":"3803"},{"range":"4192","text":"3324"},{"range":"4193","text":"3803"},{"range":"4194","text":"3324"},{"range":"4195","text":"3803"},{"range":"4196","text":"3324"},{"range":"4197","text":"3803"},{"range":"4198","text":"3324"},{"range":"4199","text":"3803"},{"range":"4200","text":"3324"},{"range":"4201","text":"3803"},{"range":"4202","text":"3324"},{"range":"4203","text":"3803"},{"range":"4204","text":"3324"},{"range":"4205","text":"3803"},{"range":"4206","text":"3324"},{"range":"4207","text":"3803"},{"range":"4208","text":"3324"},{"range":"4209","text":"3803"},{"range":"4210","text":"3324"},{"range":"4211","text":"3803"},{"prop":"3798"},{"range":"4212","text":"3903"},"suggestComment",{"type":"4213"},{"range":"4214","text":"4215"},"Add comment inside empty block statement.",{"type":"4213"},{"range":"4216","text":"4215"},{"type":"4213"},{"range":"4217","text":"4215"},"removeAsync",{"range":"4218","text":"3324"},"Remove 'async'.",{"range":"4219","text":"3324"},{"range":"4220","text":"3324"},"hasOwnProperty",[6638,6656],"Object.prototype.hasOwnProperty.call(ag, ",[7610,7611],[7610,7610],"\\",[7612,7613],[7612,7612],[7614,7615],[7614,7614],[7621,7622],[7621,7621],[7636,7637],[7636,7636],[7648,7649],[7648,7648],[7657,7658],[7657,7657],[7659,7660],[7659,7659],[7661,7662],[7661,7661],[7667,7668],[7667,7667],[7669,7670],[7669,7669],[7671,7672],[7671,7671],[7678,7679],[7678,7678],[7693,7694],[7693,7693],[7705,7706],[7705,7705],[7714,7715],[7714,7714],[7716,7717],[7716,7716],[7718,7719],[7718,7718],[7724,7725],[7724,7724],[7733,7734],[7733,7733],[7750,7751],[7750,7750],[7756,7757],[7756,7756],[7765,7766],[7765,7765],[7782,7783],[7782,7782],[7846,7847],[7846,7846],[7855,7856],[7855,7855],[7872,7873],[7872,7872],[7878,7879],[7878,7878],[7887,7888],[7887,7887],[7904,7905],[7904,7904],[7910,7911],[7910,7910],[7919,7920],[7919,7919],[7936,7937],[7936,7936],[7978,7979],[7978,7978],[7987,7988],[7987,7987],[8003,8004],[8003,8003],[8009,8010],[8009,8009],[8018,8019],[8018,8018],[8034,8035],[8034,8034],[8091,8092],[8091,8091],[8098,8099],[8098,8098],[8102,8103],[8102,8102],[8104,8105],[8104,8104],[8111,8112],[8111,8111],[9251,9252],[9251,9251],[9255,9256],[9255,9255],[9257,9258],[9257,9257],[9259,9260],[9259,9259],[9261,9262],[9261,9261],[9263,9264],[9263,9263],[11982,11999],"Object.prototype.hasOwnProperty.call(t, ",[12115,12132],[12273,12274],[12273,12273],[12289,12290],[12289,12289],[12705,12706],[12705,12705],[12709,12710],[12709,12709],[12713,12714],[12713,12713],[12717,12718],[12717,12717],[12721,12722],[12721,12721],[12725,12726],[12725,12725],[12855,12856],[12855,12855],[12857,12858],[12857,12857],[12869,12870],[12869,12869],[12871,12872],[12871,12871],[12875,12876],[12875,12875],[12901,12902],[12901,12901],[12933,12934],[12933,12933],[12938,12939],[12938,12938],[12943,12944],[12943,12943],[12974,12975],[12974,12974],[12979,12980],[12979,12979],[12984,12985],[12984,12984],[13018,13019],[13018,13018],[13020,13021],[13020,13020],[13058,13059],[13058,13058],[13063,13064],[13063,13063],[13068,13069],[13068,13068],[13100,13101],[13100,13100],[13105,13106],[13105,13105],[13110,13111],[13110,13110],[13145,13146],[13145,13145],[13147,13148],[13147,13147],[15912,15913],[15912,15912],[15928,15929],[15928,15928],[16681,16682],[16681,16681],[16696,16697],[16696,16696],[16728,16729],[16728,16728],[16754,16755],[16754,16754],[16769,16770],[16769,16769],[16801,16802],[16801,16801],[16837,16838],[16837,16837],[16839,16840],[16839,16839],[16841,16842],[16841,16841],[16880,16881],[16880,16880],[17011,17012],[17011,17011],[17079,17080],[17079,17079],[17276,17277],[17276,17276],[17331,17332],[17331,17331],[17333,17334],[17333,17333],[17455,17456],[17455,17455],[17563,17564],[17563,17563],[17565,17566],[17565,17565],[17567,17568],[17567,17567],[6638,6656],[7610,7611],[7610,7610],[7612,7613],[7612,7612],[7614,7615],[7614,7614],[7621,7622],[7621,7621],[7636,7637],[7636,7636],[7648,7649],[7648,7648],[7657,7658],[7657,7657],[7659,7660],[7659,7659],[7661,7662],[7661,7661],[7667,7668],[7667,7667],[7669,7670],[7669,7669],[7671,7672],[7671,7671],[7678,7679],[7678,7678],[7693,7694],[7693,7693],[7705,7706],[7705,7705],[7714,7715],[7714,7714],[7716,7717],[7716,7716],[7718,7719],[7718,7718],[7724,7725],[7724,7724],[7733,7734],[7733,7733],[7750,7751],[7750,7750],[7756,7757],[7756,7756],[7765,7766],[7765,7765],[7782,7783],[7782,7782],[7846,7847],[7846,7846],[7855,7856],[7855,7855],[7872,7873],[7872,7872],[7878,7879],[7878,7878],[7887,7888],[7887,7887],[7904,7905],[7904,7904],[7910,7911],[7910,7910],[7919,7920],[7919,7919],[7936,7937],[7936,7936],[7978,7979],[7978,7978],[7987,7988],[7987,7987],[8003,8004],[8003,8003],[8009,8010],[8009,8009],[8018,8019],[8018,8018],[8034,8035],[8034,8034],[8091,8092],[8091,8091],[8098,8099],[8098,8098],[8102,8103],[8102,8102],[8104,8105],[8104,8104],[8111,8112],[8111,8111],[9251,9252],[9251,9251],[9255,9256],[9255,9255],[9257,9258],[9257,9257],[9259,9260],[9259,9259],[9261,9262],[9261,9261],[9263,9264],[9263,9263],[11982,11999],[12115,12132],[12273,12274],[12273,12273],[12289,12290],[12289,12289],[12705,12706],[12705,12705],[12709,12710],[12709,12709],[12713,12714],[12713,12713],[12717,12718],[12717,12717],[12721,12722],[12721,12721],[12725,12726],[12725,12725],[12855,12856],[12855,12855],[12857,12858],[12857,12857],[12869,12870],[12869,12869],[12871,12872],[12871,12871],[12875,12876],[12875,12875],[12901,12902],[12901,12901],[12933,12934],[12933,12933],[12938,12939],[12938,12938],[12943,12944],[12943,12943],[12974,12975],[12974,12974],[12979,12980],[12979,12979],[12984,12985],[12984,12984],[13018,13019],[13018,13018],[13020,13021],[13020,13020],[13058,13059],[13058,13058],[13063,13064],[13063,13063],[13068,13069],[13068,13068],[13100,13101],[13100,13100],[13105,13106],[13105,13105],[13110,13111],[13110,13110],[13145,13146],[13145,13145],[13147,13148],[13147,13147],[15912,15913],[15912,15912],[15928,15929],[15928,15928],[16681,16682],[16681,16681],[16696,16697],[16696,16696],[16728,16729],[16728,16728],[16754,16755],[16754,16754],[16769,16770],[16769,16769],[16801,16802],[16801,16801],[16837,16838],[16837,16837],[16839,16840],[16839,16839],[16841,16842],[16841,16841],[16880,16881],[16880,16880],[17011,17012],[17011,17011],[17079,17080],[17079,17079],[17276,17277],[17276,17276],[17331,17332],[17331,17331],[17333,17334],[17333,17333],[17455,17456],[17455,17455],[17563,17564],[17563,17563],[17565,17566],[17565,17565],[17567,17568],[17567,17567],[11339,11356],"block",[63302,63302]," /* empty */ ",[69691,69691],[91896,91896],[2594,2600],[8910,8916],[20622,20628]] \ No newline at end of file diff --git a/pdf-reader-mcp/.gitattributes b/pdf-reader-mcp/.gitattributes new file mode 100644 index 0000000..d5bb029 --- /dev/null +++ b/pdf-reader-mcp/.gitattributes @@ -0,0 +1,19 @@ +# Auto detect text files and perform LF normalization +* text=auto eol=lf + +# Explicitly declare text files we want to always normalize to LF +*.cjs text eol=lf +*.js text eol=lf +*.ts text eol=lf +*.json text eol=lf +*.md text eol=lf +*.yaml text eol=lf +*.yml text eol=lf + +# Lockfiles should always use LF +package-lock.json text eol=lf +pnpm-lock.yaml text eol=lf + +# Ensure specific files are treated as binary (if needed) +# *.png binary +# *.jpg binary \ No newline at end of file diff --git a/pdf-reader-mcp/.gitignore b/pdf-reader-mcp/.gitignore new file mode 100644 index 0000000..114f7bb --- /dev/null +++ b/pdf-reader-mcp/.gitignore @@ -0,0 +1,14 @@ +node_modules/ +build/ +build/ +*.log +coverage/ +.env* + +# VitePress +docs/.vitepress/dist +docs/.vitepress/cache + +# Test Reports +test-report.junit.xml +/dist diff --git a/pdf-reader-mcp/.prettierrc.cjs b/pdf-reader-mcp/.prettierrc.cjs new file mode 100644 index 0000000..70cf8cf --- /dev/null +++ b/pdf-reader-mcp/.prettierrc.cjs @@ -0,0 +1,15 @@ +// .prettierrc.js +module.exports = { + printWidth: 100, // Specify the line length that the printer will wrap on. + tabWidth: 2, // Specify the number of spaces per indentation-level. + useTabs: false, // Indent lines with tabs instead of spaces. + semi: true, // Print semicolons at the ends of statements. + singleQuote: true, // Use single quotes instead of double quotes. + quoteProps: 'as-needed', // Change when properties in objects are quoted. + jsxSingleQuote: false, // Use single quotes instead of double quotes in JSX. + trailingComma: 'es5', // Print trailing commas wherever possible in multi-line comma-separated syntactic structures. (A single-line array, for example, never gets trailing commas.) + bracketSpacing: true, // Print spaces between brackets in object literals. + bracketSameLine: false, // Put the > of a multi-line HTML (HTML, JSX, Vue, Angular) element at the end of the last line instead of being alone on the next line (does not apply to self closing elements). + arrowParens: 'always', // Include parentheses around a sole arrow function parameter. + endOfLine: 'lf', // Ensure consistent line endings +}; diff --git a/pdf-reader-mcp/.roo/mcp.json b/pdf-reader-mcp/.roo/mcp.json new file mode 100644 index 0000000..da39e4f --- /dev/null +++ b/pdf-reader-mcp/.roo/mcp.json @@ -0,0 +1,3 @@ +{ + "mcpServers": {} +} diff --git a/pdf-reader-mcp/CHANGELOG.md b/pdf-reader-mcp/CHANGELOG.md new file mode 100644 index 0000000..7968c19 --- /dev/null +++ b/pdf-reader-mcp/CHANGELOG.md @@ -0,0 +1,167 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [0.3.24](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.23...v0.3.24) (2025-04-07) + +### Bug Fixes + +- enable rootDir and adjust include for correct build structure ([a9985a7](https://github.com/sylphlab/pdf-reader-mcp/commit/a9985a7eed16ed0a189dd1bda7a66feb13aee889)) + +### [0.3.23](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.22...v0.3.23) (2025-04-07) + +### Bug Fixes + +- correct executable paths due to missing rootDir ([ed5c150](https://github.com/sylphlab/pdf-reader-mcp/commit/ed5c15012b849211422fbb22fb15d8a2c9415b0b)) + +### [0.3.22](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.21...v0.3.22) (2025-04-07) + +### [0.3.21](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.20...v0.3.21) (2025-04-07) + +### [0.3.20](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.19...v0.3.20) (2025-04-07) + +### [0.3.19](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.18...v0.3.19) (2025-04-07) + +### [0.3.18](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.17...v0.3.18) (2025-04-07) + +### Bug Fixes + +- **publish:** remove dist from gitignore and fix clean script ([305e259](https://github.com/sylphlab/pdf-reader-mcp/commit/305e259d6492fbc1732607ee8f8344f6e07aa073)) + +### [0.3.17](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.16...v0.3.17) (2025-04-07) + +### Bug Fixes + +- **config:** align package.json paths with build output (dist/) ([ab1100d](https://github.com/sylphlab/pdf-reader-mcp/commit/ab1100d771e277705ef99cb745f89687c74a7e13)) + +### [0.3.16](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.15...v0.3.16) (2025-04-07) + +### [0.3.15](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.14...v0.3.15) (2025-04-07) + +### Bug Fixes + +- Run lint-staged in pre-commit hook ([e96680c](https://github.com/sylphlab/pdf-reader-mcp/commit/e96680c771eb99ba303fdf7ad51da880261e11c1)) + +### [0.3.14](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.13...v0.3.14) (2025-04-07) + +### [0.3.13](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.12...v0.3.13) (2025-04-07) + +### Bug Fixes + +- **docker:** Install pnpm globally in builder stage ([651d7ae](https://github.com/sylphlab/pdf-reader-mcp/commit/651d7ae06660b97af91c348bc8cc786613232c06)) + +### [0.3.11](https://github.com/sylphlab/pdf-reader-mcp/compare/v0.3.10...v0.3.11) (2025-04-07) + +### [0.3.10](https://github.com/sylphlab/pdf-reader-mcp/compare/v1.0.0...v0.3.10) (2025-04-07) + +### Bug Fixes + +- address remaining eslint warnings ([a91d313](https://github.com/sylphlab/pdf-reader-mcp/commit/a91d313bec2b843724e62ea6a556d99d5389d6cc)) +- resolve eslint errors in tests and scripts ([ffc1bdd](https://github.com/sylphlab/pdf-reader-mcp/commit/ffc1bdd18b972f58e90e12ed2394d2968c5639d9)) + +## [1.0.0] - 2025-04-07 + +### Added + +- **Project Alignment:** Aligned project structure, configuration (TypeScript, ESLint, Prettier, Vitest), CI/CD (`.github/workflows/ci.yml`), Git Hooks (Husky, lint-staged, commitlint), and dependency management (Dependabot) with Sylph Lab Playbook guidelines. +- **Testing:** Achieved ~95% test coverage using Vitest. +- **Benchmarking:** Implemented initial performance benchmarks using Vitest `bench`. +- **Documentation:** + - Set up documentation website using VitePress. + - Created initial content for Guide, Design, Performance, Comparison sections. + - Updated `README.md` to follow standard structure. + - Added `CONTRIBUTING.md`. + - Updated Performance page with initial benchmark results. + - Added community links and call-to-action in VitePress config footer. +- **Package Manager:** Switched from npm to pnpm. + +### Changed + +- **Dependencies:** Updated various dependencies to align with guidelines and ensure compatibility. +- **Configuration:** Refined `tsconfig.json`, `eslint.config.js`, `vitest.config.ts`, `package.json` based on guidelines. +- **Project Identity:** Updated scope to `@sylphlab`. + +### Fixed + +- Resolved various configuration issues identified during guideline alignment. +- Corrected Markdown parsing errors in initial documentation. +- Addressed peer dependency warnings where possible. +- **Note:** TypeDoc API generation is currently blocked due to unresolved initialization errors with TypeDoc v0.28.1. + +### Removed + +- Sponsorship related files and badges (`.github/FUNDING.yml`). + +## [0.3.9] - 2025-04-05 + +### Fixed + +- Removed artifact download/extract steps from `publish-docker` job in workflow, as Docker build needs the full source context provided by checkout. + +## [0.3.8] - 2025-04-05 + +### Fixed + +- Removed duplicate `context: .` entry in `docker/build-push-action` step in `.github/workflows/publish.yml`. + +## [0.3.7] - 2025-04-05 + +### Fixed + +- Removed explicit `COPY tsconfig.json ./` from Dockerfile (rely on `COPY . .`). +- Explicitly set `context: .` in docker build-push action. + +## [0.3.6] - 2025-04-05 + +### Fixed + +- Explicitly added `COPY tsconfig.json ./` before `COPY . .` in Dockerfile to ensure it exists before build step. + +## [0.3.5] - 2025-04-05 + +### Fixed + +- Added `RUN ls -la` before build step in Dockerfile to debug `tsconfig.json` not found error. + +## [0.3.4] - 2025-04-05 + +### Fixed + +- Explicitly specify `tsconfig.json` path in Dockerfile build step (`RUN ./node_modules/.bin/tsc -p tsconfig.json`) to debug build failure. + +## [0.3.3] - 2025-04-05 + +### Fixed + +- Changed Dockerfile build step from `RUN npm run build` to `RUN ./node_modules/.bin/tsc` to debug build failure. + +## [0.3.2] - 2025-04-05 + +### Fixed + +- Simplified `build` script in `package.json` to only run `tsc` (removed `chmod`) to debug Docker build failure. + +## [0.3.1] - 2025-04-05 + +### Fixed + +- Attempted various fixes for GitHub Actions workflow artifact upload issue (`Error: Provided artifact name input during validation is empty`). Final attempt uses fixed artifact filename in upload/download steps. + +## [0.3.0] - 2025-04-05 + +### Added + +- `CHANGELOG.md` file based on Keep a Changelog format. +- `LICENSE` file (MIT License). +- Improved GitHub Actions workflow (`.github/workflows/publish.yml`): + - Triggers on push to `main` branch and version tags (`v*.*.*`). + - Conditionally archives build artifacts only on tag pushes. + - Conditionally runs `publish-npm` and `publish-docker` jobs only on tag pushes. + - Added `create-release` job to automatically create GitHub Releases from tags, using `CHANGELOG.md` for the body. +- Added version headers to Memory Bank files (`activeContext.md`, `progress.md`). + +### Changed + +- Bumped version from 0.2.2 to 0.3.0. + + diff --git a/pdf-reader-mcp/CONTRIBUTING.md b/pdf-reader-mcp/CONTRIBUTING.md new file mode 100644 index 0000000..7456242 --- /dev/null +++ b/pdf-reader-mcp/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contributing to PDF Reader MCP Server + +Thank you for considering contributing! We welcome contributions from the community. + +## How to Contribute + +1. **Reporting Issues:** If you find a bug or have a feature request, please open an issue on GitHub. + + - Provide a clear description of the issue. + - Include steps to reproduce (for bugs). + - Explain the motivation for the feature request. + +2. **Submitting Pull Requests:** + - Fork the repository. + - Create a new branch for your feature or bugfix (e.g., `feature/new-pdf-feature` or `bugfix/parsing-error`). + - Make your changes, adhering to the project's coding style and guidelines (ESLint, Prettier). + - Add tests for your changes and ensure all tests pass (`npm test`). + - Ensure your commit messages follow the Conventional Commits standard. + - Push your branch to your fork. + - Open a Pull Request against the `main` branch of the `sylphlab/pdf-reader-mcp` repository. + - Provide a clear description of your changes in the PR. + +## Development Setup + +1. Clone the repository: `git clone https://github.com/sylphlab/pdf-reader-mcp.git` +2. Navigate into the directory: `cd pdf-reader-mcp` +3. Install dependencies: `npm install` +4. Build the project: `npm run build` +5. Run tests: `npm test` +6. Use `npm run watch` during development for automatic recompilation. +7. Use `npm run validate` before committing to check formatting, linting, and tests. + +## Code Style + +- We use Prettier for code formatting and ESLint (with strict TypeScript rules) for linting. +- Please run `npm run format` and `npm run lint:fix` before committing your changes. +- Git hooks are set up using Husky and lint-staged to automatically check staged files. + +## Commit Messages + +We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification. Commit messages are linted using `commitlint` via a Git hook. + +Example: + +``` +feat: add support for encrypted PDFs + +Implemented handling for password-protected PDF files using an optional password parameter. +``` + +## License + +By contributing, you agree that your contributions will be licensed under the MIT License that covers the project. diff --git a/pdf-reader-mcp/Dockerfile b/pdf-reader-mcp/Dockerfile new file mode 100644 index 0000000..07b0bae --- /dev/null +++ b/pdf-reader-mcp/Dockerfile @@ -0,0 +1,45 @@ +# Stage 1: Build the application +FROM node:lts-alpine AS builder +WORKDIR /app + +# Copy package files +# Using package-lock.json ensures reproducible installs +COPY package.json pnpm-lock.yaml ./ + +# Install ALL dependencies (including dev for build), ignore scripts for now +RUN npm install -g pnpm + +RUN pnpm install --frozen-lockfile + +# Copy the rest of the application source code +# This includes tsconfig.json and the src directory +COPY . . + +# Build the TypeScript project +RUN ls -la +RUN ./node_modules/.bin/tsc -p tsconfig.json +# The build script already includes chmod +x for the output + +# Remove development dependencies after build +RUN pnpm prune --prod --ignore-scripts + +# Stage 2: Create the final lightweight image +FROM node:lts-alpine +WORKDIR /app + +# Create a non-root user and group for security +# Running as non-root is a good practice +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +# Copy built artifacts and production dependencies from the builder stage +COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules +COPY --from=builder --chown=appuser:appgroup /app/dist ./dist +# Copy package.json for metadata, might be useful for inspection +COPY --from=builder --chown=appuser:appgroup /app/package.json ./ + +# Switch to the non-root user +USER appuser + +# Command to run the server using the built output +# This will start the MCP server listening on stdio +CMD ["node", "dist/index.js"] \ No newline at end of file diff --git a/pdf-reader-mcp/LICENSE b/pdf-reader-mcp/LICENSE new file mode 100644 index 0000000..3f7c9d3 --- /dev/null +++ b/pdf-reader-mcp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 SylphLab + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/pdf-reader-mcp/PLAN.md b/pdf-reader-mcp/PLAN.md new file mode 100644 index 0000000..8c0be4b --- /dev/null +++ b/pdf-reader-mcp/PLAN.md @@ -0,0 +1,56 @@ +# Plan: PDF Reader MCP Tool Development + +1. **Project Setup:** + + - Clone `https://github.com/shtse8/filesystem-mcp` to + `c:/Users/shtse/pdf-reader`. (Already done implicitly by user starting in + this empty dir, but good to note). + - Initialize Git and push to `https://github.com/shtse8/pdf-reader-mcp.git`. + (User has done this). + - Create Memory Bank directory and core files: + - `memory-bank/projectbrief.md` + - `memory-bank/productContext.md` + - `memory-bank/activeContext.md` + - `memory-bank/systemPatterns.md` + - `memory-bank/techContext.md` + - `memory-bank/progress.md` + +2. **Technology Selection & Dependency:** + + - Research and choose a suitable Node.js PDF processing library (e.g., + `pdf-parse` or `pdfjs-dist`). + - Add the chosen library to `package.json` dependencies. + +3. **Feature Implementation:** + + - Define MCP tool schemas and implement logic: + - `read_pdf_all_text`: Extract all text. Input: `{ "path": "string" }` + - `read_pdf_page_text`: Extract text from specific pages. Input: + `{ "path": "string", "pages": "number[] | string" }` + - `get_pdf_metadata`: Read metadata. Input: `{ "path": "string" }` + - `get_pdf_page_count`: Get total page count. Input: `{ "path": "string" }` + - Implement core functionality using the chosen PDF library. + - Integrate new tools into the existing MCP server framework. + + ```mermaid + graph TD + subgraph "PDF Tool Implementation" + A[Define read_pdf_all_text] --> B{Use PDF Library}; + C[Define read_pdf_page_text] --> B; + D[Define get_pdf_metadata] --> B; + E[Define get_pdf_page_count] --> B; + B --> F[Implement Logic]; + F --> G[Integrate into MCP Server]; + end + ``` + +4. **Documentation & Refinement:** + + - Update `README.md` with new PDF tool descriptions and usage examples. + - Update Memory Bank files (`techContext.md`, `systemPatterns.md`, + `progress.md`). + +5. **Handover:** + - Confirm plan with the user. (Done). + - Save plan to `PLAN.md`. (This step). + - Switch to "Code" mode for implementation. diff --git a/pdf-reader-mcp/README.md b/pdf-reader-mcp/README.md new file mode 100644 index 0000000..0c6e690 --- /dev/null +++ b/pdf-reader-mcp/README.md @@ -0,0 +1,218 @@ +[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/sylphxltd-pdf-reader-mcp-badge.png)](https://mseep.ai/app/sylphxltd-pdf-reader-mcp) + +# PDF Reader MCP Server (@sylphlab/pdf-reader-mcp) + + + +[![CI/CD Pipeline](https://github.com/sylphlab/pdf-reader-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/sylphlab/pdf-reader-mcp/actions/workflows/ci.yml) +[![codecov](https://codecov.io/gh/sylphlab/pdf-reader-mcp/graph/badge.svg?token=VYRQFB40UN)](https://codecov.io/gh/sylphlab/pdf-reader-mcp) +[![npm version](https://badge.fury.io/js/%40sylphlab%2Fpdf-reader-mcp.svg)](https://badge.fury.io/js/%40sylphlab%2Fpdf-reader-mcp) +[![Docker Pulls](https://img.shields.io/docker/pulls/sylphlab/pdf-reader-mcp.svg)](https://hub.docker.com/r/sylphlab/pdf-reader-mcp) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + + + +Empower your AI agents (like Cline) with the ability to securely read and extract information (text, metadata, page count) from PDF files within your project context using a single, flexible tool. + + + PDF Reader Server MCP server + + +## Installation + +### Using npm (Recommended) + +Install as a dependency in your MCP host environment or project: + +```bash +pnpm add @sylphlab/pdf-reader-mcp # Or npm install / yarn add +``` + +Configure your MCP host (e.g., `mcp_settings.json`) to use `npx`: + +```json +{ + "mcpServers": { + "pdf-reader-mcp": { + "command": "npx", + "args": ["@sylphlab/pdf-reader-mcp"], + "name": "PDF Reader (npx)" + } + } +} +``` + +_(Ensure the host sets the correct `cwd` for the target project)_ + +### Using Docker + +Pull the image: + +```bash +docker pull sylphlab/pdf-reader-mcp:latest +``` + +Configure your MCP host to run the container, mounting your project directory to `/app`: + +```json +{ + "mcpServers": { + "pdf-reader-mcp": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-v", + "/path/to/your/project:/app", // Or use "$PWD:/app", "%CD%:/app", etc. + "sylphlab/pdf-reader-mcp:latest" + ], + "name": "PDF Reader (Docker)" + } + } +} +``` + +### Local Build (For Development) + +1. Clone: `git clone https://github.com/sylphlab/pdf-reader-mcp.git` +2. Install: `cd pdf-reader-mcp && pnpm install` +3. Build: `pnpm run build` +4. Configure MCP Host: + ```json + { + "mcpServers": { + "pdf-reader-mcp": { + "command": "node", + "args": ["/path/to/cloned/repo/pdf-reader-mcp/build/index.js"], + "name": "PDF Reader (Local Build)" + } + } + } + ``` + _(Ensure the host sets the correct `cwd` for the target project)_ + +## Quick Start + +Assuming the server is running and configured in your MCP host: + +**MCP Request (Get metadata and page 2 text from a local PDF):** + +```json +{ + "tool_name": "read_pdf", + "arguments": { + "sources": [ + { + "path": "./documents/my_report.pdf", + "pages": [2] + } + ], + "include_metadata": true, + "include_page_count": false, // Default is true, explicitly false here + "include_full_text": false // Ignored because 'pages' is specified + } +} +``` + +**Expected Response Snippet:** + +```json +{ + "results": [ + { + "source": "./documents/my_report.pdf", + "success": true, + "data": { + "page_texts": [ + { "page": 2, "text": "Text content from page 2..." } + ], + "info": { ... }, + "metadata": { ... } + // num_pages not included as requested + } + } + ] +} +``` + +## Why Choose This Project? + +- **🛡️ Secure:** Confines file access strictly to the project root directory. +- **🌐 Flexible:** Handles both local relative paths and public URLs. +- **🧩 Consolidated:** A single `read_pdf` tool serves multiple extraction needs (full text, specific pages, metadata, page count). +- **⚙️ Structured Output:** Returns data in a predictable JSON format, easy for agents to parse. +- **🚀 Easy Integration:** Designed for seamless use within MCP environments via `npx` or Docker. +- **✅ Robust:** Uses `pdfjs-dist` for reliable parsing and Zod for input validation. + +## Performance Advantages + +Initial benchmarks using Vitest on a sample PDF show efficient handling of various operations: + +| Scenario | Operations per Second (hz) | Relative Speed | +| :------------------------------- | :------------------------- | :------------- | +| Handle Non-Existent File | ~12,933 | Fastest | +| Get Full Text | ~5,575 | | +| Get Specific Page (Page 1) | ~5,329 | | +| Get Specific Pages (Pages 1 & 2) | ~5,242 | | +| Get Metadata & Page Count | ~4,912 | Slowest | + +_(Higher hz indicates better performance. Results may vary based on PDF complexity and environment.)_ + +See the [Performance Documentation](./docs/performance/index.md) for more details and future plans. + +## Features + +- Read full text content from PDF files. +- Read text content from specific pages or page ranges. +- Read PDF metadata (author, title, creation date, etc.). +- Get the total page count of a PDF. +- Process multiple PDF sources (local paths or URLs) in a single request. +- Securely operates within the defined project root. +- Provides structured JSON output via MCP. +- Available via npm and Docker Hub. + +## Design Philosophy + +The server prioritizes security through context confinement, efficiency via structured data transfer, and simplicity for easy integration into AI agent workflows. It aims for minimal dependencies, relying on the robust `pdfjs-dist` library. + +See the full [Design Philosophy](./docs/design/index.md) documentation. + +## Comparison with Other Solutions + +Compared to direct file access (often infeasible) or generic filesystem tools, this server offers PDF-specific parsing capabilities. Unlike external CLI tools (e.g., `pdftotext`), it provides a secure, integrated MCP interface with structured output, enhancing reliability and ease of use for AI agents. + +See the full [Comparison](./docs/comparison/index.md) documentation. + +## Future Plans (Roadmap) + +- **Documentation:** + - Finalize all documentation sections (Guide, API, Design, Comparison). + - Resolve TypeDoc issue and generate API documentation. + - Add more examples and advanced usage patterns. + - Implement PWA support and mobile optimization for the docs site. + - Add share buttons and growth metrics to the docs site. +- **Benchmarking:** + - Conduct comprehensive benchmarks with diverse PDF files (size, complexity). + - Measure memory usage. + - Compare URL vs. local file performance. +- **Core Functionality:** + - Explore potential optimizations for very large PDF files. + - Investigate options for extracting images or annotations (longer term). +- **Testing:** + - Increase test coverage towards 100% where practical. + - Add runtime tests once feasible. + +## Documentation + +For detailed usage, API reference, and guides, please visit the **[Full Documentation Website](https://sylphlab.github.io/pdf-reader-mcp/)** (Link to be updated upon deployment). + +## Community & Support + +- **Found a bug or have a feature request?** Please open an issue on [GitHub Issues](https://github.com/sylphlab/pdf-reader-mcp/issues). +- **Want to contribute?** We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md). +- **Star & Watch:** If you find this project useful, please consider starring ⭐ and watching 👀 the repository on [GitHub](https://github.com/sylphlab/pdf-reader-mcp) to show your support and stay updated! + +## License + +This project is licensed under the [MIT License](./LICENSE). \ No newline at end of file diff --git a/pdf-reader-mcp/commitlint.config.cjs b/pdf-reader-mcp/commitlint.config.cjs new file mode 100644 index 0000000..422b194 --- /dev/null +++ b/pdf-reader-mcp/commitlint.config.cjs @@ -0,0 +1 @@ +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/pdf-reader-mcp/docs/.vitepress/config.mts b/pdf-reader-mcp/docs/.vitepress/config.mts new file mode 100644 index 0000000..a48056c --- /dev/null +++ b/pdf-reader-mcp/docs/.vitepress/config.mts @@ -0,0 +1,81 @@ +// docs/.vitepress/config.mts +import { defineConfig } from 'vitepress'; + +export default defineConfig({ + lang: 'en-US', + title: 'PDF Reader MCP Server', + description: 'MCP Server for reading PDF files securely within a project.', + lastUpdated: true, + + themeConfig: { + logo: '/logo.svg', // Assuming logo is in docs/public + nav: [ + { text: 'Home', link: '/' }, + { text: 'Guide', link: '/guide/' }, + { text: 'API Reference', link: '/api/' }, + { text: 'Design', link: '/design/' }, + { text: 'Performance', link: '/performance/' }, + { text: 'Comparison', link: '/comparison/' }, + ], + + sidebar: { + '/guide/': [ + { + text: 'Introduction', + items: [ + { text: 'What is PDF Reader MCP?', link: '/guide/' }, + { text: 'Installation', link: '/guide/installation' }, + { text: 'Getting Started', link: '/guide/getting-started' }, + ], + }, + // Add more guide sections later + ], + '/api/': [ + { + text: 'API Reference', + items: [{ text: 'Tool: read_pdf', link: '/api/read_pdf' }], + }, + ], + // Add sidebars for other sections + '/design/': [ + { + text: 'Design', + items: [{ text: 'Philosophy', link: '/design/' }], + }, + ], + '/performance/': [ + { + text: 'Performance', + items: [{ text: 'Benchmarks', link: '/performance/' }], + }, + ], + '/comparison/': [ + { + text: 'Comparison', + items: [{ text: 'Other Solutions', link: '/comparison/' }], + }, + ], + }, + + socialLinks: [ + { icon: 'github', link: 'https://github.com/sylphlab/pdf-reader-mcp' }, + { icon: 'issues', link: 'https://github.com/sylphlab/pdf-reader-mcp/issues' }, // Add link to issues + ], + + footer: { + message: 'Released under the MIT License. Found this useful? Give us a star ⭐ on GitHub!', // Add call-to-action + copyright: `Copyright © ${new Date().getFullYear()} Sylph Lab`, + }, + + // Enable edit links + editLink: { + pattern: 'https://github.com/sylphlab/pdf-reader-mcp/edit/main/docs/:path', + text: 'Edit this page on GitHub', + }, + }, + + // Enable markdown features + markdown: { + lineNumbers: true, + }, +}); diff --git a/pdf-reader-mcp/docs/api/README.md b/pdf-reader-mcp/docs/api/README.md new file mode 100644 index 0000000..3b89d23 --- /dev/null +++ b/pdf-reader-mcp/docs/api/README.md @@ -0,0 +1,5 @@ +**@sylphlab/pdf-reader-mcp** + +--- + +# @sylphlab/pdf-reader-mcp diff --git a/pdf-reader-mcp/docs/changelog.md b/pdf-reader-mcp/docs/changelog.md new file mode 100644 index 0000000..bf09264 --- /dev/null +++ b/pdf-reader-mcp/docs/changelog.md @@ -0,0 +1,84 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- Nothing yet. + +## [0.3.9] - 2025-04-05 + +### Fixed + +- Removed artifact download/extract steps from `publish-docker` job in workflow, as Docker build needs the full source context provided by checkout. + +## [0.3.8] - 2025-04-05 + +### Fixed + +- Removed duplicate `context: .` entry in `docker/build-push-action` step in `.github/workflows/publish.yml`. + +## [0.3.7] - 2025-04-05 + +### Fixed + +- Removed explicit `COPY tsconfig.json ./` from Dockerfile (rely on `COPY . .`). +- Explicitly set `context: .` in docker build-push action. + +## [0.3.6] - 2025-04-05 + +### Fixed + +- Explicitly added `COPY tsconfig.json ./` before `COPY . .` in Dockerfile to ensure it exists before build step. + +## [0.3.5] - 2025-04-05 + +### Fixed + +- Added `RUN ls -la` before build step in Dockerfile to debug `tsconfig.json` not found error. + +## [0.3.4] - 2025-04-05 + +### Fixed + +- Explicitly specify `tsconfig.json` path in Dockerfile build step (`RUN ./node_modules/.bin/tsc -p tsconfig.json`) to debug build failure. + +## [0.3.3] - 2025-04-05 + +### Fixed + +- Changed Dockerfile build step from `RUN npm run build` to `RUN ./node_modules/.bin/tsc` to debug build failure. + +## [0.3.2] - 2025-04-05 + +### Fixed + +- Simplified `build` script in `package.json` to only run `tsc` (removed `chmod`) to debug Docker build failure. + +## [0.3.1] - 2025-04-05 + +### Fixed + +- Attempted various fixes for GitHub Actions workflow artifact upload issue (`Error: Provided artifact name input during validation is empty`). Final attempt uses fixed artifact filename in upload/download steps. + +## [0.3.0] - 2025-04-05 + +### Added + +- `CHANGELOG.md` file based on Keep a Changelog format. +- `LICENSE` file (MIT License). +- Improved GitHub Actions workflow (`.github/workflows/publish.yml`): + - Triggers on push to `main` branch and version tags (`v*.*.*`). + - Conditionally archives build artifacts only on tag pushes. + - Conditionally runs `publish-npm` and `publish-docker` jobs only on tag pushes. + - Added `create-release` job to automatically create GitHub Releases from tags, using `CHANGELOG.md` for the body. +- Added version headers to Memory Bank files (`activeContext.md`, `progress.md`). + +### Changed + +- Bumped version from 0.2.2 to 0.3.0. diff --git a/pdf-reader-mcp/docs/comparison/index.md b/pdf-reader-mcp/docs/comparison/index.md new file mode 100644 index 0000000..f9ec7a2 --- /dev/null +++ b/pdf-reader-mcp/docs/comparison/index.md @@ -0,0 +1,34 @@ +# Comparison with Other Solutions + +When an AI agent needs to access information within PDF files, several approaches exist. Here's how the PDF Reader MCP Server compares: + +1. **Direct File Access by Agent:** + + - **Feasibility:** Often impossible. PDFs are binary; LLMs typically process text. Sending raw binary data is usually not supported or useful. + - **Security:** Extremely risky if the agent has broad filesystem access. + - **Efficiency:** Impractical due to file size and format. + - **PDF Reader MCP Advantage:** Provides a secure, structured way to get _textual_ data from the binary PDF. + +2. **Generic Filesystem MCP Server (like `@shtse8/filesystem-mcp`):** + + - **Functionality:** Can read file _content_, but for PDFs, this would be the raw binary data, which is not directly useful to an LLM. + - **Security:** Offers similar path confinement benefits if implemented correctly. + - **Efficiency:** Inefficient for PDFs as it doesn't parse the content. + - **PDF Reader MCP Advantage:** Specializes in _parsing_ PDFs to extract meaningful text and metadata. + +3. **External CLI Tools (e.g., `pdftotext`, `pdfinfo`):** + + - **Functionality:** Can extract text and metadata. + - **Security:** Requires the agent host to execute arbitrary commands, potentially increasing security risks. Output might need further parsing. + - **Efficiency:** Involves process creation overhead for each command. Communication might be less streamlined than MCP. + - **Integration:** Requires the agent to know how to construct and interpret CLI commands and output, which can be brittle. + - **PDF Reader MCP Advantage:** Offers a dedicated, secure MCP interface with structured JSON input/output, better integration, and potentially lower overhead for frequent operations. + +4. **Cloud-Based PDF APIs:** + - **Functionality:** Often provide rich features (OCR, conversion, etc.). + - **Security:** Requires sending potentially sensitive local files to a third-party service. + - **Efficiency:** Involves network latency and potential costs. + - **Integration:** Requires API keys and handling HTTP requests/responses. + - **PDF Reader MCP Advantage:** Operates entirely locally (for local files), enhancing security and privacy. No external network dependency for local operations. + +**In summary, the PDF Reader MCP Server provides a balanced solution specifically tailored for AI agents needing secure, efficient, and structured access to PDF content within a local project context.** diff --git a/pdf-reader-mcp/docs/contributing.md b/pdf-reader-mcp/docs/contributing.md new file mode 100644 index 0000000..4a39cf8 --- /dev/null +++ b/pdf-reader-mcp/docs/contributing.md @@ -0,0 +1,37 @@ +# Contributing to PDF Reader MCP Server + +Thank you for your interest in contributing! + +## How to Contribute + +We welcome contributions in various forms: + +- **Reporting Bugs:** If you find a bug, please open an issue on GitHub detailing the problem, steps to reproduce, and your environment. +- **Suggesting Enhancements:** Have an idea for a new feature or improvement? Open an issue to discuss it. +- **Pull Requests:** If you'd like to contribute code: + 1. Fork the repository. + 2. Create a new branch for your feature or bug fix (`git checkout -b feature/your-feature-name` or `bugfix/issue-number`). + 3. Make your changes, ensuring they adhere to the project's coding style and principles (see `docs/principles.md`). + 4. Add tests for any new functionality and ensure all tests pass (`npm test`). + 5. Ensure code coverage remains high (`npm run test:cov`). + 6. Make sure your code lints correctly (`npm run lint`). + 7. Commit your changes using the [Conventional Commits](https://www.conventionalcommits.org/) standard (e.g., `feat: Add support for encrypted PDFs`, `fix: Correct page range parsing`). + 8. Push your branch to your fork (`git push origin feature/your-feature-name`). + 9. Open a Pull Request against the `main` branch of the original repository. + +## Development Setup + +1. Clone your fork. +2. Install dependencies: `npm install` +3. Build the project: `npm run build` +4. Run in watch mode during development: `npm run watch` +5. Run tests: `npm test` or `npm run test:watch` + +## Code Style + +Please ensure your code adheres to the formatting and linting rules defined in the project: + +- Run `npm run format` to format your code with Prettier. +- Run `npm run lint` to check for ESLint issues. + +Thank you for contributing! diff --git a/pdf-reader-mcp/docs/design/index.md b/pdf-reader-mcp/docs/design/index.md new file mode 100644 index 0000000..b9ede33 --- /dev/null +++ b/pdf-reader-mcp/docs/design/index.md @@ -0,0 +1,26 @@ +# Design Philosophy + +The PDF Reader MCP Server is built upon several core principles: + +1. **Security First:** + + - **Context Confinement:** The absolute primary goal. All local file access _must_ be restricted to the directory (and its subdirectories) where the server process is launched. This prevents the AI agent from accessing unintended files on the user's system. + - **Path Validation:** Rigorous validation of all incoming paths using a dedicated `resolvePath` function ensures they are relative and resolve within the designated project root. + - **No Arbitrary Execution:** The server only performs PDF reading operations, not arbitrary file system modifications or command execution. + +2. **Efficiency & Resourcefulness:** + + - **Structured Data:** Instead of sending potentially huge raw PDF content (which is often impractical for LLMs), the server extracts specific, structured information (text, metadata, page count). + - **Targeted Extraction:** Allows requesting text from specific pages, minimizing the amount of data transferred and processed. + - **Asynchronous Operations:** Uses Node.js async I/O to avoid blocking the event loop during file access and PDF parsing. + +3. **Simplicity & Ease of Integration:** + + - **Single Tool Focus:** Consolidates functionality into a single `read_pdf` tool with clear parameters, making it easier for AI agents to learn and use. + - **Standard MCP:** Leverages the `@modelcontextprotocol/sdk` for standard communication and error handling. + - **Clear Schemas:** Uses Zod for defining and validating input, providing clear contracts for tool usage. + - **Multiple Invocation Methods:** Supports easy use via `npx` or Docker for straightforward deployment in various MCP host environments. + +4. **Minimalism & Reliability:** + - **Minimal Dependencies:** Relies primarily on the robust and widely-used `pdfjs-dist` library for core PDF parsing, minimizing external failure points. + - **Clear Error Reporting:** Provides specific error messages when processing fails for a source, allowing the agent to understand the issue. diff --git a/pdf-reader-mcp/docs/guide/getting-started.md b/pdf-reader-mcp/docs/guide/getting-started.md new file mode 100644 index 0000000..a2d9803 --- /dev/null +++ b/pdf-reader-mcp/docs/guide/getting-started.md @@ -0,0 +1,83 @@ +# Getting Started + +This guide assumes you have an MCP client or host environment capable of launching and communicating with the PDF Reader MCP Server. + +## 1. Launch the Server + +Ensure the server is launched with its **working directory set to the root of the project** containing the PDF files you want to access. + +- **If installed via npm/pnpm:** Your MCP host might manage this automatically via `npx @sylphlab/pdf-reader-mcp`. +- **If running standalone:** `cd /path/to/your/project && node /path/to/pdf-reader-mcp/build/index.js` +- **If using Docker:** `docker run -i --rm -v \"/path/to/your/project:/app\" sylphlab/pdf-reader-mcp:latest` + +## 2. Using the `read_pdf` Tool + +The server provides a single primary tool: `read_pdf`. + +**Tool Input Schema:** + +The `read_pdf` tool accepts an object with the following properties: + +- `sources` (Array, required): An array of PDF sources to process. Each source object must contain either a `path` or a `url`. + - `path` (string, optional): Relative path to the local PDF file within the project root. + - `url` (string, optional): URL of the PDF file. + - `pages` (Array | string, optional): Extract text only from specific pages (1-based) or ranges (e.g., `'1-3, 5'`). If provided, `include_full_text` is ignored for this source. +- `include_full_text` (boolean, optional, default: `false`): Include the full text content of each PDF (only if `pages` is not specified for that source). +- `include_metadata` (boolean, optional, default: `true`): Include metadata and info objects for each PDF. +- `include_page_count` (boolean, optional, default: `true`): Include the total number of pages for each PDF. + +_(See the [API Reference](./api/) (once generated) for the full JSON schema)_ + +**Example MCP Request (Get metadata and page count for one PDF):** + +```json +{ + "tool_name": "read_pdf", + "arguments": { + "sources": [{ "path": "./documents/report.pdf" }], + "include_metadata": true, + "include_page_count": true, + "include_full_text": false + } +} +``` + +**Example MCP Request (Get text from page 2 of one PDF, full text of another):** + +```json +{ + "tool_name": "read_pdf", + "arguments": { + "sources": [ + { + "path": "./invoices/inv-001.pdf", + "pages": [2] // Get only page 2 text + }, + { + "url": "https://example.com/whitepaper.pdf" + // No 'pages', so 'include_full_text' applies + } + ], + "include_metadata": false, + "include_page_count": false, + "include_full_text": true // Applies only to the URL source + } +} +``` + +## 3. Understanding the Response + +The response will be an array named `results`, with each element corresponding to a source object in the request array. Each result object contains: + +- `source` (string): The original path or URL provided in the request. +- `success` (boolean): Indicates if processing this source was successful. +- `data` (Object, optional): Present if `success` is `true`. Contains the requested data: + - `num_pages` (number, optional): Total page count (if `include_page_count` was true). + - `info` (Object, optional): PDF information dictionary (if `include_metadata` was true). + - `metadata` (Object, optional): PDF metadata (if `include_metadata` was true). + - `page_texts` (Array, optional): Array of objects, each with `page` (number) and `text` (string), for pages where text was extracted (if `pages` was specified or `include_full_text` was true without `pages`). +- `error` (Object, optional): Present if `success` is `false`. Contains: + - `code` (string): An error code (e.g., `FileNotFound`, `InvalidRequest`, `PdfParsingError`, `DownloadError`, `UnknownError`). + - `message` (string): A description of the error. + +_(See the [API Reference](./api/) (once generated) for detailed response structure and error codes.)_ diff --git a/pdf-reader-mcp/docs/guide/index.md b/pdf-reader-mcp/docs/guide/index.md new file mode 100644 index 0000000..f3727c6 --- /dev/null +++ b/pdf-reader-mcp/docs/guide/index.md @@ -0,0 +1,22 @@ +# Introduction + +Welcome to the PDF Reader MCP Server documentation! + +This server provides a secure and efficient way for AI agents (like Cline) using the Model Context Protocol (MCP) to interact with PDF files located within a user's project directory. + +## What Problem Does It Solve? + +AI agents often need information from PDFs (reports, invoices, manuals). Directly feeding PDF content is impractical due to format and size. This server offers specific tools to extract: + +- Full text content +- Text from specific pages +- Metadata (author, title, etc.) +- Total page count + +All interactions happen securely within the defined project boundaries. + +## Core Principles + +- **Security:** Confined file access. +- **Efficiency:** Structured data retrieval, avoiding large raw content transfer. +- **Simplicity:** Easy integration into MCP-enabled agent workflows. diff --git a/pdf-reader-mcp/docs/guide/installation.md b/pdf-reader-mcp/docs/guide/installation.md new file mode 100644 index 0000000..e059f9e --- /dev/null +++ b/pdf-reader-mcp/docs/guide/installation.md @@ -0,0 +1,58 @@ +# Installation + +## Prerequisites + +- Node.js (>= 18.0.0 recommended) +- npm (comes with Node.js) + +## Using npm (Recommended) + +To use the server in your project or MCP host environment, install it as a dependency: + +```bash +npm install @sylphlab/pdf-reader-mcp +``` + +## Running Standalone (for testing/development) + +1. **Clone the repository:** + + ```bash + git clone https://github.com/sylphlab/pdf-reader-mcp.git + cd pdf-reader-mcp + ``` + +2. **Install dependencies:** + + ```bash + npm install + ``` + +3. **Build the project:** + + ```bash + npm run build + ``` + +4. **Run the server:** + The server communicates via stdio. You'll typically run it from an MCP host. + ```bash + node build/index.js + ``` + **Important:** Ensure you run this command from the root directory of the project containing the PDFs you want the server to access. + +## Using Docker + +A Docker image is available on Docker Hub. + +```bash +docker pull sylphlab/pdf-reader-mcp:latest +``` + +To run the container, you need to mount the project directory containing your PDFs into the container's working directory (`/app`): + +```bash +docker run -i --rm -v "/path/to/your/project:/app" sylphlab/pdf-reader-mcp:latest +``` + +Replace `/path/to/your/project` with the actual absolute path to your project folder. diff --git a/pdf-reader-mcp/docs/index.md b/pdf-reader-mcp/docs/index.md new file mode 100644 index 0000000..4774d94 --- /dev/null +++ b/pdf-reader-mcp/docs/index.md @@ -0,0 +1,26 @@ +--- +layout: home + +hero: + name: 'PDF Reader MCP Server' + text: 'Securely Read PDFs via MCP.' + tagline: An MCP server enabling AI agents to read text, metadata, and page counts from PDF files within a project's context. + image: + src: /logo.svg + alt: PDF Reader MCP Logo + actions: + - theme: brand + text: Get Started + link: /guide/getting-started + - theme: alt + text: View on GitHub + link: https://github.com/sylphlab/pdf-reader-mcp + +features: + - title: Secure Context + details: All operations are strictly confined to the project directory where the server is launched. + - title: Structured Data + details: Returns parsed text, metadata, and page counts in a structured format via MCP. + - title: Efficient & Focused + details: Uses pdfjs-dist for reliable parsing. Designed for integration with AI agent workflows. +--- diff --git a/pdf-reader-mcp/docs/license.md b/pdf-reader-mcp/docs/license.md new file mode 100644 index 0000000..e7890e0 --- /dev/null +++ b/pdf-reader-mcp/docs/license.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 [Your Name or Organization] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pdf-reader-mcp/docs/performance.md b/pdf-reader-mcp/docs/performance.md new file mode 100644 index 0000000..ac12a1a --- /dev/null +++ b/pdf-reader-mcp/docs/performance.md @@ -0,0 +1,41 @@ +# Performance + +Performance is a key consideration for the PDF Reader MCP Server, as slow responses can negatively impact the interaction flow of AI agents. + +## Core Library: `pdfjs-dist` + +The server relies on Mozilla's [pdf.js](https://mozilla.github.io/pdf.js/) (specifically the `pdfjs-dist` distribution) for the heavy lifting of PDF parsing. This library is widely used and generally considered performant for standard PDF documents. However, performance can vary depending on: + +- **PDF Complexity:** Documents with many pages, complex graphics, large embedded fonts, or non-standard structures may take longer to parse. +- **Requested Data:** Extracting full text from a very large document will naturally take longer than just retrieving metadata or the page count. Requesting text from only a few specific pages is usually more efficient than extracting the entire text. +- **Server Resources:** The performance will also depend on the CPU and memory resources available to the Node.js process running the server. + +## Asynchronous Operations + +All potentially long-running operations, including file reading (for local PDFs), network requests (for URL PDFs), and PDF parsing itself, are handled asynchronously using `async/await`. This prevents the server from blocking the Node.js event loop and allows it to handle other requests or tasks concurrently (though typically an MCP server handles one request at a time from its host). + +## Benchmarking (Planned) + +_(Section to be added)_ + +Formal benchmarking is planned to quantify the performance characteristics of the `read_pdf` tool under various conditions. + +**Goals:** + +- Measure the time taken to extract metadata, page count, specific pages, and full text for PDFs of varying sizes and complexities. +- Compare the performance of processing local files vs. URLs (network latency will be a factor for URLs). +- Identify potential bottlenecks within the handler logic or the `pdfjs-dist` library usage. +- Establish baseline performance metrics to track potential regressions in the future. + +**Tools:** + +- We plan to use [Vitest's built-in benchmarking](https://vitest.dev/guide/features.html#benchmarking) (`bench` function) or a dedicated library like [`tinybench`](https://github.com/tinylibs/tinybench). + +Benchmark results will be published in this section once available. + +## Current Optimization Considerations + +- **Lazy Loading:** The `pdfjs-dist` library loads pages on demand when `pdfDocument.getPage()` is called. This means that if only metadata or page count is requested, the entire document's page content doesn't necessarily need to be parsed immediately. +- **Selective Extraction:** The ability to request specific pages (`pages` parameter) allows agents to avoid the cost of extracting text from the entire document if only a small portion is needed. + +_(This section will be updated with concrete data and findings as benchmarking is performed.)_ diff --git a/pdf-reader-mcp/docs/performance/index.md b/pdf-reader-mcp/docs/performance/index.md new file mode 100644 index 0000000..769a86e --- /dev/null +++ b/pdf-reader-mcp/docs/performance/index.md @@ -0,0 +1,45 @@ +# Performance + +Performance is an important consideration for the PDF Reader MCP Server, especially when dealing with large or complex PDF documents. This page outlines the benchmarking approach and presents results from initial tests. + +## Benchmarking Setup + +Benchmarks are conducted using the [Vitest](https://vitest.dev/) testing framework's built-in `bench` functionality. The tests measure the number of operations per second (hz) for different scenarios using the `read_pdf` handler. + +- **Environment:** Node.js (latest LTS), Windows 11 (as per user environment) +- **Test File:** A sample PDF located at `test/fixtures/sample.pdf`. The exact characteristics of this file (size, page count, complexity) will influence the results. +- **Methodology:** Each scenario is run for a fixed duration (1000ms) to determine the average operations per second. The benchmark code can be found in `test/benchmark/readPdf.bench.ts`. + +## Initial Benchmark Results + +The following results were obtained on 2025-04-07 using the setup described above: + +| Scenario | Operations per Second (hz) | Relative Speed | +| :------------------------------- | :------------------------- | :------------- | +| Handle Non-Existent File | ~12,933 | Fastest | +| Get Full Text | ~5,575 | | +| Get Specific Page (Page 1) | ~5,329 | | +| Get Specific Pages (Pages 1 & 2) | ~5,242 | | +| Get Metadata & Page Count | ~4,912 | Slowest | + +_(Higher hz indicates better performance)_ + +**Interpretation:** + +- Handling errors for non-existent files is the fastest operation as it involves minimal I/O and no PDF parsing. +- Extracting the full text was slightly faster than extracting specific pages or just metadata/page count in this particular test run. This might be influenced by the specific structure of `sample.pdf` and potential caching mechanisms within the `pdfjs-dist` library. +- Extracting only metadata and page count was slightly slower than full text extraction for this file. + +**Note:** These results are specific to the `sample.pdf` file and the testing environment used. Performance with different PDFs (varying sizes, complexities, versions, or structures) may differ significantly. + +## Future Benchmarking Goals + +Further benchmarks are planned to measure: + +- **Parsing Time:** Time taken to load and parse PDFs of varying sizes (e.g., 1 page, 10 pages, 100 pages, 1000 pages). +- **Text Extraction Speed:** More detailed analysis across different page ranges and document structures. +- **Memory Usage:** Peak memory consumption during processing of different PDF sizes. +- **URL vs. Local File:** Performance difference between processing local files and downloading/processing from URLs. +- **Comparison:** Comparison with other PDF processing methods or libraries, if applicable. + +Results will be updated here as more comprehensive testing is completed. diff --git a/pdf-reader-mcp/docs/principles.md b/pdf-reader-mcp/docs/principles.md new file mode 100644 index 0000000..e0ab120 --- /dev/null +++ b/pdf-reader-mcp/docs/principles.md @@ -0,0 +1,45 @@ +# Development Principles + +This project adheres to the following core principles, based on the provided TypeScript Project Development Guidelines: + +## 1. Impact-Driven + +The primary goal is to solve the real problem of AI agents needing access to PDF content securely and efficiently. Features are added to serve this core purpose. + +## 2. Simplicity & Minimalism + +We aim for the most direct approach: + +- A single, consolidated `read_pdf` tool instead of multiple specific tools. +- Leveraging the robust `pdfjs-dist` library for core parsing. +- Avoiding unnecessary abstractions. + +## 3. Functional Programming Style (Influences) + +While not strictly functional, the code emphasizes: + +- Pure helper functions where possible (like path resolution checks). +- Minimizing side effects within core logic (parsing doesn't alter files). +- Using standard asynchronous patterns (`async/await`) effectively. + +## 4. Minimal Dependencies + +- Core functionality relies on `@modelcontextprotocol/sdk` and `pdfjs-dist`. +- Development dependencies are standard tools (TypeScript, ESLint, Prettier, Vitest). +- Dependencies like `glob`, `zod`, `zod-to-json-schema` provide essential validation and utility. +- Unused dependencies inherited from the template (`diff`, `detect-indent`) have been removed. + +## 5. Code Quality & Consistency + +- **Strict TypeScript:** Using the strictest compiler options (`strict: true`, etc.). +- **Rigorous Linting:** Employing ESLint with recommended and strict type-checked rules. +- **Consistent Formatting:** Enforced by Prettier. +- **Comprehensive Testing:** Aiming for high test coverage (currently ~95%) using Vitest, with a 100% threshold configured. + +## 6. Security Focus + +- Path traversal prevention is critical. All file paths are resolved relative to the project root and validated. + +## 7. No Sponsorship + +This project does not accept financial contributions, and all related information has been removed. diff --git a/pdf-reader-mcp/docs/public/logo.svg b/pdf-reader-mcp/docs/public/logo.svg new file mode 100644 index 0000000..cb277e0 --- /dev/null +++ b/pdf-reader-mcp/docs/public/logo.svg @@ -0,0 +1,5 @@ + + + + LOGO + \ No newline at end of file diff --git a/pdf-reader-mcp/docs/testing.md b/pdf-reader-mcp/docs/testing.md new file mode 100644 index 0000000..55fc305 --- /dev/null +++ b/pdf-reader-mcp/docs/testing.md @@ -0,0 +1,60 @@ +# Testing Strategy + +Robust testing is essential for ensuring the reliability, correctness, and security of the PDF Reader MCP Server. We employ a multi-faceted testing approach using Vitest. + +## Framework: Vitest + +We use [Vitest](https://vitest.dev/) as our primary testing framework. Its key advantages include: + +- **Speed:** Fast execution powered by Vite. +- **Modern Features:** Supports ES Modules, TypeScript out-of-the-box. +- **Compatibility:** Familiar API similar to Jest. +- **Integrated Coverage:** Built-in support for code coverage analysis using `v8` or `istanbul`. + +## Goals & Approach + +Our testing strategy focuses on: + +1. **High Code Coverage:** + + - **Target:** 100% statement, branch, function, and line coverage. + - **Configuration:** Enforced via `thresholds` in `vitest.config.ts`. + - **Current Status:** ~95%. The remaining uncovered lines are primarily in error handling paths that are difficult to trigger due to Zod's upfront validation or represent extreme edge cases. This level is currently accepted. + - **Tool:** Coverage reports generated using `@vitest/coverage-v8`. + +2. **Correctness & Functionality:** + + - **Unit Tests:** (Currently minimal, focus is on integration) Could test utility functions like `pathUtils` in isolation. + - **Integration Tests:** The primary focus is testing the `read_pdf` handler (`test/handlers/readPdf.test.ts`) with mocked dependencies (`pdfjs-dist`, `fs`). These tests verify: + - Correct parsing of various input arguments (paths, URLs, page selections, flags). + - Successful extraction of full text, specific page text, metadata, and page counts. + - Handling of multiple sources (local and URL) within a single request. + - Correct formatting of the JSON response. + - Graceful error handling for invalid inputs (caught by Zod or handler logic). + - Correct error reporting for file-not-found errors. + - Correct error reporting for PDF loading/parsing failures (mocked). + - Proper handling of warnings (e.g., requested pages out of bounds). + - **Security:** Path resolution logic (`resolvePath`) is tested separately (`test/pathUtils.test.ts`) to ensure it prevents path traversal and correctly handles relative paths within the project root. + +3. **Reliability & Consistency:** + - Tests are designed to be independent and repeatable. + - Mocking is used extensively to isolate the handler logic from external factors. + +## Running Tests + +Use the following npm scripts: + +- **`npm test`**: Run all tests once. +- **`npm run test:watch`**: Run tests in an interactive watch mode, re-running on file changes. +- **`npm run test:cov`**: Run all tests and generate a detailed coverage report in the `./coverage/` directory (view `index.html` in that directory for an interactive report). This command will fail if coverage thresholds are not met. + +## Test File Structure + +- Tests reside in the `test/` directory, mirroring the `src/` structure. +- Handler tests are in `test/handlers/`. +- Utility tests are in `test/utils/`. + +## Future Improvements + +- Consider adding end-to-end tests using a test MCP client/host. +- Explore property-based testing for more robust input validation checks. diff --git a/pdf-reader-mcp/eslint.config.js b/pdf-reader-mcp/eslint.config.js new file mode 100644 index 0000000..b0d81a2 --- /dev/null +++ b/pdf-reader-mcp/eslint.config.js @@ -0,0 +1,93 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import eslintConfigPrettier from 'eslint-config-prettier'; // Import prettier config + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, // Basic recommended rules - Apply broadly + { + // Global ignores + ignores: [ + 'node_modules/', + 'build/', + 'dist/', // Add dist + 'coverage/', // Add coverage + 'docs/.vitepress/cache/', // Ignore vitepress cache + 'docs/.vitepress/dist/', // Ignore vitepress build output + 'eslint.config.js', + ], + }, + // Configuration specific to TypeScript files, including type-aware rules + ...tseslint.config({ + files: ['**/*.ts'], + extends: [ + ...tseslint.configs.strictTypeChecked, // Apply strictest type-aware rules ONLY to TS files + ...tseslint.configs.stylisticTypeChecked, // Apply stylistic rules requiring TS config + ], + languageOptions: { + parserOptions: { + project: './tsconfig.eslint.json', // Point to specific tsconfig for ESLint + tsconfigRootDir: import.meta.dirname, + }, + }, + rules: { + // General JS/TS Rules (applied within TS context) + 'no-console': ['warn', { allow: ['warn', 'error', 'info'] }], + 'prefer-const': 'error', + eqeqeq: ['error', 'always'], + 'no-unused-vars': 'off', // Use TS version + complexity: ['error', { max: 10 }], + 'max-lines': ['warn', { max: 300, skipBlankLines: true, skipComments: true }], + 'max-lines-per-function': ['warn', { max: 50, skipBlankLines: true, skipComments: true }], + 'max-depth': ['warn', 3], + 'max-params': ['warn', 4], + + // TypeScript Specific Rules (override/add) + '@typescript-eslint/no-unused-vars': [ + 'error', + { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, + ], + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/explicit-function-return-type': 'error', + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/no-use-before-define': 'error', + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/no-misused-promises': 'error', + '@typescript-eslint/prefer-readonly': 'warn', + }, + }), + { + // Configuration for specific files to relax rules + files: [ + 'src/handlers/readPdf.ts', + 'test/**/*.ts', // Includes .test.ts and .bench.ts + ], + rules: { + complexity: 'off', + 'max-lines': 'off', + 'max-lines-per-function': 'off', + 'max-depth': 'off', // Also disable max-depth for these complex files/tests + '@typescript-eslint/no-unsafe-call': 'warn', // Downgrade unsafe-call to warning for tests if needed + '@typescript-eslint/no-unsafe-assignment': 'warn', // Downgrade related rule + '@typescript-eslint/no-unsafe-member-access': 'warn', // Downgrade related rule + }, + }, + { + // Configuration for JavaScript files (CommonJS like config files) + files: ['**/*.js', '**/*.cjs'], // Include .cjs files + languageOptions: { + globals: { + module: 'readonly', // Define CommonJS globals + require: 'readonly', + process: 'readonly', + __dirname: 'readonly', + }, + }, + rules: { + // Add JS/CJS specific rules if needed + '@typescript-eslint/no-var-requires': 'off', // Allow require in CJS if needed + }, + }, + eslintConfigPrettier // Add prettier config last to override other formatting rules +); diff --git a/pdf-reader-mcp/memory-bank/activeContext.md b/pdf-reader-mcp/memory-bank/activeContext.md new file mode 100644 index 0000000..a6e8e36 --- /dev/null +++ b/pdf-reader-mcp/memory-bank/activeContext.md @@ -0,0 +1,104 @@ + + +# Active Context: PDF Reader MCP Server (Guidelines Alignment) + +## 1. Current Focus + +Project alignment and documentation according to Sylph Lab Playbook guidelines are complete. CI workflow fixed (formatting, publish step, Dockerfile, parallelization, pre-commit hook), Test Analytics integrated, and Git history corrected multiple times. Dockerfile updated to use LTS Node. Version bumped to `0.3.16` and pushed successfully. + +## 2. Recent Changes (Chronological Summary) + +- Cloned `filesystem-mcp` as a base. +- Updated `package.json` (name, version, description). +- Implemented initial PDF tools using `pdf-parse`. +- Removed unused filesystem handlers. +- Added URL support to `pdf-parse` based tools. +- Consolidated tools into a single `read_pdf` handler. +- **Switched PDF Library:** Uninstalled `pdf-parse`, installed `pdfjs-dist`. +- Rewrote the `read_pdf` handler (`src/handlers/readPdf.ts`) to use `pdfjs-dist`. +- Updated `README.md` and Memory Bank files to reflect the switch to `pdfjs-dist` and the consolidated tool. +- **Added Multiple Source Support & Per-Source Pages:** Modified `read_pdf` handler and schema to accept an array of `sources`. Moved the optional `pages` parameter into each source object. +- Created `CHANGELOG.md` and `LICENSE`. +- Updated `.github/workflows/publish.yml` initially. +- **Guidelines Alignment (Initial):** + - Removed sponsorship information (`.github/FUNDING.yml`, `README.md` badges). + - Updated `package.json` scripts (`lint`, `format`, `validate`, added `test:watch`, etc.) and removed unused dependencies. + - Verified `tsconfig.json`, `eslint.config.js`, `.prettierrc.cjs`, `vitest.config.ts` alignment. + - Updated `.gitignore`. + - Refactored GitHub Actions workflow to `.github/workflows/ci.yml`. + - Added tests (~95% coverage). + - Updated Project Identity (`sylphlab` scope). +- **Guidelines Alignment (Configuration Deep Dive):** + - Updated `package.json` with missing metadata, dev dependencies (`husky`, `lint-staged`, `commitlint`, `typedoc`, `standard-version`), scripts (`start`, `typecheck`, `prepare`, `benchmark`, `release`, `clean`, `docs:api`, `prepublishOnly`), and `files` array. + - Updated `tsconfig.json` with missing compiler options and refined `exclude` array. + - Updated `eslint.config.js` to enable `stylisticTypeChecked`, enforce stricter rules (`no-unused-vars`, `no-explicit-any` to `error`), and add missing recommended rules. + - Created `.github/dependabot.yml` for automated dependency updates. + - Updated `.github/workflows/ci.yml` to use fixed Action versions and add Coveralls integration. + - Set up Git Hooks using Husky (`pre-commit` with `lint-staged`, `commit-msg` with `commitlint`) and created `commitlint.config.cjs`. +- **Benchmarking & Documentation:** + - Created initial benchmark file, fixed TS errors, and successfully ran benchmarks (`pnpm run benchmark`) after user provided `test/fixtures/sample.pdf`. + - Updated `docs/performance/index.md` with benchmark setup and initial results. +- **API Doc Generation:** + - Initially encountered persistent TypeDoc v0.28.1 initialization error with Node.js script. + - **Resolved:** Changed `docs:api` script in `package.json` to directly call TypeDoc CLI (`typedoc --entryPoints ...`). Successfully generated API docs. +- **Documentation Finalization:** + - Reviewed and updated `README.md`, `docs/guide/getting-started.md`, and VitePress config (`docs/.vitepress/config.mts`) based on guidelines. +- **Code Commit:** Committed and pushed all recent changes. +- **CI Fixes & Enhancements:** + - Fixed Prettier formatting issues identified by CI. + - Fixed ESLint errors/warnings (`no-undef`, `no-unused-vars`, `no-unsafe-call`, `require-await`, unused eslint-disable) identified by CI. + - Deleted unused `scripts/generate-api-docs.mjs` file. + - **Fixed `pnpm publish` error:** Added `--no-git-checks` flag to the publish command in `.github/workflows/ci.yml` to resolve `ERR_PNPM_GIT_UNCLEAN` error during tag-triggered publish jobs. + - **Integrated Codecov Test Analytics:** Updated `package.json` to generate JUnit XML test reports and added `codecov/test-results-action@v1` to `.github/workflows/ci.yml` to upload them. + - Added `test-report.junit.xml` to `.gitignore`. +- **Switched Coverage Tool:** Updated `.github/workflows/ci.yml` to replace Coveralls with Codecov based on user feedback. Added Codecov badge to `README.md`. +- **Version Bump & CI Saga (0.3.11 -> 0.3.16):** + - **Initial Goal (0.3.11):** Fix CI publish error (`--no-git-checks`), integrate Test Analytics, add `.gitignore` entry. + - **Problem 1:** Incorrect Git history manipulation led to pushing an incomplete `v0.3.11`. + - **Problem 2:** Force push/re-push of corrected `v0.3.11` / `v0.3.12` / `v0.3.13` / `v0.3.14` tags didn't trigger workflow or failed on CI checks. + - **Problem 3:** CI failed on `check-format` due to unformatted `ci.yml` / `CHANGELOG.md` (not caught by pre-commit hook initially). + - **Problem 4:** Further Git history confusion led to incorrect version bumps (`0.3.13`, `0.3.14`, `0.3.15`) and tag creation issues due to unstaged changes and leftover local tags. + - **Problem 5:** Docker build failed due to incorrect lockfile and missing `pnpm` install in `Dockerfile`. + - **Problem 6:** Workflow parallelization changes were not committed before attempting a release. + - **Problem 7:** `publish-npm` job failed due to missing dependencies for `prepublishOnly` script. + - **Problem 8:** `pre-commit` hook was running `pnpm test` instead of `pnpm lint-staged`. + - **Problem 9:** Docker build failed again due to `husky` command not found during `pnpm prune`. + - **Problem 10:** Dockerfile was using hardcoded `node:20-alpine` instead of `node:lts-alpine`. + - **Final Resolution:** Reset history multiple times, applied fixes sequentially (formatting `fe7eda1`, Dockerfile pnpm install `c202fd4`, parallelization `a569b62`, pre-commit/npm-publish fix `e96680c`, Dockerfile prune fix `02f3f91`, Dockerfile LTS `50f9bdd`), ensured clean working directory, ran `standard-version` successfully to create `v0.3.16` commit and tag, pushed `main` and tag `v0.3.16`. + - **Fixed `package.json` Paths:** Corrected `bin`, `files`, and `start` script paths from `build/` to `dist/` to align with `tsconfig.json` output directory and resolve executable error. + - **Committed & Pushed Fix:** Committed (`ab1100d`) and pushed the `package.json` path fix to `main`. + - **Version Bump & Push:** Bumped version to `0.3.17` using `standard-version` (commit `bb9d2e5`) and pushed the commit and tag `v0.3.17` to `main`. + +## 3. Next Steps + +- **Build Completed:** Project successfully built (`pnpm run build`). +- **GitHub Actions Status:** + - Pushed commit `c150022` (CI run `14298157760` **passed** format/lint/test checks, but **failed** at Codecov upload due to missing `CODECOV_TOKEN`). + - Pushed tag `v0.3.10` (Triggered publish/release workflow - status needed verification). + - **Pushed tag `v0.3.16`**. Publish/release workflow triggered. Status needs verification. +- **Runtime Testing (Blocked):** Requires user interaction with `@modelcontextprotocol/inspector` or a live agent. Skipping for now. +- **Documentation Finalization (Mostly Complete):** + - API docs generated. + - Main pages reviewed/updated. + - Codecov badge added (requires manual token update in `README.md`). + - **Remaining:** Add complex features (PWA, share buttons, roadmap page) if requested. +- **Release Preparation:** + - `CHANGELOG.md` updated for `0.3.10`. + - **Project is ready for final review. Requires Codecov token configuration and verification of the `v0.3.16` publish/release workflow.** + +## 4. Active Decisions & Considerations + +- **Switched to pnpm:** Changed package manager from npm to pnpm. +- **Using `pdfjs-dist` as the core PDF library.** +- Adopted the handler definition pattern from `filesystem-mcp`. +- Consolidated tools into a single `read_pdf` handler. +- Aligned project configuration with Guidelines. +- **Accepted ~95% test coverage**. +- **No Sponsorship:** Project will not include sponsorship links or files. +- **Using TypeDoc CLI for API Doc Generation:** Bypassed script initialization issues. +- **Switched to Codecov:** Replaced Coveralls with Codecov for coverage reporting. Test Analytics integration added. +- **Codecov Token Required:** CI is currently blocked on Codecov upload (coverage and test results) due to missing `CODECOV_TOKEN` secret in GitHub repository settings. This needs to be added by the user. +- **Version bumped to `0.3.17`**. +- **Publish Workflow:** Parallelized. Modified to bypass Git checks during `pnpm publish`. Docker build fixed (pnpm install, prune ignore scripts, LTS node). Dependencies installed before publish. Verification pending on the `v0.3.17` workflow run. +- **CI Workflow:** Added Codecov Test Analytics upload step. Formatting fixed. Parallelized publish steps. +- **Pre-commit Hook:** Fixed to run `lint-staged`. diff --git a/pdf-reader-mcp/memory-bank/productContext.md b/pdf-reader-mcp/memory-bank/productContext.md new file mode 100644 index 0000000..624faab --- /dev/null +++ b/pdf-reader-mcp/memory-bank/productContext.md @@ -0,0 +1,40 @@ +# Product Context: PDF Reader MCP Server + +## 1. Problem Solved + +AI agents often need to access information contained within PDF documents as +part of user tasks (e.g., summarizing reports, extracting data from invoices, +referencing documentation). Directly providing PDF file content to the agent is +inefficient (large token count) and often impossible due to binary format. +Executing external CLI tools for each PDF interaction can be slow, insecure, and +lack structured output. + +This MCP server provides a secure, efficient, and structured way for agents to +interact with PDF files within the user's project context. + +## 2. How It Should Work + +- The server runs as a background process, managed by the agent's host + environment. +- The host environment ensures the server is launched with its working directory + set to the user's current project root. +- The agent uses MCP calls to invoke specific PDF reading tools provided by the + server. +- The agent provides the relative path to the target PDF file within the project + root. +- The server uses the `pdf-parse` library to process the PDF. +- The server returns structured data (text, metadata, page count) back to the + agent via MCP. +- All file access is strictly limited to the project root directory. + +## 3. User Experience Goals + +- **Seamless Integration:** The agent should be able to use the PDF tools + naturally as part of its workflow without complex setup for the end-user. +- **Reliability:** Tools should reliably parse standard PDF files and return + accurate information or clear error messages. +- **Security:** Users should trust that the server only accesses files within + the intended project scope. +- **Efficiency:** Reading PDF data should be reasonably fast and avoid excessive + token usage compared to sending raw file content (which isn't feasible + anyway). diff --git a/pdf-reader-mcp/memory-bank/progress.md b/pdf-reader-mcp/memory-bank/progress.md new file mode 100644 index 0000000..bce4add --- /dev/null +++ b/pdf-reader-mcp/memory-bank/progress.md @@ -0,0 +1,61 @@ + + +# Progress: PDF Reader MCP Server (Guidelines Applied) + +## 1. What Works + +- **Project Setup:** Cloned from `filesystem-mcp`, dependencies installed (using pnpm). +- **Core Tool Handler (Consolidated, using `pdfjs-dist`, multi-source, per-source pages):** + - `read_pdf`: Implemented and integrated. +- **MCP Server Structure:** Basic server setup working. +- **Changelog:** `CHANGELOG.md` created and updated for `1.0.0`. +- **License:** `LICENSE` file created (MIT). +- **GitHub Actions:** `.github/workflows/ci.yml` refactored for CI/CD according to guidelines. Fixed `pnpm publish` step (`--no-git-checks`), added Test Analytics upload, fixed formatting, fixed Docker build step (`Dockerfile` - pnpm install, prune, LTS node), parallelized publish jobs, fixed pre-commit hook. Git history corrected multiple times. +- **Testing Framework (Vitest):** + - Integrated, configured. All tests passing. Coverage at ~95% (accepted). +- **Linter (ESLint):** + - Integrated, configured. Codebase passes all checks. +- **Formatter (Prettier):** + - Integrated, configured. Codebase formatted. +- **TypeScript Configuration:** `tsconfig.json` updated with strictest settings. +- **Package Configuration:** `package.json` updated. +- **Git Ignore:** `.gitignore` updated (added JUnit report). +- **Sponsorship:** Removed. +- **Project Identity:** Updated scope to `@sylphlab`. +- **Git Hooks:** Configured using Husky, lint-staged, and commitlint. +- **Dependency Updates:** Configured using Dependabot. +- **Compilation:** Completed successfully (`pnpm run build`). +- **Benchmarking:** + - Created and ran initial benchmarks. +- **Documentation (Mostly Complete):** + - VitePress site setup. + - `README.md`, Guide, Design, Performance, Comparison sections reviewed/updated. + - `CONTRIBUTING.md` created. + - Performance section updated with benchmark results. + - **API documentation generated successfully using TypeDoc CLI.** + - VitePress config updated with minor additions. +- **Version Control:** All recent changes committed (incl. formatting `fe7eda1`, Dockerfile pnpm install `c202fd4`, parallelization `a569b62`, pre-commit/npm-publish fix `e96680c`, Dockerfile prune fix `02f3f91`, Dockerfile LTS `50f9bdd`, `package.json` path fix `ab1100d`, release commit for `v0.3.17` `bb9d2e5`). Tag `v0.3.17` created and pushed. +- **Package Executable Path:** Fixed incorrect paths (`build/` -> `dist/`) in `package.json` (`bin`, `files`, `start` script). + +## 2. What's Left to Build/Verify + +- **Runtime Testing (Blocked):** Requires user interaction. +- **Publishing Workflow Test:** Triggered by pushing tag `v0.3.17`. Needs verification. +- **Documentation (Optional Enhancements):** + - Add complex features (PWA, share buttons, roadmap page) if requested. +- **Release Preparation:** + - Final review before tagging `1.0.0`. + - Consider using `standard-version` or similar for final release tagging/publishing. + +## 3. Current Status + +Project configuration and core functionality are aligned with guidelines. Documentation is largely complete, including generated API docs. Codebase passes all checks and tests (~95% coverage). **Version bumped to `0.3.17` and tag pushed. Project is ready for final review and workflow verification.** + +## 4. Known Issues/Risks + +- **100% Coverage Goal:** Currently at **~95%**. This level is deemed acceptable. +- **`pdfjs-dist` Complexity:** API complexity, text extraction accuracy depends on PDF, potential Node.js compatibility nuances. +- **Error Handling:** Basic handling implemented; specific PDF parsing errors might need refinement. +- **Performance:** Initial benchmarks run on a single sample file. Performance on diverse PDFs needs further investigation if issues arise. +- **Per-Source Pages:** Logic handles per-source `pages`; testing combinations is important (covered partially by benchmarks). +- **TypeDoc Script Issue:** Node.js script for TypeDoc failed, but CLI workaround is effective. diff --git a/pdf-reader-mcp/memory-bank/projectbrief.md b/pdf-reader-mcp/memory-bank/projectbrief.md new file mode 100644 index 0000000..0618eb9 --- /dev/null +++ b/pdf-reader-mcp/memory-bank/projectbrief.md @@ -0,0 +1,35 @@ +# Project Brief: PDF Reader MCP Server + +## 1. Project Goal + +To create a Model Context Protocol (MCP) server that allows AI agents (like +Cline) to securely read and extract information (text, metadata, page count) +from PDF files located within a specified project directory. + +## 2. Core Requirements + +- Implement an MCP server using Node.js and TypeScript. +- Base the server on the existing `@shtse8/filesystem-mcp` structure. +- Provide MCP tools for: + - Reading all text content from a PDF. + - Reading text content from specific pages of a PDF. + - Reading metadata from a PDF. + - Getting the total page count of a PDF. +- Ensure all operations are confined to the project root directory determined at + server launch. +- Use relative paths for all file operations. +- Utilize the `pdf-parse` library for PDF processing. +- Maintain clear documentation (README, Memory Bank). +- Package the server for distribution via npm and Docker Hub. + +## 3. Scope + +- **In Scope:** Implementing the core PDF reading tools, packaging, basic + documentation. +- **Out of Scope (Initially):** Advanced PDF features (image extraction, + annotation reading, form filling), complex error recovery beyond basic file + access/parsing errors, UI for the server. + +## 4. Target User + +AI agents interacting with user projects that contain PDF documents. diff --git a/pdf-reader-mcp/memory-bank/systemPatterns.md b/pdf-reader-mcp/memory-bank/systemPatterns.md new file mode 100644 index 0000000..7ac9a3f --- /dev/null +++ b/pdf-reader-mcp/memory-bank/systemPatterns.md @@ -0,0 +1,94 @@ +# System Patterns: PDF Reader MCP Server + +## 1. Architecture Overview + +The PDF Reader MCP server is a standalone Node.js application based on the +original Filesystem MCP. It's designed to run as a child process, communicating +with its parent (the AI agent host) via standard input/output (stdio) using the +Model Context Protocol (MCP) to provide PDF reading capabilities. + +```mermaid +graph LR + A[Agent Host Environment] -- MCP over Stdio --> B(PDF Reader MCP Server); + B -- Node.js fs/path/pdfjs-dist --> C[User Filesystem (Project Root)]; + C -- Results/Data --> B; + B -- MCP over Stdio --> A; +``` + +## 2. Key Technical Decisions & Patterns + +- **MCP SDK Usage:** Leverages the `@modelcontextprotocol/sdk` for handling MCP + communication (request parsing, response formatting, error handling). This + standardizes interaction and reduces boilerplate code. +- **Stdio Transport:** Uses `StdioServerTransport` from the SDK for + communication, suitable for running as a managed child process. +- **Asynchronous Operations:** All filesystem interactions and request handling + are implemented using `async/await` and Node.js's promise-based `fs` module + (`fs.promises`) for non-blocking I/O. +- **Strict Path Resolution:** A dedicated `resolvePath` function is used for + _every_ path received from the agent. + - It normalizes the path. + - It resolves the path relative to the server process's current working + directory (`process.cwd()`), which is treated as the `PROJECT_ROOT`. + **Crucially, this requires the process launching the server (e.g., the agent + host) to set the correct `cwd` for the target project.** + - It explicitly checks if the resolved absolute path still starts with the + `PROJECT_ROOT` absolute path to prevent path traversal vulnerabilities + (e.g., `../../sensitive-file`). + - It rejects absolute paths provided by the agent. +- **Zod for Schemas & Validation:** Uses `zod` library to define input schemas + for tools and perform robust validation within each handler. JSON schemas for + MCP listing are generated from Zod schemas. +- **Tool Definition Aggregation:** Tool definitions (name, description, Zod + schema, handler function) are defined in their respective handler files and + aggregated in `src/handlers/index.ts` for registration in `src/index.ts`. +- **`edit_file` Logic:** + - Processes multiple changes per file, applying them sequentially from + bottom-to-top to minimize line number conflicts. + - Handles insertion, text replacement, and deletion. + - Implements basic indentation detection (`detect-indent`) and preservation + for insertions/replacements. + - Uses `diff` library to generate unified diff output. +- **Error Handling:** + - Uses `try...catch` blocks within each tool handler. + - Catches specific Node.js filesystem errors (like `ENOENT`, `EPERM`, + `EACCES`) and maps them to appropriate MCP error codes (`InvalidRequest`). + - Uses custom `McpError` objects for standardized error reporting back to the + agent. + - Logs unexpected errors to the server's console (`stderr`) for debugging. +- **Glob for Listing/Searching:** Uses the `glob` library for flexible and + powerful file listing and searching based on glob patterns, including + recursive operations and stat retrieval. Careful handling of `glob`'s + different output types based on options (`string[]`, `Path[]`, `Path[]` with + `stats`) is implemented. +- **TypeScript:** Provides static typing for better code maintainability, early + error detection, and improved developer experience. Uses ES module syntax + (`import`/`export`). +- **PDF Parsing:** Uses Mozilla's `pdfjs-dist` library to load PDF documents and + extract text content, metadata, and page information. The `read_pdf` handler + uses its API. + +## 3. Component Relationships + +- **`index.ts`:** Main entry point. Sets up the MCP server instance, defines + tool schemas, registers request handlers, and starts the server connection. +- **`Server` (from SDK):** Core MCP server class handling protocol logic. +- **`StdioServerTransport` (from SDK):** Handles reading/writing MCP messages + via stdio. +- **Tool Handler Function (`handleReadPdfFunc`):** Contains the logic for the + consolidated `read_pdf` tool, including Zod argument validation, path + resolution, PDF loading/parsing via `pdfjs-dist`, and result formatting based + on input parameters. +- **`resolvePath` Helper:** Centralized security function for path validation. +- **`formatStats` Helper:** Utility to create a consistent stats object + structure. +- **Node.js Modules (`fs`, `path`):** Used for actual filesystem operations and + path manipulation. +- **`glob` Library:** Used for pattern-based file searching and listing. +- **`zod` Library:** Used for defining and validating tool input schemas. +- **`diff` Library:** (Inherited, but not used by PDF tools) Used by + `edit_file`. +- **`detect-indent` Library:** (Inherited, but not used by PDF tools) Used by + `edit_file`. +- **`pdfjs-dist` Library:** Used by the `read_pdf` handler to load and process + PDF documents. diff --git a/pdf-reader-mcp/memory-bank/techContext.md b/pdf-reader-mcp/memory-bank/techContext.md new file mode 100644 index 0000000..642353e --- /dev/null +++ b/pdf-reader-mcp/memory-bank/techContext.md @@ -0,0 +1,67 @@ + + +# Tech Context: PDF Reader MCP Server + +## 1. Core Technologies + +- **Runtime:** Node.js (>= 18.0.0 recommended) +- **Language:** TypeScript (Compiled to JavaScript for execution) +- **Package Manager:** pnpm (Switched from npm to align with guidelines) +- **Linter:** ESLint (with TypeScript support, including **strict type-aware rules**) +- **Formatter:** Prettier +- **Testing:** Vitest (with **~95% coverage achieved**) +- **Git Hooks:** Husky, lint-staged, commitlint +- **Dependency Update:** Dependabot + +## 2. Key Libraries/Dependencies + +- **`@modelcontextprotocol/sdk`:** The official SDK for implementing MCP servers and clients. +- **`glob`:** Library for matching files using glob patterns. +- **`pdfjs-dist`:** Mozilla's PDF rendering and parsing library. +- **`zod`:** Library for schema declaration and validation. +- **`zod-to-json-schema`:** Utility to convert Zod schemas to JSON schemas. + +- **Dev Dependencies (Key):** + - **`typescript`:** TypeScript compiler (`tsc`). + - **`@types/node`:** TypeScript type definitions for Node.js. + - **`@types/glob`:** TypeScript type definitions for `glob`. + - **`vitest`:** Test runner framework. + - **`@vitest/coverage-v8`:** Coverage provider for Vitest. + - **`eslint`:** Core ESLint library. + - **`typescript-eslint`:** Tools for ESLint + TypeScript integration. + - **`prettier`:** Code formatter. + - **`eslint-config-prettier`:** Turns off ESLint rules that conflict with Prettier. + - **`husky`:** Git hooks manager. + - **`lint-staged`:** Run linters on staged files. + - **`@commitlint/cli` & `@commitlint/config-conventional`:** Commit message linting. + - **`standard-version`:** Release automation tool. + - **`typedoc` & `typedoc-plugin-markdown`:** API documentation generation. + - **`vitepress` & `vue`:** Documentation website framework. + +## 3. Development Setup + +- **Source Code:** Located in the `src` directory. +- **Testing Code:** Located in the `test` directory. +- **Main File:** `src/index.ts`. +- **Configuration:** + - `tsconfig.json`: TypeScript compiler options (**strictest settings enabled**, includes recommended options like `declaration` and `sourceMap`). + - `vitest.config.ts`: Vitest test runner configuration (**100% coverage thresholds set**, ~95% achieved). + - `eslint.config.js`: ESLint flat configuration (integrates Prettier, enables **strict type-aware linting** and **additional guideline rules**). + - `.prettierrc.cjs`: Prettier formatting rules. + - `.gitignore`: Specifies intentionally untracked files (`node_modules/`, `build/`, `coverage/`, etc.). + - `.github/workflows/ci.yml`: GitHub Actions workflow (validation, publishing, release, **fixed Action versions**, **Coveralls**). + - `.github/dependabot.yml`: Automated dependency update configuration. + - `package.json`: Project metadata, dependencies, and npm scripts (includes `start`, `typecheck`, `prepare`, `benchmark`, `release`, `clean`, `docs:api`, `prepublishOnly`, etc.). + - `commitlint.config.cjs`: Commitlint configuration. + - `.husky/`: Directory containing Git hook scripts. +- **Build Output:** Compiled JavaScript in the `build` directory. +- **Execution:** Run via `node build/index.js` or `npm start`. + +## 4. Technical Constraints & Considerations + +- **Node.js Environment:** Relies on Node.js runtime (>=18.0.0) and built-in modules. +- **Permissions:** Server process permissions affect filesystem operations. +- **Cross-Platform Compatibility:** Filesystem behaviors might differ. Code uses Node.js `path` module to mitigate. +- **Error Handling:** Relies on Node.js error codes and McpError. +- **Security Model:** Relies on `resolvePath` for path validation within `PROJECT_ROOT`. +- **Project Root Determination:** `PROJECT_ROOT` is the server's `process.cwd()`. The launching process must set this correctly. diff --git a/pdf-reader-mcp/package-lock.json b/pdf-reader-mcp/package-lock.json new file mode 100644 index 0000000..c6ac5d8 --- /dev/null +++ b/pdf-reader-mcp/package-lock.json @@ -0,0 +1,11303 @@ +{ + "name": "@sylphlab/pdf-reader-mcp", + "version": "0.3.24", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@sylphlab/pdf-reader-mcp", + "version": "0.3.24", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "1.8.0", + "glob": "^11.0.1", + "pdfjs-dist": "^5.1.91", + "zod": "^3.24.2", + "zod-to-json-schema": "^3.24.5" + }, + "bin": { + "pdf-reader-mcp": "dist/index.js" + }, + "devDependencies": { + "@commitlint/cli": "^19.8.0", + "@commitlint/config-conventional": "^19.8.0", + "@eslint/js": "^9.24.0", + "@types/glob": "^8.1.0", + "@types/node": "^24.0.7", + "@typescript-eslint/eslint-plugin": "^8.29.0", + "@typescript-eslint/parser": "^8.29.0", + "@vitest/coverage-v8": "^3.1.1", + "eslint": "^9.24.0", + "eslint-config-prettier": "^10.1.1", + "husky": "^9.1.7", + "lint-staged": "^15.5.0", + "prettier": "^3.5.3", + "standard-version": "^9.5.0", + "typedoc": "^0.28.2", + "typedoc-plugin-markdown": "^4.6.1", + "typescript": "^5.8.3", + "typescript-eslint": "^8.29.0", + "vitepress": "^1.6.3", + "vitest": "^3.1.1", + "vue": "^3.5.13" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@algolia/abtesting/-/abtesting-1.6.1.tgz", + "integrity": "sha512-wV/gNRkzb7sI9vs1OneG129hwe3Q5zPj7zigz3Ps7M5Lpo2hSorrOnXNodHEOV+yXE/ks4Pd+G3CDFIjFTWhMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-abtesting/-/client-abtesting-5.40.1.tgz", + "integrity": "sha512-cxKNATPY5t+Mv8XAVTI57altkaPH+DZi4uMrnexPxPHODMljhGYY+GDZyHwv9a+8CbZHcY372OkxXrDMZA4Lnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-5.40.1.tgz", + "integrity": "sha512-XP008aMffJCRGAY8/70t+hyEyvqqV7YKm502VPu0+Ji30oefrTn2al7LXkITz7CK6I4eYXWRhN6NaIUi65F1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-insights/-/client-insights-5.40.1.tgz", + "integrity": "sha512-RTLjST/t+lsLMouQ4zeLJq2Ss+UNkLGyNVu+yWHanx6kQ3LT5jv8UvPwyht9s7R6jCPnlSI77WnL80J32ZuyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-5.40.1.tgz", + "integrity": "sha512-2FEK6bUomBzEYkTKzD0iRs7Ljtjb45rKK/VSkyHqeJnG+77qx557IeSO0qVFE3SfzapNcoytTofnZum0BQ6r3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.40.1.tgz", + "integrity": "sha512-Nju4NtxAvXjrV2hHZNLKVJLXjOlW6jAXHef/CwNzk1b2qIrCWDO589ELi5ZHH1uiWYoYyBXDQTtHmhaOVVoyXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-5.40.1.tgz", + "integrity": "sha512-Mw6pAUF121MfngQtcUb5quZVqMC68pSYYjCRZkSITC085S3zdk+h/g7i6FxnVdbSU6OztxikSDMh1r7Z+4iPlA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/ingestion/-/ingestion-1.40.1.tgz", + "integrity": "sha512-z+BPlhs45VURKJIxsR99NNBWpUEEqIgwt10v/fATlNxc4UlXvALdOsWzaFfe89/lbP5Bu4+mbO59nqBC87ZM/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/monitoring/-/monitoring-1.40.1.tgz", + "integrity": "sha512-VJMUMbO0wD8Rd2VVV/nlFtLJsOAQvjnVNGkMkspFiFhpBA7s/xJOb+fJvvqwKFUjbKTUA7DjiSi1ljSMYBasXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/recommend/-/recommend-5.40.1.tgz", + "integrity": "sha512-ehvJLadKVwTp9Scg9NfzVSlBKH34KoWOQNTaN8i1Ac64AnO6iH2apJVSP6GOxssaghZ/s8mFQsDH3QIZoluFHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.40.1.tgz", + "integrity": "sha512-PbidVsPurUSQIr6X9/7s34mgOMdJnn0i6p+N6Ab+lsNhY5eiu+S33kZEpZwkITYBCIbhzDLOvb7xZD3gDi+USA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/requester-fetch/-/requester-fetch-5.40.1.tgz", + "integrity": "sha512-ThZ5j6uOZCF11fMw9IBkhigjOYdXGXQpj6h4k+T9UkZrF2RlKcPynFzDeRgaLdpYk8Yn3/MnFbwUmib7yxj5Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-5.40.1.tgz", + "integrity": "sha512-H1gYPojO6krWHnUXu/T44DrEun/Wl95PJzMXRcM/szstNQczSbwq6wIFJPI9nyE95tarZfUNU3rgorT+wZ6iCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/message": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmmirror.com/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.38.0", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@gerrit0/mini-shiki": { + "version": "3.13.1", + "resolved": "https://registry.npmmirror.com/@gerrit0/mini-shiki/-/mini-shiki-3.13.1.tgz", + "integrity": "sha512-fDWM5QQc70jwBIt/WYMybdyXdyBmoJe7r1hpM+V/bHnyla79sygVDK2/LlVxIPc4n5FA3B5Wzt7AQH2+psNphg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^3.13.0", + "@shikijs/langs": "^3.13.0", + "@shikijs/themes": "^3.13.0", + "@shikijs/types": "^3.13.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmmirror.com/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmmirror.com/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.55", + "resolved": "https://registry.npmmirror.com/@iconify-json/simple-icons/-/simple-icons-1.2.55.tgz", + "integrity": "sha512-9vc04pmup/zcef8hDypWU8nMwMaFVkWuUzWkxyL++DVp5AA8baoJHK6RyKN1v+cvfR2agxkUb053XVggzFFkTA==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.8.0.tgz", + "integrity": "sha512-e06W7SwrontJDHwCawNO5SGxG+nU9AAx+jpHHZqGl/WrDBdWOpvirC+s58VpJTB5QemI4jTRcjWT4Pt3Q1NPQQ==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "eventsource": "^3.0.2", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^4.1.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas/-/canvas-0.1.80.tgz", + "integrity": "sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==", + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.80", + "@napi-rs/canvas-darwin-arm64": "0.1.80", + "@napi-rs/canvas-darwin-x64": "0.1.80", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.80", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.80", + "@napi-rs/canvas-linux-arm64-musl": "0.1.80", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.80", + "@napi-rs/canvas-linux-x64-gnu": "0.1.80", + "@napi-rs/canvas-linux-x64-musl": "0.1.80", + "@napi-rs/canvas-win32-x64-msvc": "0.1.80" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.80.tgz", + "integrity": "sha512-sk7xhN/MoXeuExlggf91pNziBxLPVUqF2CAVnB57KLG/pz7+U5TKG8eXdc3pm0d7Od0WreB6ZKLj37sX9muGOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz", + "integrity": "sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.80.tgz", + "integrity": "sha512-FqqSU7qFce0Cp3pwnTjVkKjjOtxMqRe6lmINxpIZYaZNnVI0H5FtsaraZJ36SiTHNjZlUB69/HhxNDT1Aaa9vA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.80.tgz", + "integrity": "sha512-eyWz0ddBDQc7/JbAtY4OtZ5SpK8tR4JsCYEZjCE3dI8pqoWUC8oMwYSBGCYfsx2w47cQgQCgMVRVTFiiO38hHQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.80.tgz", + "integrity": "sha512-qwA63t8A86bnxhuA/GwOkK3jvb+XTQaTiVML0vAWoHyoZYTjNs7BzoOONDgTnNtr8/yHrq64XXzUoLqDzU+Uuw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.80.tgz", + "integrity": "sha512-1XbCOz/ymhj24lFaIXtWnwv/6eFHXDrjP0jYkc6iHQ9q8oXKzUX1Lc6bu+wuGiLhGh2GS/2JlfORC5ZcXimRcg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.80.tgz", + "integrity": "sha512-XTzR125w5ZMs0lJcxRlS1K3P5RaZ9RmUsPtd1uGt+EfDyYMu4c6SEROYsxyatbbu/2+lPe7MPHOO/0a0x7L/gw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.80.tgz", + "integrity": "sha512-BeXAmhKg1kX3UCrJsYbdQd3hIMDH/K6HnP/pG2LuITaXhXBiNdh//TVVVVCBbJzVQaV5gK/4ZOCMrQW9mvuTqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.80.tgz", + "integrity": "sha512-x0XvZWdHbkgdgucJsRxprX/4o4sEed7qo9rCQA9ugiS9qE2QvP0RIiEugtZhfLH3cyI+jIRFJHV4Fuz+1BHHMg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.80", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.80.tgz", + "integrity": "sha512-Z8jPsM6df5V8B1HrCHB05+bDiCxjE9QA//3YrkKIdVDEwn5RKaqOxCJDRJkl48cJbylcrJbW4HxZbTte8juuPg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", + "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", + "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", + "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", + "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", + "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", + "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", + "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", + "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", + "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", + "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", + "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", + "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", + "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", + "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", + "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", + "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", + "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", + "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", + "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", + "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", + "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", + "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/core/node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/core/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.13.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz", + "integrity": "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.13.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.13.0", + "resolved": "https://registry.npmmirror.com/@shikijs/langs/-/langs-3.13.0.tgz", + "integrity": "sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.13.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.13.0", + "resolved": "https://registry.npmmirror.com/@shikijs/themes/-/themes-3.13.0.tgz", + "integrity": "sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.13.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/types": { + "version": "3.13.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.13.0.tgz", + "integrity": "sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmmirror.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.9.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.9.1.tgz", + "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", + "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/type-utils": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.2", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.46.2.tgz", + "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/project-service/-/project-service-8.46.2.tgz", + "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz", + "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", + "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz", + "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.46.2.tgz", + "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", + "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.2", + "@typescript-eslint/tsconfig-utils": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.46.2.tgz", + "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", + "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz", + "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/shared": "3.5.22", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", + "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", + "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/compiler-core": "3.5.22", + "@vue/compiler-dom": "3.5.22", + "@vue/compiler-ssr": "3.5.22", + "@vue/shared": "3.5.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.19", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", + "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-7.7.7.tgz", + "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.7" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", + "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.7", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", + "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.22.tgz", + "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.22.tgz", + "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz", + "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.22", + "@vue/runtime-core": "3.5.22", + "@vue/shared": "3.5.22", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.22.tgz", + "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.22", + "@vue/shared": "3.5.22" + }, + "peerDependencies": { + "vue": "3.5.22" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz", + "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/algoliasearch": { + "version": "5.40.1", + "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-5.40.1.tgz", + "integrity": "sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/abtesting": "1.6.1", + "@algolia/client-abtesting": "5.40.1", + "@algolia/client-analytics": "5.40.1", + "@algolia/client-common": "5.40.1", + "@algolia/client-insights": "5.40.1", + "@algolia/client-personalization": "5.40.1", + "@algolia/client-query-suggestions": "5.40.1", + "@algolia/client-search": "5.40.1", + "@algolia/ingestion": "1.40.1", + "@algolia/monitoring": "1.40.1", + "@algolia/recommend": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.1.1.tgz", + "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.7", + "resolved": "https://registry.npmmirror.com/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.7.tgz", + "integrity": "sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/birpc": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.6.1.tgz", + "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog": { + "version": "3.1.25", + "resolved": "https://registry.npmmirror.com/conventional-changelog/-/conventional-changelog-3.1.25.tgz", + "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-core/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-core/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/conventional-changelog-core/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/conventional-changelog-core/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-recommended-bump/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/conventional-recommended-bump/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-recommended-bump/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-recommended-bump/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-recommended-bump/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-recommended-bump/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/conventional-recommended-bump/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", + "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jiti": "^2.6.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", + "dev": true, + "license": "ISC", + "dependencies": { + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.38.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/focus-trap": { + "version": "7.6.5", + "resolved": "https://registry.npmmirror.com/focus-trap/-/focus-trap-7.6.5.tgz", + "integrity": "sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/get-pkg-repo/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/get-pkg-repo/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-pkg-repo/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-pkg-repo/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/git-semver-tags/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-semver-tags/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-semver-tags/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-semver-tags/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/gitconfiglocal/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmmirror.com/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.5.2", + "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmmirror.com/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmmirror.com/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmmirror.com/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pdfjs-dist": { + "version": "5.4.296", + "resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz", + "integrity": "sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=20.16.0 || >=22.3.0" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^0.1.80" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkce-challenge": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-4.1.0.tgz", + "integrity": "sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.27.2", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.27.2.tgz", + "integrity": "sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-3.0.1.tgz", + "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.7.0", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.52.5", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.52.5.tgz", + "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.52.5", + "@rollup/rollup-android-arm64": "4.52.5", + "@rollup/rollup-darwin-arm64": "4.52.5", + "@rollup/rollup-darwin-x64": "4.52.5", + "@rollup/rollup-freebsd-arm64": "4.52.5", + "@rollup/rollup-freebsd-x64": "4.52.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", + "@rollup/rollup-linux-arm-musleabihf": "4.52.5", + "@rollup/rollup-linux-arm64-gnu": "4.52.5", + "@rollup/rollup-linux-arm64-musl": "4.52.5", + "@rollup/rollup-linux-loong64-gnu": "4.52.5", + "@rollup/rollup-linux-ppc64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-musl": "4.52.5", + "@rollup/rollup-linux-s390x-gnu": "4.52.5", + "@rollup/rollup-linux-x64-gnu": "4.52.5", + "@rollup/rollup-linux-x64-musl": "4.52.5", + "@rollup/rollup-openharmony-arm64": "4.52.5", + "@rollup/rollup-win32-arm64-msvc": "4.52.5", + "@rollup/rollup-win32-ia32-msvc": "4.52.5", + "@rollup/rollup-win32-x64-gnu": "4.52.5", + "@rollup/rollup-win32-x64-msvc": "4.52.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/shiki/node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/shiki/node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/shiki/node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/shiki/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version": { + "version": "9.5.0", + "resolved": "https://registry.npmmirror.com/standard-version/-/standard-version-9.5.0.tgz", + "integrity": "sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^2.4.2", + "conventional-changelog": "3.1.25", + "conventional-changelog-config-spec": "2.1.0", + "conventional-changelog-conventionalcommits": "4.6.3", + "conventional-recommended-bump": "6.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", + "dotgitignore": "^2.1.0", + "figures": "^3.1.0", + "find-up": "^5.0.0", + "git-semver-tags": "^4.0.0", + "semver": "^7.1.1", + "stringify-package": "^1.0.1", + "yargs": "^16.0.0" + }, + "bin": { + "standard-version": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/standard-version/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/standard-version/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version/node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/standard-version/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/standard-version/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/standard-version/node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/standard-version/node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "deprecated": "This module is not used anymore, and has been replaced by @npmcli/package-json", + "dev": true, + "license": "ISC" + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/test-exclude/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/test-exclude/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typedoc": { + "version": "0.28.14", + "resolved": "https://registry.npmmirror.com/typedoc/-/typedoc-0.28.14.tgz", + "integrity": "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@gerrit0/mini-shiki": "^3.12.0", + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.8.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18", + "pnpm": ">= 10" + }, + "peerDependencies": { + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.9.0.tgz", + "integrity": "sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typedoc": "0.28.x" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.46.2", + "resolved": "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.46.2.tgz", + "integrity": "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/parser": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitepress": { + "version": "1.6.4", + "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-1.6.4.tgz", + "integrity": "sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.22", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz", + "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.22", + "@vue/compiler-sfc": "3.5.22", + "@vue/runtime-dom": "3.5.22", + "@vue/server-renderer": "3.5.22", + "@vue/shared": "3.5.22" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/pdf-reader-mcp/package.json b/pdf-reader-mcp/package.json new file mode 100644 index 0000000..d5ff949 --- /dev/null +++ b/pdf-reader-mcp/package.json @@ -0,0 +1,110 @@ +{ + "name": "@sylphlab/pdf-reader-mcp", + "version": "0.3.24", + "description": "An MCP server providing tools to read PDF files.", + "type": "module", + "bin": { + "pdf-reader-mcp": "./dist/index.js" + }, + "files": [ + "dist/", + "README.md", + "LICENSE" + ], + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">=22.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sylphlab/pdf-reader-mcp.git" + }, + "bugs": { + "url": "https://github.com/sylphlab/pdf-reader-mcp/issues" + }, + "homepage": "https://github.com/sylphlab/pdf-reader-mcp#readme", + "author": "Sylph AI (https://sylphlab.ai)", + "license": "MIT", + "keywords": [ + "mcp", + "model-context-protocol", + "pdf", + "reader", + "parser", + "typescript", + "node", + "ai", + "agent", + "tool" + ], + "scripts": { + "build": "tsc", + "watch": "tsc --watch", + "inspector": "npx @modelcontextprotocol/inspector dist/index.js", + "test": "vitest run", + "test:watch": "vitest watch", + "test:cov": "vitest run --coverage --reporter=junit --outputFile=test-report.junit.xml", + "lint": "eslint . --ext .ts,.tsx,.js,.cjs --cache", + "lint:fix": "eslint . --ext .ts,.tsx,.js,.cjs --fix --cache", + "format": "prettier --write . --cache", + "check-format": "prettier --check . --cache", + "validate": "npm run check-format && npm run lint && npm run test", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs", + "start": "node dist/index.js", + "typecheck": "tsc --noEmit", + "benchmark": "vitest bench", + "clean": "rm -rf dist coverage", + "docs:api": "typedoc --entryPoints src/index.ts --tsconfig tsconfig.json --plugin typedoc-plugin-markdown --out docs/api --readme none", + "prepublishOnly": "pnpm run clean && pnpm run build", + "release": "standard-version", + "prepare": "husky" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "1.8.0", + "glob": "^11.0.1", + "pdfjs-dist": "^5.1.91", + "zod": "^3.24.2", + "zod-to-json-schema": "^3.24.5" + }, + "devDependencies": { + "@commitlint/cli": "^19.8.0", + "@commitlint/config-conventional": "^19.8.0", + "@eslint/js": "^9.24.0", + "@types/glob": "^8.1.0", + "@types/node": "^24.0.7", + "@typescript-eslint/eslint-plugin": "^8.29.0", + "@typescript-eslint/parser": "^8.29.0", + "@vitest/coverage-v8": "^3.1.1", + "eslint": "^9.24.0", + "eslint-config-prettier": "^10.1.1", + "husky": "^9.1.7", + "lint-staged": "^15.5.0", + "prettier": "^3.5.3", + "standard-version": "^9.5.0", + "typedoc": "^0.28.2", + "typedoc-plugin-markdown": "^4.6.1", + "typescript": "^5.8.3", + "typescript-eslint": "^8.29.0", + "vitepress": "^1.6.3", + "vitest": "^3.1.1", + "vue": "^3.5.13" + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "lint-staged": { + "*.{ts,tsx,js,cjs}": [ + "eslint --fix --cache", + "prettier --write --cache" + ], + "*.{json,md,yaml,yml}": [ + "prettier --write --cache" + ] + } +} diff --git a/pdf-reader-mcp/pnpm-lock.yaml b/pdf-reader-mcp/pnpm-lock.yaml new file mode 100644 index 0000000..14495d6 --- /dev/null +++ b/pdf-reader-mcp/pnpm-lock.yaml @@ -0,0 +1,6417 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@modelcontextprotocol/sdk': + specifier: 1.8.0 + version: 1.8.0 + glob: + specifier: ^11.0.1 + version: 11.0.1 + pdfjs-dist: + specifier: ^5.1.91 + version: 5.1.91 + zod: + specifier: ^3.24.2 + version: 3.24.2 + zod-to-json-schema: + specifier: ^3.24.5 + version: 3.24.5(zod@3.24.2) + devDependencies: + '@commitlint/cli': + specifier: ^19.8.0 + version: 19.8.0(@types/node@24.0.7)(typescript@5.8.3) + '@commitlint/config-conventional': + specifier: ^19.8.0 + version: 19.8.0 + '@eslint/js': + specifier: ^9.24.0 + version: 9.24.0 + '@types/glob': + specifier: ^8.1.0 + version: 8.1.0 + '@types/node': + specifier: ^24.0.7 + version: 24.0.7 + '@typescript-eslint/eslint-plugin': + specifier: ^8.29.0 + version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.29.0 + version: 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@vitest/coverage-v8': + specifier: ^3.1.1 + version: 3.1.1(vitest@3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1)) + eslint: + specifier: ^9.24.0 + version: 9.24.0(jiti@2.4.2) + eslint-config-prettier: + specifier: ^10.1.1 + version: 10.1.1(eslint@9.24.0(jiti@2.4.2)) + husky: + specifier: ^9.1.7 + version: 9.1.7 + lint-staged: + specifier: ^15.5.0 + version: 15.5.0 + prettier: + specifier: ^3.5.3 + version: 3.5.3 + standard-version: + specifier: ^9.5.0 + version: 9.5.0 + typedoc: + specifier: ^0.28.2 + version: 0.28.2(typescript@5.8.3) + typedoc-plugin-markdown: + specifier: ^4.6.1 + version: 4.6.1(typedoc@0.28.2(typescript@5.8.3)) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.29.0 + version: 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + vitepress: + specifier: ^1.6.3 + version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.7)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3) + vitest: + specifier: ^3.1.1 + version: 3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + vue: + specifier: ^3.5.13 + version: 3.5.13(typescript@5.8.3) + +packages: + + '@algolia/autocomplete-core@1.17.7': + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.7': + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.7': + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.23.2': + resolution: {integrity: sha512-EudQGeYEzviwqPH8WoqP5VTQssE/PW6sEdL0zzOyKt2bWnWoUp5Rnm67sCbxYDR44JpUchbkul0PfWrSYsBPjQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.23.2': + resolution: {integrity: sha512-zmJrkZqWFu+ft+VRcttZZJhw5ElkhBtOArRzQOu9sRnrSSodBOdPRhAfvu8tG93Hv67wh5qQaTBwLxM58AxuMg==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.23.2': + resolution: {integrity: sha512-xaE6o4BMdqYBe0iB7JjX6G9/Qeqx6TSs9T4d6VJ0JHPsEyklSwIbKRiomPeYD7vzt2P4t45Io6QBhifOUP+0qg==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.23.2': + resolution: {integrity: sha512-F85hpMszbr5ZGt8gFdl7WOugELRF4z3R1nD9n3t7PZ/2alV7IR75UQY8/jMQDwij/lrnVaKbLeIvKKy6K7ncZw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.23.2': + resolution: {integrity: sha512-TuGaGKiQvQqFNR4c3Vdl+JBe6dkEPmRzVyIdWLrurOPEmFmVCKRxtSnLr0TVFl6de/JfDAXuchvtvLHFxv9P2A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.23.2': + resolution: {integrity: sha512-fg2tZf7Sf51Icjfrea0dnfbfwlJ7kXMcRsWSJN3DZhEi/Y4mMmK9L0Cq8sby6HDzxy5T8xEWNWC3TMx5FvrJ6w==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.23.2': + resolution: {integrity: sha512-XiTjt0qgsJk9OqvDpMwTgUaPAYNSQcMILRfSYiorgiyc71yYM7Lq1vRSVxhB0m51mrViWj4rIR6kSiJRXebqvQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.23.2': + resolution: {integrity: sha512-7ClIghvUFZTomBipD8Kor9Z5llcAM3lHUBG3VFOvUsOxOJcaMMONlBXyoFDfI1na+u14lVaGehY2oIEfY1eB0w==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.23.2': + resolution: {integrity: sha512-kF7KKd0iIIlaD70flFS+8+DNxRvIzrG9A22iWG5LDX225Kl6pITroq+qIUweqqyyoqJBYuIXKZGDGtnahEwQxw==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.23.2': + resolution: {integrity: sha512-nAgS2O5ww8J4fgW6GAiybAdr0uH7MV74srPdx51cPJRpQBEge4WnYBaOWx1/a53qI0xwNtQudnEyBGUzsSYaAw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.23.2': + resolution: {integrity: sha512-yw6IzgQcwr4cZuoQCEoQui9G0rhVRGCyhPhW+gmrXe6oVr4qB50FV6mWGLA170+iqGVjPn/DVuOhExjBzcViTQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.23.2': + resolution: {integrity: sha512-8rmSybTwIqmGx3P0qkOEUkkyeIewglaKq6yUnxnVkBJbd4USfIZsw9cME1YUEHeZI7aOhTQg9QteUHSKXclF5A==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.23.2': + resolution: {integrity: sha512-IHpUiW3d3oVE5tCYqQN7X71/EbXI7f8WxU85eWW1UYEWEknqW3csdGctyIW7+qMHFfxeDymI1Wln/gGHHIXLIw==} + engines: {node: '>= 14.0.0'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + + '@commitlint/cli@19.8.0': + resolution: {integrity: sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.8.0': + resolution: {integrity: sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.8.0': + resolution: {integrity: sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.8.0': + resolution: {integrity: sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.8.0': + resolution: {integrity: sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==} + engines: {node: '>=v18'} + + '@commitlint/format@19.8.0': + resolution: {integrity: sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.8.0': + resolution: {integrity: sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.8.0': + resolution: {integrity: sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ==} + engines: {node: '>=v18'} + + '@commitlint/load@19.8.0': + resolution: {integrity: sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==} + engines: {node: '>=v18'} + + '@commitlint/message@19.8.0': + resolution: {integrity: sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.8.0': + resolution: {integrity: sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q==} + engines: {node: '>=v18'} + + '@commitlint/read@19.8.0': + resolution: {integrity: sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.8.0': + resolution: {integrity: sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.8.0': + resolution: {integrity: sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.8.0': + resolution: {integrity: sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.8.0': + resolution: {integrity: sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ==} + engines: {node: '>=v18'} + + '@commitlint/types@19.8.0': + resolution: {integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==} + engines: {node: '>=v18'} + + '@docsearch/css@3.8.2': + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + + '@docsearch/js@3.8.2': + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} + + '@docsearch/react@3.8.2': + resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gerrit0/mini-shiki@3.2.2': + resolution: {integrity: sha512-vaZNGhGLKMY14HbF53xxHNgFO9Wz+t5lTlGNpl2N9xFiKQ0I5oIe0vKjU9dh7Nb3Dw6lZ7wqUE0ri+zcdpnK+Q==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@hutson/parse-repository-url@3.0.2': + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} + + '@iconify-json/simple-icons@1.2.30': + resolution: {integrity: sha512-KiVViMvnohpS5Q9WMP+4ksOhF3Dnq73Ba9hxBhUIIhp1r6RJ6edMZ8QGKZcFZp/B0/PZC4jAIhXcKKq73WZckQ==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@modelcontextprotocol/sdk@1.8.0': + resolution: {integrity: sha512-e06W7SwrontJDHwCawNO5SGxG+nU9AAx+jpHHZqGl/WrDBdWOpvirC+s58VpJTB5QemI4jTRcjWT4Pt3Q1NPQQ==} + engines: {node: '>=18'} + + '@napi-rs/canvas-android-arm64@0.1.69': + resolution: {integrity: sha512-4icWTByY8zPvM9SelfQKf3I6kwXw0aI5drBOVrwfER5kjwXJd78FPSDSZkxDHjvIo9Q86ljl18Yr963ehA4sHQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/canvas-darwin-arm64@0.1.69': + resolution: {integrity: sha512-HOanhhYlHdukA+unjelT4Dg3ta7e820x87/AG2dKUMsUzH19jaeZs9bcYjzEy2vYi/dFWKz7cSv2yaIOudB8Yg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/canvas-darwin-x64@0.1.69': + resolution: {integrity: sha512-SIp7WfhxAPnSVK9bkFfJp+84rbATCIq9jMUzDwpCLhQ+v+OqtXe4pggX1oeV+62/HK6BT1t18qRmJfyqwJ9f3g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.69': + resolution: {integrity: sha512-Ls+KujCp6TGpkuMVFvrlx+CxtL+casdkrprFjqIuOAnB30Mct6bCEr+I83Tu29s3nNq4EzIGjdmA3fFAZG/Dtw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/canvas-linux-arm64-gnu@0.1.69': + resolution: {integrity: sha512-m8VcGmeSBNRbHZBd1srvdM1aq/ScS2y8KqGqmCCEgJlytYK4jdULzAo2K/BPKE1v3xvn8oUPZDLI/NBJbJkEoA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-arm64-musl@0.1.69': + resolution: {integrity: sha512-a3xjNRIeK2m2ZORGv2moBvv3vbkaFZG1QKMeiEv/BKij+rkztuEhTJGMar+buICFgS0fLgphXXsKNkUSJb7eRQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.69': + resolution: {integrity: sha512-pClUoJF5wdC9AvD0mc15G9JffL1Q85nuH1rLSQPRkGmGmQOtRjw5E9xNbanz7oFUiPbjH7xcAXUjVAcf7tdgPQ==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/canvas-linux-x64-gnu@0.1.69': + resolution: {integrity: sha512-96X3bFAmzemfw84Ts6Jg/omL86uuynvK06MWGR/mp3JYNumY9RXofA14eF/kJIYelbYFWXcwpbcBR71lJ6G/YQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-linux-x64-musl@0.1.69': + resolution: {integrity: sha512-2QTsEFO72Kwkj53W9hc5y1FAUvdGx0V+pjJB+9oQF6Ys9+y989GyPIl5wZDzeh8nIJW6koZZ1eFa8pD+pA5BFQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-win32-x64-msvc@0.1.69': + resolution: {integrity: sha512-Q4YA8kVnKarApBVLu7F8icGlIfSll5Glswo5hY6gPS4Is2dCI8+ig9OeDM8RlwYevUIxKq8lZBypN8Q1iLAQ7w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/canvas@0.1.69': + resolution: {integrity: sha512-ydvNeJMRm+l3T14yCoUKqjYQiEdXDq1isznI93LEBGYssXKfSaLNLHOkeM4z9Fnw9Pkt2EKOCAtW9cS4b00Zcg==} + engines: {node: '>= 10'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rollup/rollup-android-arm-eabi@4.39.0': + resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.39.0': + resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.39.0': + resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.39.0': + resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.39.0': + resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.39.0': + resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.39.0': + resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.39.0': + resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.39.0': + resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.39.0': + resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.39.0': + resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.39.0': + resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.39.0': + resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.39.0': + resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.39.0': + resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.39.0': + resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.39.0': + resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} + cpu: [x64] + os: [win32] + + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} + + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} + + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} + + '@shikijs/engine-oniguruma@3.2.1': + resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} + + '@shikijs/langs@3.2.1': + resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} + + '@shikijs/themes@3.2.1': + resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + + '@shikijs/transformers@2.5.0': + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} + + '@shikijs/types@3.2.1': + resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/node@24.0.7': + resolution: {integrity: sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@typescript-eslint/eslint-plugin@8.29.0': + resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.29.0': + resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.29.0': + resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.29.0': + resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.29.0': + resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.29.0': + resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.29.0': + resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.29.0': + resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-vue@5.2.3': + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@vitest/coverage-v8@3.1.1': + resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==} + peerDependencies: + '@vitest/browser': 3.1.1 + vitest: 3.1.1 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} + + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} + + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} + + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} + + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} + + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/devtools-api@7.7.2': + resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + + '@vue/devtools-kit@7.7.2': + resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} + + '@vue/devtools-shared@7.7.2': + resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vueuse/core@12.8.2': + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + + '@vueuse/integrations@12.8.2': + resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@12.8.2': + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + + '@vueuse/shared@12.8.2': + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + add-stream@1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + algoliasearch@5.23.2: + resolution: {integrity: sha512-IhKP22Czzg8Y9HaF6aIb5aAHK2HBj4VAzLLnKEPUnxqDwxpryH9sXbm0NkeY7Cby9GlF81wF+AG/VulKDFBphg==} + engines: {node: '>= 14.0.0'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@5.0.13: + resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} + engines: {node: '>=10'} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-atom@2.0.8: + resolution: {integrity: sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==} + engines: {node: '>=10'} + + conventional-changelog-codemirror@2.0.8: + resolution: {integrity: sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==} + engines: {node: '>=10'} + + conventional-changelog-config-spec@2.1.0: + resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} + + conventional-changelog-conventionalcommits@4.6.3: + resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} + engines: {node: '>=10'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-changelog-core@4.2.4: + resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} + engines: {node: '>=10'} + + conventional-changelog-ember@2.0.9: + resolution: {integrity: sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==} + engines: {node: '>=10'} + + conventional-changelog-eslint@3.0.9: + resolution: {integrity: sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==} + engines: {node: '>=10'} + + conventional-changelog-express@2.0.6: + resolution: {integrity: sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==} + engines: {node: '>=10'} + + conventional-changelog-jquery@3.0.11: + resolution: {integrity: sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==} + engines: {node: '>=10'} + + conventional-changelog-jshint@2.0.9: + resolution: {integrity: sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==} + engines: {node: '>=10'} + + conventional-changelog-preset-loader@2.3.4: + resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} + engines: {node: '>=10'} + + conventional-changelog-writer@5.0.1: + resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} + engines: {node: '>=10'} + hasBin: true + + conventional-changelog@3.1.25: + resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} + engines: {node: '>=10'} + + conventional-commits-filter@2.0.7: + resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} + engines: {node: '>=10'} + + conventional-commits-parser@3.2.4: + resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} + engines: {node: '>=10'} + hasBin: true + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + conventional-recommended-bump@6.1.0: + resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} + engines: {node: '>=10'} + hasBin: true + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + dateformat@3.0.3: + resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotgitignore@2.1.0: + resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} + engines: {node: '>=6'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.1: + resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.6: + resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} + engines: {node: '>=18.0.0'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + focus-trap@7.6.4: + resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-pkg-repo@4.2.1: + resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} + engines: {node: '>=6.9.0'} + hasBin: true + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + git-remote-origin-url@2.0.0: + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} + engines: {node: '>=4'} + + git-semver-tags@4.1.1: + resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} + engines: {node: '>=10'} + hasBin: true + + gitconfiglocal@1.0.0: + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + engines: {node: 20 || >=22} + hasBin: true + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.1.0: + resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} + engines: {node: 20 || >=22} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lint-staged@15.5.0: + resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.ismatch@4.4.0: + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minisearch@7.1.2: + resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + modify-values@1.0.1: + resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} + engines: {node: '>=0.10.0'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + pdfjs-dist@5.1.91: + resolution: {integrity: sha512-qSIADdagooJB4wWCBnrBJjRvASevmxL0BwafvOuKJG5uTQdYoFBrhrRYnucKNiSc9qS6JIk0hC5y1yktFljXkA==} + engines: {node: '>=20'} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pkce-challenge@4.1.0: + resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} + engines: {node: '>=16.20.0'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.26.5: + resolution: {integrity: sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + read-pkg-up@3.0.0: + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.39.0: + resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + standard-version@9.5.0: + resolution: {integrity: sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==} + engines: {node: '>=10'} + hasBin: true + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + stringify-package@1.0.1: + resolution: {integrity: sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==} + deprecated: This module is not used anymore, and has been replaced by @npmcli/package-json + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + + text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typedoc-plugin-markdown@4.6.1: + resolution: {integrity: sha512-SrJv9zkpCWdG1cvtWniFU6M7MkCZuheN2R3fuqDPF+O+PeZ8bzmfj1ju/BJwoPWIKyFJVPhK8Sg6tBrM1y+VoA==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.28.x + + typedoc@0.28.2: + resolution: {integrity: sha512-9Giuv+eppFKnJ0oi+vxqLM817b/IrIsEMYgy3jj6zdvppAfDqV3d6DXL2vXUg2TnlL62V48th25Zf/tcQKAJdg==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + + typescript-eslint@8.29.0: + resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@5.4.17: + resolution: {integrity: sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@6.2.5: + resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitepress@1.6.3: + resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + '@algolia/client-search': 5.23.2 + algoliasearch: 5.23.2 + + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': + dependencies: + '@algolia/client-search': 5.23.2 + algoliasearch: 5.23.2 + + '@algolia/client-abtesting@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/client-analytics@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/client-common@5.23.2': {} + + '@algolia/client-insights@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/client-personalization@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/client-query-suggestions@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/client-search@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/ingestion@1.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/monitoring@1.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/recommend@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + '@algolia/requester-browser-xhr@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + + '@algolia/requester-fetch@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + + '@algolia/requester-node-http@5.23.2': + dependencies: + '@algolia/client-common': 5.23.2 + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@1.0.2': {} + + '@commitlint/cli@19.8.0(@types/node@24.0.7)(typescript@5.8.3)': + dependencies: + '@commitlint/format': 19.8.0 + '@commitlint/lint': 19.8.0 + '@commitlint/load': 19.8.0(@types/node@24.0.7)(typescript@5.8.3) + '@commitlint/read': 19.8.0 + '@commitlint/types': 19.8.0 + tinyexec: 0.3.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + ajv: 8.17.1 + + '@commitlint/ensure@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.8.0': {} + + '@commitlint/format@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + chalk: 5.4.1 + + '@commitlint/is-ignored@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + semver: 7.7.1 + + '@commitlint/lint@19.8.0': + dependencies: + '@commitlint/is-ignored': 19.8.0 + '@commitlint/parse': 19.8.0 + '@commitlint/rules': 19.8.0 + '@commitlint/types': 19.8.0 + + '@commitlint/load@19.8.0(@types/node@24.0.7)(typescript@5.8.3)': + dependencies: + '@commitlint/config-validator': 19.8.0 + '@commitlint/execute-rule': 19.8.0 + '@commitlint/resolve-extends': 19.8.0 + '@commitlint/types': 19.8.0 + chalk: 5.4.1 + cosmiconfig: 9.0.0(typescript@5.8.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.0.7)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.8.0': {} + + '@commitlint/parse@19.8.0': + dependencies: + '@commitlint/types': 19.8.0 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.8.0': + dependencies: + '@commitlint/top-level': 19.8.0 + '@commitlint/types': 19.8.0 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 0.3.2 + + '@commitlint/resolve-extends@19.8.0': + dependencies: + '@commitlint/config-validator': 19.8.0 + '@commitlint/types': 19.8.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.8.0': + dependencies: + '@commitlint/ensure': 19.8.0 + '@commitlint/message': 19.8.0 + '@commitlint/to-lines': 19.8.0 + '@commitlint/types': 19.8.0 + + '@commitlint/to-lines@19.8.0': {} + + '@commitlint/top-level@19.8.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.8.0': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.4.1 + + '@docsearch/css@3.8.2': {} + + '@docsearch/js@3.8.2(@algolia/client-search@5.23.2)(search-insights@2.17.3)': + dependencies: + '@docsearch/react': 3.8.2(@algolia/client-search@5.23.2)(search-insights@2.17.3) + preact: 10.26.5 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.8.2(@algolia/client-search@5.23.2)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + '@docsearch/css': 3.8.2 + algoliasearch: 5.23.2 + optionalDependencies: + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.25.2': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.25.2': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.25.2': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.25.2': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.25.2': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.25.2': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.2': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.25.2': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.25.2': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.25.2': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.25.2': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.25.2': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.25.2': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.25.2': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.25.2': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.25.2': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.25.2': + optional: true + + '@esbuild/netbsd-arm64@0.25.2': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.25.2': + optional: true + + '@esbuild/openbsd-arm64@0.25.2': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.25.2': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.25.2': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.25.2': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.25.2': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.25.2': + optional: true + + '@eslint-community/eslint-utils@4.5.1(eslint@9.24.0(jiti@2.4.2))': + dependencies: + eslint: 9.24.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.1': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.24.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@gerrit0/mini-shiki@3.2.2': + dependencies: + '@shikijs/engine-oniguruma': 3.2.1 + '@shikijs/langs': 3.2.1 + '@shikijs/themes': 3.2.1 + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@hutson/parse-repository-url@3.0.2': {} + + '@iconify-json/simple-icons@1.2.30': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@modelcontextprotocol/sdk@1.8.0': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 4.1.0 + raw-body: 3.0.0 + zod: 3.24.2 + zod-to-json-schema: 3.24.5(zod@3.24.2) + transitivePeerDependencies: + - supports-color + + '@napi-rs/canvas-android-arm64@0.1.69': + optional: true + + '@napi-rs/canvas-darwin-arm64@0.1.69': + optional: true + + '@napi-rs/canvas-darwin-x64@0.1.69': + optional: true + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.69': + optional: true + + '@napi-rs/canvas-linux-arm64-gnu@0.1.69': + optional: true + + '@napi-rs/canvas-linux-arm64-musl@0.1.69': + optional: true + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.69': + optional: true + + '@napi-rs/canvas-linux-x64-gnu@0.1.69': + optional: true + + '@napi-rs/canvas-linux-x64-musl@0.1.69': + optional: true + + '@napi-rs/canvas-win32-x64-msvc@0.1.69': + optional: true + + '@napi-rs/canvas@0.1.69': + optionalDependencies: + '@napi-rs/canvas-android-arm64': 0.1.69 + '@napi-rs/canvas-darwin-arm64': 0.1.69 + '@napi-rs/canvas-darwin-x64': 0.1.69 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.69 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.69 + '@napi-rs/canvas-linux-arm64-musl': 0.1.69 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.69 + '@napi-rs/canvas-linux-x64-gnu': 0.1.69 + '@napi-rs/canvas-linux-x64-musl': 0.1.69 + '@napi-rs/canvas-win32-x64-msvc': 0.1.69 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/rollup-android-arm-eabi@4.39.0': + optional: true + + '@rollup/rollup-android-arm64@4.39.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.39.0': + optional: true + + '@rollup/rollup-darwin-x64@4.39.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.39.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.39.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.39.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.39.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.39.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.39.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.39.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.39.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.39.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.39.0': + optional: true + + '@shikijs/core@2.5.0': + dependencies: + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/engine-oniguruma@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/langs@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + + '@shikijs/themes@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/themes@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + + '@shikijs/transformers@2.5.0': + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/types': 2.5.0 + + '@shikijs/types@2.5.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/types@3.2.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 24.0.7 + + '@types/estree@1.0.7': {} + + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 24.0.7 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + + '@types/minimatch@5.1.2': {} + + '@types/minimist@1.2.5': {} + + '@types/node@24.0.7': + dependencies: + undici-types: 7.8.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.21': {} + + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/type-utils': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.0 + eslint: 9.24.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.0 + debug: 4.4.0 + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.29.0': + dependencies: + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 + + '@typescript-eslint/type-utils@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.24.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.29.0': {} + + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.29.0': + dependencies: + '@typescript-eslint/types': 8.29.0 + eslint-visitor-keys: 4.2.0 + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-vue@5.2.3(vite@5.4.17(@types/node@24.0.7))(vue@3.5.13(typescript@5.8.3))': + dependencies: + vite: 5.4.17(@types/node@24.0.7) + vue: 3.5.13(typescript@5.8.3) + + '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.9.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@3.1.1': + dependencies: + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.1.1(vite@6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1))': + dependencies: + '@vitest/spy': 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + + '@vitest/pretty-format@3.1.1': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.1': + dependencies: + '@vitest/utils': 3.1.1 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.1': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/devtools-api@7.7.2': + dependencies: + '@vue/devtools-kit': 7.7.2 + + '@vue/devtools-kit@7.7.2': + dependencies: + '@vue/devtools-shared': 7.7.2 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.2': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.8.3) + + '@vue/shared@3.5.13': {} + + '@vueuse/core@12.8.2(typescript@5.8.3)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2(typescript@5.8.3) + vue: 3.5.13(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + '@vueuse/integrations@12.8.2(focus-trap@7.6.4)(typescript@5.8.3)': + dependencies: + '@vueuse/core': 12.8.2(typescript@5.8.3) + '@vueuse/shared': 12.8.2(typescript@5.8.3) + vue: 3.5.13(typescript@5.8.3) + optionalDependencies: + focus-trap: 7.6.4 + transitivePeerDependencies: + - typescript + + '@vueuse/metadata@12.8.2': {} + + '@vueuse/shared@12.8.2(typescript@5.8.3)': + dependencies: + vue: 3.5.13(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + add-stream@1.0.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + algoliasearch@5.23.2: + dependencies: + '@algolia/client-abtesting': 5.23.2 + '@algolia/client-analytics': 5.23.2 + '@algolia/client-common': 5.23.2 + '@algolia/client-insights': 5.23.2 + '@algolia/client-personalization': 5.23.2 + '@algolia/client-query-suggestions': 5.23.2 + '@algolia/client-search': 5.23.2 + '@algolia/ingestion': 1.23.2 + '@algolia/monitoring': 1.23.2 + '@algolia/recommend': 5.23.2 + '@algolia/requester-browser-xhr': 5.23.2 + '@algolia/requester-fetch': 5.23.2 + '@algolia/requester-node-http': 5.23.2 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + argparse@2.0.1: {} + + array-ify@1.0.0: {} + + arrify@1.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + birpc@0.2.19: {} + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + buffer-from@1.1.2: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + ccount@2.0.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + comma-separated-tokens@2.0.3: {} + + commander@13.1.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@5.0.13: + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-atom@2.0.8: + dependencies: + q: 1.5.1 + + conventional-changelog-codemirror@2.0.8: + dependencies: + q: 1.5.1 + + conventional-changelog-config-spec@2.1.0: {} + + conventional-changelog-conventionalcommits@4.6.3: + dependencies: + compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-core@4.2.4: + dependencies: + add-stream: 1.0.0 + conventional-changelog-writer: 5.0.1 + conventional-commits-parser: 3.2.4 + dateformat: 3.0.3 + get-pkg-repo: 4.2.1 + git-raw-commits: 2.0.11 + git-remote-origin-url: 2.0.0 + git-semver-tags: 4.1.1 + lodash: 4.17.21 + normalize-package-data: 3.0.3 + q: 1.5.1 + read-pkg: 3.0.0 + read-pkg-up: 3.0.0 + through2: 4.0.2 + + conventional-changelog-ember@2.0.9: + dependencies: + q: 1.5.1 + + conventional-changelog-eslint@3.0.9: + dependencies: + q: 1.5.1 + + conventional-changelog-express@2.0.6: + dependencies: + q: 1.5.1 + + conventional-changelog-jquery@3.0.11: + dependencies: + q: 1.5.1 + + conventional-changelog-jshint@2.0.9: + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + + conventional-changelog-preset-loader@2.3.4: {} + + conventional-changelog-writer@5.0.1: + dependencies: + conventional-commits-filter: 2.0.7 + dateformat: 3.0.3 + handlebars: 4.7.8 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + meow: 8.1.2 + semver: 6.3.1 + split: 1.0.1 + through2: 4.0.2 + + conventional-changelog@3.1.25: + dependencies: + conventional-changelog-angular: 5.0.13 + conventional-changelog-atom: 2.0.8 + conventional-changelog-codemirror: 2.0.8 + conventional-changelog-conventionalcommits: 4.6.3 + conventional-changelog-core: 4.2.4 + conventional-changelog-ember: 2.0.9 + conventional-changelog-eslint: 3.0.9 + conventional-changelog-express: 2.0.6 + conventional-changelog-jquery: 3.0.11 + conventional-changelog-jshint: 2.0.9 + conventional-changelog-preset-loader: 2.3.4 + + conventional-commits-filter@2.0.7: + dependencies: + lodash.ismatch: 4.4.0 + modify-values: 1.0.1 + + conventional-commits-parser@3.2.4: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + conventional-recommended-bump@6.1.0: + dependencies: + concat-stream: 2.0.0 + conventional-changelog-preset-loader: 2.3.4 + conventional-commits-filter: 2.0.7 + conventional-commits-parser: 3.2.4 + git-raw-commits: 2.0.11 + git-semver-tags: 4.1.1 + meow: 8.1.2 + q: 1.5.1 + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig-typescript-loader@6.1.0(@types/node@24.0.7)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@types/node': 24.0.7 + cosmiconfig: 9.0.0(typescript@5.8.3) + jiti: 2.4.2 + typescript: 5.8.3 + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + dargs@7.0.0: {} + + dargs@8.1.0: {} + + dateformat@3.0.3: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-indent@6.1.0: {} + + detect-newline@3.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotgitignore@2.1.0: + dependencies: + find-up: 3.0.0 + minimatch: 3.1.2 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.25.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.1(eslint@9.24.0(jiti@2.4.2)): + dependencies: + eslint: 9.24.0(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.24.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.24.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + eventsource-parser@3.0.1: {} + + eventsource@3.0.6: + dependencies: + eventsource-parser: 3.0.1 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + expect-type@1.2.1: {} + + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@2.1.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + focus-trap@7.6.4: + dependencies: + tabbable: 6.2.0 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-pkg-repo@4.2.1: + dependencies: + '@hutson/parse-repository-url': 3.0.2 + hosted-git-info: 4.1.0 + through2: 2.0.5 + yargs: 16.2.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@8.0.1: {} + + git-raw-commits@2.0.11: + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + git-remote-origin-url@2.0.0: + dependencies: + gitconfiglocal: 1.0.0 + pify: 2.3.0 + + git-semver-tags@4.1.1: + dependencies: + meow: 8.1.2 + semver: 6.3.1 + + gitconfiglocal@1.0.0: + dependencies: + ini: 1.3.8 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@11.0.1: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.0 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@14.0.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + hard-rejection@2.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hookable@5.5.3: {} + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-escaper@2.0.2: {} + + html-void-elements@3.0.0: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + human-signals@5.0.0: {} + + husky@9.1.7: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@1.1.0: {} + + is-promise@4.0.0: {} + + is-stream@3.0.0: {} + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-what@4.1.16: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.1.0: + dependencies: + '@isaacs/cliui': 8.0.2 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lint-staged@15.5.0: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.0 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.ismatch@4.4.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + loupe@3.1.3: {} + + lru-cache@10.4.3: {} + + lru-cache@11.1.0: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lunr@2.3.9: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + source-map-js: 1.2.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + mark.js@8.11.1: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + media-typer@1.1.0: {} + + meow@12.1.1: {} + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-descriptors@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.54.0: {} + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minisearch@7.1.2: {} + + mitt@3.0.1: {} + + modify-values@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.1 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-try@1.0.0: {} + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parseurl@1.3.3: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-to-regexp@8.2.0: {} + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + pdfjs-dist@5.1.91: + optionalDependencies: + '@napi-rs/canvas': 0.1.69 + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pkce-challenge@4.1.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preact@10.26.5: {} + + prelude-ls@1.2.1: {} + + prettier@3.5.3: {} + + process-nextick-args@2.0.1: {} + + property-information@7.0.0: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + q@1.5.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + range-parser@1.2.1: {} + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + read-pkg-up@3.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rollup@4.39.0: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.39.0 + '@rollup/rollup-android-arm64': 4.39.0 + '@rollup/rollup-darwin-arm64': 4.39.0 + '@rollup/rollup-darwin-x64': 4.39.0 + '@rollup/rollup-freebsd-arm64': 4.39.0 + '@rollup/rollup-freebsd-x64': 4.39.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 + '@rollup/rollup-linux-arm-musleabihf': 4.39.0 + '@rollup/rollup-linux-arm64-gnu': 4.39.0 + '@rollup/rollup-linux-arm64-musl': 4.39.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-musl': 4.39.0 + '@rollup/rollup-linux-s390x-gnu': 4.39.0 + '@rollup/rollup-linux-x64-gnu': 4.39.0 + '@rollup/rollup-linux-x64-musl': 4.39.0 + '@rollup/rollup-win32-arm64-msvc': 4.39.0 + '@rollup/rollup-win32-ia32-msvc': 4.39.0 + '@rollup/rollup-win32-x64-msvc': 4.39.0 + fsevents: 2.3.3 + + router@2.2.0: + dependencies: + debug: 4.4.0 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + search-insights@2.17.3: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + send@1.2.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@2.5.0: + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + speakingurl@14.0.1: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split2@4.2.0: {} + + split@1.0.1: + dependencies: + through: 2.3.8 + + stackback@0.0.2: {} + + standard-version@9.5.0: + dependencies: + chalk: 2.4.2 + conventional-changelog: 3.1.25 + conventional-changelog-config-spec: 2.1.0 + conventional-changelog-conventionalcommits: 4.6.3 + conventional-recommended-bump: 6.1.0 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + dotgitignore: 2.1.0 + figures: 3.2.0 + find-up: 5.0.0 + git-semver-tags: 4.1.1 + semver: 7.7.1 + stringify-package: 1.0.1 + yargs: 16.2.0 + + statuses@2.0.1: {} + + std-env@3.9.0: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + stringify-package@1.0.1: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tabbable@6.2.0: {} + + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + + text-extensions@1.9.0: {} + + text-extensions@2.4.0: {} + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + trim-lines@3.0.1: {} + + trim-newlines@3.0.1: {} + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.18.1: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typedarray@0.0.6: {} + + typedoc-plugin-markdown@4.6.1(typedoc@0.28.2(typescript@5.8.3)): + dependencies: + typedoc: 0.28.2(typescript@5.8.3) + + typedoc@0.28.2(typescript@5.8.3): + dependencies: + '@gerrit0/mini-shiki': 3.2.2 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.8.3 + yaml: 2.7.1 + + typescript-eslint@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + uc.micro@2.1.0: {} + + uglify-js@3.19.3: + optional: true + + undici-types@7.8.0: {} + + unicorn-magic@0.1.0: {} + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + unpipe@1.0.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@5.4.17(@types/node@24.0.7): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.3 + rollup: 4.39.0 + optionalDependencies: + '@types/node': 24.0.7 + fsevents: 2.3.3 + + vite@6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + esbuild: 0.25.2 + postcss: 8.5.3 + rollup: 4.39.0 + optionalDependencies: + '@types/node': 24.0.7 + fsevents: 2.3.3 + jiti: 2.4.2 + yaml: 2.7.1 + + vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.7)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3): + dependencies: + '@docsearch/css': 3.8.2 + '@docsearch/js': 3.8.2(@algolia/client-search@5.23.2)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.30 + '@shikijs/core': 2.5.0 + '@shikijs/transformers': 2.5.0 + '@shikijs/types': 2.5.0 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 5.2.3(vite@5.4.17(@types/node@24.0.7))(vue@3.5.13(typescript@5.8.3)) + '@vue/devtools-api': 7.7.2 + '@vue/shared': 3.5.13 + '@vueuse/core': 12.8.2(typescript@5.8.3) + '@vueuse/integrations': 12.8.2(focus-trap@7.6.4)(typescript@5.8.3) + focus-trap: 7.6.4 + mark.js: 8.11.1 + minisearch: 7.1.2 + shiki: 2.5.0 + vite: 5.4.17(@types/node@24.0.7) + vue: 3.5.13(typescript@5.8.3) + optionalDependencies: + postcss: 8.5.3 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vitest@3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(vite@6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.5(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + vite-node: 3.1.1(@types/node@24.0.7)(jiti@2.4.2)(yaml@2.7.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.0.7 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vue@3.5.13(typescript@5.8.3): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.8.3 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yaml@2.7.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + zod-to-json-schema@3.24.5(zod@3.24.2): + dependencies: + zod: 3.24.2 + + zod@3.24.2: {} + + zwitch@2.0.4: {} diff --git a/pdf-reader-mcp/src/handlers/index.ts b/pdf-reader-mcp/src/handlers/index.ts new file mode 100644 index 0000000..60e7031 --- /dev/null +++ b/pdf-reader-mcp/src/handlers/index.ts @@ -0,0 +1,16 @@ +// Import only the consolidated PDF tool definition +import { readPdfToolDefinition } from './readPdf.js'; + +// Define the structure for a tool definition (used internally and for index.ts) +// We need Zod here to define the schema type correctly +import type { z } from 'zod'; +export interface ToolDefinition { + name: string; + description: string; + schema: z.ZodType; // Use Zod schema type with unknown + // Define the specific return type expected by the SDK for tool handlers + handler: (args: unknown) => Promise<{ content: { type: string; text: string }[] }>; +} + +// Aggregate only the consolidated PDF tool definition +export const allToolDefinitions: ToolDefinition[] = [readPdfToolDefinition]; diff --git a/pdf-reader-mcp/src/handlers/readPdf.ts b/pdf-reader-mcp/src/handlers/readPdf.ts new file mode 100644 index 0000000..2144531 --- /dev/null +++ b/pdf-reader-mcp/src/handlers/readPdf.ts @@ -0,0 +1,441 @@ +import { z } from 'zod'; +import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs'; +import fs from 'node:fs/promises'; +import { resolvePath } from '../utils/pathUtils.js'; +import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; +import type { ToolDefinition } from './index.js'; + +// Helper to parse page range strings (e.g., "1-3,5,7-") +// Helper to parse a single range part (e.g., "1-3", "5", "7-") +const parseRangePart = (part: string, pages: Set): void => { + const trimmedPart = part.trim(); + if (trimmedPart.includes('-')) { + const [startStr, endStr] = trimmedPart.split('-'); + if (startStr === undefined) { + // Basic check + throw new Error(`Invalid page range format: ${trimmedPart}`); + } + const start = parseInt(startStr, 10); + const end = endStr === '' || endStr === undefined ? Infinity : parseInt(endStr, 10); + + if (isNaN(start) || isNaN(end) || start <= 0 || start > end) { + throw new Error(`Invalid page range values: ${trimmedPart}`); + } + + // Add a reasonable upper limit to prevent infinite loops for open ranges + const practicalEnd = Math.min(end, start + 10000); // Limit range parsing depth + for (let i = start; i <= practicalEnd; i++) { + pages.add(i); + } + if (end === Infinity && practicalEnd === start + 10000) { + console.warn( + `[PDF Reader MCP] Open-ended range starting at ${String(start)} was truncated at page ${String(practicalEnd)} during parsing.` + ); + } + } else { + const page = parseInt(trimmedPart, 10); + if (isNaN(page) || page <= 0) { + throw new Error(`Invalid page number: ${trimmedPart}`); + } + pages.add(page); + } +}; + +// Parses the complete page range string (e.g., "1-3,5,7-") +const parsePageRanges = (ranges: string): number[] => { + const pages = new Set(); + const parts = ranges.split(','); + for (const part of parts) { + parseRangePart(part, pages); // Delegate parsing of each part + } + if (pages.size === 0) { + throw new Error('Page range string resulted in zero valid pages.'); + } + return Array.from(pages).sort((a, b) => a - b); +}; + +// --- Zod Schemas --- +const pageSpecifierSchema = z.union([ + z.array(z.number().int().positive()).min(1), // Array of positive integers + z + .string() + .min(1) + .refine((val) => /^[0-9,-]+$/.test(val.replace(/\s/g, '')), { + // Allow spaces but test without them + message: 'Page string must contain only numbers, commas, and hyphens.', + }), +]); + +const PdfSourceSchema = z + .object({ + path: z.string().min(1).optional().describe('Relative path to the local PDF file.'), + url: z.string().url().optional().describe('URL of the PDF file.'), + pages: pageSpecifierSchema + .optional() + .describe( + "Extract text only from specific pages (1-based) or ranges for *this specific source*. If provided, 'include_full_text' for the entire request is ignored for this source." + ), + }) + .strict() + .refine((data) => !!(data.path && !data.url) || !!(!data.path && data.url), { + // Use boolean coercion instead of || for truthiness check if needed, though refine expects boolean + message: "Each source must have either 'path' or 'url', but not both.", + }); + +const ReadPdfArgsSchema = z + .object({ + sources: z + .array(PdfSourceSchema) + .min(1) + .describe('An array of PDF sources to process, each can optionally specify pages.'), + include_full_text: z + .boolean() + .optional() + .default(false) + .describe( + "Include the full text content of each PDF (only if 'pages' is not specified for that source)." + ), + include_metadata: z + .boolean() + .optional() + .default(true) + .describe('Include metadata and info objects for each PDF.'), + include_page_count: z + .boolean() + .optional() + .default(true) + .describe('Include the total number of pages for each PDF.'), + }) + .strict(); + +type ReadPdfArgs = z.infer; + +// --- Result Type Interfaces --- +interface PdfInfo { + PDFFormatVersion?: string; + IsLinearized?: boolean; + IsAcroFormPresent?: boolean; + IsXFAPresent?: boolean; + [key: string]: unknown; +} + +type PdfMetadata = Record; // Use Record for better type safety + +interface ExtractedPageText { + page: number; + text: string; +} + +interface PdfResultData { + info?: PdfInfo; + metadata?: PdfMetadata; + num_pages?: number; + full_text?: string; + page_texts?: ExtractedPageText[]; + warnings?: string[]; +} + +interface PdfSourceResult { + source: string; + success: boolean; + data?: PdfResultData; + error?: string; +} + +// --- Helper Functions --- + +// Parses the page specification for a single source +const getTargetPages = ( + sourcePages: string | number[] | undefined, + sourceDescription: string +): number[] | undefined => { + if (!sourcePages) { + return undefined; + } + try { + let targetPages: number[]; + if (typeof sourcePages === 'string') { + targetPages = parsePageRanges(sourcePages); + } else { + // Ensure array elements are positive integers + if (sourcePages.some((p) => !Number.isInteger(p) || p <= 0)) { + throw new Error('Page numbers in array must be positive integers.'); + } + targetPages = [...new Set(sourcePages)].sort((a, b) => a - b); + } + if (targetPages.length === 0) { + // Check after potential Set deduplication + throw new Error('Page specification resulted in an empty set of pages.'); + } + return targetPages; + } catch (error: unknown) { + const message = error instanceof Error ? error.message : String(error); + // Throw McpError for invalid page specs caught during parsing + throw new McpError( + ErrorCode.InvalidParams, + `Invalid page specification for source ${sourceDescription}: ${message}` + ); + } +}; + +// Loads the PDF document from path or URL +const loadPdfDocument = async ( + source: { path?: string | undefined; url?: string | undefined }, // Explicitly allow undefined + sourceDescription: string +): Promise => { + let pdfDataSource: Buffer | { url: string }; + try { + if (source.path) { + const safePath = resolvePath(source.path); // resolvePath handles security checks + pdfDataSource = await fs.readFile(safePath); + } else if (source.url) { + pdfDataSource = { url: source.url }; + } else { + // This case should be caught by Zod, but added for robustness + throw new McpError( + ErrorCode.InvalidParams, + `Source ${sourceDescription} missing 'path' or 'url'.` + ); + } + } catch (err: unknown) { + // Handle errors during path resolution or file reading + let errorMessage: string; // Declare errorMessage here + const message = err instanceof Error ? err.message : String(err); + const errorCode = ErrorCode.InvalidRequest; // Default error code + + if ( + typeof err === 'object' && + err !== null && + 'code' in err && + err.code === 'ENOENT' && + source.path + ) { + // Specific handling for file not found + errorMessage = `File not found at '${source.path}'.`; + // Optionally keep errorCode as InvalidRequest or change if needed + } else { + // Generic error for other file prep issues or resolvePath errors + errorMessage = `Failed to prepare PDF source ${sourceDescription}. Reason: ${message}`; + } + throw new McpError(errorCode, errorMessage, { cause: err instanceof Error ? err : undefined }); + } + + const loadingTask = pdfjsLib.getDocument(pdfDataSource); + try { + return await loadingTask.promise; + } catch (err: unknown) { + console.error(`[PDF Reader MCP] PDF.js loading error for ${sourceDescription}:`, err); + const message = err instanceof Error ? err.message : String(err); + // Use ?? for default message + throw new McpError( + ErrorCode.InvalidRequest, + `Failed to load PDF document from ${sourceDescription}. Reason: ${message || 'Unknown loading error'}`, // Revert to || as message is likely always string here + { cause: err instanceof Error ? err : undefined } + ); + } +}; + +// Extracts metadata and page count +const extractMetadataAndPageCount = async ( + pdfDocument: pdfjsLib.PDFDocumentProxy, + includeMetadata: boolean, + includePageCount: boolean +): Promise> => { + const output: Pick = {}; + if (includePageCount) { + output.num_pages = pdfDocument.numPages; + } + if (includeMetadata) { + try { + const pdfMetadata = await pdfDocument.getMetadata(); + const infoData = pdfMetadata.info as PdfInfo | undefined; + if (infoData !== undefined) { + output.info = infoData; + } + const metadataObj = pdfMetadata.metadata; + // 使用更安全的方式获取元数据,避免类型错误 + const metadataData = metadataObj ? (metadataObj as any).getAll?.() as PdfMetadata | undefined : undefined; + if (metadataData !== undefined) { + output.metadata = metadataData; + } + } catch (metaError: unknown) { + console.warn( + `[PDF Reader MCP] Error extracting metadata: ${metaError instanceof Error ? metaError.message : String(metaError)}` + ); + // Optionally add a warning to the result if metadata extraction fails partially + } + } + return output; +}; + +// Extracts text from specified pages +const extractPageTexts = async ( + pdfDocument: pdfjsLib.PDFDocumentProxy, + pagesToProcess: number[], + sourceDescription: string +): Promise => { + const extractedPageTexts: ExtractedPageText[] = []; + for (const pageNum of pagesToProcess) { + let pageText = ''; + try { + const page = await pdfDocument.getPage(pageNum); + const textContent = await page.getTextContent(); + pageText = textContent.items + .map((item: unknown) => (item as { str: string }).str) // Type assertion + .join(''); + } catch (pageError: unknown) { + const message = pageError instanceof Error ? pageError.message : String(pageError); + console.warn( + `[PDF Reader MCP] Error getting text content for page ${String(pageNum)} in ${sourceDescription}: ${message}` // Explicit string conversion + ); + pageText = `Error processing page: ${message}`; // Include error in text + } + extractedPageTexts.push({ page: pageNum, text: pageText }); + } + // Sorting is likely unnecessary if pagesToProcess was sorted, but keep for safety + extractedPageTexts.sort((a, b) => a.page - b.page); + return extractedPageTexts; +}; + +// Determines the actual list of pages to process based on target pages and total pages +const determinePagesToProcess = ( + targetPages: number[] | undefined, + totalPages: number, + includeFullText: boolean +): { pagesToProcess: number[]; invalidPages: number[] } => { + let pagesToProcess: number[] = []; + let invalidPages: number[] = []; + + if (targetPages) { + // Filter target pages based on actual total pages + pagesToProcess = targetPages.filter((p) => p <= totalPages); + invalidPages = targetPages.filter((p) => p > totalPages); + } else if (includeFullText) { + // If no specific pages requested for this source, use global flag + pagesToProcess = Array.from({ length: totalPages }, (_, i) => i + 1); + } + return { pagesToProcess, invalidPages }; +}; + +// Processes a single PDF source +const processSingleSource = async ( + source: z.infer, + globalIncludeFullText: boolean, + globalIncludeMetadata: boolean, + globalIncludePageCount: boolean +): Promise => { + const sourceDescription: string = source.path ?? source.url ?? 'unknown source'; + let individualResult: PdfSourceResult = { source: sourceDescription, success: false }; + + try { + // 1. Parse target pages for this source (throws McpError on invalid spec) + const targetPages = getTargetPages(source.pages, sourceDescription); + + // 2. Load PDF Document (throws McpError on loading failure) + // Destructure to remove 'pages' before passing to loadPdfDocument due to exactOptionalPropertyTypes + const { pages: _pages, ...loadArgs } = source; + const pdfDocument = await loadPdfDocument(loadArgs, sourceDescription); + const totalPages = pdfDocument.numPages; + + // 3. Extract Metadata & Page Count + const metadataOutput = await extractMetadataAndPageCount( + pdfDocument, + globalIncludeMetadata, + globalIncludePageCount + ); + const output: PdfResultData = { ...metadataOutput }; // Start building output + + // 4. Determine actual pages to process + const { pagesToProcess, invalidPages } = determinePagesToProcess( + targetPages, + totalPages, + globalIncludeFullText // Pass the global flag + ); + + // Add warnings for invalid requested pages + if (invalidPages.length > 0) { + output.warnings = output.warnings ?? []; + output.warnings.push( + `Requested page numbers ${invalidPages.join(', ')} exceed total pages (${String(totalPages)}).` + ); + } + + // 5. Extract Text (if needed) + if (pagesToProcess.length > 0) { + const extractedPageTexts = await extractPageTexts( + pdfDocument, + pagesToProcess, + sourceDescription + ); + if (targetPages) { + // If specific pages were requested for *this source* + output.page_texts = extractedPageTexts; + } else { + // Only assign full_text if pages were NOT specified for this source + output.full_text = extractedPageTexts.map((p) => p.text).join('\n\n'); + } + } + + individualResult = { ...individualResult, data: output, success: true }; + } catch (error: unknown) { + let errorMessage = `Failed to process PDF from ${sourceDescription}.`; + if (error instanceof McpError) { + errorMessage = error.message; // Use message from McpError directly + } else if (error instanceof Error) { + errorMessage += ` Reason: ${error.message}`; + } else { + errorMessage += ` Unknown error: ${JSON.stringify(error)}`; + } + individualResult.error = errorMessage; + individualResult.success = false; + delete individualResult.data; // Ensure no data on error + } + return individualResult; +}; + +// --- Main Handler Function --- +export const handleReadPdfFunc = async ( + args: unknown +): Promise<{ content: { type: string; text: string }[] }> => { + let parsedArgs: ReadPdfArgs; + try { + parsedArgs = ReadPdfArgsSchema.parse(args); + } catch (error: unknown) { + if (error instanceof z.ZodError) { + throw new McpError( + ErrorCode.InvalidParams, + `Invalid arguments: ${error.errors.map((e) => `${e.path.join('.')} (${e.message})`).join(', ')}` + ); + } + // Added fallback for non-Zod errors during parsing + const message = error instanceof Error ? error.message : String(error); + throw new McpError(ErrorCode.InvalidParams, `Argument validation failed: ${message}`); + } + + const { sources, include_full_text, include_metadata, include_page_count } = parsedArgs; + + // Process all sources concurrently + const results = await Promise.all( + sources.map((source) => + processSingleSource(source, include_full_text, include_metadata, include_page_count) + ) + ); + + return { + content: [ + { + type: 'text', + text: JSON.stringify({ results }, null, 2), + }, + ], + }; +}; + +// Export the consolidated ToolDefinition +export const readPdfToolDefinition: ToolDefinition = { + name: 'read_pdf', + description: + 'Reads content/metadata from one or more PDFs (local/URL). Each source can specify pages to extract.', + schema: ReadPdfArgsSchema, + handler: handleReadPdfFunc, +}; diff --git a/pdf-reader-mcp/src/index.ts b/pdf-reader-mcp/src/index.ts new file mode 100644 index 0000000..e3b111d --- /dev/null +++ b/pdf-reader-mcp/src/index.ts @@ -0,0 +1,78 @@ +#!/usr/bin/env node + +import { Server } from '@modelcontextprotocol/sdk/server/index.js'; +import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; +import type { z } from 'zod'; // Import Zod +import { zodToJsonSchema } from 'zod-to-json-schema'; +import { + CallToolRequestSchema, + ListToolsRequestSchema, + McpError, + ErrorCode, +} from '@modelcontextprotocol/sdk/types.js'; +// Import the aggregated tool definitions +import { allToolDefinitions } from './handlers/index.js'; +// Removed incorrect import left over from partial diff + +// --- Tool Names (Constants) --- +// Removed tool name constants, names are now in the definitions + +// --- Server Setup --- + +const server = new Server( + { + name: 'filesystem-mcp', + version: '0.4.0', // Increment version for definition refactor + description: 'MCP Server for filesystem operations relative to the project root.', + }, + { + capabilities: { tools: {} }, + } +); + +// Helper function to convert Zod schema to JSON schema for MCP +// Use 'unknown' instead of 'any' for better type safety, although casting is still needed for the SDK +const generateInputSchema = (schema: z.ZodType): object => { + // Need to cast as 'unknown' then 'object' because zodToJsonSchema might return slightly incompatible types for MCP SDK + return zodToJsonSchema(schema, { target: 'openApi3' }) as unknown as object; +}; + +server.setRequestHandler(ListToolsRequestSchema, () => { + // Removed unnecessary async + // Removed log + // Map the aggregated definitions to the format expected by the SDK + const availableTools = allToolDefinitions.map((def) => ({ + name: def.name, + description: def.description, + inputSchema: generateInputSchema(def.schema), // Generate JSON schema from Zod schema + })); + return { tools: availableTools }; +}); + +server.setRequestHandler(CallToolRequestSchema, async (request) => { + // Use imported handlers + // Find the tool definition by name and call its handler + const toolDefinition = allToolDefinitions.find((def) => def.name === request.params.name); + + if (!toolDefinition) { + throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); + } + + // Call the handler associated with the found definition + // The handler itself will perform Zod validation on the arguments + return toolDefinition.handler(request.params.arguments); +}); + +// --- Server Start --- + +async function main(): Promise { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error('[Filesystem MCP] Server running on stdio'); +} + +main().catch((error: unknown) => { + // Specify 'unknown' type for catch variable + console.error('[Filesystem MCP] Server error:', error); + process.exit(1); +}); diff --git a/pdf-reader-mcp/src/utils/pathUtils.ts b/pdf-reader-mcp/src/utils/pathUtils.ts new file mode 100644 index 0000000..9af774e --- /dev/null +++ b/pdf-reader-mcp/src/utils/pathUtils.ts @@ -0,0 +1,33 @@ +import path from 'path'; +// Removed unused import: import { fileURLToPath } from 'url'; +import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; + +// Use the server's current working directory as the project root. +// This relies on the process launching the server to set the CWD correctly. +export const PROJECT_ROOT = process.cwd(); + +console.info(`[Filesystem MCP - pathUtils] Project Root determined from CWD: ${PROJECT_ROOT}`); // Use info instead of log + +/** + * Resolves a user-provided relative path against the project root, + * ensuring it stays within the project boundaries. + * Throws McpError on invalid input, absolute paths, or path traversal. + * @param userPath The relative path provided by the user. + * @returns The resolved absolute path. + */ +export const resolvePath = (userPath: string): string => { + if (typeof userPath !== 'string') { + throw new McpError(ErrorCode.InvalidParams, 'Path must be a string.'); + } + const normalizedUserPath = path.normalize(userPath); + if (path.isAbsolute(normalizedUserPath)) { + throw new McpError(ErrorCode.InvalidParams, 'Absolute paths are not allowed.'); + } + // Resolve against the calculated PROJECT_ROOT + const resolved = path.resolve(PROJECT_ROOT, normalizedUserPath); + // Security check: Ensure the resolved path is still within the project root + if (!resolved.startsWith(PROJECT_ROOT)) { + throw new McpError(ErrorCode.InvalidRequest, 'Path traversal detected. Access denied.'); + } + return resolved; +}; diff --git a/pdf-reader-mcp/test/benchmark/readPdf.bench.ts b/pdf-reader-mcp/test/benchmark/readPdf.bench.ts new file mode 100644 index 0000000..0fc7c8d --- /dev/null +++ b/pdf-reader-mcp/test/benchmark/readPdf.bench.ts @@ -0,0 +1,135 @@ +import { describe, bench, vi as _vi } from 'vitest'; // Prefix unused import +import { handleReadPdfFunc } from '../../src/handlers/readPdf'; // Adjust path as needed +import path from 'node:path'; +import fs from 'node:fs/promises'; + +// Mock the project root - Vitest runs from the project root by default +const PROJECT_ROOT = process.cwd(); +const SAMPLE_PDF_PATH = 'test/fixtures/sample.pdf'; // Relative path to test PDF + +// Pre-check if the sample PDF exists to avoid errors during benchmark setup +let pdfExists = false; +try { + await fs.access(path.resolve(PROJECT_ROOT, SAMPLE_PDF_PATH)); + pdfExists = true; +} catch (error: unknown) { + // Explicitly type error as unknown + // Check if error is an instance of Error before accessing message + const message = error instanceof Error ? error.message : String(error); + console.warn( + `Warning: Sample PDF not found at ${SAMPLE_PDF_PATH}. Benchmarks requiring it will be skipped. Details: ${message}` + ); +} + +describe('read_pdf Handler Benchmarks', () => { + // Benchmark getting only metadata and page count + bench( + 'Get Metadata & Page Count', + async () => { + if (!pdfExists) return; // Skip if PDF doesn't exist + try { + await handleReadPdfFunc({ + sources: [{ path: SAMPLE_PDF_PATH }], + include_metadata: true, + include_page_count: true, + include_full_text: false, + }); + } catch (error: unknown) { + // Explicitly type error as unknown + console.warn( + `Benchmark 'Get Metadata & Page Count' failed: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + { time: 1000 } + ); // Run for 1 second + + // Benchmark getting full text + bench( + 'Get Full Text', + async () => { + if (!pdfExists) return; + try { + await handleReadPdfFunc({ + sources: [{ path: SAMPLE_PDF_PATH }], + include_metadata: false, + include_page_count: false, + include_full_text: true, + }); + } catch (error: unknown) { + // Explicitly type error as unknown + console.warn( + `Benchmark 'Get Full Text' failed: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + { time: 1000 } + ); + + // Benchmark getting specific pages (e.g., page 1) + bench( + 'Get Specific Page (Page 1)', + async () => { + if (!pdfExists) return; + try { + await handleReadPdfFunc({ + sources: [{ path: SAMPLE_PDF_PATH, pages: [1] }], + include_metadata: false, + include_page_count: false, + include_full_text: false, // Should be ignored when pages is set + }); + } catch (error: unknown) { + // Explicitly type error as unknown + console.warn( + `Benchmark 'Get Specific Page (Page 1)' failed: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + { time: 1000 } + ); + + // Benchmark getting multiple specific pages (e.g., pages 1 & 2) + bench( + 'Get Specific Pages (Pages 1 & 2)', + async () => { + if (!pdfExists) return; + // Assuming sample.pdf has at least 2 pages + try { + await handleReadPdfFunc({ + sources: [{ path: SAMPLE_PDF_PATH, pages: [1, 2] }], + include_metadata: false, + include_page_count: false, + }); + } catch (error: unknown) { + // Explicitly type error as unknown + console.warn( + `Benchmark 'Get Specific Pages (Pages 1 & 2)' failed: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + { time: 1000 } + ); + + // Benchmark handling a non-existent file (error path) + bench( + 'Handle Non-Existent File', + async () => { + try { + await handleReadPdfFunc({ + sources: [{ path: 'non/existent/file.pdf' }], + include_metadata: true, + include_page_count: true, + }); + } catch (error: unknown) { + // Explicitly type error as unknown + // Expecting an error here, but log if something unexpected happens during the benchmark itself + console.warn( + `Benchmark 'Handle Non-Existent File' unexpectedly failed internally: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + { time: 1000 } + ); + + // Add more benchmarks as needed (e.g., larger PDFs, URL sources if feasible in benchmark) +}); diff --git a/pdf-reader-mcp/test/fixtures/sample.pdf b/pdf-reader-mcp/test/fixtures/sample.pdf new file mode 100644 index 0000000..c01805e Binary files /dev/null and b/pdf-reader-mcp/test/fixtures/sample.pdf differ diff --git a/pdf-reader-mcp/test/handlers/readPdf.test.ts b/pdf-reader-mcp/test/handlers/readPdf.test.ts new file mode 100644 index 0000000..619d1b1 --- /dev/null +++ b/pdf-reader-mcp/test/handlers/readPdf.test.ts @@ -0,0 +1,753 @@ +import { describe, it, expect, vi, beforeEach, beforeAll } from 'vitest'; +import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; +import { resolvePath } from '../../src/utils/pathUtils.js'; +import * as pathUtils from '../../src/utils/pathUtils.js'; // Import the module itself for spying + +// Define a type for the expected structure after JSON.parse +interface ExpectedResultType { + results: { source: string; success: boolean; data?: object; error?: string }[]; +} + +// --- Mocking pdfjs-dist --- +const mockGetMetadata = vi.fn(); +const mockGetPage = vi.fn(); +const mockGetDocument = vi.fn(); +const mockReadFile = vi.fn(); + +vi.doMock('pdfjs-dist/legacy/build/pdf.mjs', () => { + return { + getDocument: mockGetDocument, + }; +}); +vi.doMock('node:fs/promises', () => { + return { + default: { + readFile: mockReadFile, + }, + readFile: mockReadFile, + __esModule: true, + }; +}); + +// Dynamically import the handler *once* after mocks are defined +// Define a more specific type for the handler's return value content +interface HandlerResultContent { + type: string; + text: string; +} +let handler: (args: unknown) => Promise<{ content: HandlerResultContent[] }>; + +beforeAll(async () => { + // Only import the tool definition now + const { readPdfToolDefinition: importedDefinition } = await import( + '../../src/handlers/readPdf.js' + ); + handler = importedDefinition.handler; +}); + +// Renamed describe block as it now only tests the handler +describe('handleReadPdfFunc Integration Tests', () => { + beforeEach(() => { + vi.resetAllMocks(); + // Reset mocks for pathUtils if we spy on it + vi.spyOn(pathUtils, 'resolvePath').mockImplementation((p) => p); // Simple mock for resolvePath + + mockReadFile.mockResolvedValue(Buffer.from('mock pdf content')); + + const mockDocumentAPI = { + numPages: 3, + getMetadata: mockGetMetadata, + getPage: mockGetPage, + }; + const mockLoadingTaskAPI = { promise: Promise.resolve(mockDocumentAPI) }; + mockGetDocument.mockReturnValue(mockLoadingTaskAPI); + mockGetMetadata.mockResolvedValue({ + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { + _metadataMap: new Map([['dc:format', 'application/pdf']]), + get(key: string) { + return this._metadataMap.get(key); + }, + has(key: string) { + return this._metadataMap.has(key); + }, + getAll() { + return Object.fromEntries(this._metadataMap); + }, + }, + }); + // Removed unnecessary async and eslint-disable comment + mockGetPage.mockImplementation((pageNum: number) => { + if (pageNum > 0 && pageNum <= mockDocumentAPI.numPages) { + return { + getTextContent: vi + .fn() + .mockResolvedValueOnce({ items: [{ str: `Mock page text ${String(pageNum)}` }] }), + }; + } + throw new Error(`Mock getPage error: Invalid page number ${String(pageNum)}`); + }); + }); + + // Removed unit tests for parsePageRanges + + // --- Integration Tests for handleReadPdfFunc --- + + it('should successfully read full text, metadata, and page count for a local file', async () => { + const args = { + sources: [{ path: 'test.pdf' }], + include_full_text: true, + include_metadata: true, + include_page_count: true, + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'test.pdf', + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + num_pages: 3, + full_text: 'Mock page text 1\n\nMock page text 2\n\nMock page text 3', + }, + }, + ], + }; + + expect(mockReadFile).toHaveBeenCalledWith(resolvePath('test.pdf')); + expect(mockGetDocument).toHaveBeenCalledWith(Buffer.from('mock pdf content')); + expect(mockGetMetadata).toHaveBeenCalled(); + expect(mockGetPage).toHaveBeenCalledTimes(3); + + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(result.content[0].type).toBe('text'); + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should successfully read specific pages for a local file', async () => { + const args = { + sources: [{ path: 'test.pdf', pages: [1, 3] }], + include_metadata: false, + include_page_count: true, + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'test.pdf', + success: true, + data: { + num_pages: 3, + page_texts: [ + { page: 1, text: 'Mock page text 1' }, + { page: 3, text: 'Mock page text 3' }, + ], + }, + }, + ], + }; + expect(mockGetPage).toHaveBeenCalledTimes(2); + expect(mockGetPage).toHaveBeenCalledWith(1); + expect(mockGetPage).toHaveBeenCalledWith(3); + expect(mockReadFile).toHaveBeenCalledWith(resolvePath('test.pdf')); + expect(mockGetDocument).toHaveBeenCalledWith(Buffer.from('mock pdf content')); + expect(mockGetMetadata).not.toHaveBeenCalled(); + + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(result.content[0].type).toBe('text'); + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should successfully read specific pages using string range', async () => { + const args = { + sources: [{ path: 'test.pdf', pages: '1,3-3' }], + include_page_count: true, + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'test.pdf', + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + num_pages: 3, + page_texts: [ + { page: 1, text: 'Mock page text 1' }, + { page: 3, text: 'Mock page text 3' }, + ], + }, + }, + ], + }; + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should successfully read metadata only for a URL', async () => { + const testUrl = 'http://example.com/test.pdf'; + const args = { + sources: [{ url: testUrl }], + include_full_text: false, + include_metadata: true, + include_page_count: false, + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: testUrl, + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + }, + }, + ], + }; + expect(mockReadFile).not.toHaveBeenCalled(); + expect(mockGetDocument).toHaveBeenCalledWith({ url: testUrl }); + expect(mockGetMetadata).toHaveBeenCalled(); + expect(mockGetPage).not.toHaveBeenCalled(); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(result.content[0].type).toBe('text'); + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should handle multiple sources with different options', async () => { + const urlSource = 'http://example.com/another.pdf'; + const args = { + sources: [{ path: 'local.pdf', pages: [1] }, { url: urlSource }], + include_full_text: true, + include_metadata: true, + include_page_count: true, + }; + // Setup mocks for the second source (URL) + const secondMockGetPage = vi.fn().mockImplementation((pageNum: number) => { + // Removed unnecessary async + if (pageNum === 1) + return { + getTextContent: vi.fn().mockResolvedValue({ items: [{ str: 'URL Mock page text 1' }] }), + }; + if (pageNum === 2) + return { + getTextContent: vi.fn().mockResolvedValue({ items: [{ str: 'URL Mock page text 2' }] }), + }; + throw new Error(`Mock getPage error: Invalid page number ${String(pageNum)}`); + }); + const secondMockGetMetadata = vi.fn().mockResolvedValue({ + // Separate metadata mock if needed + info: { Title: 'URL PDF' }, + metadata: { getAll: () => ({ 'dc:creator': 'URL Author' }) }, + }); + const secondMockDocumentAPI = { + numPages: 2, + getMetadata: secondMockGetMetadata, // Use separate metadata mock + getPage: secondMockGetPage, + }; + const secondLoadingTaskAPI = { promise: Promise.resolve(secondMockDocumentAPI) }; + + // Reset getDocument mock before setting implementation + mockGetDocument.mockReset(); + // Mock getDocument based on input source + mockGetDocument.mockImplementation((source: Buffer | { url: string }) => { + // Check if source is not a Buffer and has the matching url property + if (typeof source === 'object' && !Buffer.isBuffer(source) && source.url === urlSource) { + return secondLoadingTaskAPI; + } + // Default mock for path-based source (local.pdf) + const defaultMockDocumentAPI = { + numPages: 3, + getMetadata: mockGetMetadata, // Use original metadata mock + getPage: mockGetPage, // Use original page mock + }; + return { promise: Promise.resolve(defaultMockDocumentAPI) }; + }); + + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'local.pdf', + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + num_pages: 3, + page_texts: [{ page: 1, text: 'Mock page text 1' }], + }, + }, + { + source: urlSource, + success: true, + data: { + // Use the metadata returned by secondMockGetMetadata + info: { Title: 'URL PDF' }, + metadata: { 'dc:creator': 'URL Author' }, + num_pages: 2, + full_text: 'URL Mock page text 1\n\nURL Mock page text 2', + }, + }, + ], + }; + expect(mockReadFile).toHaveBeenCalledOnce(); + expect(mockReadFile).toHaveBeenCalledWith(resolvePath('local.pdf')); + expect(mockGetDocument).toHaveBeenCalledTimes(2); + expect(mockGetDocument).toHaveBeenCalledWith(Buffer.from('mock pdf content')); + expect(mockGetDocument).toHaveBeenCalledWith({ url: urlSource }); + expect(mockGetPage).toHaveBeenCalledTimes(1); // Should be called once for local.pdf page 1 + expect(secondMockGetPage).toHaveBeenCalledTimes(2); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + // --- Error Handling Tests --- + + it('should return error if local file not found', async () => { + const error = new Error('Mock ENOENT') as NodeJS.ErrnoException; + error.code = 'ENOENT'; + mockReadFile.mockRejectedValue(error); + const args = { sources: [{ path: 'nonexistent.pdf' }] }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'nonexistent.pdf', + success: false, + error: `MCP error -32600: File not found at 'nonexistent.pdf'.`, // Corrected expected error message + }, + ], + }; + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should return error if pdfjs fails to load document', async () => { + const loadError = new Error('Mock PDF loading failed'); + const failingLoadingTask = { promise: Promise.reject(loadError) }; + mockGetDocument.mockReturnValue(failingLoadingTask); + const args = { sources: [{ path: 'bad.pdf' }] }; + const result = await handler(args); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Check that the error message includes the source description + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: Failed to load PDF document from bad.pdf. Reason: ${loadError.message}` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should throw McpError for invalid input arguments (Zod error)', async () => { + const args = { sources: [{ path: 'test.pdf' }], include_full_text: 'yes' }; + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + /Invalid arguments: include_full_text \(Expected boolean, received string\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + // Test case for the initial Zod parse failure + it('should throw McpError if top-level argument parsing fails', async () => { + const invalidArgs = { invalid_prop: true }; // Completely wrong structure + await expect(handler(invalidArgs)).rejects.toThrow(McpError); + await expect(handler(invalidArgs)).rejects.toThrow(/Invalid arguments: sources \(Required\)/); // Example Zod error + await expect(handler(invalidArgs)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + // Updated test: Expect Zod validation to throw McpError directly + it('should throw McpError for invalid page specification string (Zod)', async () => { + const args = { sources: [{ path: 'test.pdf', pages: '1,abc,3' }] }; + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + /Invalid arguments: sources.0.pages \(Page string must contain only numbers, commas, and hyphens.\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + // Updated test: Expect Zod validation to throw McpError directly + it('should throw McpError for invalid page specification array (non-positive - Zod)', async () => { + const args = { sources: [{ path: 'test.pdf', pages: [1, 0, 3] }] }; + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + /Invalid arguments: sources.0.pages.1 \(Number must be greater than 0\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + // Test case for resolvePath failure within the catch block + it('should return error if resolvePath fails', async () => { + const resolveError = new Error('Mock resolvePath failed'); + vi.spyOn(pathUtils, 'resolvePath').mockImplementation(() => { + throw resolveError; + }); + const args = { sources: [{ path: 'some/path' }] }; + const result = await handler(args); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Error now includes MCP code and different phrasing + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: Failed to prepare PDF source some/path. Reason: ${resolveError.message}` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + // Test case for the final catch block with a generic error + it('should handle generic errors during processing', async () => { + const genericError = new Error('Something unexpected happened'); + mockReadFile.mockRejectedValue(genericError); // Simulate error after path resolution + const args = { sources: [{ path: 'generic/error/path' }] }; + const result = await handler(args); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Error now includes MCP code and different phrasing + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: Failed to prepare PDF source generic/error/path. Reason: ${genericError.message}` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + // Test case for the final catch block with a non-Error object + it('should handle non-Error exceptions during processing', async () => { + const nonError = { message: 'Just an object', code: 'UNEXPECTED' }; + mockReadFile.mockRejectedValue(nonError); // Simulate error after path resolution + const args = { sources: [{ path: 'non/error/path' }] }; + const result = await handler(args); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Use JSON.stringify for non-Error objects + // Error now includes MCP code and different phrasing, and stringifies [object Object] + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: Failed to prepare PDF source non/error/path. Reason: [object Object]` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should include warnings for requested pages exceeding total pages', async () => { + const args = { + sources: [{ path: 'test.pdf', pages: [1, 4, 5] }], + include_page_count: true, + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'test.pdf', + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + num_pages: 3, + page_texts: [{ page: 1, text: 'Mock page text 1' }], + warnings: ['Requested page numbers 4, 5 exceed total pages (3).'], + }, + }, + ], + }; + expect(mockGetPage).toHaveBeenCalledTimes(1); + expect(mockGetPage).toHaveBeenCalledWith(1); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should handle errors during page processing gracefully when specific pages are requested', async () => { + // Removed unnecessary async and eslint-disable comment + mockGetPage.mockImplementation((pageNum: number) => { + if (pageNum === 1) + return { + getTextContent: vi.fn().mockResolvedValueOnce({ items: [{ str: `Mock page text 1` }] }), + }; + if (pageNum === 2) throw new Error('Failed to get page 2'); + if (pageNum === 3) + return { + getTextContent: vi.fn().mockResolvedValueOnce({ items: [{ str: `Mock page text 3` }] }), + }; + throw new Error(`Mock getPage error: Invalid page number ${String(pageNum)}`); + }); + const args = { + sources: [{ path: 'test.pdf', pages: [1, 2, 3] }], + }; + const result = await handler(args); + const expectedData = { + results: [ + { + source: 'test.pdf', + success: true, + data: { + info: { PDFFormatVersion: '1.7', Title: 'Mock PDF' }, + metadata: { 'dc:format': 'application/pdf' }, + num_pages: 3, + page_texts: [ + { page: 1, text: 'Mock page text 1' }, + { page: 2, text: 'Error processing page: Failed to get page 2' }, + { page: 3, text: 'Mock page text 3' }, + ], + }, + }, + ], + }; + expect(mockGetPage).toHaveBeenCalledTimes(3); + // Add check for content existence and access safely + expect(result.content).toBeDefined(); + expect(result.content.length).toBeGreaterThan(0); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + expect(JSON.parse(result.content[0].text) as ExpectedResultType).toEqual(expectedData); + } else { + expect.fail('result.content[0] was undefined'); + + it('should return error if pdfjs fails to load document from URL', async () => { + const testUrl = 'http://example.com/bad-url.pdf'; + const loadError = new Error('Mock URL PDF loading failed'); + const failingLoadingTask = { promise: Promise.reject(loadError) }; + // Ensure getDocument is mocked specifically for this URL + mockGetDocument.mockReset(); // Reset previous mocks if necessary + // Explicitly type source as unknown and use stricter type guards/assertions + mockGetDocument.mockImplementation((source: unknown) => { + if ( + typeof source === 'object' && + source !== null && + Object.prototype.hasOwnProperty.call(source, 'url') && // Use safer check + typeof (source as { url?: unknown }).url === 'string' && // Assert type for check + (source as { url: string }).url === testUrl // Assert type for comparison + ) { + return failingLoadingTask; + } + // Fallback for other potential calls in the test suite + const mockDocumentAPI = { numPages: 1, getMetadata: vi.fn(), getPage: vi.fn() }; + return { promise: Promise.resolve(mockDocumentAPI) }; + }); + + const args = { sources: [{ url: testUrl }] }; + const result = await handler(args); + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].source).toBe(testUrl); // Check source description (line 168) + expect(parsedResult.results[0].success).toBe(false); + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: Failed to load PDF document. Reason: ${loadError.message}` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + } + }); + + // --- Additional Coverage Tests --- + + it('should not include page count when include_page_count is false', async () => { + const args = { + sources: [{ path: 'test.pdf' }], + include_page_count: false, // Explicitly false + include_metadata: false, // Keep it simple + include_full_text: false, + }; + const result = await handler(args); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]?.data) { + expect(parsedResult.results[0].success).toBe(true); + expect(parsedResult.results[0].data).not.toHaveProperty('num_pages'); + expect(parsedResult.results[0].data).not.toHaveProperty('metadata'); + expect(parsedResult.results[0].data).not.toHaveProperty('info'); + } + } else { + expect.fail('result.content[0] was undefined'); + } + expect(mockGetMetadata).not.toHaveBeenCalled(); // Because include_metadata is false + }); + + it('should handle ENOENT error where resolvePath also fails in catch block', async () => { + const enoentError = new Error('Mock ENOENT') as NodeJS.ErrnoException; + enoentError.code = 'ENOENT'; + const resolveError = new Error('Mock resolvePath failed in catch'); + const targetPath = 'enoent/and/resolve/fails.pdf'; + + // Mock resolvePath: first call succeeds, second call (in catch) fails + vi.spyOn(pathUtils, 'resolvePath') + .mockImplementationOnce((p) => p) // First call succeeds + .mockImplementationOnce(() => { + // Second call throws + throw resolveError; + }); + + mockReadFile.mockRejectedValue(enoentError); + + const args = { sources: [{ path: targetPath }] }; + const result = await handler(args); + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Check for the specific error message from lines 323-324 + // Error message changed due to refactoring of the catch block + expect(parsedResult.results[0].error).toBe( + `MCP error -32600: File not found at '${targetPath}'.` + ); + } + } else { + expect.fail('result.content[0] was undefined'); + } + + // Ensure readFile was called with the path that resolvePath initially returned + expect(mockReadFile).toHaveBeenCalledWith(targetPath); + // Ensure resolvePath was called twice (once before readFile, once in catch) + expect(pathUtils.resolvePath).toHaveBeenCalledTimes(1); // Only called once before readFile attempt + }); + + // --- Additional Error Coverage Tests --- + + it('should return error for invalid page range string (e.g., 5-3)', async () => { + const args = { sources: [{ path: 'test.pdf', pages: '1,5-3,7' }] }; + const result = await handler(args); // Expect promise to resolve + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (result.content?.[0]) { + const parsedResult = JSON.parse(result.content[0].text) as ExpectedResultType; + expect(parsedResult.results[0]).toBeDefined(); + if (parsedResult.results[0]) { + expect(parsedResult.results[0].success).toBe(false); + // Error message changed slightly due to refactoring + expect(parsedResult.results[0].error).toMatch( + /Invalid page specification for source test.pdf: Invalid page range values: 5-3/ + ); + // Check the error code embedded in the message if needed, or just the message content + } + } else { + expect.fail('result.content[0] was undefined'); + } + }); + + it('should throw McpError for invalid page number string (e.g., 1,a,3)', async () => { + const args = { sources: [{ path: 'test.pdf', pages: '1,a,3' }] }; + // Zod catches this first due to refine + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + // Escaped backslash for JSON + /Invalid arguments: sources.0.pages \(Page string must contain only numbers, commas, and hyphens.\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + // Test Zod refinement for path/url exclusivity + it('should throw McpError if source has both path and url', async () => { + const args = { sources: [{ path: 'test.pdf', url: 'http://example.com' }] }; + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + // Escaped backslash for JSON + /Invalid arguments: sources.0 \(Each source must have either 'path' or 'url', but not both.\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); + + it('should throw McpError if source has neither path nor url', async () => { + const args = { sources: [{ pages: [1] }] }; // Missing path and url + await expect(handler(args)).rejects.toThrow(McpError); + await expect(handler(args)).rejects.toThrow( + // Escaped backslash for JSON + /Invalid arguments: sources.0 \(Each source must have either 'path' or 'url', but not both.\)/ + ); + await expect(handler(args)).rejects.toHaveProperty('code', ErrorCode.InvalidParams); + }); +}); // End top-level describe diff --git a/pdf-reader-mcp/test/pathUtils.test.ts b/pdf-reader-mcp/test/pathUtils.test.ts new file mode 100644 index 0000000..6ef695e --- /dev/null +++ b/pdf-reader-mcp/test/pathUtils.test.ts @@ -0,0 +1,108 @@ +import { describe, it, expect } from 'vitest'; // Removed beforeEach, vi +import path from 'path'; +import { resolvePath, PROJECT_ROOT } from '../src/utils/pathUtils.js'; // Add .js extension +import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; + +// Mock PROJECT_ROOT for consistent testing if needed, or use the actual one +// For this test, using the actual PROJECT_ROOT derived from process.cwd() is likely fine, +// but be aware it depends on where the test runner executes. +// If consistency across environments is critical, mocking might be better. +// vi.mock('../src/utils/pathUtils', async (importOriginal) => { +// const original = await importOriginal(); +// return { +// ...original, +// PROJECT_ROOT: '/mock/project/root', // Example mock path +// }; +// }); + +describe('resolvePath Utility', () => { + it('should resolve a valid relative path correctly', () => { + const userPath = 'some/file.txt'; + const expectedPath = path.resolve(PROJECT_ROOT, userPath); + expect(resolvePath(userPath)).toBe(expectedPath); + }); + + it('should resolve paths with "." correctly', () => { + const userPath = './some/./other/file.txt'; + const expectedPath = path.resolve(PROJECT_ROOT, 'some/other/file.txt'); + expect(resolvePath(userPath)).toBe(expectedPath); + }); + + it('should resolve paths with ".." correctly within the project root', () => { + const userPath = 'some/folder/../other/file.txt'; + const expectedPath = path.resolve(PROJECT_ROOT, 'some/other/file.txt'); + expect(resolvePath(userPath)).toBe(expectedPath); + }); + + it('should throw McpError for path traversal attempts', () => { + const userPath = '../outside/secret.txt'; + expect(() => resolvePath(userPath)).toThrow(McpError); + expect(() => resolvePath(userPath)).toThrow('Path traversal detected. Access denied.'); + try { + resolvePath(userPath); + } catch (e) { + expect(e).toBeInstanceOf(McpError); + expect((e as McpError).code).toBe(ErrorCode.InvalidRequest); + } + }); + + it('should throw McpError for path traversal attempts even if seemingly valid', () => { + // Construct a path that uses '..' many times to try and escape + const levelsUp = PROJECT_ROOT.split(path.sep).filter(Boolean).length + 2; // Go up more levels than the root has + const userPath = path.join(...(Array(levelsUp).fill('..') as string[]), 'secret.txt'); // Cast array to string[] + expect(() => resolvePath(userPath)).toThrow(McpError); + expect(() => resolvePath(userPath)).toThrow('Path traversal detected. Access denied.'); + try { + resolvePath(userPath); + } catch (e) { + expect(e).toBeInstanceOf(McpError); + expect((e as McpError).code).toBe(ErrorCode.InvalidRequest); + } + }); + + it('should throw McpError for absolute paths', () => { + const userPath = path.resolve(PROJECT_ROOT, 'absolute/file.txt'); // An absolute path + const userPathPosix = '/absolute/file.txt'; // POSIX style absolute path + const userPathWin = 'C:\\absolute\\file.txt'; // Windows style absolute path + + expect(() => resolvePath(userPath)).toThrow(McpError); + expect(() => resolvePath(userPath)).toThrow('Absolute paths are not allowed.'); + + // Test specifically for POSIX and Windows style absolute paths if needed + if (path.sep === '/') { + // POSIX-like + expect(() => resolvePath(userPathPosix)).toThrow(McpError); + expect(() => resolvePath(userPathPosix)).toThrow('Absolute paths are not allowed.'); + } else { + // Windows-like + expect(() => resolvePath(userPathWin)).toThrow(McpError); + expect(() => resolvePath(userPathWin)).toThrow('Absolute paths are not allowed.'); + } + + try { + resolvePath(userPath); + } catch (e) { + expect(e).toBeInstanceOf(McpError); + expect((e as McpError).code).toBe(ErrorCode.InvalidParams); + } + }); + + it('should throw McpError for non-string input', () => { + // Corrected line number for context + const userPath = 123 as unknown as string; // Use unknown then cast to string for test + expect(() => resolvePath(userPath)).toThrow(McpError); + expect(() => resolvePath(userPath)).toThrow('Path must be a string.'); + try { + resolvePath(userPath); + } catch (e) { + expect(e).toBeInstanceOf(McpError); + expect((e as McpError).code).toBe(ErrorCode.InvalidParams); + } + }); + + it('should handle empty string input', () => { + const userPath = ''; + const expectedPath = path.resolve(PROJECT_ROOT, ''); // Should resolve to the project root itself + expect(resolvePath(userPath)).toBe(expectedPath); + }); +}); diff --git a/pdf-reader-mcp/tsconfig.eslint.json b/pdf-reader-mcp/tsconfig.eslint.json new file mode 100644 index 0000000..944750f --- /dev/null +++ b/pdf-reader-mcp/tsconfig.eslint.json @@ -0,0 +1,21 @@ +{ + // Extend the main tsconfig.json + "extends": "./tsconfig.json", + // Include source files AND test files for ESLint + "include": [ + "src/**/*.ts", + "test/**/*.ts", + "eslint.config.js", // Include ESLint config itself if needed + "vitest.config.ts", + "commitlint.config.cjs", + ".prettierrc.cjs" + // Add other JS/TS config files if necessary + ], + // Exclude the same files as the main config, plus potentially others + "exclude": [ + "node_modules", + "dist", + "coverage" + // No need to exclude test files here as we want to lint them + ] +}