1 |
- {"version":3,"file":"pdf.worker.js","mappings":"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EAAPA;AACAA,IAAE,CAAF,IAAO,EAAPA;AACAA,IAAE,CAAF,IAAO,EAAPA;AACAA,IAAE,CAAF,IAAO,EAAPA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAA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AF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAATA;AACAA,IAAE,GAAF,IAAS,EAAT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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/@babel/runtime/regenerator/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/dommatrix/dist/dommatrix.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/promise/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.aggregate-error.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/export.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/global.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/descriptors.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/fails.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-call.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-bind-native.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-property-descriptor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-indexed-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/indexed-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-uncurry-this.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/classof-raw.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/require-object-coercible.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-property-key.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-primitive.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-callable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-built-in.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-v8-version.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-user-agent.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/a-callable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/try-to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/well-known-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-pure.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared-store.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-global.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/has-own-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/uid.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/ie8-dom-define.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/document-create-element.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-define-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/an-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/redefine.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/inspect-source.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/internal-state.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-weak-map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared-key.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/hidden-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-name.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/own-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-keys-internal.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-absolute-index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/length-of-array-like.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-length.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/enum-bug-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-forced.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/a-possible-prototype.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-define-properties.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/html.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/clear-error-stack.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/install-error-cause.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterate.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-bind-context.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterators.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-iterator-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/classof.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-string-tag-support.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterator-close.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/normalize-string-argument.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/error-stack-installable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.array.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/add-to-unscopables.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/define-iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-iterator-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterators-core.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-promise-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/redefine-all.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-species.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/an-instance.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/species-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/a-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/task.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-apply.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-slice.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/validate-arguments-length.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-ios.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-node.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/microtask.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/promise-resolve.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/new-promise-capability.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/host-report-errors.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/perform.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/queue.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-browser.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.all-settled.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.any.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.finally.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-multibyte.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/path.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/web/structured-clone.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/collection.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/internal-metadata.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-slice-simple.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-is-extensible.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-buffer-non-extensible.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/freezing.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/inherit-if-required.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/collection-strong.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.set.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.structured-clone.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/regexp-flags.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/node module decorator","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n UNSUPPORTED_FEATURES,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker,\n // and that `postMessage` transfers are supported.\n handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n });\n\n handler.on(\"configure\", function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const apiVersion = docParams.apiVersion;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (typeof ReadableStream === \"undefined\") {\n const partialMsg =\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n if (isNodeJS) {\n throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n }\n throw new Error(partialMsg + \"please update to a supported browser.\");\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be sucessfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n const disableAutoFetch =\n source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n for (const ref of refs) {\n newRefs = ref\n .filter(x => x !== null)\n .reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/*!\n* DOMMatrix v0.0.24 (https://thednp.github.io/DOMMatrix/)\n* Copyright 2021 © thednp\n* Licensed under MIT (https://github.com/thednp/DOMMatrix/blob/master/LICENSE)\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.CSSMatrix = factory());\n})(this, (function () { 'use strict';\n\n // DOMMatrix Static methods\n // * `fromFloat64Array` and `fromFloat32Array are not implemented;\n // * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n // * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n // * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n\n /**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param {number[]} array an `Array` to feed values from.\n * @return {CSSMatrix} the resulted matrix.\n */\n function fromArray(array) {\n var m = new CSSMatrix();\n var a = Array.from(array);\n\n if (!a.every(function (n) { return !Number.isNaN(n); })) {\n throw TypeError((\"CSSMatrix: \\\"\" + array + \"\\\" must only have numbers.\"));\n }\n if (a.length === 16) {\n var m11 = a[0];\n var m12 = a[1];\n var m13 = a[2];\n var m14 = a[3];\n var m21 = a[4];\n var m22 = a[5];\n var m23 = a[6];\n var m24 = a[7];\n var m31 = a[8];\n var m32 = a[9];\n var m33 = a[10];\n var m34 = a[11];\n var m41 = a[12];\n var m42 = a[13];\n var m43 = a[14];\n var m44 = a[15];\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n var M11 = a[0];\n var M12 = a[1];\n var M21 = a[2];\n var M22 = a[3];\n var M41 = a[4];\n var M42 = a[5];\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n } else {\n throw new TypeError('CSSMatrix: expecting an Array of 6/16 values.');\n }\n return m;\n }\n\n /**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param {CSSMatrix | DOMMatrix | CSSMatrix.JSONMatrix} m the source matrix to feed values from.\n * @return {CSSMatrix} the resulted matrix.\n */\n function fromMatrix(m) {\n var keys = Object.keys(new CSSMatrix());\n if (typeof m === 'object' && keys.every(function (k) { return k in m; })) {\n return fromArray(\n [m.m11, m.m12, m.m13, m.m14,\n m.m21, m.m22, m.m23, m.m24,\n m.m31, m.m32, m.m33, m.m34,\n m.m41, m.m42, m.m43, m.m44]\n );\n }\n throw TypeError((\"CSSMatrix: \\\"\" + m + \"\\\" is not a DOMMatrix / CSSMatrix / JSON compatible object.\"));\n }\n\n /**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param {string} source valid CSS transform string syntax.\n * @return {CSSMatrix} the resulted matrix.\n */\n function fromString(source) {\n if (typeof source !== 'string') {\n throw TypeError((\"CSSMatrix: \\\"\" + source + \"\\\" is not a string.\"));\n }\n var str = String(source).replace(/\\s/g, '');\n var m = new CSSMatrix();\n var invalidStringError = \"CSSMatrix: invalid transform string \\\"\" + source + \"\\\"\";\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str.split(')').filter(function (f) { return f; }).forEach(function (tf) {\n var ref = tf.split('(');\n var prop = ref[0];\n var value = ref[1];\n\n // invalidate empty string\n if (!value) { throw TypeError(invalidStringError); }\n\n var components = value.split(',')\n .map(function (n) { return (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)); });\n\n var x = components[0];\n var y = components[1];\n var z = components[2];\n var a = components[3];\n var xyz = [x, y, z];\n var xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(function (n) { return n === undefined; })) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (prop.includes('matrix') && [6, 16].includes(components.length)\n && components.every(function (n) { return !Number.isNaN(+n); })) {\n var values = components.map(function (n) { return (Math.abs(n) < 1e-6 ? 0 : n); });\n m = m.multiply(fromArray(values));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(function (n) { return !Number.isNaN(+n); })) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(function (n) { return !Number.isNaN(+n); }) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(function (n) { return n === undefined; })) {\n m = m.rotate(0, 0, x);\n // 4 values expected\n } else if (prop === 'scale3d' && xyz.every(function (n) { return !Number.isNaN(+n); }) && xyz.some(function (n) { return n !== 1; })) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n var nosy = Number.isNaN(+y);\n var sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && x && z === undefined) {\n m = m.skewX(x);\n m = y ? m.skewY(y) : m;\n } else if (/[XYZ]/.test(prop) && x && [y, z].every(function (n) { return n === undefined; }) // a single value expected\n && ['translate', 'rotate', 'scale', 'skew'].some(function (p) { return prop.includes(p); })) {\n if (['skewX', 'skewY'].includes(prop)) {\n // @ts-ignore unfortunately\n m = m[prop](x);\n } else {\n var fn = prop.replace(/[XYZ]/, '');\n var axis = prop.replace(fn, '');\n var idx = ['X', 'Y', 'Z'].indexOf(axis);\n var axeValues = [\n idx === 0 ? x : 0,\n idx === 1 ? x : 0,\n idx === 2 ? x : 0];\n // @ts-ignore unfortunately\n m = m[fn].apply(m, axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n }\n\n // Transform Functions\n // https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n /**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param {number} x the `x-axis` position.\n * @param {number} y the `y-axis` position.\n * @param {number} z the `z-axis` position.\n * @return {CSSMatrix} the resulted matrix.\n */\n function Translate(x, y, z) {\n var m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param {number} rx the `x-axis` rotation.\n * @param {number} ry the `y-axis` rotation.\n * @param {number} rz the `z-axis` rotation.\n * @return {CSSMatrix} the resulted matrix.\n */\n function Rotate(rx, ry, rz) {\n var m = new CSSMatrix();\n var degToRad = Math.PI / 180;\n var radX = rx * degToRad;\n var radY = ry * degToRad;\n var radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n var cosx = Math.cos(radX);\n var sinx = -Math.sin(radX);\n var cosy = Math.cos(radY);\n var siny = -Math.sin(radY);\n var cosz = Math.cos(radZ);\n var sinz = -Math.sin(radZ);\n\n var m11 = cosy * cosz;\n var m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n var m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n var m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param {number} x the `x-axis` vector length.\n * @param {number} y the `y-axis` vector length.\n * @param {number} z the `z-axis` vector length.\n * @param {number} alpha the value in degrees of the rotation.\n * @return {CSSMatrix} the resulted matrix.\n */\n function RotateAxisAngle(x, y, z, alpha) {\n var m = new CSSMatrix();\n var angle = alpha * (Math.PI / 360);\n var sinA = Math.sin(angle);\n var cosA = Math.cos(angle);\n var sinA2 = sinA * sinA;\n var length = Math.sqrt(x * x + y * y + z * z);\n var X = x;\n var Y = y;\n var Z = z;\n\n if (length === 0) {\n // bad vector length, use something reasonable\n X = 0;\n Y = 0;\n Z = 1;\n } else {\n X /= length;\n Y /= length;\n Z /= length;\n }\n\n var x2 = X * X;\n var y2 = Y * Y;\n var z2 = Z * Z;\n\n var m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n var m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n var m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n var m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param {number} x the `x-axis` scale.\n * @param {number} y the `y-axis` scale.\n * @param {number} z the `z-axis` scale.\n * @return {CSSMatrix} the resulted matrix.\n */\n function Scale(x, y, z) {\n var m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param {number} angle the angle in degrees.\n * @return {CSSMatrix} the resulted matrix.\n */\n function SkewX(angle) {\n var m = new CSSMatrix();\n var radA = (angle * Math.PI) / 180;\n var t = Math.tan(radA);\n m.m21 = t;\n m.c = t;\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param {number} angle the angle in degrees.\n * @return {CSSMatrix} the resulted matrix.\n */\n function SkewY(angle) {\n var m = new CSSMatrix();\n var radA = (angle * Math.PI) / 180;\n var t = Math.tan(radA);\n m.m12 = t;\n m.b = t;\n return m;\n }\n\n /**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param {CSSMatrix} m1 the first matrix.\n * @param {CSSMatrix} m2 the second matrix.\n * @return {CSSMatrix} the resulted matrix.\n */\n function Multiply(m1, m2) {\n var m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n var m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n var m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n var m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n var m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n var m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n var m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n var m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n var m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n var m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n var m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n var m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n var m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n var m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n var m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n var m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray(\n [m11, m12, m13, m14,\n m21, m22, m23, m24,\n m31, m32, m33, m34,\n m41, m42, m43, m44]\n );\n }\n\n /**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\n\n var CSSMatrix = function CSSMatrix() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var m = this;\n // array 6\n m.a = 1; m.b = 0;\n m.c = 0; m.d = 1;\n m.e = 0; m.f = 0;\n // array 16\n m.m11 = 1; m.m12 = 0; m.m13 = 0; m.m14 = 0;\n m.m21 = 0; m.m22 = 1; m.m23 = 0; m.m24 = 0;\n m.m31 = 0; m.m32 = 0; m.m33 = 1; m.m34 = 0;\n m.m41 = 0; m.m42 = 0; m.m43 = 0; m.m44 = 1;\n\n if (args && args.length) {\n var ARGS = [16, 6].some(function (l) { return l === args.length; }) ? args : args[0];\n\n return m.setMatrixValue(ARGS);\n }\n return m;\n };\n\n var prototypeAccessors = { isIdentity: { configurable: true },is2D: { configurable: true } };\n\n /**\n * Sets a new `Boolean` flag value for `this.isIdentity` matrix property.\n *\n * @param {boolean} value sets a new flag for this property\n */\n prototypeAccessors.isIdentity.set = function (value) {\n this.isIdentity = value;\n };\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return {boolean} the current property value\n */\n prototypeAccessors.isIdentity.get = function () {\n var m = this;\n return (m.m11 === 1 && m.m12 === 0 && m.m13 === 0 && m.m14 === 0\n && m.m21 === 0 && m.m22 === 1 && m.m23 === 0 && m.m24 === 0\n && m.m31 === 0 && m.m32 === 0 && m.m33 === 1 && m.m34 === 0\n && m.m41 === 0 && m.m42 === 0 && m.m43 === 0 && m.m44 === 1);\n };\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return {boolean} the current property value\n */\n prototypeAccessors.is2D.get = function () {\n var m = this;\n return (m.m31 === 0 && m.m32 === 0 && m.m33 === 1 && m.m34 === 0 && m.m43 === 0 && m.m44 === 1);\n };\n\n /**\n * Sets a new `Boolean` flag value for `this.is2D` matrix property.\n *\n * @param {boolean} value sets a new flag for this property\n */\n prototypeAccessors.is2D.set = function (value) {\n this.is2D = value;\n };\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n *or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param {string | number[] | CSSMatrix | DOMMatrix} source\n * @return {CSSMatrix} the matrix instance\n */\n CSSMatrix.prototype.setMatrixValue = function setMatrixValue (source) {\n var m = this;\n\n // [Arguments list | Array] come here\n if ([Array, Float64Array, Float32Array].some(function (a) { return source instanceof a; })) {\n return fromArray(source);\n }\n // CSS transform string source - TransformList\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSON)\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n return m;\n };\n\n /**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` property.\n *\n * @return {number[]} an *Array* representation of the matrix\n */\n CSSMatrix.prototype.toArray = function toArray () {\n var m = this;\n var pow = (Math.pow( 10, 6 ));\n var result;\n\n if (m.is2D) {\n result = [m.a, m.b, m.c, m.d, m.e, m.f];\n } else {\n result = [m.m11, m.m12, m.m13, m.m14,\n m.m21, m.m22, m.m23, m.m24,\n m.m31, m.m32, m.m33, m.m34,\n m.m41, m.m42, m.m43, m.m44];\n }\n // clean up the numbers\n // eslint-disable-next-line -- no-bitwise\n return result.map(function (n) { return (Math.abs(n) < 1e-6 ? 0 : ((n * pow) >> 0) / pow); });\n };\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return {string} a string representation of the matrix\n */\n CSSMatrix.prototype.toString = function toString () {\n var m = this;\n var values = m.toArray();\n var type = m.is2D ? 'matrix' : 'matrix3d';\n return (type + \"(\" + values + \")\");\n };\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return {CSSMatrix.JSONMatrix} an *Object* with all matrix values.\n */\n CSSMatrix.prototype.toJSON = function toJSON () {\n var m = this;\n var is2D = m.is2D;\n var isIdentity = m.isIdentity;\n return Object.assign({}, m, {is2D: is2D, isIdentity: isIdentity});\n };\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param {CSSMatrix | DOMMatrix | CSSMatrix.JSONMatrix} m2 CSSMatrix\n * @return {CSSMatrix} The resulted matrix.\n */\n CSSMatrix.prototype.multiply = function multiply (m2) {\n return Multiply(this, m2);\n };\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param {number} x X component of the translation value.\n * @param {number=} y Y component of the translation value.\n * @param {number=} z Z component of the translation value.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.translate = function translate (x, y, z) {\n var X = x;\n var Y = y;\n var Z = z;\n if (Z === undefined) { Z = 0; }\n if (Y === undefined) { Y = 0; }\n return Multiply(this, Translate(X, Y, Z));\n };\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param {number} x The X component of the scale value.\n * @param {number=} y The Y component of the scale value.\n * @param {number=} z The Z component of the scale value.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.scale = function scale (x, y, z) {\n var X = x;\n var Y = y;\n var Z = z;\n if (Y === undefined) { Y = x; }\n if (Z === undefined) { Z = 1; } // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n };\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param {number} rx The X component of the rotation, or Z if Y and Z are null.\n * @param {number=} ry The (optional) Y component of the rotation value.\n * @param {number=} rz The (optional) Z component of the rotation value.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.rotate = function rotate (rx, ry, rz) {\n var RX = rx;\n var RY = ry;\n var RZ = rz;\n if (RY === undefined) { RY = 0; }\n if (RZ === undefined) { RZ = RX; RX = 0; }\n return Multiply(this, Rotate(RX, RY, RZ));\n };\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param {number} x The X component of the axis vector.\n * @param {number} y The Y component of the axis vector.\n * @param {number} z The Z component of the axis vector.\n * @param {number} angle The angle of rotation about the axis vector, in degrees.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.rotateAxisAngle = function rotateAxisAngle (x, y, z, angle) {\n if ([x, y, z, angle].some(function (n) { return Number.isNaN(n); })) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n };\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param {number} angle The angle amount in degrees to skew.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.skewX = function skewX (angle) {\n return Multiply(this, SkewX(angle));\n };\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param {number} angle The angle amount in degrees to skew.\n * @return {CSSMatrix} The resulted matrix\n */\n CSSMatrix.prototype.skewY = function skewY (angle) {\n return Multiply(this, SkewY(angle));\n };\n\n /**\n * Transforms a specified point using the matrix, returning a new\n * Tuple *Object* comprising of the transformed point.\n * Neither the matrix nor the original point are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @copyright thednp © 2021\n *\n * @param {CSSMatrix.PointTuple | DOMPoint} v Tuple or DOMPoint\n * @return {CSSMatrix.PointTuple} the resulting Tuple\n */\n CSSMatrix.prototype.transformPoint = function transformPoint (v) {\n var M = this;\n var m = Translate(v.x, v.y, v.z);\n\n m.m44 = v.w || 1;\n m = M.multiply(m);\n\n return {\n x: m.m41,\n y: m.m42,\n z: m.m43,\n w: m.m44,\n };\n };\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * @param {CSSMatrix.PointTuple} t Tuple with `{x,y,z,w}` components\n * @return {CSSMatrix.PointTuple} the resulting Tuple\n */\n CSSMatrix.prototype.transform = function transform (t) {\n var m = this;\n var x = m.m11 * t.x + m.m12 * t.y + m.m13 * t.z + m.m14 * t.w;\n var y = m.m21 * t.x + m.m22 * t.y + m.m23 * t.z + m.m24 * t.w;\n var z = m.m31 * t.x + m.m32 * t.y + m.m33 * t.z + m.m34 * t.w;\n var w = m.m41 * t.x + m.m42 * t.y + m.m43 * t.z + m.m44 * t.w;\n\n return {\n x: x / w,\n y: y / w,\n z: z / w,\n w: w,\n };\n };\n\n Object.defineProperties( CSSMatrix.prototype, prototypeAccessors );\n\n // Add Transform Functions to CSSMatrix object\n // without creating a TypeScript namespace.\n Object.assign(CSSMatrix, {\n Translate: Translate,\n Rotate: Rotate,\n RotateAxisAngle: RotateAxisAngle,\n Scale: Scale,\n SkewX: SkewX,\n SkewY: SkewY,\n Multiply: Multiply,\n fromArray: fromArray,\n fromMatrix: fromMatrix,\n fromString: fromString,\n });\n\n var version = \"0.0.24\";\n\n // @ts-ignore\n\n /**\n * A global namespace for library version.\n * @type {string}\n */\n var Version = version;\n\n Object.assign(CSSMatrix, { Version: Version });\n\n return CSSMatrix;\n\n}));\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Error = global.Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, Error);\nelse copyConstructorProperties($AggregateError, Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.21.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","module.exports = false;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string') {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n // eslint-disable-next-line unicorn/no-thenable -- safe\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","module.exports = typeof window == 'object';\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromise)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","require('../modules/es.array.iterator');\nrequire('../modules/es.object.to-string');\nrequire('../modules/es.map');\nrequire('../modules/es.set');\nrequire('../modules/web.structured-clone');\nvar path = require('../internals/path');\n\nmodule.exports = path.structuredClone;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltin = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar uid = require('../internals/uid');\nvar isCallable = require('../internals/is-callable');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar iterate = require('../internals/iterate');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar createProperty = require('../internals/create-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar regExpFlags = require('../internals/regexp-flags');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar Object = global.Object;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Set = getBuiltin('Set');\nvar Map = getBuiltin('Map');\nvar MapPrototype = Map.prototype;\nvar mapHas = uncurryThis(MapPrototype.has);\nvar mapGet = uncurryThis(MapPrototype.get);\nvar mapSet = uncurryThis(MapPrototype.set);\nvar setAdd = uncurryThis(Set.prototype.add);\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar booleanValueOf = uncurryThis(true.valueOf);\nvar numberValueOf = uncurryThis(1.0.valueOf);\nvar stringValueOf = uncurryThis(''.valueOf);\nvar getFlags = uncurryThis(regExpFlags);\nvar getTime = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var set1 = new global.Set([7]);\n var set2 = structuredCloneImplementation(set1);\n var number = structuredCloneImplementation(Object(7));\n return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\n }) && structuredCloneImplementation;\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\n }) && structuredCloneImplementation;\n};\n\n// FF94+, Safari TP134+, Chrome Canary 98+, NodeJS 17.0+, Deno 1.13+\n// current FF and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// no one of current implementations supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE || !checkNewErrorsSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// current Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor, structured cloning implementation\n// from `performance.mark` is too naive and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of current implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, kind) {\n throw new DOMException((kind || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar structuredCloneInternal = function (value, map) {\n if (isSymbol(value)) throwUncloneable('Symbol');\n if (!isObject(value)) return value;\n // effectively preserves circular references\n if (map) {\n if (mapHas(map, value)) return mapGet(map, value);\n } else map = new Map();\n\n var type = classof(value);\n var deep = false;\n var C, name, cloned, dataTransfer, i, length, keys, key, source, target;\n\n switch (type) {\n case 'Array':\n cloned = [];\n deep = true;\n break;\n case 'Object':\n cloned = {};\n deep = true;\n break;\n case 'Map':\n cloned = new Map();\n deep = true;\n break;\n case 'Set':\n cloned = new Set();\n deep = true;\n break;\n case 'RegExp':\n // in this block because of a Safari 14.1 bug\n // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n cloned = new RegExp(value.source, 'flags' in value ? value.flags : getFlags(value));\n break;\n case 'Error':\n name = value.name;\n switch (name) {\n case 'AggregateError':\n cloned = getBuiltin('AggregateError')([]);\n break;\n case 'EvalError':\n cloned = EvalError();\n break;\n case 'RangeError':\n cloned = RangeError();\n break;\n case 'ReferenceError':\n cloned = ReferenceError();\n break;\n case 'SyntaxError':\n cloned = SyntaxError();\n break;\n case 'TypeError':\n cloned = TypeError();\n break;\n case 'URIError':\n cloned = URIError();\n break;\n case 'CompileError':\n cloned = CompileError();\n break;\n case 'LinkError':\n cloned = LinkError();\n break;\n case 'RuntimeError':\n cloned = RuntimeError();\n break;\n default:\n cloned = Error();\n }\n deep = true;\n break;\n case 'DOMException':\n cloned = new DOMException(value.message, value.name);\n deep = true;\n break;\n case 'DataView':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n C = global[type];\n // in some old engines like Safari 9, typeof C is 'object'\n // on Uint8ClampedArray or some other constructors\n if (!isObject(C)) throwUnpolyfillable(type);\n cloned = new C(\n // this is safe, since arraybuffer cannot have circular references\n structuredCloneInternal(value.buffer, map),\n value.byteOffset,\n type === 'DataView' ? value.byteLength : value.length\n );\n break;\n case 'DOMQuad':\n try {\n cloned = new DOMQuad(\n structuredCloneInternal(value.p1, map),\n structuredCloneInternal(value.p2, map),\n structuredCloneInternal(value.p3, map),\n structuredCloneInternal(value.p4, map)\n );\n } catch (error) {\n if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else throwUnpolyfillable(type);\n }\n break;\n case 'FileList':\n C = global.DataTransfer;\n if (isConstructor(C)) {\n dataTransfer = new C();\n for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n dataTransfer.items.add(structuredCloneInternal(value[i], map));\n }\n cloned = dataTransfer.files;\n } else if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else throwUnpolyfillable(type);\n break;\n case 'ImageData':\n // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n try {\n cloned = new ImageData(\n structuredCloneInternal(value.data, map),\n value.width,\n value.height,\n { colorSpace: value.colorSpace }\n );\n } catch (error) {\n if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else throwUnpolyfillable(type);\n } break;\n default:\n if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else switch (type) {\n case 'BigInt':\n // can be a 3rd party polyfill\n cloned = Object(value.valueOf());\n break;\n case 'Boolean':\n cloned = Object(booleanValueOf(value));\n break;\n case 'Number':\n cloned = Object(numberValueOf(value));\n break;\n case 'String':\n cloned = Object(stringValueOf(value));\n break;\n case 'Date':\n cloned = new Date(getTime(value));\n break;\n case 'ArrayBuffer':\n C = global.DataView;\n // `ArrayBuffer#slice` is not available in IE10\n // `ArrayBuffer#slice` and `DataView` are not available in old FF\n if (!C && typeof value.slice != 'function') throwUnpolyfillable(type);\n // detached buffers throws in `DataView` and `.slice`\n try {\n if (typeof value.slice == 'function') {\n cloned = value.slice(0);\n } else {\n length = value.byteLength;\n cloned = new ArrayBuffer(length);\n source = new C(value);\n target = new C(cloned);\n for (i = 0; i < length; i++) {\n target.setUint8(i, source.getUint8(i));\n }\n }\n } catch (error) {\n throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n } break;\n case 'SharedArrayBuffer':\n // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n cloned = value;\n break;\n case 'Blob':\n try {\n cloned = value.slice(0, value.size, value.type);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMPoint':\n case 'DOMPointReadOnly':\n C = global[type];\n try {\n cloned = C.fromPoint\n ? C.fromPoint(value)\n : new C(value.x, value.y, value.z, value.w);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMRect':\n case 'DOMRectReadOnly':\n C = global[type];\n try {\n cloned = C.fromRect\n ? C.fromRect(value)\n : new C(value.x, value.y, value.width, value.height);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMMatrix':\n case 'DOMMatrixReadOnly':\n C = global[type];\n try {\n cloned = C.fromMatrix\n ? C.fromMatrix(value)\n : new C(value);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone)) throwUnpolyfillable(type);\n try {\n cloned = value.clone();\n } catch (error) {\n throwUncloneable(type);\n } break;\n case 'File':\n try {\n cloned = new File([value], value.name, value);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'CryptoKey':\n case 'GPUCompilationMessage':\n case 'GPUCompilationInfo':\n case 'ImageBitmap':\n case 'RTCCertificate':\n case 'WebAssembly.Module':\n throwUnpolyfillable(type);\n // break omitted\n default:\n throwUncloneable(type);\n }\n }\n\n mapSet(map, value, cloned);\n\n if (deep) switch (type) {\n case 'Array':\n case 'Object':\n keys = objectKeys(value);\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n key = keys[i];\n createProperty(cloned, key, structuredCloneInternal(value[key], map));\n } break;\n case 'Map':\n value.forEach(function (v, k) {\n mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));\n });\n break;\n case 'Set':\n value.forEach(function (v) {\n setAdd(cloned, structuredCloneInternal(v, map));\n });\n break;\n case 'Error':\n createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));\n if (hasOwn(value, 'cause')) {\n createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));\n }\n if (name == 'AggregateError') {\n cloned.errors = structuredCloneInternal(value.errors, map);\n } // break omitted\n case 'DOMException':\n if (ERROR_STACK_INSTALLABLE) {\n createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));\n }\n }\n\n return cloned;\n};\n\nvar PROPER_TRANSFER = nativeStructuredClone && !fails(function () {\n var buffer = new ArrayBuffer(8);\n var clone = nativeStructuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength != 0 || clone.byteLength != 8;\n});\n\nvar tryToTransfer = function (rawTransfer, map) {\n if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\n\n var transfer = [];\n\n iterate(rawTransfer, function (value) {\n push(transfer, anObject(value));\n });\n\n var i = 0;\n var length = lengthOfArrayLike(transfer);\n var value, type, C, transferredArray, transferred, canvas, context;\n\n if (PROPER_TRANSFER) {\n transferredArray = nativeStructuredClone(transfer, { transfer: transfer });\n while (i < length) mapSet(map, transfer[i], transferredArray[i++]);\n } else while (i < length) {\n value = transfer[i++];\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n type = classof(value);\n\n switch (type) {\n case 'ImageBitmap':\n C = global.OffscreenCanvas;\n if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n canvas = new C(value.width, value.height);\n context = canvas.getContext('bitmaprenderer');\n context.transferFromImageBitmap(value);\n transferred = canvas.transferToImageBitmap();\n } catch (error) { /* empty */ }\n break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n transferred = value.clone();\n value.close();\n } catch (error) { /* empty */ }\n break;\n case 'ArrayBuffer':\n case 'MessagePort':\n case 'OffscreenCanvas':\n case 'ReadableStream':\n case 'TransformStream':\n case 'WritableStream':\n throwUnpolyfillable(type, TRANSFERRING);\n }\n\n if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n mapSet(map, value, transferred);\n }\n};\n\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\n structuredClone: function structuredClone(value /* , { transfer } */) {\n var options = validateArgumentsLength(arguments.length, 1) > 1 ? anObject(arguments[1]) : undefined;\n var transfer = options ? options.transfer : undefined;\n var map;\n\n if (transfer !== undefined) {\n map = new Map();\n tryToTransfer(transfer, map);\n }\n\n return structuredCloneInternal(value, map);\n }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n // eslint-disable-next-line no-restricted-syntax\n return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n forEach(callback) {\n for (const ref of this._set.values()) {\n callback(ref);\n }\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n forEach(callback) {\n for (const value of this._map.values()) {\n callback(value);\n }\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n\n onLoadedStream() {\n unreachable(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code = code && stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"<\",\n /* > */ 0x3e: \">\",\n /* & */ 0x26: \"&\",\n /* \" */ 0x22: \""\",\n /* ' */ 0x27: \"'\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length, forceClamped = false) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length, forceClamped = false) {\n const bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n return shadow(\n this,\n \"resources\",\n this._getInheritableProperty(\"Resources\") || Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\n const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n warn(`Empty /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (typeof obj !== \"number\" || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n let view;\n if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n return shadow(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n function ([pageOpList, annotations]) {\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n });\n }\n );\n }\n\n extractTextContent({\n handler,\n task,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n combineTextItems,\n sink,\n viewBox: this.view,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, arg) {\n let stream;\n if (arg instanceof BaseStream) {\n stream = arg;\n } else if (isArrayBuffer(arg)) {\n stream = new Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n\n // The `checkHeader` method is called before this method and parses the\n // version from the header. The specification states in section 7.5.2\n // that the version from the catalog, if present, should overwrite the\n // version from the header.\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Read the PDF format version.\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this._version) {\n // Remove the \"%PDF-\" prefix.\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get xfaData() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n try {\n entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n return entries;\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n try {\n entries[name] = stringToUTF8String(data.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return entries;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (stream instanceof BaseStream) {\n xfaImages.set(key, stream.getBytes());\n }\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (xfa instanceof BaseStream && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n let version = this._version;\n if (\n typeof version !== \"string\" ||\n !PDF_HEADER_VERSION_REGEXP.test(version)\n ) {\n warn(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n }\n break;\n }\n\n if (customValue === undefined) {\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization, xref } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n // Help improve performance of the `Catalog.getPageIndex` method.\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n\n return [obj, ref];\n }\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearGlobalCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\n return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\"\n ? FontType.CIDFONTTYPE0C\n : FontType.CIDFONTTYPE0;\n case \"OpenType\":\n return FontType.OPENTYPE;\n case \"TrueType\":\n return FontType.TRUETYPE;\n case \"CIDFontType2\":\n return FontType.CIDFONTTYPE2;\n case \"MMType1\":\n return FontType.MMTYPE1;\n case \"Type0\":\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!(groups && groups[1]),\n isZeroWidthDiacritic: !!(groups && groups[2]),\n isInvisibleFormatMark: !!(groups && groups[3]),\n };\n CategoryCache.set(char, category);\n return category;\n}\n\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\nexport {\n clearUnicodeCaches,\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n\n const id =\n ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n collectFields,\n pageIndex,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!(pageRef instanceof Ref)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n quadPointsLists.push([]);\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate =\n typeof modificationDate === \"string\" ? modificationDate : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then(resources => {\n const opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (width instanceof Name) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType =\n rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n const fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance =\n typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => typeof item === \"string\")\n .map(item => stringToPDFString(item));\n } else if (formValue instanceof Name) {\n return stringToPDFString(formValue.name);\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(\n content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const operatorList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n matrix,\n ]);\n\n const stream = new StringStream(content);\n return evaluator\n .getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList,\n })\n .then(function () {\n operatorList.addOp(OPS.endAnnotation, []);\n return operatorList;\n });\n }\n );\n }\n\n async save(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\n return null;\n }\n\n let appearance = await this._getAppearance(\n evaluator,\n task,\n annotationStorage\n );\n if (appearance === null) {\n return null;\n }\n const { xref } = evaluator;\n\n const dict = xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n appearanceDict.set(\"BBox\", bbox);\n\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n writeDict(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n return [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n ];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (!annotationStorage || isPassword) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let value = storageEntry && storageEntry.value;\n if (value === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await this._getFontData(evaluator, task);\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight - defaultPadding,\n totalWidth - 2 * hPadding,\n value,\n font,\n lineCount\n );\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n value,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n hPadding,\n vPadding\n );\n }\n\n // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\n hPadding,\n vPadding\n );\n }\n\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\n font,\n fontSize,\n totalWidth,\n alignment,\n hPadding,\n vPadding\n );\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _getTextWidth(text, font) {\n return (\n font\n .charsToGlyphs(text)\n .reduce((width, glyph) => width + glyph.width, 0) / 1000\n );\n }\n\n _computeFontSize(height, width, text, font, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n // Represent the percentage of the height of a single-line field over\n // the font size.\n // Acrobat seems to use this value.\n const LINE_FACTOR = 1.35;\n\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(\n Math.min(height / LINE_FACTOR, width / textWidth)\n );\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions,\n });\n }\n\n const isTooBig = fsize => {\n // Return true when the text doesn't fit the given height.\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 12 (this is the default font size in\n // Acrobat).\n // Then we'll adjust font size to what we have really.\n fontSize = 12;\n let lineHeight = fontSize * LINE_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n\n break;\n }\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, fontSize];\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n // We need to get the width of the text in order to align it correctly\n const width = this._getTextWidth(text, font) * fontSize;\n let shift;\n if (alignment === 1) {\n // Center\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n\n return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n text,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding\n ) {\n const lines = text.split(/\\r\\n?|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n padding,\n -fontSize // <0 because a line is below the previous one\n )\n );\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width, cache = {}) {\n // TODO: need to handle chars which are not in the font.\n line = cache.line || font.encodeString(line).join(\"\");\n\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue,\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (this.parent instanceof Ref) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (this.parent instanceof Dict) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n const xref = params.xref;\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(parameters);\n\n const dict = parameters.dict;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = parameters.dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType =\n parentSubtype instanceof Name ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.FREETEXT;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = parameters.dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = parameters.dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obsure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(value instanceof Name)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n processed.forEach(ref => {\n nonBlendModesSet.put(ref);\n });\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn(\"Image exceeded maximum allowed size and was removed.\");\n return;\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n const interpolate = dict.get(\"I\", \"Interpolate\");\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(\n bitStrideLength * h,\n /* forceClamped = */ true\n );\n const decode = dict.getArray(\"D\", \"Decode\");\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addOp(OPS.paintImageMaskXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n });\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addOp(OPS.paintImageXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (!(font instanceof Ref)) {\n throw new FormatError('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!(font instanceof Dict)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && descriptor instanceof Dict) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\n } catch (ex) {}\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n optionalContentGroups instanceof Dict\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy:\n optionalContent.get(\"P\") instanceof Name\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n const arrItem = arr[i];\n if (typeof arrItem === \"string\") {\n Array.prototype.push.apply(\n combinedGlyphs,\n self.handleText(arrItem, state)\n );\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [\n (matrix[0] * x + matrix[1] * y) / scale,\n (matrix[2] * x + matrix[3] * y) / scale,\n ];\n }\n\n function compareWithLastPosition() {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n\n const shiftedX = posX - viewBox[0];\n const shiftedY = posY - viewBox[1];\n\n if (\n shiftedX < 0 ||\n shiftedX > viewBox[2] ||\n shiftedY < 0 ||\n shiftedY > viewBox[3]\n ) {\n return false;\n }\n\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return true;\n }\n\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n\n let rotate = -1;\n // Take into account the rotation is the current transform.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n // This is not a 0, 90, 180, 270 rotation so:\n // - remove the scale factor from the matrix to get a rotation matrix\n // - apply the inverse (which is the transposed) to the positions\n // and we can then compare positions of the glyphes to detect\n // a whitespace.\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(\n lastPosX,\n lastPosY,\n textContentItem.prevTransform\n );\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n\n // When the total height of the current chunk is negative\n // then we're writing from bottom to top.\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return true;\n }\n\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (\n !addFakeSpaces(\n advanceY,\n textContentItem.prevTransform,\n textOrientation\n )\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: Math.abs(advanceY),\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return true;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n\n // When the total width of the current chunk is negative\n // then we're writing from right to left.\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return true;\n }\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (\n !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: Math.abs(advanceX),\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n\n return true;\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n if (glyph.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n if (\n glyph.isWhitespace &&\n (i === 0 ||\n i + 1 === ii ||\n glyphs[i - 1].isWhitespace ||\n glyphs[i + 1].isWhitespace ||\n extraSpacing)\n ) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n continue;\n }\n\n if (!compareWithLastPosition()) {\n // The glyph is not in page so just skip it.\n continue;\n }\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (glyph.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n if (glyph.isWhitespace) {\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n textChunk.str.push(\" \");\n } else {\n let glyphUnicode = glyph.unicode;\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n textChunk.str.push(glyphUnicode);\n }\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf, textOrientation) {\n if (\n textOrientation * textContentItem.spaceInFlowMin <= width &&\n width <= textOrientation * textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (args[1] instanceof Dict) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName =\n baseEncodingName instanceof Name ? baseEncodingName.name : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const data = xref.fetchIfRef(diffEncoding[j]);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n throw new FormatError(\"Encoding is not a Name nor a Dict\");\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (\n Number.isNaN(code) &&\n Number.isInteger(parseInt(codeStr, 16))\n ) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n default:\n // 'uniXXXX'/'uXXXX{XX}' glyphs\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n continue;\n }\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (cmapObj instanceof Name) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (cmapObj instanceof BaseStream) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (\n typeof diffEntry === \"number\" ||\n diffEntry instanceof Ref\n ) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n // Prevent circular references in Type3 fonts.\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n type3FontRefs.put(this.dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n fn >= OPS.moveTo &&\n fn <= OPS.endPath && // Path operator\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n StreamType,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n bytesLength < MAX_ADLER32_LENGTH,\n 'computeAdler32: Unsupported \"bytes\" length.'\n );\n }\n let a = 1,\n b = 0;\n for (let i = 0; i < bytesLength; ++i) {\n // No modulo required in the loop if `bytesLength < 5552`.\n a += bytes[i] & 0xff;\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default:\n // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary.\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the *entire* dictionary.\n const dictBytes = stream.getBytes(dictLength);\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf).\n if (divideBy === 10 && sign === 0) {\n warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n // This is consistent with Adobe Reader (fixes bug1753983.pdf).\n if (divideBy === 0 && sign === -1) {\n warn(\"Lexer.getNumber - treating a single minus sign as zero.\");\n return 0;\n }\n }\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n );\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n linDict instanceof Dict &&\n typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n const subarray = this.buffer.subarray(pos, end);\n // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n return forceClamped && !(subarray instanceof Uint8ClampedArray)\n ? new Uint8ClampedArray(subarray)\n : subarray;\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type})` +\n \" is not implemented\"\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one order of magnitude smaller than expected (fixes\n // issue10880.pdf and issue10989.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 10\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n\n if (resetContextProbabilities) {\n bitModel.reset();\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const resetContextProbabilities =\n codingStyleParameters.resetContextProbabilities;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n ]);\n const HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n ]);\n const HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!(params instanceof Dict)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n info,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n getCharUnicodeCategory,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n\n const category = getCharUnicodeCategory(unicode);\n this.isWhitespace = category.isWhitespace;\n this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n }\n\n matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\n this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont\n );\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n let fallbackName = \"sans-serif\";\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n this.fallbackName = fallbackName;\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = name.search(/Black/g) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n // Fixes issue11242_reduced.pdf\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n file.skip(2 + 2); // length + language\n\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (\n (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n ) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack[stack.length - 1];\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n this._glyphCache[charcode] = glyph;\n }\n return glyph;\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n const CharstringValidationData = [\n null,\n { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n null,\n { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n { id: \"vmoveto\", min: 1, stackClearing: true },\n { id: \"rlineto\", min: 2, resetStack: true },\n { id: \"hlineto\", min: 1, resetStack: true },\n { id: \"vlineto\", min: 1, resetStack: true },\n { id: \"rrcurveto\", min: 6, resetStack: true },\n null,\n { id: \"callsubr\", min: 1, undefStack: true },\n { id: \"return\", min: 0, undefStack: true },\n null, // 12\n null,\n { id: \"endchar\", min: 0, stackClearing: true },\n null,\n null,\n null,\n { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"hintmask\", min: 0, stackClearing: true },\n { id: \"cntrmask\", min: 0, stackClearing: true },\n { id: \"rmoveto\", min: 2, stackClearing: true },\n { id: \"hmoveto\", min: 1, stackClearing: true },\n { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"rcurveline\", min: 8, resetStack: true },\n { id: \"rlinecurve\", min: 8, resetStack: true },\n { id: \"vvcurveto\", min: 4, resetStack: true },\n { id: \"hhcurveto\", min: 4, resetStack: true },\n null, // shortint\n { id: \"callgsubr\", min: 1, undefStack: true },\n { id: \"vhcurveto\", min: 4, resetStack: true },\n { id: \"hvcurveto\", min: 4, resetStack: true },\n ];\n const CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n ];\n\n // eslint-disable-next-line no-shadow\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n }\n return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n const valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (let i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n const layout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.privateDict = null;\n }\n }\n return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const layout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.subrsIndex = null;\n }\n }\n return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (let i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (let j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\nfunction getUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUint16(data, start + 2) === 1\n ? getUint32(data, start + 8)\n : getUint32(data, start + 16);\n const format = getUint16(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUint16(data, start + offset + 2); // length\n const segCount = getUint16(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUint16(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUint16(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUint16(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = getUint32(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = getUint32(data, p);\n ranges.push({\n start,\n end: getUint32(data, p + 4),\n idDelta: getUint32(data, p + 8) - start,\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = getUint32;\n } else {\n itemSize = 2;\n itemDecode = (data, offset) => 2 * getUint16(data, offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = getInt16(code, i);\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = getUint16(code, i);\n const glyphIndex = getUint16(code, i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = getInt16(code, i);\n arg2 = getInt16(code, i + 2);\n } else {\n arg1 = getUint16(code, i);\n arg2 = getUint16(code, i + 2);\n }\n i += 4;\n } else {\n if (flags & 0x02) {\n arg1 = getInt8(code, i++);\n arg2 = getInt8(code, i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(code, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(code, i);\n scaleY = getFloat214(code, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(code, i);\n scale01 = getFloat214(code, i + 2);\n scale10 = getFloat214(code, i + 4);\n scaleY = getFloat214(code, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n // TODO: the transform should be applied only if there is a scale:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n\n if (!(flags & 0x02)) {\n // TODO: we must use arg1 and arg2 to make something similar to:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n }\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(getUint16(code, i));\n i += 2;\n }\n const instructionLength = getUint16(code, i);\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += getInt16(code, i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += getInt16(code, i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour[contour.length - 1].flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUint16(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getUint32(data, p + 8);\n const length = getUint32(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUint16(data, offset + 18);\n indexToLocFormat = getUint16(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426,\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439,\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450,\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461,\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441,\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462,\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n const COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n };\n\n // eslint-disable-next-line no-shadow\n class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(\n subrs[subrNumber],\n subrs,\n seacAnalysisEnabled\n );\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n }\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n const EEXEC_ENCRYPT_KEY = 55665;\n const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n }\n\n // eslint-disable-next-line no-shadow\n class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n prevChar() {\n this.stream.skip(-2);\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n } else if (token === \"/\") {\n // The expected 'ND' or '|-' token is missing, avoid swallowing\n // the start of the next glyph (fixes issue14462_reduced.pdf).\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n }\n\n return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n FormatError,\n info,\n IsEvalSupportedCached,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (let j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n );\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && IsEvalSupportedCached.value) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (typeof a === \"boolean\") {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n }\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n // eslint-disable-next-line no-shadow\n class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(\n stack,\n stack.splice(stack.length - n, n - j)\n );\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n }\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n this._imageCache.forEach(imageData => {\n byteSize += imageData.byteSize;\n });\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n // Handles special case of mainly LaTeX documents which use image masks to\n // draw lines with the current fill style.\n // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n // have been found at iFirstSave.\n const iFirstPIMXO = iFirstSave + 2;\n let i;\n for (i = 0; i < count; i++) {\n const arg = argsArray[iFirstPIMXO + 4 * i];\n const imageMask = arg.length === 1 && arg[0];\n if (\n imageMask &&\n imageMask.width === 1 &&\n imageMask.height === 1 &&\n (!imageMask.data.length ||\n (imageMask.data.length === 1 && imageMask.data[0] === 0))\n ) {\n fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n continue;\n }\n break;\n }\n return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(\n iFirstSave,\n count,\n fnArray,\n argsArray\n );\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n arg.data instanceof Uint8ClampedArray,\n 'OperatorList._transfers: Unsupported \"arg.data\" type.'\n );\n }\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (filter instanceof Name) {\n switch (filter.name) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n // TODO cache rendered images?\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n imgArray instanceof Uint8ClampedArray,\n 'PDFImage.createMask: Unsupported \"imgArray\" type.'\n );\n }\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8ClampedArray(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8ClampedArray(computedLength);\n data.set(imgArray);\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n let imgArray;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // If imgArray came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (this.image instanceof DecodeStream) {\n imgData.data = imgArray;\n } else {\n const newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(\n imageLength,\n drawWidth,\n drawHeight,\n /* forceRGB = */ true\n );\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes);\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length, /* forceClamped = */ true);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n\n const markInfo = Object.assign(Object.create(null), {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n });\n for (const key in markInfo) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n if (typeof value !== \"boolean\") {\n continue;\n }\n markInfo[key] = value;\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name:\n typeof group.get(\"Name\") === \"string\"\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent:\n typeof group.get(\"Intent\") === \"string\"\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(value instanceof Ref)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (value instanceof Ref && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name:\n typeof config.get(\"Name\") === \"string\"\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator:\n typeof config.get(\"Creator\") === \"string\"\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState:\n config.get(\"BaseState\") instanceof Name\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n const charBuf = [];\n for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n currentLabel = charBuf.join(\"\");\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const obj = this._catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n\n for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\n\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n // The number of elements must be even.\n if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (obj instanceof Dict) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(key, value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(key, value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n fontFallback(id, handler) {\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n });\n }\n\n cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n });\n }\n\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache;\n let currentPageIndex = 0;\n\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n\n const obj = await xref.fetchAsync(currentNode);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n // Help improve performance of the `getPageIndex` method.\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n );\n }\n const { objId } = currentNode;\n\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Promise<Map>}\n */\n async getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n // Help improve performance of the `getPageIndex` method.\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n /**\n * @typedef ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n // TODO: pdf spec mentions urls can be relative to a Base\n // entry in the dictionary.\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (remoteDest instanceof Name) {\n remoteDest = remoteDest.name;\n }\n if (typeof url === \"string\") {\n const baseUrl = url.split(\"#\")[0];\n if (typeof remoteDest === \"string\") {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\" || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n clearPrimitiveCaches();\n clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj instanceof BaseStream) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!(value instanceof Name)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (kid instanceof Ref) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (kid instanceof Dict) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n\n const type =\n kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId:\n kidDict.getRaw(\"Stm\") instanceof Ref\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId:\n kidDict.getRaw(\"Obj\") instanceof Ref\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (obj instanceof Dict) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplifed object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n value instanceof BaseStream ||\n Array.isArray(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n let remainder = 0;\n for (let z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursivly to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // Javascript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a   is unbreakable\n // but in real life Acrobat can break strings on  .\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n // Check if the current object ends with an 'endobj' operator.\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n // Check if an \"obj\" occurrence is actually a new object,\n // i.e. the current object is missing the 'endobj' operator.\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n warn(\n 'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n let trailerDict;\n for (let i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has(\"ID\")) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n\n this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__w_pdfjs_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","handler","port","testMessageProcessed","on","wphSetupTest","data","send","Uint8Array","wphConfigure","setVerbosityLevel","verbosity","wphSetupDoc","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","docId","docBaseUrl","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","evaluatorOptions","enableXfa","pdfManagerCapability","newPdfManager","source","LocalPdfManager","password","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","AbortException","stream","bytes","byteLength","wphSetupGetPage","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","wphSetupGetPageIndex","pageRef","Ref","get","num","gen","ensureCatalog","wphSetupGetDestinations","wphSetupGetDestination","id","wphSetupGetPageLabels","wphSetupGetPageLayout","wphSetupGetPageMode","wphSetupGetAttachments","wphSetupGetJavaScript","wphSetupGetDocJSActions","wphSetupGetOutline","wphSetupGetMetadata","wphSetupGetMarkInfo","wphSetupGetData","intent","getAnnotationsData","annotationStorage","filename","promises","serializeXfaData","save","acroForm","acroFormRef","xref","startXRef","refs","newRefs","xfaData","filter","x","reduce","a","b","concat","xfa","Dict","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","resetNewRef","incrementalUpdate","originalData","hasXfa","wphSetupRenderPage","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","featureId","UNSUPPORTED_FEATURES","errorOperatorList","error","wphExtractText","extractTextContent","includeMarkedContent","combineTextItems","wphGetStructTree","fontFallback","wphCleanup","cleanup","wphTerminate","waitOn","cleanupPromise","clearGlobalCaches","finished","destroy","wphReady","setup","isMessagePort","maybePort","postMessage","window","self","initializeFromPort","module","exports","require","runtime","Op","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","method","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","record","result","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","keys","object","reverse","pop","iterable","iteratorMethod","isNaN","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","shadow","prop","BaseException","BaseExceptionClosure","details","status","FormatError","bytesToString","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","IsEvalSupportedCached","hexNumbers","n","padStart","Util","r","g","m1","m2","p","m","xt","yt","d","p1","applyTransform","p2","p3","p4","v","transpose","c","first","second","sqrt","sx","sy","rect","rect1","rect2","compare","orderedX","sort","orderedY","normalizeRect","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","_pdfjsCompatibilityChecked","checkNodeBtoa","btoa","chars","Buffer","from","checkNodeAtob","atob","input","checkDOMMatrix","DOMMatrix","checkPromise","allSettled","checkReadableStream","__non_webpack_require__","checkStructuredClone","structuredClone","process","versions","nw","electron","global","factory","amd","CSSMatrix","fromArray","array","every","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","f","M11","M12","M21","M22","M41","M42","fromMatrix","k","fromString","invalidStringError","split","tf","components","includes","parseFloat","y","z","xyz","xyza","multiply","translate","rotateAxisAngle","some","scale","nosy","skewX","skewY","axis","idx","axeValues","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","cos","sinx","sin","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","angle","sinA","cosA","sinA2","Y","Z","z2","Scale","SkewX","radA","tan","SkewY","Multiply","args","len","arguments","ARGS","l","setMatrixValue","prototypeAccessors","isIdentity","is2D","Float64Array","Float32Array","toArray","pow","toJSON","assign","RX","RY","RZ","transformPoint","M","w","defineProperties","version","Version","path","$","isPrototypeOf","copyConstructorProperties","createNonEnumerableProperty","createPropertyDescriptor","clearErrorStack","installErrorCause","iterate","normalizeStringArgument","wellKnownSymbol","ERROR_STACK_INSTALLABLE","TO_STRING_TAG","$AggregateError","AggregateError","errors","isInstance","AggregateErrorPrototype","that","stack","errorsArray","getOwnPropertyDescriptor","redefine","setGlobal","isForced","TARGET","target","GLOBAL","STATIC","stat","FORCED","targetProperty","sourceProperty","descriptor","noTargetGet","forced","sham","check","it","DESCRIPTORS","propertyIsEnumerableModule","toIndexedObject","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","P","fails","exec","NATIVE_BIND","bind","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","bitmap","IndexedObject","requireObjectCoercible","uncurryThis","classof","FunctionPrototype","stringSlice","toPrimitive","isSymbol","argument","isObject","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","pref","exoticToPrim","isCallable","getBuiltIn","USE_SYMBOL_AS_UID","aFunction","namespace","NATIVE_SYMBOL","V8_VERSION","getOwnPropertySymbols","symbol","userAgent","Deno","v8","aCallable","func","tryToString","val","valueOf","shared","uid","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","IS_PURE","store","mode","copyright","license","SHARED","toObject","postfix","random","createElement","document","EXISTS","definePropertyModule","V8_PROTOTYPE_DEFINE_BUG","anObject","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","Attributes","current","inspectSource","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","functionToString","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","has","getterFor","TYPE","wmget","wmhas","wmset","metadata","facade","STATE","getDescriptor","PROPER","something","ownKeys","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","enumBugKeys","getOwnPropertyNames","names","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","index","toIntegerOrInfinity","integer","ceil","floor","number","toLength","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","toLowerCase","CORRECT_PROTOTYPE_GETTER","IE_PROTO","ObjectPrototype","aPossiblePrototype","CORRECT_SETTER","setter","proto","definePropertiesModule","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","write","temp","parentWindow","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","style","display","appendChild","src","contentWindow","open","NullProtoObject","ActiveXObject","domain","Properties","objectKeys","props","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","cause","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","unboundFunction","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","iterFn","step","condition","callFn","Iterators","ITERATOR","ArrayPrototype","usingIterator","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","kind","innerResult","innerError","$default","addToUnscopables","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","UNSCOPABLES","FunctionName","createIteratorConstructor","setToStringTag","IteratorsCore","PROPER_FUNCTION_NAME","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","entries","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CurrentIteratorPrototype","methods","KEY","ENUMERABLE_NEXT","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","TAG","NativePromise","redefineAll","setSpecies","anInstance","checkCorrectnessOfIteration","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","Queue","IS_BROWSER","IS_NODE","SPECIES","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newPromiseCapability","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","HANDLED","UNHANDLED","SUBCLASSING","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","isThenable","callReaction","reaction","ok","fail","exited","rejection","onHandleUnhandled","enter","exit","notify","isReject","notified","reactions","onUnhandled","event","initEvent","IS_UNHANDLED","isUnhandled","emit","parent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","add","$promiseResolve","counter","remaining","alreadyCalled","race","CONSTRUCTOR_NAME","Constructor","Prototype","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","aConstructor","defaultConstructor","S","isConstructor","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","arraySlice","validateArgumentsLength","IS_IOS","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","queue","ONREADYSTATECHANGE","location","defer","channel","run","runner","listener","post","host","nextTick","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","Reflect","passed","required","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","flush","head","last","toggle","node","createTextNode","observe","characterData","Pebble","promiseCapability","PromiseCapability","$$resolve","$$reject","tail","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","NON_GENERIC","real","onFinally","isFunction","STRING_ITERATOR","point","CONVERT_TO_STRING","position","size","codeAt","collection","collectionStrong","init","Map","InternalMetadataModule","inheritIfRequired","common","IS_MAP","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","uncurriedNativeMethod","REPLACE","getConstructor","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","setStrong","getOwnPropertyNamesExternalModule","isExtensible","FREEZING","METADATA","setMetadata","objectID","weakData","fastKey","getWeakData","onFreeze","meta","$getOwnPropertyNames","windowNames","getWindowNames","createProperty","end","fin","propertyKey","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","ArrayBuffer","preventExtensions","Wrapper","NewTarget","NewTargetPrototype","internalStateGetterFor","getEntry","previous","removed","callbackfn","boundFunction","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","Set","getBuiltin","regExpFlags","EvalError","RangeError","ReferenceError","SyntaxError","URIError","PerformanceMark","WebAssembly","CompileError","LinkError","RuntimeError","DOMException","MapPrototype","mapHas","mapGet","mapSet","setAdd","booleanValueOf","numberValueOf","stringValueOf","getFlags","getTime","PERFORMANCE_MARK","DATA_CLONE_ERROR","TRANSFERRING","checkBasicSemantic","structuredCloneImplementation","set1","set2","checkNewErrorsSemantic","nativeStructuredClone","FORCED_REPLACEMENT","structuredCloneFromMark","detail","nativeRestrictedStructuredClone","throwUncloneable","throwUnpolyfillable","structuredCloneInternal","deep","cloned","dataTransfer","RegExp","flags","byteOffset","DOMQuad","DataTransfer","items","files","ImageData","width","height","colorSpace","DataView","setUint8","getUint8","fromPoint","fromRect","clone","File","PROPER_TRANSFER","transfer","tryToTransfer","rawTransfer","transferredArray","transferred","canvas","OffscreenCanvas","getContext","transferFromImageBitmap","transferToImageBitmap","ignoreCase","multiline","dotAll","unicode","sticky","CIRCULAR_REF","EOF","Name","NameClosure","nameCache","nameValue","Cmd","CmdClosure","cmdCache","cmd","cmdValue","nonSerializable","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","key1","key2","key3","fetch","fetchAsync","getArray","getKeys","getRawValues","callback","emptyDict","dictArray","mergeSubDicts","mergedDict","properties","dict","subDict","RefClosure","refCache","refValue","RefSet","_set","put","remove","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","clearPrimitiveCaches","_clearCache","parseDocBaseUrl","href","BasePdfManager","_docId","_password","_docBaseUrl","pdfDocument","ensureXRef","catalog","manuallyTriggered","requestRange","begin","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","beginChunk","endChunk","curChunk","onReceiveProgressiveData","ensureByte","ensureRange","nextEmptyChunk","hasChunk","getByte","getBytes","forceClamped","strEnd","Uint8ClampedArray","getByteRange","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","getBaseStreams","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","groupedChunks","prevChunk","isProgressive","isDataLoaded","loadedRequests","lastChunk","onError","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","ParserEOFException","XRefEntryException","DocStats","_handler","_streamTypes","_fontTypes","_send","streamTypes","fontTypes","addStreamType","addFontType","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","lowerCase","romanBuf","romanStr","log2","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","positionPattern","component","parseInt","escapePDFName","substring","_collectJS","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","ident","weight","recoverJsURL","URL_OPEN_METHODS","regex","jsUrl","newWindow","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","skip","moveStart","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","_getInheritableProperty","merge","_getBoundingBox","bbox","box","mediaBox","cropBox","intersect","_onSubStreamError","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","annotation","mustBePrinted","loadResources","objectLoader","ObjectLoader","resources","load","contentStreamPromise","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","opLists","addOp","addOpList","getTextContent","viewBox","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","annotationsData","viewable","printable","annots","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","XRef","_pagePromises","_version","_globalIdFactory","Catalog","linearization","Linearization","startXRefLength","found","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","field","fetchIfRef","isSignature","isInvisible","template","datasets","config","connectionSet","localeSet","stylesheet","isEmpty","_","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","getAsync","fontRes","pdfFonts","initialState","fonts","fontName","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","encrypt","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","_getLinearizationPage","setActualNumPages","getAllPageDicts","pagesTree","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","allFields","fieldPromises","allPromises","catalogJsActions","fieldObjects","fieldObject","calculationOrder","ids","getXFAFontMap","factors","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","metrics","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","ArialMT","Arial","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","Helvetica","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","normalizeFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","currentCode","currentArray","newWidths","charUnicode","unicode1","unicode2","glyphIndex","widths","systemInfo","lineHeight","lineGap","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","getFontType","subtype","isStandardFont","recoverGlyphName","glyphsUnicodeMap","getUnicodeForGlyph","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","charCode","baseEncoding","isSymbolicFont","isInternalFont","baseEncodingName","getEncoding","StandardEncoding","differences","glyphName","getGlyphsUnicode","standardGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","charsLength","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","collectFields","_getPageIndex","createObjId","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","fetchIfRefAsync","annotDict","getRgbColor","color","defaultColor","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getQuadPoints","quadPoints","quadPointsLists","jj","quadPointsList","quadPoint","mX","MX","mY","MY","MAX_VALUE","MIN_VALUE","minX","maxX","minY","maxY","getTransformMatrix","matrix","getAxialAlignedBoundingBox","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setBorderAndBackgroundColors","_streams","appearance","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_fallbackFontDict","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","title","_title","contents","hasFlag","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","evaluator","isUsingOwnCanvas","appearanceDict","fallbackFontDict","strokeColor","fillColor","unshift","loopDict","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","pointsArray","points","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","annotationType","fieldValue","_decodeFormValue","defaultFieldValue","alternativeText","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","createCipherTransform","encryptString","_getSaveFieldResources","bufferOriginal","writeDict","bufferNew","isPassword","trim","lineCount","multiLine","defaultPadding","hPadding","totalHeight","totalWidth","_getFontData","_computeFontSize","fontSize","descent","vPadding","alignment","textAlignment","_getMultilineAppearance","encodedString","encodeString","comb","_getCombAppearance","renderedText","_renderText","_getTextWidth","text","charsToGlyphs","glyph","roundWithTwoDigits","LINE_FACTOR","textWidth","lines","cachedLines","line","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","numberOfLines","round","fontColor","createDefaultAppearance","shift","toFixed","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","combWidth","renderedComb","padding","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","exportValue","buttonValue","savedAppearance","_saveCheckbox","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","option","isOptionArray","displayValue","combo","multiSelect","numItems","multipleSelection","DEFAULT_ICON_SIZE","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","lineCoordinates","interiorColor","borderWidth","borderAdjust","controlPointsDistance","xMid","yMid","xOffset","yOffset","vertices","rawVertices","Infinity","vertex","inkLists","rawInkLists","inkList","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","operation","savedStatesDepth","EvaluatorPreprocessor","colorCmd","resizeRgbImage","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","localColorSpaceCache","parsedColorSpace","csName","csRef","localColorSpace","getByRef","getByName","cs","pdfFunctionFactory","_parse","_cache","cachedColorSpace","getCached","PatternCS","colorSpaces","resourcesCS","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","CalGrayCSClosure","A","AG","G","L","YW","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","MYA","MYB","MYC","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","N","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","TimeSlotManager","checked","CHECK_TIME_EVERY","endTime","TIME_SLOT_DURATION_MS","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","statusText","cMapData","compressionType","standardFontNameToFileName","getFontNameToFileMap","xobj","parseMarkedContentProps","optionalContent","group","groupOptions","isolated","knockout","groupSubtype","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","image","isInline","localImageCache","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","_pdfFunctionFactory","createImageData","getDocId","shouldCache","addDependency","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","buildFormXObject","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","dependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","createFontId","translateFont","translatedFont","fontType","stats","fontFile3","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseAsync","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","promiseBody","ready","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","buildPaintImageXObject","combinedGlyphs","arrLength","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","seenStyles","TextState","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","vmetric","scaledDim","wordSpacing","glyphUnicode","transf","enqueueChunk","batch","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","mcid","getPageObjId","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","toUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","diffEncoding","defaultEncoding","isNonsymbolicFont","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","codeStr","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","CMapFactory","useCMap","ucs2CMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getSerifFonts","search","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","fetchStandardFontData","newProperties","Font","baseFont","fontNameStr","baseFontStr","fontFile","glyphScaleFactors","subtypeEntry","length1","length2","length3","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","gStateKey","stateStack","old","parser","Parser","lexer","Lexer","opMap","nonProcessedArgs","_numInvalidPathOPS","getObj","opSpec","numArgs","argsLength","variableArgs","MAX_INVALID_PATH_OPS","preprocessCommand","getOPMap","J","ri","gs","Q","cm","re","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","fa","fal","fals","nu","nul","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","readSigned","readHex","readHexNumber","sp","bufferSize","readHexSigned","readString","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","embeddedUseCMap","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","isIdentityCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","allowStreams","imageCache","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictLength","beginInlineImagePos","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheEntry","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","xrefStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","streams","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","decodeInteger","contextCache","procedure","contexts","readBits","bit","readBit","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","_isColorConversionNeeded","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","parseCodestream","headerSize","lbox","tbox","jumpDataLength","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustToUnicode","amend","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","matchesForCache","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","extraProperties","exportDataProperties","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","NaN","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","mapping","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","possibleSpaceReplacements","_charToGlyph","widthCode","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParserClosure","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","stack_div","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","pair","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","valueLength","setByName","layout","CFFTopDictClosure","createTables","CFFPrivateDictClosure","CFFOffsetTracker","isTracking","track","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler_add","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","Courier","ZapfDingbats","ArialNarrow","ArialBlack","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","H","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","getSize","totalSize","setUint32","setUint16","locaIndex","composites","spos","factor","xMiddle","GlyphHeader","CompositeGlyph","SimpleGlyph","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","lastX","lastY","endPt","numberOfPt","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","tablesNames","tableName","tableOffsets","paddedLength","quad","entriesCount","entrySize","maxPower2","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","Type1CharString","Type1CharStringClosure","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1ParserClosure","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","makeHexColor","background","SMALL_NUMBER","r0","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","hasData","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","TRIANGLE_DENSITY","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","inputSize","encode","samples","getSampleArray","constructSampledFn","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fnRefs","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","initialStack","MAX_STACK_SIZE","copy","roll","atan","LN10","PostScriptCompilerClosure","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opValue","opCache","getOperator","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","_refCache","imageData","MIN_IMAGES_TO_CACHE","_byteSize","MAX_BYTE_SIZE","pageIndexSet","NUM_PAGES_THRESHOLD","_cacheLimitReached","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addState","parentState","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","iFirstPIMXO","InitialState","iterateInlineImageGroup","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","streamSink","_streamSink","optimizer","_totalLength","_resolved","CHUNK_SIZE","CHUNK_SIZE_ABOUT","_transfers","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","newArray","imageLength","maybeUndoPreblend","smaskData","maskData","computedLength","haveFullData","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","streamRef","encryptMetadata","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","pagesObj","_readDocumentOutline","blackColor","outlineDict","outlineItem","unsafeUrl","permissions","_readPermissions","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","_readDests","dests","NameTree","getAll","getDestination","allDest","destinations","_readPageLabels","pageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","addPageDict","addPageError","posInKids","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","namedAction","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","contentAvailable","_filename","contentRef","fileObj","_repair","SimpleXMLParser","lowerCaseName","xmlDocument","parseFromString","_metadataMap","_data","d2","d3","_getSequence","nodeName","childNodes","_parseArray","hasChildNodes","seqNode","rdf","documentElement","firstChild","nextSibling","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","child","searchNode","paths","siblingPos","dump","attribute","hasAttributes","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","role","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","writeValue","writeStream","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","updateXFA","oldXfa","newXfa","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","XFAParser","_createDocument","binder","Binder","form","dataHandler","DataHandler","$globalData","_createPagesHelper","$toPages","nextIteration","pages","dims","_createPages","fontFinder","FontFinder","usedTypefaces","typeface","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","dumped","HTMLResult","EMPTY","availableSpace","failingNode","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","dataWindow","somCache","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","acc","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","_findDataByNameToConsume","isValue","_setProperties","setProperty","connection","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","getContainedChildren","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","SubformSet","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","class","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","thickness","arc","xmlns","overflow","cx","cy","largeArc","vectorEffect","preserveAspectRatio","svg","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","FAILURE","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","dateTime","decimal","exData","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","Filter","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","orientation","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","bgColor","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","hasSomething","hasSomethingCounter","targetPageArea","htmlContentAreas","findIndex","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","nullTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","isNsAgnostic","nsPrefix","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","uri","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","viewerPreferences","Pdfa","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","Xdc","Xdp","packets","Xsl","debug","Zpl","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","namespaceId","xrefstms","_cacheMap","_pendingRefs","_newRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","readToken","skipUntil","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","updateEntries","checkPos","tokenStr","objToken","xrefTagOffset","pagesDict","pagesCount","startXRefParsedCache","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}
|