version: 0.10.2 md5: 2e80ff35027fc4a72e9dcd9e8b15a27b
version: 1.7.0 md5: 4156d02939ebfd3929b53dcc61d69cd1
version: 1.9.1-beta.1 md5: 2dbef3db9a98239079c47dd1a4dc8867
version: 0.10.2 md5: 2e80ff35027fc4a72e9dcd9e8b15a27b
version: 1.7.0 md5: 4156d02939ebfd3929b53dcc61d69cd1
version: 1.9.1-beta.1 md5: 2dbef3db9a98239079c47dd1a4dc8867
| -----BEGIN CERTIFICATE----- | |
| MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB | |
| iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl | |
| cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV | |
| BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx | |
| MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV | |
| BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE | |
| ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g | |
| VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC | |
| AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N |
PathKit's docs are out of date, and changes in Webpack 5 mean that their installation instructions don't work
Install the following from NPM:
Make sure your Webpack config has the following:
| Game Builder Garage texture palette as hex rgba | |
| // transparent | |
| #00000000 | |
| // grays | |
| #ffffffff | |
| #edededff | |
| #d9d9d9ff | |
| #b5b5b5ff |
| // makes use of tagged template literals | |
| const compileTemplate = (strings: TemplateStringsArray, ...expr: string[]) => { | |
| return (replacements: Record<string, any>) => { | |
| // convert ${'whatever'} instances to array of values | |
| const values = expr.map(key => replacements[key] ?? key); | |
| // rebuild string with replaced values | |
| return strings.reduce((result, part, i) => result + part + (values[i] ?? ''), ''); | |
| } | |
| } | |
| /** | |
| * // hash content | |
| * // content must be an uint8 typed array | |
| * const hash = new Sha256(); | |
| * hash.update(content) | |
| * // get digest as uint8 typed array | |
| * const digest = hash.digest(); | |
| * // or get digest as hex string | |
| * const hex = hash.hexDigest(); | |
| */ |
| const POLYNOMIAL = -306674912; | |
| let crc32_table: Int32Array = undefined; | |
| export function Crc32(bytes: Uint8Array, crc=0xFFFFFFFF) { | |
| if (crc32_table === undefined) | |
| calcTable(); | |
| for (let i = 0; i < bytes.length; ++i) | |
| crc = crc32_table[(crc ^ bytes[i]) & 0xff] ^ (crc >>> 8); | |
| return (crc ^ -1) >>> 0; |
| /** | |
| * // hash content | |
| * // content must be an uint8 typed array | |
| * const hash = new Sha1(); | |
| * hash.update(content) | |
| * // get digest as uint8 typed array | |
| * const digest = hash.digest(); | |
| * // or get digest as hex string | |
| * const hex = hash.hexDigest(); | |
| */ |
| <?php | |
| function decode_filename(string $filename) | |
| { | |
| $bytes = base32_decode($filename); | |
| // Convert to byte string | |
| $bin = join('', array_map('chr', $bytes)); | |
| // Unpack data | |
| // Hex FSID (9 bytes, 18 chars) | Creation timestamp (uint32) | Modified timestamp (uint32) | |
| return unpack('H18fsid/Vcreated/Vmodified', $bin); |