gpu-lexer 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ type SyntaxClassName =
2
+ | "plain"
3
+ | "comment"
4
+ | "string"
5
+ | "number"
6
+ | "keyword"
7
+ | "type"
8
+ | "function"
9
+ | "constant"
10
+ | "operator";
11
+
12
+ interface HighlightSpan {
13
+ type: SyntaxClassName;
14
+ start: number;
15
+ end: number;
16
+ }
17
+
18
+ export declare function highlight(
19
+ code: string,
20
+ ): Promise<HighlightSpan[]>;
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ var _=[23968,.0540662466,24e3,.0057985403,24384,.0556010777,24768,.065214726,25152,.0312690831,25536,.030763232,25920,.0194139154,26568,.0420147142,26952,.0418414185,27336,.0473219579,27720,.037357165,28104,.041405755,28488,.01876311533,28872,.045973659,29256,.0266342413,29640,.0296973836,35400,.0825740214,35472,.0078468741,35856,.066773991,35865,.0066587973,36889,.087513347,36905,.0380333854,37065,.0554284473,37129,.027291421,38153,.0284734772,38185,.0038603861,39209,.066199641,39241,.111921195,41289,.044858679,41321,.017279027],DA="ABCDBCFIACDDECCBABACBAABEACBECFFCADCEEECBIHFBCBCFBHAEHFEABBCACDECACABAKFIEOIFAIFGGACBACFDDKFHCABDEAACEDCDAHBDAACEAFEBCAGDGDCEDCICACCAAAABGBAAACAGDBBDDACEADCBBAGAFFABAACAABAGECACBCEBCAAIIEDAABEGBBAACCCFABDCGCCDBECCAAHEIBCAFAAIMDBCACEHEBFBGAADBCBKDCJEMHIGDBDEQJAEDDEHGABDGCBCDAEIHCHGSDGKBAHYOjSGGBGFEdRRCLCaHABUdAZHQAUHJHEAVMiCRQNUXhmAFEWVcaHRGcPdLaNfCKJAUEFDSDFPGKCBAkFPMeIAWkSGkHICRERCACCBDCAEDADAABBBCACDCADCCACEDBBBCBCDEECECABACCBEAABEDACCABAEABEABDCABCEBDEBDBDCEACBEAACAAEACEDCABBCADCBCAECCADBCCECCECBBAACBBEDCCDDBAEEBEBCBAAAEDAAEABBCEABDBAEBCBEBAACBEACCCCADDABBDBEDCAEAABABDBDCBDEEDBACDBAEACCBACCDCECACBBDBBEBCBBAACBCCCCEABADEECACBACCDBADAABCEDBBDCEDBDABBCBDAADAAEBBECIFBEECOCBBFEAEHDBCHCCHHFHHCCAGABAEBCECIHIEMIDEEDEAEDACABCDIDFCBDACCABABCBCADCDAABEAACEDEDBBBACCBEEBEEBACCEBAACDCBCADDCCCCEDABCAAHIABEDMOEEKICBCEEMBJCFJKRVEMLBGCBBBACACBBDAAEDBECAACBEEAABDAAAECCEDEBEEACCACBBBACAAAACEBAEBBBCDEBACECCBADAACABCABEEABCCABDCECCABCDEEECCCDEBCCCADDCBCBDAACBDBEEEEBAEACDCAACBBCDDADAEABDEAEEABECABDDECAAABACDEDEADADBBBDCADEAAACBDDBCBBBBADABBABCABBCAECCCDCAAEBCCACCBCEACABDCBDCCBDACBDBECABBADCCBBCAAAEAAAEBBAAEDDECBECBCEACAEBBCEDBBDCCCDBBCECDACADCCACBBADAAACEAECCDCABAECCBCAADCAECABECADBCCDCBEBDBDCACCEACCCEADCCDBEBEAEBCAEEDDCECCDAAEAACCEBCBCBEBBCCBBABCDIIKWEDARFaWQKFQOPNFJJPCHSFBRHGENEAABACCBCEBEECCDAEADBABABDBBDBABAACDAEDAADBDACCBCEBEBBCCDBDEDADAACEBBCECABBACBBCBAABBAEBEEDBACBACCACBCBDEDEEADCDEACBCBEDBCEBCDBCAAHAAEIACIFHCGDBADFEEHDEBDBCCABGBDDEOEAEGLHCAGHMADEGEFCCGBIFGJHKQKAMGIFGVKCEDEEHBIKEJBFHFACCCCDEBLACFTDAHEDGBAIJFJHCDLCDONEGdADACIBJAGBGFJDBIFCEEBCCAGAECJBMDIOHAHDIABFMAGECFBHCQBDJCCCMGCEDDKBDODBDFJLMABAFCCEHDAEHAAECDGOUAAEcMQDKAGLKROBIDBEDHCBBFDBFHDBAEAECYAMJCRRFUFLQDDGWGIBKSBTfDILECIQJNFBEAFGGNEGCJADARBFBAHQMACBUQDYPTBIDHECIKQRRGCAEGACOBBCCIBGDMCBUAAAPEQBGMHBRDNFBHROHABHeBKMFBCEeHKLDPCGDBFPIHDEFEAFNGPBECDAGEHFCBABBMSAIGHBHDGAFACGIFBEDEKAJLCLgAABGDEIDGAAACKAJCCJBEYKEMKJFDIAHFADCKBACACDBFEECACACFCECAIAAFAFMJIHEMEbSWCJLnLABJIYNRVITBLBTBXFPEAFCQQVCUKNJbFCGJGIIZDIADCDHMTDPKCJGGCZEMQLPXIUEJCAAVNQIDIABCHHNABJKAONCMSBHjAUBCBEHlFGGAKLDGRLRSETBOITAOOFLfMBDBGQIfEMGEDEFQdCZSAbQcKTASYFJjHQINLIMNFAAGMNEMNLTGKPBAADDMIBNZHMKDPSBZdOKEHPIKfPZWJHKOMDDIoCHdFGOBAIGRDCMCKLEODPNFMJCAGPHEQNfXICFKDSOTLECFOPMGFEbGILIOUJBMeCTdKBAAIUcXGMCGQTKMLFXFDAKCMKDKFEFEUEAGEADDFMCAKDHDQCDALFFBAOHBDDCJFBCGDDGEEBFDHDFCDGCAHGKCAFHAHKPCGDBBABEGHBAAIABBBNIBEQADBDAQBBDBAGAIFLCBCEkBGWAAAJGDJIHLIDCGGKFABAHDIAIAABMBIECABDICEGHBKNAKFVAAECJDAAEJBBBEAMCBHBBAJDHCJJMFDDBOEGGFHCDJHICBAGMXEREHGBCHLJMLAIHIJMFMICDHHGDGFCNFBGGCIBZVCHGDOQBEHGJCQKEEGJASEXUGDDIDDEDFHFKBKCJAAICECAKJFEDEIDQBIAGJHCBLBIGHKCFCGSHIEPENIIFOIVIKAAANHIHFAFEBGJTEIBBMDDMHCBDEBFGAILKPFLHHDBEEKAXOEPJDJMOFCAJAONMPEOFdRPDFLNABGBNMIBHCDOBQKFHAIXTDCMDLCBBDJLKAJBJCEGFVMFWENDDECtAAbBeABILDBAGESRZAEHHBEOODBERIBJFEBOGFLECBIHCVSINYJBCDKNgIMANMkLQFBFJFJITNKADBOCHiHAZIGNBBJDRSGPIQIMGCHDCERHQHMDJNDKIKGLGCBIHBMVDILCCDGAFDNCEGOGTGFCLCAADHBAAIOPCNANEIFEKAJLKDCHLKBKCLHELBLFACNGGGCBWBREKHFBCDKPFQAGOCLKDBLAHEJJJMHBMRCKDDCJEAOBFMCGFDGAGFBDFGDZQIIKKYHWLLGQMJYCWQKMGFSWDZHSBUKbXVDBENAKHHBFICGARDGCLYKKKARMHDEHMIEAOHICNPHECJCFDYIAFMOIGHACFEILOEGFAFGGFFCFCDMLDOAOHESEMHFIFEDHFBEAMHQCACDDEBaEHEICFEBACDDGFGELGDKCMAGLJREKAHFFAEGHDFOQNDXHRJMVDTNRMFTHDFBJGCHBHDBQFGRHFDEFFACBIILDECMjQOFFQNEJDaJTNFQGJKLEbIAZLMAGFBCNDGbFILeQQLBFGVQCEGFQNAQbGIlBPZGIDnqGFWMXIQMIPDBeDSfElUJbAUFLQGUQNIDKPTUROIFTBWMDRAVNJUIRJEnaXCBDFHFBGnDfCEADOCEAEHBCAAUCFBDEGGRZKVICKKFMQMPxKEESWEFJCDBNWWMlJSCKMAHBJDYJDGiPCQEFCCQFKFKFMIEIWEHCDEHHBJBCKEEIBJHEKGAKBKBPBEDBFJOKHaGAOBFEABCJEPBEEHFLNJANDBXIUFJCCAEBCAHDEIBBBGFECAGABEECCIAEBEGNBGDBGJAACABDAGCLFAHCFGELRDCCBEACFEBBABAECCFAEEBCAEEHEIAADECDHGCACACIGDJAGGDKCBDDFAIHBECCCBAHFADDCGBDBBHAEGDIBAFCCBECAAFECGBCNECCBFEGGALBEQFCIFDCBCEAABCKDGDCJAACDGDHMDHGEIHEBEFKCAAIKIACHGICAGDFAEFDIAFCAGDFAEGDANKGKEINDDDDAIFEAACBABJFEKBAAACBCCBCBACIGGECAMCLLGMCACKMADDNAJJDAAELDBCHFAHMJOWTEREJIGIHKIKBGKDJDKHUIBMAAAAMNEBDCECCECDDCGHDEEHCACEFAABBDGABHFKFJADEABFGEGBGDIBGEBGICAKHFBAHHDSLFLFDCECEDGICDEBEHKAEGFGAOCEECICBFCKDBHICDDFRFEDADIDADICFAKCADEAFEBDABABGCKADAKFADEAEAEBBAGKADGEGMYAAGLGJMSIiLWVHELKNEHWDOQIBAAFCCIIACFDCGHACFCBCCAGBDBABCBFDHDBEBCAEAADCBBBBDICFBCECBBBFEGADBEAACCDAECBBFDBBCBJHDEGKCBCEGEIBFBHGHLKFEEAFAGDIALFCGADMFEGBIABIJFFBAABCEGLDEIPBBCFGJAGHBBAGDEFCAAJFDGGEADACGBBAFCFABIAFCICGHEMLDQHDDZMQJKAIEaAUFAMMFKDABKIFEOCJCUDKAEHHECGFCQPBCFHNFEAJINOEWAHJBBWTKSPEEOWEIOERACGCGGHAAAEdPDGEHIJHJOWEFACEJAVFQMBALiEOFPFABPBKBWJBLFDACEOAHKIFKFAABJIGKAEMKECGMEBDBJNDNJRDHDXADJNTOCKABDRGAKDJFEBpEBJCEGHDKCEDGFCESFgDGIAAFaPCIACBDDDEDBBCCCCBCBABBBCDAABDCAEDDCBABACAAEDDDEBCCABEABCBAACCCBBCCEBACEAEBCCCCDBECADECEAAACCBECCBDCBCBCCBEBBBBCBACBEAECDEEACBAAAABEDACEDECABECCCCBEBDAACADDCBACBCAEBCDACCBCACCAADACCCDCAADBABEBCEAEEACCECDADAAEAEEDDBAAACBEAAEAADAEEDAACACAAEABCBDADBDABBCDEBBCCDACABAADAECCDACDECDAACBDDDEBAACCBCBBAABEBBEABCEDDCBDDBACDBBBCBBBACKACBKGIBBAEDCCHBAAHGGCHARDDBFDCAABADABMBEAOEAAIBAAADABCDDDMDDBACBAAACCAAABDEABEAEBBACCCDBBBCADCAABDCAADCDACCEBCBCCADCBCDCBCCCDCEBAABCDEEBAACACDECABDDCBACDAAADAABABCACACDEEDEECCCADCACECCDCACBCDBEAEBCABACACACBCCBCCCDBADEBDACCEBDCDEBDDCEECCABEBBBAECECAAECADDEBECECCCCCCBABBCCBDBCCBDECBDBCDDABCEADDAEBECAEDCCCBCBAABCCEEADCCEDCACACCCAAACEABAABBCCEECACBAACBEABCCAECCABACBDBBBAEAEBEABDBACBCBCBBCECDCCCBBCCBBCCAAADCCABBAAAACEEEECBBADADCBEACBACACCAEBABACABEBCABACDBBDEEBDCBBCEECDABAEBCABAAABBEBBBABCBACCBAADAABCCADECACCCCCBDDCBBCECEEAAECBCACADCCBBBEEACCCDAEADBCBACBCCCBCADBADABDCAEBECAIMEWGFAPLYQOKFOIRPDLLTBHSJHJLKALCADDDDABBABBBBAEDDBCABCBDDCECDBADEDADACDBCDAABCBBDBCDEBDAEBBDECBCCABCCABEABACEEEAEEBADEDCAAEEDCBADCBABBBCCEDACBEBCDACCCADDBBDCCDAEBECCKAEIHFCIBAABFEIBDDAFEADBDCDFDKMGCKGHABAEAGEAGAIAGKKBKBIDDISIAQIIJIROCCBBGFEIGGJCAFFABIGCAIDPAAHLFFHGJCHEEFBJDEBHCHOJGCdDDACQBJACBIBDLACDAIBCDBDKCCCPDKBIQDAFBKAHFKAEGBHDBASJCFCGCOGCEHFIBDOFFFAFJIDBDFGBCFDADHECBBDIOUABBaMYHMGELIVMAECAEBHIBEFFDFDBDFEBCAYEIHEPTJQDNQAFCWGKCGQHVfFIJEDCQHLDFAAHGCPGICJBDDPBFDEFUQDDCUUFYPVDODFGCKKOTNGCGAIBAOBDCCMGKJICDUABCNCOFBQNERAFDDDPIBBAFgDIKHEDGcJKHBNCMADDPKHBEACBBHGLFIDEFACFFDAAFDMOBIGHCFDGIFEAGGBCKCCOBNLALcEGCCFEICACCGEMDHDBNECcKEOKJCBCDBBEBCKDCMCDAAACGDBDBBFEBBAECBFDHMIGLAIGJFADDRLBEABFHQKEQEAAbEIBEEGIIFAJDAABBFBKBHFACIACDIECJIMKCCECMCFJFCEEEHCEADDCRGAIIOACBGGCBGCCIDEHKSGOAHCJHECJBCGDLBODPABECBEEHRLBCBFIDGGJAHAFSGFBKCMMFFFQDBBOECFOEEECCHFNFHGHDCEABCMENDKEBHABCAJAAGBIEBJDARCFBMHHMEDWRALBDFJODFDFBECIGRNBBFBFHQEBGBCIPQUIBEDDHHHHABCFGLFJMVJDGADAEFGCVKBAKXFJDBCWFGFeGXBZAHKODeZGGGGHPWMKACBABODQKDGJBHIUEBEBCJDDGBBIADDOADANHCFGIBDADEDACEGACGACAFJFBDEBKFADEIIAHFEFMLBBHCCCACKFCGAEAEABPOHCQBFEFFUDAHFCCBGFNFDAEkBAWBBAFMBFCFNKBEKMEJCDDDCEAIBCAOCGEABAFMCEGHCKHAOAZFAGCHFCFCJACBGBKADFAADNFHAJHIDBFEQEBGDHBBJNEABBCMXGNIGaJODGBAJODIIGOEAMEHUAIFFQnhIIINDYNIXHDFKqEQGQIGMMKXKfQBIHXVaGBIEAQCBEJMBaHOUDSIHHHQAQMIKGPDSEGLEEJHPJCIFFHDYDOELFOXFUfGLQKUBBJJICMJDBFKHCCAKFOOCCKHLBHMKDMLFECPCOHKBIHDVDWCEQPDNEYPaGbCHBWDJHJFEBGOECLQBADKABWIJNKLLLBALKOIHQQNSORNMDJSEaMOKXNGLJMRSJRIGRHDIcMENKJJDcGGVLAQGDHTNbALAAELIWjDTJLAWOhcgKJEVJTPUVKJYICLDkbbEBHMHPOJMDNJPQHRIATEMDCPAOCGLKAHACHBALFZeJOKIGIMHKNAOIVQPKACPKHFBCKKFRCVQVMJKNJDQQASFJTLKCIHIOAGHAUCAAFGHKCIICJOFFAIGBUDINODFMLEDDWuKOURHEIHLcAHDCHDEKIDLTDJHOCEKAQDFYRPQCgETMYMDYOGOFEFOeGEFSYHaOTRHRTTUfLQBgBDbVGIAjMTISFfAcURDLAILTXYEBYNPAIQBUPWMFIKLLUNNSDKDIUoCJFdJBUEDIIWFAEGSFYGPJSAFAJEKJODGBBLWDLOKIAMFEJQOBiQFOBJXMNAOAQDFKGROSZCLOGIFAVCBIGPFIHVJDERJkjIJPVGNBDFIIEJKYFJINSPcLFWHGFLPKEWBKKXAUGODGKLDcIEFMOEJHWQMILGJYCLYWGFAATKQKFKEEAGBCMCBJDMHDJDCCdOROMIONKIOATKADACDNGWHPGNDIPGNBOaFIAVWiPENGVCHDAiBAHCbEGdWBjDJBAJUIKKGWOPGBOTPQPMKLTFWMBXCdPDYETLKhabAFDHHFAIlFfEEBCEDIACBGCDBYAJHFCIGRfKVICMKHIWKNrKCCYSGAFCJHJaWInNOGKMAJADDeJBBiVKOEBDGQAODMFGGECQINLDMAJOBACHANFCOADEBQRCEAfJEVKGJMEDUEBOCBEBABDAPECGLHRRFCJAEbGQMBHHEJBQFBEAELAKDDBGEAEJGDNPIBEDFFIHDCECLPDAIDQBEEKDBBACGABMKAJCCCCCDLDCAAFJIFCACIMFHEFCDCBFICCFCADCACFAAAADBACBABAABAEAIDDGBAABCACBFBACAFADGBAABACADDCDCABGCBCDCIADDGABFFCGCMGBBFMJCCKCHCOQMGFMGLCEAIAAHBHBBDCEFCCCCFGHGETCGDJFBAFGCBAEEBAFADCGMDBAEBBBEACDGHADKITHHOBEVUCFGGEAAAEIAEOCKBTEDCBFDDCGOBIFJKKTLHEQBNNMMLUACNVGwFDNDKHTCADBBEHJNAIHMIGECEGBDKCDAAFECCFRAFBEIHGJDFACBBECFCCDMCHPBBEADFABEFDAJDDFBCHBCFGBBBFBEDFBGDLCBDCBABAECBBEIBEEACBCBBEACDBLBDDBNBBECBDCBEFGBDEAEFFFCAGBGMDGCADDFFCBGCDCCDCAIAGCDEAAAHEACAXACEACEVOAGAJJFGKKBWQGKKGEGNDKNCEDNJXCEBDCBCAGBCBAADABIAFBAADAICDIAEHBDDDBDBBABCDDCDABIBDABCCAGCHCAEABFCBFEABEBHBFDDCAKCACAADFCECDGCADOKHCEAAEMDTCDCKLFfGCOIIBKKDJJHPBKIFDGCAADAEACEAELCIUIBSDIIXECJDAAFCDEADCHHGDBGGCMBFEDQQLHHEGIEIICFBMOEECBDFHDAEAIBHCDCFDCCPGADDANDCDACGECFCHCBCGGACGDCIFAIHEBGBDHABTFWHGCNcNaNFOLKBHCFMGHOJDMWPBCLBDMUGHEAIFFXLKOAENiBOFNAFDVBIDSFBLFABEGUBFQEDCCCCAJMGECIMKBDCKDAJAFJDRJNBLCRDJLVNOBIBFJPMDKBFDIBrCEFDEMHHIAAFCCAESAiAAICCAaNBGBBDDAACCCCAECBBAECDAECEBDBAACAACQPLEEGDABSAGKIFEAKSBKGOIPGAJGMGAMGEFKJHOPIJGNFBCOABCEDJGCDFBCEHBGFDNFSPHHERCACHAEDBGBAICEQDILEFXACFAHBFJBDIDDMAACDAHBAEDXIDQDCFHFEABAFFEOQBAGKALGJANAAEGECAGMGAKKIDEGLJCGBBFGCMDLKDAFDECNRDDAHGKBFBBCOCENDHBGNMEGDEFDGBHHFFMMBGTEFCFBBBBEMAALCKDDEKBEFCEGGKZNFAADACEAMBCFBHHBASEGLCIJMCFOHKCGAOFHQGGADJGBJGENBAEQIUEGIAHPKBJEPCAMHCEASBCCOFJBFAKMLLAFAECGIEJEMFBGSVCBAEOLGJKMGJHIAARFBIFDGJIFKEAGGADEHMGJDGFGSBCRLSJAKEDGJHWACVNBEMPEDBFAAJHNCCEcCBADGNKECCHGLPPGGCPDDMAPBIBKDAEGHMBBQEHIFIGEDLBJIQFBGEEEBCBBMHAFHJFCACANAKDLMFCGCHPIDICHCJTAAFDEBGFDGIJDARKGGIICBALEBEHKUKCAONKCKUGCCCIKGMFLDECKQDBFDACACHIEEIBABJIDGUDSDNJDIEFJKIPCJDGHKMALAGHQGHPOOHILBFEEDHGEDLFFMIAJJFGBDJFDEDFJCNHBEEACRJPAHJOIGHEFFNHMEDGGGHFDBDEAAAHDFBGGEGOHNCCBHEHCJQNDDCRCPSFLIAUEGLLDCHAKJAEIEGFEHKLUIBFCMBKCIJBHAMGHNAEEEABAGBIFHHADHFJJMPDBCECIAEEMFBIFNHECQGAELEGCBBFMECCMHLDUCICJEGIJENGAAIENFYKCBBCBGQEFAFIKFDDBFDCEGFBLALMADABBEFLEGDBFKNHDBFDDBCFIDAIFEXDHAGBKEAMCICAEMJAACJBBIDCBFECAEAXDBCEeEBMELIJHAEQCMJCHDEADIEIGGAFLHAEMDCCKEDGEEESFBFDGCAJLHCEIDGBUAMIEICHEHIAAADLHCAAIDGJGBJEGGLJEHSXGGFAEGGIDJEmKUCIKLADFCHACaDCQFKFKROGGAAGEBDDEMIIBHKFQAAIDGDBJCGGEGICBJJGHBDVBATGOJDIMHHGDKGBDIBCKGAEJMDOADGNACIAUDAANCCCEFHDEHMGHEEWCCAFGJFUEACDEDFEEDACHTKABDCJJLCBDJKFBICDBZEHGJBBBDABHCFBBGMEIABBBCCGKBIIKCJIBEBFECFEDFGDJCCDABBJBBGAIBJOGEACAGGNEEECCABCUOPJHLQFFFKAFQCKDGBDGRBQABBORIICMCBMBNIBAABEIIBMBBDDFHGBMIIKKHBRGFFCNBPcFMEDAHDDEIECJHAIELJGECKKEBIGIAEBBEGOCAJBHABFCBTACCKGLIDFECDAAKDIEGJAKSVDFCDBSHECACDAPMNJBODCJBBIFMAAAIMFGGCGENABFMMCBBIAPAFRPFDCFCGDWFHTHEHPGNCJBAGGAFFAKDICDAEQHBAOBKADJEAFFFSFFMAFIHDBRGIDEAGJCPDDHBDGGADAKGNAEGBEHCBEMACAMBHAFQAEECFMMMGFBDCJPMRADIFKIBSCIGAWGDDIJJAEIADBAMCFHIAAKFBGEAEDEVGFXBIBHLLFDBKBJACFBEDGEMHAIBEDELNHLIKCMENEAEGEBNAJCBBAFCHJBBDBGFFOHWMFIGdLUIOEELMRCAHAAEDEEBIAHKASFEEIFELFCBGKALIFCHJECSEAFPSGAHJIBIAEFGBFAGDCHBFVFAJIDCFCYNURBBFOJHKBEL9WDUDFKKFBDTAILYCAKKAGGTCEAGAFCCDEGAAHNOIBFEEEFHIAKGCCKCJNHPAECMXaHAJBBIFVGBHGAFHCJADBDBJEFFKCEBAKDFFHEFAAKABIFAHFJFKIBPDDLBMGLGDGHIFDFBKDICFCCMCVCFHNAINKAECBADIYIBFHFDAAGABOFHGFDJGDDRBCDBGBDKHDJBEJEEGLFOEDLDLLFCBFOMAEBHJJBECSQEAJVCGDNEAUKDONFLHNAFCTJJEBICBODGHHKABRGBOEIKKEFKHLEIHOBEeHGGEPEBCECJFECADAFBLCIDKIDIAGGGEABEDGICACABKDHJBICLHFSBABBLDRFBEAICTMQKECLABAGDCMAJBCBBBFKJSDFMEAFEQSFECBAANJLGBGEICFEFQNOEPDBDIQDMLLAGAAMCLFBMGGKHFHBCHGABFABCHJFGHGHIEIEAFFCECEGQBLMFHHLGGJKENGIDLEAEBKQAHJLDAMIIAHCJEBCEAEABBBIKFGEBDBNNSCJIIFBLBACBIMDOHHDCGANMODHHNDDGBBGGDDIFFXAEJCKABHFHAAFFBBCDCDBFIBFEFDFEIMBAILJFICBKGKFCRGFINFMPJNNIMACCEMBIFJAHBGMIIAWAKKSMJCSREDLDEADOFGEEEABFBGCCQDMAHDIBNTCKABGQDCBCTHALCBEBFCBDBBAHCYCQAFJCEBLFDBHCEDQENDUIAEGLAHFUBGAEDJCBBIJDKHFADLLIMDGEEFEACACGIFABPNFYLEERBIFFCASDGCGCCKEGADKGFECDIJGDVAIAEIJRDGCDCQHEBFDIBFEEDGALCDOILABJHMCQBJIADCEJLDBDCBFARCDBILHRBALQDAANFCGHKJFCAMJHBLMHHSDGMDMCHABKFGDKIGADBHYCAMFDFEGACASKAGLDHBAHAGMDJIDLFPPAAHGBCJBDbTNNBEKNAIBGABLHGEFAKAMAKLICFBAAEEOFJHKAGMDBCCQAAXOBBDRHIBKJCLIDPFEHAGGBLCEDAEJAGAEDFCEBKODAICQJFYABCDQHQRGFHMDFFGGLIIFDDCKAAJKDPMFJABSDGIMKGFLIDBDMACHEIKEPDHHNFHOFBBHBGKUHBGBECNHBEAMBASCACCISLNINAHGCMTEPGGBBKLAFNGNEAIBEQDLCXCEADFFKDJPLHMDEBBIBIBMFALANDBQQCCSOMEFIHTCFJABAHAHKADKMBDFCGJFBEAILMMFDNKGCCGEIBEJAJEOEGDKGNCBMLTMJAEDSEFHAKCBFCBQBJNISCHAEALODJAOCHDFCIPBCFCGGJHAHICKFDUHDAIAKVFCDECLCBLBKDIGODAPDIBMDDCOHBDGBBMIKGGKACAGABAFCPCLAGCICJAFAIKKGFCCGHPCBEGFCFEOBBCqBECLDEIFIBCMGFAGAICJGCLDIAIIBBIDPADEFACADGHKIDFEBFNKGXCBDMALJUcSWEIHPKIBLICYLFNOCARCCKNUFNIBAFLNEGGEACQFCEMGBFPACFGJIKGHMGKFFCPBAEACTDEEEGJJGDFOEAHJMLFCEJBBCDRHDLGULHBAECBOKDEFBEHHBBEIMEGAGAKKABAMBDMHPGCCGVKFJEHEHMPDBEIAMDICEDKBJDCDKICCFTGFFABKBHGGLDCFLRENRFCHEKHBAEHGBHEIBFLDRADAAECIDFBQFCCCFIAEGEDDGDHAABFQMCNDJBKHKEGAEDCGGUCCKCAKENAIDKCBJGAHOEKCFGDFLAFEDGCKBDFMCASBADCBFJADADEBEHIQCIDNGEOBBBCBMAMAAGBEKBFBACGFLGCIFBFBGAKAJKBCITRAGHPQFFCCBGKFKDBACBOIEQINBFOCKDTCCDIFKGABBJMLFBQAGFGIRGAGDQFFJFEMDEEEASGAFCEVPLCCQFTKHHBDQTDFBMQKMJRJEFDJIHGADEEGAMAEBEDFBCGJIEALLAFEGICHCGCGIAEEBMBKQFJEIQGDBACEMRLCWILFBEKIDHPaDJDJGCBBNMCDBINDADHTFAIOIGAGTdCQJGNTKLLGLGAPLRBCLTGABHDHDDKJGAMGEHNGFBKEIQFMCFFCMEGGJDEILDAGCEJACGCFHIDHDAAABJAGEIGLCRGIFBIALHIAHFBAJBICEKFHNDIPJBJCONBHBGOBDKAIFEFHCANBLOGECMIMEBAHGGJGMDBEGRAeDNAAAADFMFAMHCHQBKACBTGFGAFBHEBBICPCLGIEBDBGIBICFCCUJLGGIDGASDEKOFGDGSBGEIINCCHGKGBMGAFONFQTMFEJJDCMBDCECFCDBBBEELCEHFPDQLAHCNCACFGCHCIBAMEKQBGJGBNCGDADADHDFIBFKBAACBDBCEBRMAQDDDHHEAEEFFAQYBBGKDJBNCJAAGKGAIKOIDKGGDAELJGEBBBGDKHHGADBDIBJPHDBJBIAHCBAMAAHAHACDEECBEDDICFDAHMKAETCHEBBDCICMCAJBOFBDIECFDIGCGVHBACFACCIIDACHBDHBMCKNDMJOCBMFIECEGDCOCCADJGBHEGLABGSIUGEADFNIDJELIAOBBIAUDAAQJHDFBEIJDBAAKKIKGFCKNEEUREBFEMJKJQKENHIAGNDFMDDENCLMIBEMFHBLOCNBGDCOAGPPSLAKEJIFFQCCTLACMNDDBJCEJJHICAUCIAHERGEDKHILJRAKEHBCKGFHKBECCEEJGBEOGHOFBEBDFCFKIFAGAEBDDBAIHBJFLDACAFLCEALKHCEBDTCBEEFKHTIEHAGAGFDCGNJCHGIIEGEABLICIBIWICAQLIGKSGAAAIQKEHTFGAKMHDDHBIBEFKOAIDDALGACSBMHHFFIAFLMGJAHFGFGICHHKJMIBPIMJGJFDBGFFECFNFAKGFJJFEFFNADAEHJIHLDKFACNFRGFDKAGBCDDJDGGFCIGLHDAFMCBHJABAGKEMODFCABHKHAHSJFBARBLMDNGBUCEJJDGHAQJCIGECDIJENWEBABGBOIIPFCBQGFTEGCGDICCCGJDHBHFJFFIPAACHCKDGEMFBODJJGEWGDCHEDECALIEAAQHRCWEKEBAGEFGPCEHCAJDWEGBHABEUIFGDIIDHBDHDAECDENANKBFCCEEBNEIBBAGNHCFBAJBFAEDCKDCTDLBIBKGDKAGACBELCAEHDHMFADLGEAGAXFBDIaAGMGJCFNEBKEOHCJBICFKCKIEAJHBCAKDGAGEHEGDISFFABKEFLFJBDCDGCQLCMDIEFAFKBKBJPHDADEACJGHRCIKJJAHYdKIBACEGKFJCkMeGMEJAAHEDAAaBEQFGFIPOAACEKIBHBEKEKBBIDKBDQBKHAHAGGIIAEAHPIJCPTCDPAQLDBGBDEDICABGABMCFCBKDMGACJEECHUDAALBFKMDFJKFOCRCKQDBBDBLDWIDIBEHDCCBCGDTAFBFELLNABDDIHBMDBDRADKHDCABDABDNAHAIDGCFAACBKICIKGEHKBICJGAFEBBGDJBILHFEHBDKGMBLMMGEKCICLEGEDCBBEQMLDJHMBDBMDFMAIFGDAMPCIBCBITCEAKEAOBLIFAEDIIMBMABLHDNIDOKKMSHBRMFHCRAPYDQGJIJAFBICALDCMELJECCIKCFIGADACFGIMBCFCFCADEANEECKGJKFDAGDABIDIEGHAGYXHFCBDKJABCGFBPELHDMABHBBIBMBEDMKDGEAEGLCBIKIECDKGPDFNPDJEBAAHODAXHCAHIJEFCCEGCFHDKDEEFBEQFAFMBIBDJKECFHSFBGABIJDBNAIJGBCLCVFFFBBICDJDICPCEEAEHABIMCEAEBJBFQDBBBEOMQMHDAEHFOPCDGDOGESBGKCQEDDEJDJCBCAAHIGFJIBDIJEICCEBERGHXFEFLLDJDCKDRBGLDCAGGKJAIDACCJLLJEGAGENCDGIBCRIJCDDBJDJJEDFAAADODWIHKDXJOGKBCJONEAJACGCAIDEEFOASDEKEJGTJCAAKEJGBDFJMAQGCHPUADFLIDOGCFGADBIDAFEHPPBFEAADCUJUJHABMPHOGKH5SHWBBEGDBEPKEHOKGIGBCGLBEEOCBEEAFGBCNROIEHCGKHFQBQGBDEILLHHGCEKXYJBLBAEHTIFHEEFFMHCJBCAFBJHQIGHHIJBAJIFAGKBHOFAHJPLIKHNACLFQCLIDCPBBFLGMCGCFCCGCRHFFDDKJGBGBBCBBOECBBDFAACAAQFHIHDDMDBRDCHDKBFGBBNBAJAAELFKCDHFNLFBELOIDAAPRJFCKSMCBLPBMGJEBOMLMLJLHNDHCTHDEBMGDKJAHJKAARICQIGMKADKFFAIHOFAiHAGGNCFMGBFFCCCDGJDNCIAMADCEGCCKCBEFGKBEFABKFJDCGDNFAQDACALBPHACAEBLKOGADDCBBGDDKCHBCBBCBMJODDMAEAEIUBGBBFALBHCBGGCAECFQJKGPHDDEIJIHDAEBHOEJHBOGGMDFHBDHIDBDBBBLLACJBJCACEDJDCIGEKOFDMJBFJGENKMNGEJJIECDGMCFFHBCQKDCHBJADCAAAAABBGOLIIEAAJLQCJKKACNFBAAGKBOHHFAKEDMEBHHNCDCBJCMFHCDDNEBDEMBAABAEAFDNGAAGHHBEDBKJFHIKGDAOLAFACBOEEHCHQHEJHQNHHNIKCBGKKAEBFAFEKMIIAUGIMOMNEULEFJAECBKFMGBEBACCACGQCIEHDKCFNEIEAKODEDBNDEPAAGHDEBDDCBJBUIUCFDEGAJDAAJGIAKCHFUGAKGHCHDSHBDGFHCFAIJFGBHCDDHIMBEAEDACEDBAMDABNPJcHEGXLQDDKCSFKCGGCIGCDDMGFECJIJGARCKCAGJRBEABCMHABBFIDHCCDKAHCDIOJCEHJMEQCDGFABINRAIHGEFEPEDFGNFTBAFSBAAPFGINMHHIBMLLBLILEYBEOJGEDEFMDECEIIDADFUCCGAHFCMBADQKDEHFAADBACOAFMBNJPRIBDGMCLCAfTLHDEKPCGBEDEPLCGHBMBOFEJEBFIECAGICHDGCGGABAFICDZOFFCJLEAQFCJGCNBGFBAGDDBBADCFBICEDCEIDIMAAKCIHBWDDBAQFONGDBEDLLECNIGLABCIACFKCLKHPBDSHCKMICBHIHADODGFBGIGNDJFLLJMDLFFBEKSFDMCABNLACDMEFMGAACEQLLALADEMIRIPKMAEMJDFRGNEGIDASDNIZBCBCFBGHHHJHCCGBEIFGCIHBHDFBCQKIAWKICDOJPCDJADBBALEDBMIBDFGBDADEDEJOMEBTKEGCKAMDBHCJIOECBQGJABOPPQPBABQGDFGKEACAASBLPMQCHCBDNOHJEKCBFJDMPDABAKILJAHIGGCDOLBACGOdHBCAIJGCJAODKGGAANFEFKDECOLCDABCIIMKCKBGFDDHGFEJCFFGEIEHDDDMIMBAEEKFNBAAIDAFMQFAAqEMCVAGEFKBAICDBCDGAJEGRNMEICFBGFRCGEBBCGCGLKMAJCHHRIIXEBBKCNFQYMYEGFLIKBNGBQHNNKBANACKNYJLIDCBFJDEIAEGGFGAIBDDTBADBHIKGDICIAFAHFEEDCTAAGAGHBKLESEGJHIJHBCHBBEAPDBNESLNDADABMECGBBBLFACCEIBKBIAEKCAAECDMHLIBGETSDJEFCJMPLDKMIKFEECEKLHCCJICCALbGHBIBMDJAKJFADJPCJLDCFBMHGBIJCCCIGHFHBNEEGAABGHDDEBACGAGAAACFBCJFAAABIOBTBFAOJKCACCFBKAQGEIGAIGRBMBGABJEJLGCEADKBFPEDCBKBABBHMBIUEECBDDFAEEFECBDKOCGBJEDMCDCCBQFMAAIDGMBBBDAABFECCBAAEIDKAPKDEEPTAGHLMFDACDEEAGFBFCAKCGKGJGFOEMFPCCFGJKGCBCJOHDDOEEDKIPEAIDMFDPDGODEBCGQIABDIPPHABIBRKFDDFONAFEEQIIJPFCFAHKFECBAECGKAIACFHBGGJKBEJNCFEEIAFAGACMBGGASCIODDCMQGHCDICITJEYEJFBKKGDDNWFFAJGECDNMCFDANFCBFLFBIUGADEPfBODEPLKFHGHIBJLHABLPICBHDHABIFIBKEEJNGFFOCKMJSBCFCIKBGJDEEJDBIDAFIEGAJDKFLFDEBADCEKOENCLMGADGELCICHBCCHBEFCIBFRNKLPAHAOFADBBCAAIACDIBBIFJCJAEBGKCIGBGFGKHBMBDCINCYDNEAEBBHGBCOFAHSDIIEDbGHAAFCHKBLKETCLKCBDAAAGEIAFAAAAAAABACDCAABCABABCABBABAAACCCACCCAACADCABCACDBCDCBAAAADBCADABABECABAACBDBACBACBAACABBBABBGABBCBAACCGAAAEBCCABCBCCACBGCABCBBAABEABEABCCAAABBAAACEAAACABACAABBBAAACADBACAEECFAGCADDCAACCAEAAECAAACABEAADDACABBEACEBBCDDACCBDAACBDCCEBCEAEBCBABCBACBAABBCCCEFACCCEACABABABAADAADAAACAAABAAACCABBBABCBACACCACABDCCBABDEEAGACAACAAAEACABBBDECCCBACCBABACCDCAACCBACAABBCABACAAACCDAACCCADBABADACCFAABAAABAAABBBBABBBABDABAABAACEACACBAAACACABCBABCBAFCABEACABACEDAAAAAABBAAABDBABCABCACDACABBABBBABAAAEBEAABECABABCCBECDACBAAGAEBACCGABBACABBBAAAAAEAACCABACBCACECAACDABCABCBACACAACABAAADBCABACCABAAADAAACGBDCAABACCABAEADEEBACAADAABCAAECABAAAABAAECBDBCCCAACFCCBABACDAECBAAACEABBAAABGEACACADABAEBBAADEBABAAAACCAGBAGBBCDBBACDAAACAABCABEBEACCADABCBABAABDBACCACADACADAEAABCAACAACCDAABAAAAAAACAAACBCEACCBAABCAFACBAAAACAAACEAACABACADDBAAADDECCAAADABCBACACDABGEBBCCCDBACCDABCABBABEFAEBACCBAGCBCBCBACBCCBADCADBBBBAABABAACBBAAABACEDAAAECABCAACAAAABAADBEFCAECCACBEAADBABCAAABCCADACAAAACCAAAABAAABAABAACBAACEACBAADBBBACADBDBBEAABECBAAADCGBABCBBEAACAACCABADCCBBBECCABCDBAAAACCCBBACBABCFAAAAAAAEBDDCBCACCCCBBBBAAABCBBBABBAADDCBCCABBBCBABCABEBAACAAAAEFCBCCAAAACADCBACCABCBCCGAGABBCBAABBAEBDCDCECABAABCBACAEBABEAABEAFBBCCEACCCBAEAGBAAAEADDDABABBEAAAEAAAEBDABDCCACABABACABCBACBACACAAACABCCACCDCAEAEADAEEBBAAACBCAABFBBBCBBABBCADDAECECAAGBBCEACAABAAAAAAEBBCACCEBCACAAADCEAAADAAAAAEACAAEAACBAACBCCACEEABABCABECAABAACCCAACAABBBAAAABBABCABBAAADBCCCAAABCADAAAAABCABAABBCACAACDAEBCAADABABAAAAACDABBBDABCACBAEACABDAADBCBBCCBAAAAAAABBBBDAAABACCAEAAAAAAAAABAABDBAACCAAAAAAAAAAACCAACAABBEDEGBBBAABCADAACCADABCCBADCACBBABCBBBCBCCBCABACCBBEACACBAECACBAABABEABABABCAAABCCCBAAAAABBAACBAAABAECBCCBAACBCBBDBACABABEAAABABAADECAACDBABBABBCACDEBAABCFABABABABBCCBAABDBEFCCCCEBCABABGNCABDBBACCBCCECBEBAEBBDCGAACEBEBAABCADBBBCAACCBEBEBECCABEAEDCCCABCCAAAAAABDAAABBAAEBACDAACBAACAAABDCACBBCCABAABBBBAABAFACCBCABABFCAACCBBAAAAEADAAACBABACBAABBDDACCABACCAABAABBBCAAAABBBAAAAAADBBCAABDBACAAABDCCABABCAFAABCDCAEBAACABBADAADBBBABEADAABCABCCAADDBBGCCACBDCACAADAAAAADCBBACCBACCCDAAACDCDECDCBECCIAAFCECCFBBCCBCAACDEABEAABAAAAAABBAACBAAAACBCAAABBBABBBBAABACCABDAAAAABBABDCEAEAAADCAAADBBBBBACCEABDABBACCCAABCCAAAAGCCAECBCAEBABABCBABCAAABAEBCDEBCBBBBCBAAABADCAAACCEAABCACAACBBCBAAABCAAACACCBCBAACCBCAAAAABAAAAECCCCCACCBABACAACABCAAAACBBBAEABACAAAABCBBCBCBACBCABAACAAACCCBBAACACEABAAAEBAACCBCABBAAABAAABCAAECBAFAAAAACADACCCABACACABBABADBEACAAAECACCAADBCBCABAAADAABACCBDCCAAACAABAAAAACAABCAAAECBBACCCCCDABCBDEAAABAABCACACBAECAAACACAAAAAACABEBBCAACBCAACABAEAADCACDBCADBACCDCACABABBACCCACACAAABABBCBCHBBABECCAEBEFCAABBBADDCCCDCABAABGAFACABAACDCCCBCABBECEBAABDAAACEFBBAAADBAABBBAAAABAADABACBCBCACADEEBCBCCABGDDEABBEDDDBBAAAACDEABADBAECAABBCBCEAACABAEBCBACCAGBCBBEABACBBEAABAAAAAABECABBACACECCCBCBACAAAABCBABBACBBAABAAAACCACACAAABAABABBABAAABAACBCCBACAAABCAAHAAABBCAABEAACACBCECDBAAACACEACBBAACBAAAAADBCBBACAAAACCBABCBACDAAAAABCAAACBECABAACAABACCAAAACCCCFAAAAADCACCCBCBACDAEABACECCACBCBBCBCBAACCBACAABAABEACAAAAABAGCABABACAAEBCACACCEBCAABBBBBBACAAAAEBBDCDACABCBECCCCACAEAACACABADAADABACABAABACABEACBAAABABACADEBAGGBAEDDCBDEDCDAABAABEABCDABCEABAAECDBADEEBBACACBAAAABBCBACBCCBBAAAECAECBCBCBCABGCEAAECAACAECFADAECACACACABCCBBAAECBEADAABCCCBECCECABCBBACBBBDCCCCACACBEBCAAABDCBCBEABCBBACACBABBABCBBAABDACBDADADBBABBCCAACAACBACDACCACAADABACACACDBCEBABAAACABEBCAABBAGAADCACACCBFAAACEAABBAACAAAAACAAACBAABAAABAABCABACABDCCACABBBCBAABCBBBABACCCAAAABCECCDBCBEABCDBCADEAAABBAAEFBBACDAEAAABACAABACCCAEBAAABBABAAABCCEEADDEAABFAAAICFDFCCDACADCABCBECBAACBACCBACCACCBDCBBABAEABBAAECCBDDBBABAACCCCEDCAGCCACEEAABECCAACBBCCACAAAACEBAADBEGAACGCCACCBBCFCCCBAAAEAAABABAACBAAEAAAACAAACBBAACADCBAAAABBAACABHCBCAACBBAAEAAABBAAAABABBFCABACAAACBCABABAAAFAAAABBACBABACBBBAACAAAAABBBCAABCAAACBAABAABAABACCACAAAABADBAAAACACAACBBCGGCABECBBBCAEBBBBABAEECCEACAAAAAACBBAACCCAACACBACCAAAACCAABBDAECACBCAABBDAAAGCGABAADAACAACABAAAAEEABEEABBBACADCBCBBFABACBDAAECAACABBADBCAEBEEAAAAACFBBDBCCCECCAABDCACACDCFCAADAAAACCCAAACBBAAAABCAABACACACAAAABBABAEAABBAADCGGAADCDGACCAEABHCAACCBDDBACGEAABBBCABCABBDAAAEEABACCAEAHCCAACBGICCADIBCBCCCEAECAAAAAACAHBAEEAAAAACCBEGBBAEBCACBBACAABCADCACBABABEACACAEAEAEECAADEACABECBABCBFABADDABBAACBGBEDEABBCBEBCEHEGECEFAAPCFBEGHABEFBEGDHEAIAGDFZEBACBGADJCAHGCMBDJBCGCCCGDBACAFHBKDDFCDEACCDFEBDCQCKDCDSHCDCKADHOBECEGCBHCDOFCDUQCGAEADAGEECEJFGEBABFGCAAECMBACDLHBDDCBLCCDNBJDHECDDIABBDBHBElAdGKCFKBEABFEBAAWBDDFEMNPIGFFSDIBDBTCBDEBHCCJaFGPnGJKBKMIJOiIGLCAGIVPKIIRFODZCDELtAfSEaAFFjCLPCMNOKPDHEpSFjFUBRhAJKMFGJjCOCGHGBAGAKDABMOAFQEEJGLHEXKCGBWHBHGCxVAAMLCGIFFKVRODXDCIIHJLPjGLKNCjbKCIGMDbWEkBAgQOFAiBKLQiICHESLNFElACoFIUHEJEFPEIHGMkFLKBTOSWOUCeSLBODPHMKFJLWCFPDNgAOTDHePKBJTQNEYPBPBQCPWKDLAHEHDMhUDFINQGAKCTEOJBFIONCSBKBcHHCCFDGNAEECHlXMTHJFBHPFSDkKHkeLlAsHRBhDPONHFXCHFIIKDDRedPBFCYVDFKJKFPKFCNRDQHVNHEIIJPTOGATWOmEBOAHEAZTIDPOEFDDDNUbDFNGTHFVNEKCEPcMTSTFJNDHSUEJGKFFUJCDdFdEEAICBGOFCbFNAGjBFBERTSMLYJOBEGFLCBDUBFMfATHPKAZIEHFIKNFEHOGGLGrCUMbMhjFGZTNGRQqSMCHFBCDJBACEREDBGBIbDGKJFDGNFCWEGGURTNvkTJTJBXOJMAXGILFJnWDXcNBBHnONEXCdFKLIjIHDWLaMEIEDIFSRIWYZRMDLKHHAkaKPEHCXGCAHPIBINJEKFAEPJHmKIBTCBDJaAWWKKDLIBLuNCBcCAHQGAeEFQDgJJEXUSBCKLaAAJiaFIBEBWIQBCWDEIEPCYINJAJPBgAVPWDYEALAIIJDAZLSANnGAUAHRzQAGKtMIZlQRHLfXMSHgTCzEDKBGOEDhkDNJXMEQQJQCIGhEFVPBDoBRPSEBGBFVGELHSVaBXEOX2HNFLNbWBHPNRBWXLIVEGbEZXCHSQXQEVFRZBbFNAAAABAABACBDBABCAAABAAACAABAACCCCABAAACAAAAAAAABACBAAAAAAAAABAAAAABACACAAABAAAAAAAACAAACAAAAAAAAAACAAAAACAAAABCBABAAAAAAAABADAAAAAAAAAAAAAAABAAAAACCAAAAAAAAAABAAAAAAAAAAABAAAACACAAAAAAAAACBBAAAAAACABABAAACAACAAABAABBACAABAAAAAAAAAAAAAAAABAAAAABAAAAAAACBBBAABBABCBACAABCBACACAAABABBBABCAAAAAAABAABBACAAAABAAAAAAABAABBCAAAAAAAAAACCCACAAAAAABBAACAAAAACAAAACACAACAAAAABACAAAAAAAAAAACAAACACCAAAABAAAABAAABCACECCBCCCACAABCAAAAAAAABCABABCBAAACABAAAACBAAAAABABACACBCACBABAABABDAAACAAACAACAAABBBABCBACBABCBABBBCCBABAAAAAAABBCAABCAAABAAACBABAACACAACCCAABAAAAABAACCABBCBAAAAACBABBACABCABBAABBAABAABAACACAAAACAABCCBAAABACABBACBBCBAAAAACBBAACBAAACACABAAAAAAACAABAEABAABAAAAABBAAABAAAAACBAACCAAAAACAAAAABCABBAABCAAAAAAABAAABAACACBBACABAACBAAAAACBCAAAADCAAACAACACAAABABABAABCAACAAAABACCCABACAAAAACAABAAACBABCAACCACBCBCBABDBEBABCCAABAACACBBAACAAAACBACBACAACCAAAAAAAAAACCCAAACAABBACACAAABAAAACABAAAAAAAAAAAAAAACAAAAAACAAACBAAACAAAAAAAAACCACCCBBAAAAABABACAACAACAAAAAACCABAABAAABCACACABABACABACBACBBACAAACCACCDBCFCABBADAAACBBAAACBACABAAAAABAAABBCAAACABBACACABACAAABAACCAABAAAAAACAAAACAAACCAAAAABBAABABAABAAAAAACAABBCBCAAAAAAAAABACBAACABAAADBAAAACCABACDBAAAAECACAACAAABAAAAAAACABAACAACAACAAAAAAAAACAAAACCABABCAAAAAAACACAAAAAABAAAAAABCAAAAAAAAAAABACCAAAAAAACAAEACAACBABEAAABAAABCAAACCBAAAACAACAAAAAACACBBBBCABBACAAAABACAABACCBABAAAAAAAAAACABAAAAAACAAAAAAAAABACAAAAAACBAAAAAAAAAAACCABAABAABAAAAAAAAAAAABABCBAABBBAACBABCAABCCAABCABAAAAAABABCCAABABAAAAAAAABCAAABAACBABBABAACBAAABAAABABBAAABAABAAAABBAABABAACCBBBCBBBDACCBABACAAAAAABCBADBCACACAAAACAEABCCAAAABBBBBBACAACABBACBAAAABCCCAABACCAAEAABABABAAAACBBBBCCABCCAAAAAACCBAABAAAABAAACAACABAAAAADBAACABCABABABBBAAAAAACCCACAAACCAABABBBBAABAAADAAAABAAACACACCAAADAAAAAABAAAAACAAAAABAACABAABBBACAACAAABCACBBBAAAAACBCACAAAABCBAACCAAAAABCAABACAACCCAABCBAAEAAABAACAABAAACAABAAAABAABAAACAAAAAADACBCAABAABAACABBABAACAABABAABBCAAAACABAAAAAAAAAAAAAAAAAACAABAAAAACAAACCAAAAAAAACCBABCACCCBAAAAABAAAAAAAAACABBBAAACABCACABBABEAAAAAACBECAAAAAAAEEAAAAACBBCAACAAAAAAAAABAABACAABAB0JJfSQSkImcCUUev-jfSHjJDAFEeOXAGmckSKQWGUkWaWWiaaYkeakUeeWYaUcqeecgaIWUcaSgQascgaUieeiWYoaiaSekucoWcAWSQiYaQgseccMmWgcSaaoccWigwUYWSSUSasiiUykagiOaIQmKYccwceYq0SSUWgWQmmgiWeacYcWySOaOcaWqmmMq-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DEANEGBEEEBAIOCJCKXCHGAEGCEFADAHHDHLABEBCAQCDBCBQLCNDLFAACCEFICAEABAHHBAAFAADEJFKCGGBDGJEGAEADEJBLEYDOCBCHDAJEBBNCANLGDJBAJIABJCCJBEIADGGAJCBCCDFCDGHLHFGIDFDDCACBDCEPFCICIHKCECOOYAISGFEKDBQGHICBENBGDBJKGKCAOEEEAODECBCBIVBBCFBFBBGDGCJAACBBOCAGEGBADECADNDBGKAKTKBRAFEAFECBDDBCGHIFBBGMEDCBFGEDHCHCIBAFDDDBHFGDCBFHCEIDABGDIAEAFEJHADHACEPHCDSHEJOIAJHAFLFCDAABBCBAPDAFFDCDJGEBJSFKBCCLDOAHJAICDGJEFFGDAGBIECBAFQHEGAHDJBJAJCJiRIKDDAGSFCEFCDFAIBMSFFEFAALCAGADAEBEMGLGANCGEDDIBBEUCGAGIFKFGIHIAFCEKCLCHGEECCRAJFDIAGEEIKHBKALCGFIMDDEAEMIFBEGNKHFAKCBFFLFFBCKABBICADIACGADAKBFDADBGABJHCEGOIJYsKIeGCEGGIJEHHADCFFKCDCHAGDFBCIGCHAAEAIDBHBGBFAEAHDGCDBBAABDCBAEDGBCCCCAFOBUCYDBGlEJCAGJCCCIMHBNHECBQFAAFAFEZCIDMFALMIPCCDBNKEDCLEGKGABIDGABJDDFEAEBEEFHAHQLQBCNCDRUBLADZhEEOBBARJADDFLBDIFCFEDFAAGDBGEDCLBJOBABLDBDDDADAEHDHABLCBECFBGBEHGTKCKHgOICHCBIAEEOFDACDNNJDQEHMDGEKDHIEDICbFHBGPBEAEGDHJCADCGKCBDDABAFBICBCCCBGJDBDHKOeFCREBECCBAFIBKEBKABCKOFGACECMCCBECDIBJEJNAHICGAGGDDEBEDBCABFECABECLBMJELAABUATHOQGMIAGEAFJCHGCAHTBMADABEMCDGFHIEADQJCFDFFACCEBDJCBAHCCGECCEKHDODAFIDDCDNBTBICA2GQLFHKABGGDEBHABJTLFJLHLGMCBAAIHCFDINIGBCIBEADDIDEJLEHBJIEAEAIEHBEBGFAKBKBBEKAaqokMLECGaBDDNDRFCAJFJGIAJCJDCLCGHBNCJNABDJLCABAAAECEGIGHEBCDGLGDFFBGBCCBDCAOFPIJJLKEQCCBEAFBBALLEIDBGEEJCBEAAHDEJERIHCDCGDJCCBCJBDAGDBAJBAAHAIABCABAGBHIBAAKIGDEEObEKJAAABFCFGDJHCKBCIBKHFFHADAKHEDCHOCBDIKCBCABCCBNADMIDAEAKJGEHAAACCGICDDCCIKBDAFMVAAEBBDGAAMBEBFLKACDCEGFCDBEEDJCAGGFGBOGCCBLCCOHGGHBCBBDCABBIACAEHBABAAMGBKOBJHBYAGIACHJBBEJACTEEEABMCHFBABBCBAGGLEAEIMBCGICBDCADHBCEECHDAAFCGBDGDDGDKCDCJFANWOAFACBAADGOQABCQIODGDCMIAFBEAACFUBGJAHEOBMDBAFKAEMAHBIAIABDFGFCFJCHKaAJGBESEDBKYCWWIKaGBDJGCEKBGAANAMGGGJMBDFAGAAACABABGCDKECQBAFCBDEEBHDEAIDDMACFAEEAFFGHDPLAKdPBbAHEDCADBHAKIENIBLHGMAGBFGBBCAGBIbEDFBDBECCCECAEGGLABAEGDGDBEAAFDDAPCDKFFEODYBKFGBLBBFGBDBAAAACJEFIAIBBKGNCODFHGJHGAEHGCCFDDFHFCJFCDIEHFDHEIHDLEBLAKECFIAJHINMRAOCEAACBCECCABAQAEKBHJBGBHDFCEAHDCEAAEDICADAGBAADFDAFHFEDGHECBBEAGEDCDGODMHLMDPLHADIBBDAHBAJDDGTDEOHIBBJBAFDDJAFEHBBCDCFBEIEADDBCGCAGEBGFGBCAFEDAACAGABJENHGDHMEGHDHAACDKGAGBDAIUAFHDSFBFCKBCBBGIDYAAAOUGEBDDCAAEDABJIBCABJBCAAAEBABBEAEIFHFKGhJFNBECBBDDDFECEAFFBIDFOGBFACHCABCIEJHFABIAABBFFADGAEEDIBDADADFAGBDAABEBIAEALBKVcFLUDHFGBBDFCGCAIOCGBDNHCEAHFCHFABDLQGGBFKBCBADCAAEDAABBEECEBEDHCFEBCACEHBIIOHEVNBAGEAEFEDCAAJCAGGJFAIEFCBEDCAHGHBBGRBECKFBDHBFEEAJHGBEFAEAEKDFEHKAADBCCBAJADUJHMdOREAAADHICBGKBGIDIOGBCACBADAEGGLBBCBEKDFCCCEBGCGFGDFEACCGGCBJKCBEAGEAADSGOCIADJVELEACBBABDAEHDEPEHFPGMLEFGOFDLEEDEJBBNKYADDCAFEFABIAAACBBDAFIHCABCDADFDAHNHCAUQMBNHBACEEKCCBFBENFDHGQCAFCCIABKAFEKREFCAIBCCEACEGBGCBKFBBGAJECCABACACHIDEFEEKTEMQEJAIBEECQEHJGDBBGDEGOAAKDIJGKANCHDGCABEHIJLBBAHBFHCDCDCBEEDAGAHIABEIBIDEPJGCFQCPKAICKBDLBFEFFCBFJKELEHBKDBCBEBENAFQCKBAFBFGDBGECJBBDGACGAGFABAFMCDDBFGDBAAMYFA-wAGKIIBCHNEHCBGMKDMILSMBJBCNABHIDCABCDBAUAIFBDBAEECJPFDEDBDIEDMGPBACDCACGGDDBCLQJEBBBECIDDBDFBDBECNGGKKJBCIJEEJBKHCSDDIHZCEDEADFCCAJAOEBACDGCAAAEDDGBCCCLNBCDIVEGYGEJAFBAAAFECEBEHGBBDNABNBGDDEAKMBKABGBUGICAFFBIFEBAFDBAECGFDKGBCACGGACBGABLHSVGDBBBGDCBFBAAHCHGHACBKNBCCADBFKIRBDECBCETABEEGDFHCCBCKAAEBKCBAFBBFAGDEBABCIELEMDRQCAEEAEEKCGAGACDFGBGFBGLEBECLGDUDDJACHCAABCABECEFBIDFBFFFFCBAIFGADDEHFLOQIAGDABEDgDEFCDGBBBLDFAAADEDOIAEKELDOHBBFABABEJBDDADKAAJCFDGCAADDDBBCFBCFAFAEAGFRBNIGNIDGGCADAAEEBAFBGEGAGHIACABGBLAADBBACGBGEFcIFAAGBBDFIOEAREICAFACDBEADBEADEIHGBFXFDhAeAGCGCACAFCEKAGGDLIJOEFCAFCDLDIAJKFGIBBAIAFDAAAAFBCBDABABBGICAKDLBDEAGBUFMAAERIYCCBCGAGDEBIKECAOFELGCFJPGMEHOEKBFQEHCKQACEBBCBGCEGFEDEADFCDDKGCCDBIBBAKHARJCRvnHJDCDBACDDBFCKCJJIADCAIIABCCLKBVEENAIHDBCBIHDBDEBQCCBDEGCIABHGEBBIEAGCDDEHMNDQiAGBBACDECDBBDHBCXDMEHGHAIBDAHBAAFDHCGCDCJBGCGCCDCCEEEOCACAGDHCCECABCBFCHFLHBCBDiIFHEFBAADIBAAQACGGFGECHKEDFBDEKEBAGEEBCMFEIABDBAFECBACJEIAEGAFGBACKICCABFFIJHAJHDIMADGEFFICCIGCFIEBFDFDDCIAHDAAGODKGFGGLKGIEBKBBDAJJFKDCBBCGDECEICBDAGEBARCMLMCADEGFDAFDAFBGCBBDDHAFEGDDBLFKEFKGFGHEGHABMCCAFJEDCDEJACACECEQGFMECGAEEDDDKDOADBBNACXEBDBECBFALBIBCDHKGYODFCCFKSFJRIKDCEBMKCCBANCFABDJHAGAABHMCBEDLBIADIBDCQHEDEGGCEWAFCEBBACGEFBBBGAEJMKBDHGHDEACKEGBKICCSCKEEDFDCAPBFGGADCBDBDDCCABFGGGCDDEHHOHFBHEAHECBHBHGCBBBeECFOHFCHFALEAFCPEHMACCIIAFCFGDGDCGQDBHBGBKHGBLGCAADBAFEASEDEFfHOGBAKCCGHHFEGEGAJMEIBKGFICBEBCEBBHMQJECPNCDICMDAEBFDEKCFDBGDCIAEHDCGBJGFDHDKXDCAABGCEDFEHCDDCBAKMDFBOFBBHCEAECEBAKEFFCAKDCJBCGBECFCGMJDBAAIFECBBGACDGACCGSBDIAIPFQGDGACCFCCBGFBMQCHFHFTFVBEOEFCIMHHGBABIHCBGDFAICEAADABDDBDKEGCACFDBBEBHHABJGAbVWGDCCDHGAACECNBBPCACNKEDCJBBHBGABAEPCGDMIDCGDBDBAEMICKDAGBGDHBEEGCACEIHGGLFbKLHbnBCHCCJDAFGGECEFJGBEBIGDKBHAAJEAKEDKGHCFBAGABHAFMBHFPGGCDEEEEJIFIABCGHBJCAMCEKhVIBMADCHAAFECDCDJFIFHNTDAICEFFDCGBFEFHCDLHBABEKAECCBBEBADFDBDJICICCBGEGCGDBNAPKBGBBKBHDJFBCHGFBCFRGKDDIGBCIACECFADFMEGFAFOBDEFBBDBHIEKEGCCDDCBIHACBBFGFECDBJKMJFcILFCACIAGADEBCBJJAAGGJKGYDCFBAEJNIMCAJGBLAAAEADEGGGDIBGCCFDCBBKBPBBCBAAGEBAEVEVBDEaAABABAFACDIEBAIGGHKEBEBIJAMCDADCYFECFACFCCAAHBIECEBEDBBCGCABIACGFBCDFCCBGAKOCLFUHBIECCDKBIDCGCDDJBTJAIFFIEHBAMGJNBGJEAEGKCLAGKDMAFFJBCGFCGDEBFBJBHFFCIBQHMJPDWKFCBEDGBDDEEAAGDGBHAFGBAEHOAFDEEBMBFADDIEMCEEGGEJHHHFEDDABGEEGGEDKHFIEBAMCEKDQFBGBDGAAEHHEBCAFGFDMELNCCEACGDNAOQCDFJAEJHBHFBKBADDAMAAEEECBJFDBAMDJDGAACFIABQGOBRGPEAAAHCHFDCAAAHDOAFDCCLBBBEJFBBCCBBBAHSAHCABBICFGECDDHDEGNBCNBCBKFHNMDECFJMFWZFIfFHNACAFDEDHCALMIEGNKAABDDAHABNGGBDKECNADCFFDEBANFCJGHFBGHCGDADDHFACCCAMCBCERfPIIAIBHGAABEACAFBLKADCOBECEBDAAQABIFEBALFFDGCACDEFEEHAGBEIADDDGGDCKBFEBJJDGCEEiSAFHHFCDGEaEVHYK3FhVM4mOCOGgPiKLiSL-XZXRFBfaEePMEUUHHaAReOdGHMJUWVYLSKbQ5BNPiaPTILi2mss0eoqswmmmuysU48ummkuc-6ws6o0wkqe4iswyskmqosqiwykoeeem2wqwwkswegi2ggwowcqqmmqeswimmyko44mi2kgwegawgmqsukooiooemkckaoqq2-icskiqcmcmgkqmkcokgoomkmgicgimuyoeoiioYmYkmmsiiYsggqmmmmggiicos2okgkcqWkSsoooioYscgqqiioicmoiq0omocmcecqcmkqqmkeqkg0wgigoeososumumiqceaqamiqqkkeqke0wgieoemqquumwkiogeaqcmioqkmgokeywgiemeksqusoumiqeecqamimqkkimieywikeoemqqusoumiocccqckimqkmisie0wigeqgkqquskwmioESc9YhfBRHBCEJLAGOBQMtWALJONNJNALcNTLGCKOPQCAXVFCgRDIteJDHHJNFAKREKRbcHgIFGKSHJDHTYEDLjKSHHUPTQURCMDKHADaHeUOLDDONGHVKLGQBBOJLaOAGQeBKCLSYNiAJHPINCHGFGBALDSPYJKCQFSFdQGNCNeIVBPMXLFBIcAFFGYFBDCCcEARVMJZOKQNJHFDHFgJDIBFJODJEGMUIAALCMNILEEDALGFRBaPHCFFAIJNOKAGSOnHDDhDBCFCNFNIALFBEBNKFMJFSMOHARUHNFWFHCKKBPPKRZOJDERFAKhJHiKAEKPdCRFGSWHVJNJBOCScOUPPYYFLbSOOOGBRJGFNHHFOBZLHLPGMNeLGKeARESYMIQfhVgJVJCIcUTErKhUBSMGDUOjliFBVBWKRnibYTHMYNTDVLDIAEOAKCAGjHCURSCVXPAEDZBHIPXVJBLdNRLQaIIWVGHCJMNIGAdJFZEFeCXBFJDNFDGMOAIKRJHQAEMZlnaECXHCGFLFGDECFIaHRRKMDUiFBCIJRGBINTIGQGPVSGEROEFRPRCSLQGKIDMDDQJEPQP-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-cYCSgeCCYZkdJYZdhJdZFcKnKB";var SA="enable f16;struct pe{a:u32,b:u32,c:u32,d:u32}struct qe{start:u32,count:u32,e:u32,c:u32,f:u32,g:u32}struct re{start:u32,count:u32,stream:u32,h:u32}@group(0) @binding(0) var<storage,read> L:array<u32>;@group(0) @binding(1) var<storage,read_write> vd:array<atomic<u32>>;@group(0) @binding(2) var<uniform> E:pe;@group(0) @binding(3) var<storage,read> M:array<qe>;@group(0) @binding(4) var<storage,read> i:array<f32>;@group(0) @binding(5) var<storage,read_write> pa:array<f16>;@group(0) @binding(6) var<storage,read_write> r:array<f16>;@group(0) @binding(9) var<storage,read> qa:array<re>;@group(0) @binding(10) var<storage,read_write> db:array<f32>;@group(0) @binding(11) var<storage,read_write> l:array<f32>;@group(0) @binding(12) var<storage,read_write> F:array<vec2<u32>>;var<workgroup> j:array<vec4<f32>,1024>;var<workgroup> m:array<f32,2016>;var<workgroup> Ob:array<f32,128>;var<workgroup> Pb:array<f32,576>;var<workgroup> eb:array<f32,72>;fn W(Qb:vec3<u32>)->u32{return Qb.x+Qb.y*65535u;}fn Mb(Rb:vec3<u32>)->u32{return Rb.x+Rb.y*4194240u;}fn ab(wd:f32)->f32{return 1./(1.+exp(-wd));}fn bb(ra:u32,xd:u32,yd:u32,t:u32)->f32{if (ra<xd||ra>=yd){return 0.;}let X=L[ra*2u];let N=L[ra*2u+1u];let Sb=X&3u;var u=i[0u+Sb*32u+t];u+=i[0u+(4u+((X>>2u)&7u))*32u+t];u+=i[0u+(12u+((X>>5u)&127u))*32u+t];u+=i[0u+(140u+((X>>12u)&127u))*32u+t];if (Sb==0u){u+=i[0u+(268u+(((X>>19u)&255u)&255u))*32u+t];u+=i[0u+(524u+((N>>15u)&127u))*32u+t];}let zd=652u;let Ad=N&127u;for(var sa=0u;sa<7u;sa++){if ((Ad&(1u<<sa))!=0u){u+=i[0u+(zd+sa)*32u+t];}}let Tb=(N>>7u)&15u;let Ub=(N>>11u)&15u;if (Tb!=0u){u+=i[0u+(659u+Tb-1u)*32u+t];}if (Ub!=0u){u+=i[0u+(673u+Ub-1u)*32u+t];}let Vb=(N>>22u)&31u;let Wb=(N>>27u)&31u;if (Vb!=0u){u+=i[0u+(687u+Vb-1u)*32u+t];}if (Wb!=0u){u+=i[0u+(718u+Wb-1u)*32u+t];}return u;}fn ud(fb:u32,G:u32,ta:u32,ua:u32,Xb:vec2<f32>)->f32{var va=i[23968u+G];for(var O=0u;O<5u;O++){if (fb+O>=ta+2u&&fb+O<ua+2u){va+=bb(fb+O-2u,ta,ua,G)*i[36905u+O*32u+G];}}va+=bb(bitcast<u32>(Xb.x),ta,ua,G)*i[37065u+G];va+=bb(bitcast<u32>(Xb.y),ta,ua,G)*i[37097u+G];return tanh(va);}fn Nb(Bd:u32,wa:u32)->vec2<f32> {var Yb=i[38153u+wa];var Zb=i[39209u+wa];for(var Y=0u;Y<32u;Y++){let ac=j[Bd*32u+Y].x;Yb+=ac*i[37129u+wa*32u+Y];Zb+=ac*i[38185u+wa*32u+Y];}let bc=ab(Zb);return vec2<f32>(bc,(1.-bc)*tanh(Yb));}fn cb(cc:f32,dc:f32,Cd:f32,Dd:f32,ec:u32,Ed:u32)->f32{let Z=min(Ed,11u)*32u+ec;let Fd=tanh(cc*i[24000u+Z]+dc*i[24384u+Z]+Cd*i[24768u+Z]+Dd*i[25152u+Z]+i[25536u+Z]);let Gd=select(dc,cc,ec<16u);return (Fd+Gd)*.5;}fn oa(fc:f32,Hd:f32,Id:f32,Jd:f32,Kd:f32,Ld:f32,Md:u32,Nd:u32,Od:bool)->f32{let z=min(Nd,11u)*32u+Md;let Pd=select(i[28872u+z],i[29256u+z],Od);let Qd=tanh(fc*i[35472u+z]+Hd*i[26568u+z]+Id*i[26952u+z]+Jd*i[27336u+z]+Kd*i[27720u+z]+Ld*i[28104u+z]+Pd);let gc=ab(i[28488u+z]);return fc*gc+Qd*(1.-gc);}@compute @workgroup_size(64) fn a(@builtin(global_invocation_id) Rd:vec3<u32>){let gb=Mb(Rd);if (gb>=E.c){return;}let hc=qa[gb];var hb=0xffffffffu;var ic=0xffffffffu;for(var ib=0u;ib<hc.count;ib++){let jb=hc.start+ib;let jc=L[jb*2u]&3u;if (jc!=1u&&jc!=2u){if (hb==0xffffffffu){hb=jb;}ic=jb;}}F[gb]=vec2<u32>(hb,ic);}@compute @workgroup_size(64) fn b(@builtin(global_invocation_id) Sd:vec3<u32>){let kc=Mb(Sd);if (kc>=E.a){return;}let xa=M[kc];var lc=0xffffffffu;for(var kb=0u;kb<xa.c;kb++){let mc=xa.e+kb;let nc=F[mc];F[mc].y=lc;if (nc.y!=0xffffffffu){lc=nc.y;}}var oc=0xffffffffu;for(var lb=xa.c;lb>0u;lb--){let pc=xa.e+lb-1u;let qc=F[pc].x;F[pc].x=oc;if (qc!=0xffffffffu){oc=qc;}}}@compute @workgroup_size(32) fn c(@builtin(workgroup_id) Td:vec3<u32>,@builtin(local_invocation_id) Ud:vec3<u32>){let aa=W(Td);if (aa>=E.c){return;}let s=qa[aa];let mb=M[s.stream];let q=Ud.x;if (q<s.count){let rc=s.start+q;var sc=F[aa].y;var tc=F[aa].x;for(var ya=rc;ya>s.start;ya--){let uc=L[(ya-1u)*2u]&3u;if (uc!=1u&&uc!=2u){sc=ya-1u;break;}}for(var za=rc+1u;za<s.start+s.count;za++){let vc=L[za*2u]&3u;if (vc!=1u&&vc!=2u){tc=za;break;}}j[q*32u].y=bitcast<f32>(sc);j[q*32u].z=bitcast<f32>(tc);}workgroupBarrier();for(var P=0u;P<s.count;P++){let wc=ud(s.start+P,q,mb.start,mb.start+mb.count,j[P*32u].yz);db[(s.start+P)*32u+q]=wc;j[P*32u+q].x=wc;}workgroupBarrier();for(var ba=0u;ba<s.count;ba++){let xc=Nb(ba,q);j[ba*32u+q].y=xc.x;j[ba*32u+q].z=xc.y;}var ca=vec2<f32>(1.,0.);for(var nb=0u;nb<s.count;nb++){let ob=j[nb*32u+q];ca=vec2<f32>(ob.y*ca.x,ob.y*ca.y+ob.z);}var da=vec2<f32>(1.,0.);for(var pb=s.count;pb>0u;pb--){let qb=j[(pb-1u)*32u+q];da=vec2<f32>(qb.y*da.x,qb.y*da.y+qb.z);}let Aa=(aa*32u+q)*4u;l[Aa]=ca.x;l[Aa+1u]=ca.y;l[Aa+2u]=da.x;l[Aa+3u]=da.y;}@compute @workgroup_size(32) fn d(@builtin(workgroup_id) Vd:vec3<u32>,@builtin(local_invocation_id) Wd:vec3<u32>){let yc=W(Vd);if (yc>=E.a){return;}let Ba=M[yc];let zc=Wd.x;var H=0.;for(var rb=0u;rb<Ba.c;rb++){let sb=((Ba.e+rb)*32u+zc)*4u;let Xd=l[sb];let Yd=l[sb+1u];l[sb+1u]=H;H=Xd*H+Yd;}H=0.;for(var tb=Ba.c;tb>0u;tb--){let ub=((Ba.e+tb-1u)*32u+zc)*4u;let Zd=l[ub+2u];let ae=l[ub+3u];l[ub+3u]=H;H=Zd*H+ae;}}@compute @workgroup_size(32) fn e(@builtin(workgroup_id) be:vec3<u32>,@builtin(local_invocation_id) ce:vec3<u32>){let vb=W(be);if (vb>=E.c){return;}let x=qa[vb];let Ac=M[x.stream];let k=ce.x;for(var Ca=0u;Ca<x.count;Ca++){j[Ca*32u+k].x=db[(x.start+Ca)*32u+k];}workgroupBarrier();for(var ea=0u;ea<x.count;ea++){let Bc=Nb(ea,k);j[ea*32u+k].y=Bc.x;j[ea*32u+k].z=Bc.y;}let Cc=(vb*32u+k)*4u;var I=l[Cc+1u];for(var wb=0u;wb<x.count;wb++){let Dc=wb*32u+k;let Ec=j[Dc];I=Ec.y*I+Ec.z;j[Dc].w=I;}I=l[Cc+3u];for(var xb=x.count;xb>0u;xb--){let Fc=(xb-1u)*32u+k;let Gc=j[Fc];I=Gc.y*I+Gc.z;j[Fc].z=I;}workgroupBarrier();for(var fa=0u;fa<x.count;fa++){let Hc=x.start+fa;var Ic=db[Hc*32u+k]+i[41289u+k];let Jc=39241u+k*64u;for(var ga=0u;ga<32u;ga++){let Kc=j[fa*32u+ga];Ic+=Kc.w*i[Jc+ga]+Kc.z*i[Jc+32u+ga];}let Lc=f32(f16(tanh(Ic)));j[fa*32u+k].y=Lc;pa[Hc*32u+k]=f16(Lc);}workgroupBarrier();var yb=32u;var Da=x.count;var ha=0u;loop{if (yb<=1u){break;}let Mc=yb/2u;for(var ia=0u;ia<Mc;ia++){let Ea=ia*2u;var Fa=0.;if (Ea<Da){let Ga=Ea*32u;let Ha=(ha&1u)==0u;let Nc=select(j[Ga+k].x,j[Ga+k].y,Ha);Fa=Nc;if (Ea+1u<Da){let Ia=(Ea+1u)*32u;let Ja=k^(1u<<ha);Fa=cb(Nc,select(j[Ia+k].x,j[Ia+k].y,Ha),select(j[Ga+Ja].x,j[Ga+Ja].y,Ha),select(j[Ia+Ja].x,j[Ia+Ja].y,Ha),k,ha);}}if ((ha&1u)==0u){j[ia*32u+k].x=Fa;} else{j[ia*32u+k].y=Fa;}}workgroupBarrier();yb=Mc;Da=(Da+1u)/2u;ha+=1u;}let de=Ac.f+Ac.g-1u+x.h;r[de*32u+k]=f16(j[k].x);}@compute @workgroup_size(256) fn f(@builtin(workgroup_id) ee:vec3<u32>,@builtin(local_invocation_id) Oc:vec3<u32>){let Pc=W(ee);let o=Oc.x&31u;let Ka=Oc.x>>5u;if (Pc>=E.a){return;}let p=M[Pc];let fe=p.f+p.g-1u;for(var zb=p.c+Ka;zb<p.g;zb+=8u){r[(fe+zb)*32u+o]=f16(0.);}storageBarrier();workgroupBarrier();var v=p.g;var La=p.c;var Ab=5u;loop{if (v<=1u){break;}let Bb=v/2u;let ge=p.f+Bb-1u;let Ma=p.f+v-1u;let Qc=o^(1u<<min(Ab,4u));for(var Na=Ka;Na<Bb;Na+=8u){let Q=Na*2u;var Cb=0.;if (Q<La){let Rc=f32(r[(Ma+Q)*32u+o]);Cb=Rc;if (Q+1u<La){Cb=cb(Rc,f32(r[(Ma+Q+1u)*32u+o]),f32(r[(Ma+Q)*32u+Qc]),f32(r[(Ma+Q+1u)*32u+Qc]),o,Ab);}}r[(ge+Na)*32u+o]=f16(Cb);}storageBarrier();workgroupBarrier();v=Bb;La=(La+1u)/2u;Ab+=1u;}if (Ka==0u){l[p.f*32u+o]=f32(f16(f32(r[p.f*32u+o])));}storageBarrier();workgroupBarrier();v=1u;var R=4u+(31u-countLeadingZeros(p.g));loop{if (v>=p.g){break;}let Sc=p.f+v-1u;let J=p.f+v*2u-1u;let Tc=p.g/(v*2u);let Uc=(p.c+Tc-1u)/Tc;for(var ja=Ka;ja<v;ja+=8u){let A=ja*2u;if (A>=Uc){continue;}let Db=l[(Sc+ja)*32u+o];let Vc=f32(r[(J+A)*32u+o]);if (A+1u<Uc){let Wc=f32(r[(J+A+1u)*32u+o]);let Eb=o^(1u<<min(R,4u));let Xc=l[(Sc+ja)*32u+Eb];let Yc=f32(r[(J+A)*32u+Eb]);let Zc=f32(r[(J+A+1u)*32u+Eb]);l[(J+A)*32u+o]=f32(f16(oa(Db,Vc,Wc,Xc,Yc,Zc,o,R,false)));l[(J+A+1u)*32u+o]=f32(f16(oa(Db,Wc,Vc,Xc,Zc,Yc,o,R,true)));} else{l[(J+A)*32u+o]=f32(f16(Db));}}storageBarrier();workgroupBarrier();v*=2u;R=select(0u,R-1u,R>0u);}}@compute @workgroup_size(64) fn g(@builtin(workgroup_id) he:vec3<u32>,@builtin(local_invocation_id) Oa:vec3<u32>){let ad=W(he);if (ad>=E.c){return;}let C=qa[ad];let bd=M[C.stream];let Pa=Oa.x<32u;let n=Oa.x;if (Pa){for(var Qa=0u;Qa<C.count;Qa++){m[(31u+Qa)*32u+n]=f32(pa[(C.start+Qa)*32u+n]);}}workgroupBarrier();var w=32u;var Ra=C.count;var y=0u;loop{if (w<=1u){break;}let Fb=w/2u;let ie=Fb-1u;let Sa=w-1u;if (Pa){for(var Ta=0u;Ta<Fb;Ta++){let S=Ta*2u;var Gb=0.;if (S<Ra){let cd=m[(Sa+S)*32u+n];Gb=cd;if (S+1u<Ra){let dd=n^(1u<<y);Gb=cb(cd,m[(Sa+S+1u)*32u+n],m[(Sa+S)*32u+dd],m[(Sa+S+1u)*32u+dd],n,y);}}m[(ie+Ta)*32u+n]=Gb;}}workgroupBarrier();w=Fb;Ra=(Ra+1u)/2u;y+=1u;}if (Pa){let je=bd.f+bd.g-1u+C.h;m[n]=l[je*32u+n];}workgroupBarrier();w=1u;y=4u;loop{if (w>=32u){break;}let ed=w-1u;let K=w*2u-1u;let fd=32u/(w*2u);let gd=(C.count+fd-1u)/fd;if (Pa){for(var ka=0u;ka<w;ka++){let B=ka*2u;if (B>=gd){continue;}let Hb=m[(ed+ka)*32u+n];let hd=m[(K+B)*32u+n];if (B+1u<gd){let id=m[(K+B+1u)*32u+n];let Ib=n^(1u<<y);let jd=m[(ed+ka)*32u+Ib];let kd=m[(K+B)*32u+Ib];let ld=m[(K+B+1u)*32u+Ib];m[(K+B)*32u+n]=oa(Hb,hd,id,jd,kd,ld,n,y,false);m[(K+B+1u)*32u+n]=oa(Hb,id,hd,jd,ld,kd,n,y,true);} else{m[(K+B)*32u+n]=Hb;}}}workgroupBarrier();w*=2u;y=select(0u,y-1u,y>0u);}let D=Oa.x/8u;let Ua=Oa.x%8u;for(var Jb=0u;Jb<4u;Jb++){let Va=Jb*8u+D;let la=C.start+Va;let Kb=Va<C.count;let md=select(1u,L[la*2u]&3u,Kb);let Wa=Kb&&md!=1u&&md!=2u;for(var ma=Ua;Wa&&ma<16u;ma+=8u){var nd=i[36889u+ma];for(var T=0u;T<32u;T++){let ke=f32(pa[la*32u+T]);let le=f32(f16(m[(31u+Va)*32u+T]));let od=35865u+ma*64u;nd+=i[od+T]*ke+i[od+32u+T]*le;}Ob[D*16u+ma]=ab(nd);}workgroupBarrier();for(var U=Ua;Wa&&U<72u;U+=8u){var Lb=i[35400u+U];for(var V=0u;V<32u;V++){let me=f32(pa[la*32u+V]);let ne=f32(f16(m[(31u+Va)*32u+V]));let pd=29640u+U*80u;Lb+=i[pd+V]*me+i[pd+32u+V]*ne;}let oe=29640u+U*80u+64u;for(var Xa=0u;Xa<16u;Xa++){Lb+=i[oe+Xa]*Ob[D*16u+Xa];}Pb[D*72u+U]=tanh(Lb);}workgroupBarrier();for(var na=Ua;Wa&&na<9u;na+=8u){var qd=i[35856u+na];for(var Ya=0u;Ya<72u;Ya++){qd+=i[25920u+na*72u+Ya]*Pb[D*72u+Ya];}eb[D*9u+na]=qd;}workgroupBarrier();if (Ua==0u&&Kb){var rd=0u;if (Wa){var sd=eb[D*9u];for(var Za=1u;Za<9u;Za++){let td=eb[D*9u+Za];if (td>sd){sd=td;rd=Za;}}}let ignored=atomicOr(&vd[la/4u],rd<<((la&3u)*8u));}workgroupBarrier();}}",fA="abcdefg",RA=A=>A?SA:SA.slice(11).replaceAll("f16","f32");var UA=["plain","comment","string","number","keyword","type","function","constant","operator"];var HA=512,ZA=4,eA=[],aA=0,W=1,h=2,KA=5;function yA(){return[HA,new Uint32Array(HA*2),new Uint32Array(HA*2)]}function vA(A){let B=A[aA]*2,C=new Uint32Array(B*2),D=new Uint32Array(B*2);C.set(A[W]),D.set(A[h]),A[aA]=B,A[W]=C,A[h]=D}function WA(A){let B=eA.pop()??yA(),C=0,D=0,O=!0,a=-1,K=-1;for(;D<A.length;){let M=D,t=A.charCodeAt(D),I;t===10||t===13?I=2:sA(t)?I=1:lA(t)?I=0:I=3;let J=Number(O)<<4,e=JA(t),L=e,Q=0,i=0;if(I===0){Q=2166136261,i=2654435769;do{let c=JA(A.charCodeAt(D));L=c,Q=Math.imul(Q^c,16777619),i=Math.imul(i^c,2246822519),c>=97&&c<=122?J|=1:c>=65&&c<=90?J|=2:c>=48&&c<=57?J|=4:c===95&&(J|=8),D+=1}while(D<A.length&&lA(A.charCodeAt(D)))}else if(I===1)do{let c=A.charCodeAt(D);L=JA(c),c===9&&(J|=32),D+=1}while(D<A.length&&sA(A.charCodeAt(D)));else I===2?(D+=1,t===13&&A.charCodeAt(D)===10&&(L=10,D+=1)):(t===92&&(J|=64),D+=1);C===B[aA]&&vA(B);let S=D,P=S-M,f=C*2;if(B[W][f]=I|xA(P)<<2|e<<5|L<<12|(Q>>>0&255)<<19,B[W][f+1]=J|(I===0?(i>>>0&127)<<15:0),C>0){let c=_A(a,e);if(B[W][f+1]|=c<<7,B[W][f-1]|=c<<11,I===3||K===3){let p=qA(a,e);B[W][f+1]|=p<<22,B[W][f-1]|=p<<27}}B[h][C*2]=M,B[h][C*2+1]=S,C+=1,a=L,K=I,I===2?O=!0:I!==1&&(O=!1)}return[B[W].subarray(0,C*2),B[h].subarray(0,C*2),Uint32Array.of(0,C),C,A.length,B]}function qA(A,B){return 1+((Math.imul(A+1,131)^B)>>>0)%31}function MA(A){A?.[KA]&&(eA.length<ZA&&eA.push(A[KA]),A[KA]=null)}function sA(A){return A===9||A===11||A===12||A===32}function lA(A){return A>127||A===95||A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122}function JA(A){return A>127?95:A&127}function xA(A){return Math.min(7,31-Math.clz32(Math.max(1,A)))}function _A(A,B){return A===47&&B===47?1:A===47&&B===42?2:A===42&&B===47?3:A===45&&B===45?4:A===61&&B===62?5:A===58&&B===58?6:A===60&&B===47?7:A===123&&B===123?8:A===36&&B===123?9:A===125&&B===125?10:A===45&&B===62?11:A===63&&B===63?12:A===63&&B===46?13:A===60&&B===62?14:0}function tA(A,B,C,D=0){let O=[],a=0;for(let M=0;M<B.length/2;M++){let t=B[M*2],I=B[M*2+1],J=D+M,e=C[J>>2]>>(J&3)*8&255;a<t&&K(a,t,"plain"),K(t,I,UA[e]??"plain"),a=I}return a<A&&K(a,A,"plain"),O;function K(M,t,I){let J=O.at(-1);J&&J.type===I&&J.end===M?J.end=t:O.push({type:I,start:M,end:t})}}var jA=1,zA=4,Y=8,$A=64,U=128,w=32,AB=16384,bA=5,j=0,TA=1,BB=2,d=3,m=4,Z=5,LA=6,rA=7,k=8,z=9,uA=10,y=-1,OA=0,CB=1,cA=2,DB=0,EB=1,GB=2,FB=3,IB=4,HB=5,gA=6;function YA(A=globalThis.navigator?.gpu,B,C,D){let O=!1,a,K,M,t,I,J=[],e=new Uint32Array(4),L=[],Q=0,i=!1,S=!1,P=new Uint32Array,f=new Uint32Array,c=D??mA;async function p(){if(!K){if(a)return a;a=(async()=>{if(B)O=B.features?.has?.("shader-f16")??!1;else{if(!A)throw new Error("WebGPU unavailable");let u=await A.requestAdapter();if(!u)throw new Error("WebGPU unavailable");O=u.features?.has?.("shader-f16")??!1;let F=O?["shader-f16"]:[],E=eB(u.limits),r={...F.length?{requiredFeatures:F}:{},...Object.keys(E).length?{requiredLimits:E}:{}};B=await u.requestDevice(Object.keys(r).length?r:void 0)}C===void 0&&(C=RA(O));let G=B.createShaderModule({code:C});{let u=F=>{let E={layout:"auto",compute:{module:G,entryPoint:F}};return B.createComputePipelineAsync?B.createComputePipelineAsync(E):B.createComputePipeline(E)};K=await Promise.all(Array.from(fA,u))}let H=aB();M=B.createBuffer({size:H.byteLength,usage:U|Y}),B.queue.writeBuffer(M,0,H)})();try{await a}catch(G){throw a=void 0,G}}}async function mA(G,H=new Uint32Array([0,G.length/2]),u){return G.length===0?u(new Uint32Array):(await p(),VA(G,H,u))}async function VA(G,H,u){let F=G.length/2,E=Math.ceil(F/4)*4,r=o(j,G.byteLength,U|Y),N=o(TA,E,U|zA|Y),n=o(BB,E,jA|Y),V=o(d,16,$A|Y),R=I=KB(H,I),s=R[GB],b=R[FB],l=R[IB],T=R[HB],pA=o(m,s.byteLength,U|Y),hA=o(Z,b.byteLength,U|Y),nA=O?2:4,XA=F*32*nA,wA=T*32*nA;o(LA,XA,U),o(rA,wA,U),o(k,Math.max(l*32*16,T*32*4),U),o(z,l*8,U),o(uA,F*32*4,U);try{B.queue.writeBuffer(r,0,G),B.queue.writeBuffer(pA,0,s),B.queue.writeBuffer(hA,0,b),e.set([H.length/2,F,l,T]),B.queue.writeBuffer(V,0,e);let v=B.createCommandEncoder();v.clearBuffer(N,0,E);let AA=t??=NA(),q=v.beginComputePass(),BA=(CA,x,iA)=>{q.setPipeline(CA),q.setBindGroup(0,x);let PA=Math.min(65535,iA);q.dispatchWorkgroups(PA,Math.ceil(iA/PA))};return[Math.ceil(l/64),Math.ceil(H.length/128),l,H.length/2,l].forEach((CA,x)=>BA(K[x],AA[x],CA)),BA(K[bA],AA[bA],H.length/2),BA(K[6],AA[6],l),q.end(),v.copyBufferToBuffer(N,0,n,0,E),B.queue.submit([v.finish()]),await n.mapAsync(1),u(new Uint32Array(n.getMappedRange(),0,E/4))}finally{n.mapState==="mapped"&&n.unmap()}}function o(G,H,u){let F=J[G];if(F?.[CB]>=H)return H>F[cA]&&(F[cA]=H,t=void 0),F[OA];F?.[OA].destroy();let E=Number(B.limits?.maxBufferSize??1/0);if(H>E)throw new RangeError(`WebGPU buffer limit: ${H} > ${E}`);let r=JB(H,E),N=B.createBuffer({size:r,usage:u});return J[G]=[N,r,H],t=void 0,N}function NA(){let G=F=>F===y?{buffer:M,size:M.size}:{buffer:J[F][OA],size:J[F][cA]},H=(F,E)=>B.createBindGroup({layout:F.getBindGroupLayout(0),entries:E.map(([r,N])=>({binding:r,resource:G(N)}))});return[[[0,j],[2,d],[9,Z],[12,z]],[[2,d],[3,m],[12,z]],[[0,j],[2,d],[3,m],[4,y],[9,Z],[10,uA],[11,k],[12,z]],[[2,d],[3,m],[11,k]],[[2,d],[3,m],[4,y],[5,LA],[6,rA],[9,Z],[10,uA],[11,k]],[[2,d],[3,m],[4,y],[6,rA],[11,k]],[[0,j],[1,TA],[2,d],[4,y],[3,m],[5,LA],[9,Z],[11,k]]].map((F,E)=>H(K[E],F))}function kA(G){let H=WA(G),[,u,,F,E]=H;if(F===0){let N=tA(E,u,new Uint32Array);return MA(H),N}let r=new Promise((N,n)=>L.push([H,N,n]));return Q+=F,Q>=AB?oA():QA(),r}function QA(){i||S||(i=!0,queueMicrotask(()=>void oA()))}async function oA(){if(S||L.length===0)return;S=!0,i=!1;let G=L.splice(0);Q=0;let H=G.reduce((E,r)=>E+r[0][3],0),u=G[0][0][0],F=G[0][0][2];if(G.length>1){let E=H*2,r=G.reduce((R,s)=>R+s[0][2].length,0);P=$(P,E),f=$(f,r),u=P.subarray(0,E),F=f.subarray(0,r);let N=0,n=0,V=0;for(let R of G){let[s,,b,l]=R[0];u.set(s,N);for(let T=0;T<b.length;T+=2)F[V++]=n+b[T],F[V++]=b[T+1];N+=s.length,n+=l}}try{await c(u,F,E=>{if(E.length!==Math.ceil(H/4))throw new Error(`GPU returned ${E.length*4} label slots for ${H} tokens`);let r=0;for(let N of G){let[n,V]=N,[,R,,s,b]=n;V(tA(b,R,E,r)),r+=s}})}catch(E){for(let r of G)r[2](E)}finally{for(let E of G)MA(E[0]);S=!1,L.length>0&&QA()}}return{h:kA,i:p,r:c,e:o,g:NA,b:J,p:e,get d(){return B},get f(){return O},get c(){return K},get q(){return t},set q(G){t=G},get l(){return I},set l(G){I=G}}}function KB(A,B){if(B?.[gA]?.length===A.length){let e=!0;for(let L=0;L<A.length;L++)if(B[gA][L]!==A[L]){e=!1;break}if(e)return B}let C=A.length/2,D=0,O=0;for(let e=0;e<C;e++){let L=Math.ceil(A[e*2+1]/w),Q=dA(L);D+=L,O+=Q*2-1}let a=$(B?.[DB],C*6),K=$(B?.[EB],D*4),M=a.subarray(0,C*6),t=K.subarray(0,D*4),I=0,J=0;for(let e=0;e<C;e++){let L=A[e*2],Q=A[e*2+1],i=Math.ceil(Q/w),S=dA(i);M.set([L,Q,I,i,J,S],e*6);for(let P=0;P<Q;P+=w)t.set([L+P,Math.min(w,Q-P),e,Math.floor(P/w)],I*4),I+=1;J+=S*2-1}return[a,K,M,t,D,O,A.slice()]}function $(A,B){if(A?.length>=B)return A;let C=16;for(;C<B;)C*=2;return new Uint32Array(C)}function dA(A){return 2**(32-Math.clz32(A-1))}function JB(A,B=1/0){let C=256;for(;C<A&&C<=B/2;)C*=2;return C<A&&(C=Math.ceil(A/4)*4),C}function eB(A){if(!A)return{};let B={};for(let C of["maxBufferSize","maxStorageBufferBindingSize"]){let D=Number(A[C]);Number.isFinite(D)&&D>0&&(B[C]=D)}return B}function aB(){let A=new Float32Array(DA.length),B=0;for(let C=0;C<_.length;C+=2){let D=_[C],O=_[C+1];for(let a=B;a<D;a++){let K=DA.charCodeAt(a),M=K>=97?K-71:K>=65?K-65:K>=48?K+4:K===45?62:63;A[a]=(M&1?-(M+1)/2:M/2)*O}B=D}return A}var MB;async function UB(A){return(MB??=YA()).h(A)}export{UB as highlight};
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "gpu-lexer",
3
+ "version": "0.0.1",
4
+ "description": "Experimental language-agnostic WebGPU syntax highlighter",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "build": "node scripts/build.js",
21
+ "prepack": "pnpm build",
22
+ "test": "node --test"
23
+ },
24
+ "devDependencies": {
25
+ "esbuild": "0.25.10",
26
+ "wgslender": "1.4.1"
27
+ },
28
+ "keywords": [
29
+ "syntax-highlighting",
30
+ "webgpu",
31
+ "wgsl"
32
+ ],
33
+ "license": "MIT"
34
+ }