@dan-uni/dan-any 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +225 -352
- package/dist/index.min.js +225 -352
- package/dist/index.umd.min.js +228 -354
- package/dist/src/index.d.ts +15 -41
- package/package.json +5 -5
- package/src/ass-gen/ass/create.ts +2 -2
- package/src/ass-gen/ass/raw.ts +19 -19
- package/src/index.test.ts +19 -12
- package/src/index.ts +100 -130
- package/src/proto/gen/bili/dm_pb.ts +1 -1
- package/src/proto/gen/danuni_pb.ts +1 -1
- package/src/utils/dm-gen.test.ts +3 -3
- package/src/utils/dm-gen.ts +30 -31
package/dist/index.min.js
CHANGED
|
@@ -11500,7 +11500,7 @@ __webpack_require__.d(dm_gen_namespaceObject, {
|
|
|
11500
11500
|
Pools: ()=>dm_gen_Pools,
|
|
11501
11501
|
UniDM: ()=>UniDM
|
|
11502
11502
|
});
|
|
11503
|
-
var package_namespaceObject = JSON.parse('{"u2":"@dan-uni/dan-any","i8":"0.9.
|
|
11503
|
+
var package_namespaceObject = JSON.parse('{"u2":"@dan-uni/dan-any","i8":"0.9.4","e8":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
|
|
11504
11504
|
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
11505
11505
|
const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
|
|
11506
11506
|
const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
|
|
@@ -11623,7 +11623,8 @@ var dm_gen_DMAttr = /*#__PURE__*/ function(DMAttr) {
|
|
|
11623
11623
|
}({});
|
|
11624
11624
|
const DMAttrUtils = {
|
|
11625
11625
|
fromBin (bin = 0, format) {
|
|
11626
|
-
const array = toBits(bin)
|
|
11626
|
+
const array = toBits(bin);
|
|
11627
|
+
const attr = [];
|
|
11627
11628
|
if ('bili' === format) {
|
|
11628
11629
|
if (array[0]) attr.push("Protect");
|
|
11629
11630
|
if (array[1]) attr.push("FromLive");
|
|
@@ -11751,7 +11752,8 @@ class UniDM {
|
|
|
11751
11752
|
isSameAs(dan, options) {
|
|
11752
11753
|
if (4 === this.mode || 4 === dan.mode) return false;
|
|
11753
11754
|
if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
|
|
11754
|
-
const isSame = (k)=>this[k] === dan[k]
|
|
11755
|
+
const isSame = (k)=>this[k] === dan[k];
|
|
11756
|
+
const checks = [
|
|
11755
11757
|
'SOID',
|
|
11756
11758
|
'content',
|
|
11757
11759
|
'mode',
|
|
@@ -11761,9 +11763,11 @@ class UniDM {
|
|
|
11761
11763
|
return checks;
|
|
11762
11764
|
}
|
|
11763
11765
|
minify() {
|
|
11764
|
-
const def = UniDM.create()
|
|
11766
|
+
const def = UniDM.create();
|
|
11767
|
+
const dan = UniDM.create(this);
|
|
11765
11768
|
for(const key in dan){
|
|
11766
|
-
const k = key
|
|
11769
|
+
const k = key;
|
|
11770
|
+
const v = dan[k];
|
|
11767
11771
|
if ('SOID' !== key) if (v) if (v === def[k]) delete dan[k];
|
|
11768
11772
|
else {
|
|
11769
11773
|
if ('attr' === k && Array.isArray(v) && 0 === v.length) delete dan[k];
|
|
@@ -11868,13 +11872,15 @@ class UniDM {
|
|
|
11868
11872
|
if (args.oid && !cid) cid = args.oid;
|
|
11869
11873
|
const SOID = recSOID || `def_${platform_PlatformVideoSource.Bilibili}+${id_gen_UniID.fromBili({
|
|
11870
11874
|
cid
|
|
11871
|
-
})}
|
|
11875
|
+
})}`;
|
|
11876
|
+
const senderID = isEmail(args.midHash, {
|
|
11872
11877
|
require_tld: false
|
|
11873
11878
|
}) ? args.midHash : id_gen_UniID.fromBili({
|
|
11874
11879
|
midHash: args.midHash
|
|
11875
11880
|
});
|
|
11876
11881
|
let mode = 0;
|
|
11877
|
-
const pool = args.pool
|
|
11882
|
+
const pool = args.pool;
|
|
11883
|
+
const extra = {
|
|
11878
11884
|
bili: {
|
|
11879
11885
|
mode: args.mode,
|
|
11880
11886
|
pool: args.pool,
|
|
@@ -11977,7 +11983,8 @@ class UniDM {
|
|
|
11977
11983
|
if (args.oid && !cid) cid = args.oid;
|
|
11978
11984
|
const SOID = `def_${platform_PlatformVideoSource.Bilibili}+${id_gen_UniID.fromBili({
|
|
11979
11985
|
cid
|
|
11980
|
-
})}
|
|
11986
|
+
})}`;
|
|
11987
|
+
const senderID = id_gen_UniID.fromBili({
|
|
11981
11988
|
mid: args.mid
|
|
11982
11989
|
});
|
|
11983
11990
|
return this.create({
|
|
@@ -12000,7 +12007,8 @@ class UniDM {
|
|
|
12000
12007
|
}, options);
|
|
12001
12008
|
}
|
|
12002
12009
|
static fromDplayer(args, playerID, domain, options) {
|
|
12003
|
-
const SOID = id_gen_UniID.fromUnknown(playerID, domain)
|
|
12010
|
+
const SOID = id_gen_UniID.fromUnknown(playerID, domain);
|
|
12011
|
+
const senderID = id_gen_UniID.fromUnknown(args.midHash, domain);
|
|
12004
12012
|
return this.create({
|
|
12005
12013
|
...args,
|
|
12006
12014
|
SOID: SOID.toString(),
|
|
@@ -12022,7 +12030,8 @@ class UniDM {
|
|
|
12022
12030
|
};
|
|
12023
12031
|
}
|
|
12024
12032
|
static fromArtplayer(args, playerID, domain, options) {
|
|
12025
|
-
const SOID = id_gen_UniID.fromUnknown(playerID, domain)
|
|
12033
|
+
const SOID = id_gen_UniID.fromUnknown(playerID, domain);
|
|
12034
|
+
const senderID = id_gen_UniID.fromUnknown('', domain);
|
|
12026
12035
|
let extra = args.border ? {
|
|
12027
12036
|
artplayer: {
|
|
12028
12037
|
border: args.border,
|
|
@@ -12313,126 +12322,36 @@ class UniPool {
|
|
|
12313
12322
|
color: isShared('color') ? this.dans[0].color : void 0
|
|
12314
12323
|
};
|
|
12315
12324
|
}
|
|
12316
|
-
|
|
12317
|
-
const
|
|
12318
|
-
|
|
12319
|
-
|
|
12320
|
-
|
|
12321
|
-
|
|
12322
|
-
|
|
12323
|
-
|
|
12324
|
-
|
|
12325
|
-
|
|
12326
|
-
|
|
12327
|
-
},
|
|
12328
|
-
{
|
|
12329
|
-
val: dm_gen_Modes.Top,
|
|
12330
|
-
count: 0
|
|
12331
|
-
},
|
|
12332
|
-
{
|
|
12333
|
-
val: dm_gen_Modes.Reverse,
|
|
12334
|
-
count: 0
|
|
12335
|
-
},
|
|
12336
|
-
{
|
|
12337
|
-
val: dm_gen_Modes.Ext,
|
|
12338
|
-
count: 0
|
|
12339
|
-
}
|
|
12340
|
-
],
|
|
12341
|
-
fontsize: [],
|
|
12342
|
-
color: [],
|
|
12343
|
-
senderID: [],
|
|
12344
|
-
content: [],
|
|
12345
|
-
weight: [],
|
|
12346
|
-
pool: [
|
|
12347
|
-
{
|
|
12348
|
-
val: dm_gen_Pools.Def,
|
|
12349
|
-
count: 0
|
|
12350
|
-
},
|
|
12351
|
-
{
|
|
12352
|
-
val: dm_gen_Pools.Sub,
|
|
12353
|
-
count: 0
|
|
12354
|
-
},
|
|
12355
|
-
{
|
|
12356
|
-
val: dm_gen_Pools.Adv,
|
|
12357
|
-
count: 0
|
|
12358
|
-
},
|
|
12359
|
-
{
|
|
12360
|
-
val: dm_gen_Pools.Ix,
|
|
12361
|
-
count: 0
|
|
12362
|
-
}
|
|
12363
|
-
],
|
|
12364
|
-
platform: []
|
|
12365
|
-
};
|
|
12366
|
-
const stat = this.dans.reduce((s, d)=>{
|
|
12367
|
-
const SOID = s.SOID.find((i)=>i.val === d.SOID);
|
|
12368
|
-
if (SOID) SOID.count++;
|
|
12369
|
-
else s.SOID.push({
|
|
12370
|
-
val: d.SOID,
|
|
12371
|
-
count: 1
|
|
12372
|
-
});
|
|
12373
|
-
const mode = s.mode.find((i)=>i.val === d.mode);
|
|
12374
|
-
if (mode) mode.count++;
|
|
12375
|
-
else s.mode.push({
|
|
12376
|
-
val: d.mode,
|
|
12377
|
-
count: 1
|
|
12378
|
-
});
|
|
12379
|
-
const fontsize = s.fontsize.find((i)=>i.val === d.fontsize);
|
|
12380
|
-
if (fontsize) fontsize.count++;
|
|
12381
|
-
else s.fontsize.push({
|
|
12382
|
-
val: d.fontsize,
|
|
12383
|
-
count: 1
|
|
12384
|
-
});
|
|
12385
|
-
const color = s.color.find((i)=>i.val === d.color);
|
|
12386
|
-
if (color) color.count++;
|
|
12387
|
-
else s.color.push({
|
|
12388
|
-
val: d.color,
|
|
12389
|
-
count: 1
|
|
12390
|
-
});
|
|
12391
|
-
const senderID = s.senderID.find((i)=>i.val === d.senderID);
|
|
12392
|
-
if (senderID) senderID.count++;
|
|
12393
|
-
else s.senderID.push({
|
|
12394
|
-
val: d.senderID,
|
|
12395
|
-
count: 1
|
|
12396
|
-
});
|
|
12397
|
-
const content = s.content.find((i)=>i.val === d.content);
|
|
12398
|
-
if (content) content.count++;
|
|
12399
|
-
else s.content.push({
|
|
12400
|
-
val: d.content,
|
|
12401
|
-
count: 1
|
|
12402
|
-
});
|
|
12403
|
-
const weight = s.weight.find((i)=>i.val === d.weight);
|
|
12404
|
-
if (weight) weight.count++;
|
|
12405
|
-
else s.weight.push({
|
|
12406
|
-
val: d.weight,
|
|
12407
|
-
count: 1
|
|
12408
|
-
});
|
|
12409
|
-
const pool = s.pool.find((i)=>i.val === d.pool);
|
|
12410
|
-
if (pool) pool.count++;
|
|
12411
|
-
else s.pool.push({
|
|
12412
|
-
val: d.pool,
|
|
12413
|
-
count: 1
|
|
12414
|
-
});
|
|
12415
|
-
const platform = s.platform.find((i)=>i.val === d.platform);
|
|
12416
|
-
if (platform) platform.count++;
|
|
12417
|
-
else s.platform.push({
|
|
12418
|
-
val: d.platform,
|
|
12325
|
+
getShared(key) {
|
|
12326
|
+
const isShared = (key)=>this.dans.every((d)=>d[key]);
|
|
12327
|
+
return isShared(key) ? this.dans[0][key] : void 0;
|
|
12328
|
+
}
|
|
12329
|
+
getStat(key) {
|
|
12330
|
+
const default_stat = [];
|
|
12331
|
+
const stats = this.dans.reduce((stat, dan)=>{
|
|
12332
|
+
const valWithCount = stat.find((i)=>i.val === dan[key]);
|
|
12333
|
+
if (valWithCount) valWithCount.count++;
|
|
12334
|
+
else stat.push({
|
|
12335
|
+
val: dan[key],
|
|
12419
12336
|
count: 1
|
|
12420
12337
|
});
|
|
12421
|
-
return
|
|
12338
|
+
return stat;
|
|
12422
12339
|
}, default_stat);
|
|
12423
|
-
return
|
|
12340
|
+
return stats;
|
|
12341
|
+
}
|
|
12342
|
+
getMost(key) {
|
|
12343
|
+
return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
|
|
12424
12344
|
}
|
|
12425
12345
|
get most() {
|
|
12426
|
-
const s = this.stat;
|
|
12427
12346
|
return {
|
|
12428
|
-
mode:
|
|
12429
|
-
fontsize:
|
|
12430
|
-
color:
|
|
12431
|
-
senderID:
|
|
12432
|
-
content:
|
|
12433
|
-
weight:
|
|
12434
|
-
pool:
|
|
12435
|
-
platform:
|
|
12347
|
+
mode: this.getMost('mode').val,
|
|
12348
|
+
fontsize: this.getMost('fontsize').val,
|
|
12349
|
+
color: this.getMost('color').val,
|
|
12350
|
+
senderID: this.getMost('senderID').val,
|
|
12351
|
+
content: this.getMost('content').val,
|
|
12352
|
+
weight: this.getMost('weight').val,
|
|
12353
|
+
pool: this.getMost('pool').val,
|
|
12354
|
+
platform: this.getMost('platform').val
|
|
12436
12355
|
};
|
|
12437
12356
|
}
|
|
12438
12357
|
static create(options) {
|
|
@@ -12556,7 +12475,8 @@ class UniPool {
|
|
|
12556
12475
|
'platform',
|
|
12557
12476
|
'pool'
|
|
12558
12477
|
].map((k)=>danmaku[k]).join('|');
|
|
12559
|
-
const extra = result[i].extra
|
|
12478
|
+
const extra = result[i].extra;
|
|
12479
|
+
const mergeData = mergeObj[key];
|
|
12560
12480
|
result[i].extraStr = src_JSON.stringify({
|
|
12561
12481
|
...extra,
|
|
12562
12482
|
danuni: {
|
|
@@ -12585,7 +12505,12 @@ class UniPool {
|
|
|
12585
12505
|
minify() {
|
|
12586
12506
|
return this.dans.map((d)=>d.minify());
|
|
12587
12507
|
}
|
|
12588
|
-
static import(file, options) {
|
|
12508
|
+
static import(file, options, mod) {
|
|
12509
|
+
if (!mod) mod = [
|
|
12510
|
+
'json',
|
|
12511
|
+
'str',
|
|
12512
|
+
'bin'
|
|
12513
|
+
];
|
|
12589
12514
|
const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
|
|
12590
12515
|
const parseJSON = (json)=>{
|
|
12591
12516
|
try {
|
|
@@ -12608,61 +12533,66 @@ class UniPool {
|
|
|
12608
12533
|
} catch {}
|
|
12609
12534
|
};
|
|
12610
12535
|
const parseStr = (file)=>{
|
|
12611
|
-
try {
|
|
12536
|
+
if (mod.includes('json')) try {
|
|
12612
12537
|
if (isJSON(file)) {
|
|
12613
12538
|
const json = src_JSON.parse(file);
|
|
12614
12539
|
return parseJSON(json);
|
|
12615
12540
|
}
|
|
12616
12541
|
} catch {}
|
|
12617
|
-
|
|
12618
|
-
|
|
12619
|
-
|
|
12620
|
-
|
|
12621
|
-
|
|
12622
|
-
|
|
12623
|
-
|
|
12624
|
-
|
|
12625
|
-
|
|
12626
|
-
|
|
12627
|
-
|
|
12628
|
-
|
|
12629
|
-
|
|
12630
|
-
|
|
12631
|
-
|
|
12632
|
-
|
|
12542
|
+
if (mod.includes('str')) {
|
|
12543
|
+
try {
|
|
12544
|
+
const xmlParser = new XMLParser({
|
|
12545
|
+
ignoreAttributes: false
|
|
12546
|
+
});
|
|
12547
|
+
const xml = xmlParser.parse(file);
|
|
12548
|
+
if (xml?.i?.d) return {
|
|
12549
|
+
pool: this.fromBiliXML(file, options),
|
|
12550
|
+
fmt: 'bili.xml'
|
|
12551
|
+
};
|
|
12552
|
+
} catch {}
|
|
12553
|
+
try {
|
|
12554
|
+
return {
|
|
12555
|
+
pool: this.fromASS(file, options),
|
|
12556
|
+
fmt: 'common.ass'
|
|
12557
|
+
};
|
|
12558
|
+
} catch {}
|
|
12559
|
+
}
|
|
12633
12560
|
};
|
|
12634
12561
|
let errmesg;
|
|
12635
|
-
if (isObject(file))
|
|
12636
|
-
|
|
12637
|
-
|
|
12638
|
-
|
|
12639
|
-
|
|
12640
|
-
|
|
12641
|
-
|
|
12642
|
-
|
|
12643
|
-
|
|
12644
|
-
|
|
12645
|
-
|
|
12646
|
-
|
|
12647
|
-
|
|
12648
|
-
|
|
12649
|
-
|
|
12650
|
-
|
|
12651
|
-
|
|
12652
|
-
|
|
12653
|
-
|
|
12654
|
-
|
|
12655
|
-
|
|
12656
|
-
|
|
12657
|
-
|
|
12658
|
-
|
|
12659
|
-
|
|
12660
|
-
|
|
12661
|
-
|
|
12662
|
-
|
|
12663
|
-
|
|
12664
|
-
|
|
12665
|
-
|
|
12562
|
+
if (isObject(file)) {
|
|
12563
|
+
if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
|
|
12564
|
+
if (mod.includes('bin')) {
|
|
12565
|
+
try {
|
|
12566
|
+
return {
|
|
12567
|
+
pool: this.fromPb(file),
|
|
12568
|
+
fmt: 'danuni.pb.bin'
|
|
12569
|
+
};
|
|
12570
|
+
} catch {}
|
|
12571
|
+
try {
|
|
12572
|
+
return {
|
|
12573
|
+
pool: this.fromBiliGrpc(file),
|
|
12574
|
+
fmt: 'bili.pb.bin'
|
|
12575
|
+
};
|
|
12576
|
+
} catch {}
|
|
12577
|
+
try {
|
|
12578
|
+
return {
|
|
12579
|
+
pool: this.fromBiliCommandGrpc(file),
|
|
12580
|
+
fmt: 'bili.cmd.pb.bin'
|
|
12581
|
+
};
|
|
12582
|
+
} catch {}
|
|
12583
|
+
}
|
|
12584
|
+
try {
|
|
12585
|
+
const fileStr = new TextDecoder().decode(file);
|
|
12586
|
+
const prStr = parseStr(fileStr);
|
|
12587
|
+
if (prStr) return prStr;
|
|
12588
|
+
errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
|
|
12589
|
+
} catch {}
|
|
12590
|
+
} else if (mod.includes('json')) {
|
|
12591
|
+
const prJSON = parseJSON(file);
|
|
12592
|
+
if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
|
|
12593
|
+
return prJSON;
|
|
12594
|
+
}
|
|
12595
|
+
} else if (isString(file)) {
|
|
12666
12596
|
const prStr = parseStr(file);
|
|
12667
12597
|
if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
|
|
12668
12598
|
return prStr;
|
|
@@ -12727,9 +12657,14 @@ class UniPool {
|
|
|
12727
12657
|
static fromBiliXML(xml, options) {
|
|
12728
12658
|
const parser = new XMLParser({
|
|
12729
12659
|
ignoreAttributes: false
|
|
12730
|
-
})
|
|
12660
|
+
});
|
|
12661
|
+
const oriData = parser.parse(xml);
|
|
12662
|
+
const dans = oriData.i.d;
|
|
12663
|
+
const fromConverted = !!oriData.danuni;
|
|
12664
|
+
const cid = BigInt(oriData.i.chatid);
|
|
12731
12665
|
return new UniPool(dans.map((d)=>{
|
|
12732
|
-
const p_str = d['@_p']
|
|
12666
|
+
const p_str = d['@_p'];
|
|
12667
|
+
const p_arr = p_str.split(',');
|
|
12733
12668
|
return UniDM.fromBili({
|
|
12734
12669
|
content: d['#text'],
|
|
12735
12670
|
progress: Number.parseFloat(p_arr[0]),
|
|
@@ -12784,14 +12719,16 @@ class UniPool {
|
|
|
12784
12719
|
});
|
|
12785
12720
|
}
|
|
12786
12721
|
static fromBiliGrpc(bin, options) {
|
|
12787
|
-
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin))
|
|
12722
|
+
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin));
|
|
12723
|
+
const json = data.elems;
|
|
12788
12724
|
return new UniPool(json.map((d)=>UniDM.fromBili({
|
|
12789
12725
|
...d,
|
|
12790
12726
|
progress: d.progress / 1000
|
|
12791
12727
|
}, d.oid, options)), options);
|
|
12792
12728
|
}
|
|
12793
12729
|
static fromBiliCommandGrpc(bin, options) {
|
|
12794
|
-
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin))
|
|
12730
|
+
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin));
|
|
12731
|
+
const json = data.commandDms;
|
|
12795
12732
|
return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
|
|
12796
12733
|
}
|
|
12797
12734
|
static fromDplayer(json, playerID, domain = 'other', options) {
|
|
@@ -13199,7 +13136,8 @@ var raw_Buffer = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node
|
|
|
13199
13136
|
const compressTypes = [
|
|
13200
13137
|
'brotli',
|
|
13201
13138
|
'gzip'
|
|
13202
|
-
]
|
|
13139
|
+
];
|
|
13140
|
+
const baseTypes = [
|
|
13203
13141
|
'base64',
|
|
13204
13142
|
'base18384'
|
|
13205
13143
|
];
|
|
@@ -13213,19 +13151,25 @@ function raw_raw(list, config, context, compressType = 'brotli', baseType = 'bas
|
|
|
13213
13151
|
list,
|
|
13214
13152
|
config,
|
|
13215
13153
|
context
|
|
13216
|
-
}
|
|
13154
|
+
};
|
|
13155
|
+
const rawText = JSON.stringify(raw1);
|
|
13217
13156
|
let compress;
|
|
13218
13157
|
compress = 'brotli' === compressType ? (0, lib.brotliCompressSync)(rawText) : (0, lib.gzipSync)(rawText);
|
|
13219
13158
|
return `;RawCompressType: ${compressType}\n;RawBaseType: ${baseType}\n;Raw: ${'base64' === baseType ? compress.toString('base64') : fromUint16Array(external_base16384_encode(compress))}`;
|
|
13220
13159
|
}
|
|
13221
13160
|
function deRaw(ass) {
|
|
13222
|
-
const arr = ass.split('\n')
|
|
13161
|
+
const arr = ass.split('\n');
|
|
13162
|
+
const lineCompressType = arr.find((line)=>line.startsWith(';RawCompressType:'));
|
|
13163
|
+
const lineBaseType = arr.find((line)=>line.startsWith(';RawBaseType:'));
|
|
13164
|
+
const lineRaw = arr.find((line)=>line.startsWith(';Raw:'));
|
|
13223
13165
|
if (!lineCompressType || !lineBaseType || !lineRaw) return;
|
|
13224
13166
|
{
|
|
13225
|
-
let compressType = lineCompressType.replace(';RawCompressType: ', '').trim()
|
|
13167
|
+
let compressType = lineCompressType.replace(';RawCompressType: ', '').trim();
|
|
13168
|
+
let baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
|
|
13226
13169
|
if (!compressTypes.includes(compressType)) compressType = 'gzip';
|
|
13227
13170
|
if (!baseTypes.includes(baseType)) baseType = 'base64';
|
|
13228
|
-
const text = lineRaw.replace(';Raw: ', '').trim()
|
|
13171
|
+
const text = lineRaw.replace(';Raw: ', '').trim();
|
|
13172
|
+
const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(decode(raw_Buffer.from(text, 'utf-8').toString('utf-8')));
|
|
13229
13173
|
let decompress;
|
|
13230
13174
|
decompress = 'brotli' === compressType ? (0, lib.brotliDecompressSync)(buffer) : (0, lib.gunzipSync)(buffer);
|
|
13231
13175
|
try {
|
|
@@ -13280,7 +13224,8 @@ const ass_create = (list, rawList, config, context = {
|
|
|
13280
13224
|
filename: 'unknown',
|
|
13281
13225
|
title: 'unknown'
|
|
13282
13226
|
}, rawConfig)=>{
|
|
13283
|
-
const Elist = UniPool2DanmakuLists(list)
|
|
13227
|
+
const Elist = UniPool2DanmakuLists(list);
|
|
13228
|
+
const ErawList = UniPool2DanmakuLists(rawList);
|
|
13284
13229
|
const content = [
|
|
13285
13230
|
ass_info(config, context),
|
|
13286
13231
|
style(config),
|
|
@@ -13373,126 +13318,36 @@ class src_UniPool {
|
|
|
13373
13318
|
color: isShared('color') ? this.dans[0].color : void 0
|
|
13374
13319
|
};
|
|
13375
13320
|
}
|
|
13376
|
-
|
|
13377
|
-
const
|
|
13378
|
-
|
|
13379
|
-
|
|
13380
|
-
|
|
13381
|
-
|
|
13382
|
-
|
|
13383
|
-
|
|
13384
|
-
|
|
13385
|
-
|
|
13386
|
-
|
|
13387
|
-
},
|
|
13388
|
-
{
|
|
13389
|
-
val: dm_gen_Modes.Top,
|
|
13390
|
-
count: 0
|
|
13391
|
-
},
|
|
13392
|
-
{
|
|
13393
|
-
val: dm_gen_Modes.Reverse,
|
|
13394
|
-
count: 0
|
|
13395
|
-
},
|
|
13396
|
-
{
|
|
13397
|
-
val: dm_gen_Modes.Ext,
|
|
13398
|
-
count: 0
|
|
13399
|
-
}
|
|
13400
|
-
],
|
|
13401
|
-
fontsize: [],
|
|
13402
|
-
color: [],
|
|
13403
|
-
senderID: [],
|
|
13404
|
-
content: [],
|
|
13405
|
-
weight: [],
|
|
13406
|
-
pool: [
|
|
13407
|
-
{
|
|
13408
|
-
val: dm_gen_Pools.Def,
|
|
13409
|
-
count: 0
|
|
13410
|
-
},
|
|
13411
|
-
{
|
|
13412
|
-
val: dm_gen_Pools.Sub,
|
|
13413
|
-
count: 0
|
|
13414
|
-
},
|
|
13415
|
-
{
|
|
13416
|
-
val: dm_gen_Pools.Adv,
|
|
13417
|
-
count: 0
|
|
13418
|
-
},
|
|
13419
|
-
{
|
|
13420
|
-
val: dm_gen_Pools.Ix,
|
|
13421
|
-
count: 0
|
|
13422
|
-
}
|
|
13423
|
-
],
|
|
13424
|
-
platform: []
|
|
13425
|
-
};
|
|
13426
|
-
const stat = this.dans.reduce((s, d)=>{
|
|
13427
|
-
const SOID = s.SOID.find((i)=>i.val === d.SOID);
|
|
13428
|
-
if (SOID) SOID.count++;
|
|
13429
|
-
else s.SOID.push({
|
|
13430
|
-
val: d.SOID,
|
|
13431
|
-
count: 1
|
|
13432
|
-
});
|
|
13433
|
-
const mode = s.mode.find((i)=>i.val === d.mode);
|
|
13434
|
-
if (mode) mode.count++;
|
|
13435
|
-
else s.mode.push({
|
|
13436
|
-
val: d.mode,
|
|
13437
|
-
count: 1
|
|
13438
|
-
});
|
|
13439
|
-
const fontsize = s.fontsize.find((i)=>i.val === d.fontsize);
|
|
13440
|
-
if (fontsize) fontsize.count++;
|
|
13441
|
-
else s.fontsize.push({
|
|
13442
|
-
val: d.fontsize,
|
|
13443
|
-
count: 1
|
|
13444
|
-
});
|
|
13445
|
-
const color = s.color.find((i)=>i.val === d.color);
|
|
13446
|
-
if (color) color.count++;
|
|
13447
|
-
else s.color.push({
|
|
13448
|
-
val: d.color,
|
|
13449
|
-
count: 1
|
|
13450
|
-
});
|
|
13451
|
-
const senderID = s.senderID.find((i)=>i.val === d.senderID);
|
|
13452
|
-
if (senderID) senderID.count++;
|
|
13453
|
-
else s.senderID.push({
|
|
13454
|
-
val: d.senderID,
|
|
13455
|
-
count: 1
|
|
13456
|
-
});
|
|
13457
|
-
const content = s.content.find((i)=>i.val === d.content);
|
|
13458
|
-
if (content) content.count++;
|
|
13459
|
-
else s.content.push({
|
|
13460
|
-
val: d.content,
|
|
13461
|
-
count: 1
|
|
13462
|
-
});
|
|
13463
|
-
const weight = s.weight.find((i)=>i.val === d.weight);
|
|
13464
|
-
if (weight) weight.count++;
|
|
13465
|
-
else s.weight.push({
|
|
13466
|
-
val: d.weight,
|
|
13467
|
-
count: 1
|
|
13468
|
-
});
|
|
13469
|
-
const pool = s.pool.find((i)=>i.val === d.pool);
|
|
13470
|
-
if (pool) pool.count++;
|
|
13471
|
-
else s.pool.push({
|
|
13472
|
-
val: d.pool,
|
|
13473
|
-
count: 1
|
|
13474
|
-
});
|
|
13475
|
-
const platform = s.platform.find((i)=>i.val === d.platform);
|
|
13476
|
-
if (platform) platform.count++;
|
|
13477
|
-
else s.platform.push({
|
|
13478
|
-
val: d.platform,
|
|
13321
|
+
getShared(key) {
|
|
13322
|
+
const isShared = (key)=>this.dans.every((d)=>d[key]);
|
|
13323
|
+
return isShared(key) ? this.dans[0][key] : void 0;
|
|
13324
|
+
}
|
|
13325
|
+
getStat(key) {
|
|
13326
|
+
const default_stat = [];
|
|
13327
|
+
const stats = this.dans.reduce((stat, dan)=>{
|
|
13328
|
+
const valWithCount = stat.find((i)=>i.val === dan[key]);
|
|
13329
|
+
if (valWithCount) valWithCount.count++;
|
|
13330
|
+
else stat.push({
|
|
13331
|
+
val: dan[key],
|
|
13479
13332
|
count: 1
|
|
13480
13333
|
});
|
|
13481
|
-
return
|
|
13334
|
+
return stat;
|
|
13482
13335
|
}, default_stat);
|
|
13483
|
-
return
|
|
13336
|
+
return stats;
|
|
13337
|
+
}
|
|
13338
|
+
getMost(key) {
|
|
13339
|
+
return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
|
|
13484
13340
|
}
|
|
13485
13341
|
get most() {
|
|
13486
|
-
const s = this.stat;
|
|
13487
13342
|
return {
|
|
13488
|
-
mode:
|
|
13489
|
-
fontsize:
|
|
13490
|
-
color:
|
|
13491
|
-
senderID:
|
|
13492
|
-
content:
|
|
13493
|
-
weight:
|
|
13494
|
-
pool:
|
|
13495
|
-
platform:
|
|
13343
|
+
mode: this.getMost('mode').val,
|
|
13344
|
+
fontsize: this.getMost('fontsize').val,
|
|
13345
|
+
color: this.getMost('color').val,
|
|
13346
|
+
senderID: this.getMost('senderID').val,
|
|
13347
|
+
content: this.getMost('content').val,
|
|
13348
|
+
weight: this.getMost('weight').val,
|
|
13349
|
+
pool: this.getMost('pool').val,
|
|
13350
|
+
platform: this.getMost('platform').val
|
|
13496
13351
|
};
|
|
13497
13352
|
}
|
|
13498
13353
|
static create(options) {
|
|
@@ -13616,7 +13471,8 @@ class src_UniPool {
|
|
|
13616
13471
|
'platform',
|
|
13617
13472
|
'pool'
|
|
13618
13473
|
].map((k)=>danmaku[k]).join('|');
|
|
13619
|
-
const extra = result[i].extra
|
|
13474
|
+
const extra = result[i].extra;
|
|
13475
|
+
const mergeData = mergeObj[key];
|
|
13620
13476
|
result[i].extraStr = src_JSON_0.stringify({
|
|
13621
13477
|
...extra,
|
|
13622
13478
|
danuni: {
|
|
@@ -13645,7 +13501,12 @@ class src_UniPool {
|
|
|
13645
13501
|
minify() {
|
|
13646
13502
|
return this.dans.map((d)=>d.minify());
|
|
13647
13503
|
}
|
|
13648
|
-
static import(file, options) {
|
|
13504
|
+
static import(file, options, mod) {
|
|
13505
|
+
if (!mod) mod = [
|
|
13506
|
+
'json',
|
|
13507
|
+
'str',
|
|
13508
|
+
'bin'
|
|
13509
|
+
];
|
|
13649
13510
|
const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
|
|
13650
13511
|
const parseJSON = (json)=>{
|
|
13651
13512
|
try {
|
|
@@ -13668,61 +13529,66 @@ class src_UniPool {
|
|
|
13668
13529
|
} catch {}
|
|
13669
13530
|
};
|
|
13670
13531
|
const parseStr = (file)=>{
|
|
13671
|
-
try {
|
|
13532
|
+
if (mod.includes('json')) try {
|
|
13672
13533
|
if (isJSON(file)) {
|
|
13673
13534
|
const json = src_JSON_0.parse(file);
|
|
13674
13535
|
return parseJSON(json);
|
|
13675
13536
|
}
|
|
13676
13537
|
} catch {}
|
|
13677
|
-
|
|
13678
|
-
|
|
13679
|
-
|
|
13680
|
-
|
|
13681
|
-
|
|
13682
|
-
|
|
13683
|
-
|
|
13684
|
-
|
|
13685
|
-
|
|
13686
|
-
|
|
13687
|
-
|
|
13688
|
-
|
|
13689
|
-
|
|
13690
|
-
|
|
13691
|
-
|
|
13692
|
-
|
|
13538
|
+
if (mod.includes('str')) {
|
|
13539
|
+
try {
|
|
13540
|
+
const xmlParser = new XMLParser({
|
|
13541
|
+
ignoreAttributes: false
|
|
13542
|
+
});
|
|
13543
|
+
const xml = xmlParser.parse(file);
|
|
13544
|
+
if (xml?.i?.d) return {
|
|
13545
|
+
pool: this.fromBiliXML(file, options),
|
|
13546
|
+
fmt: 'bili.xml'
|
|
13547
|
+
};
|
|
13548
|
+
} catch {}
|
|
13549
|
+
try {
|
|
13550
|
+
return {
|
|
13551
|
+
pool: this.fromASS(file, options),
|
|
13552
|
+
fmt: 'common.ass'
|
|
13553
|
+
};
|
|
13554
|
+
} catch {}
|
|
13555
|
+
}
|
|
13693
13556
|
};
|
|
13694
13557
|
let errmesg;
|
|
13695
|
-
if (isObject(file))
|
|
13696
|
-
|
|
13697
|
-
|
|
13698
|
-
|
|
13699
|
-
|
|
13700
|
-
|
|
13701
|
-
|
|
13702
|
-
|
|
13703
|
-
|
|
13704
|
-
|
|
13705
|
-
|
|
13706
|
-
|
|
13707
|
-
|
|
13708
|
-
|
|
13709
|
-
|
|
13710
|
-
|
|
13711
|
-
|
|
13712
|
-
|
|
13713
|
-
|
|
13714
|
-
|
|
13715
|
-
|
|
13716
|
-
|
|
13717
|
-
|
|
13718
|
-
|
|
13719
|
-
|
|
13720
|
-
|
|
13721
|
-
|
|
13722
|
-
|
|
13723
|
-
|
|
13724
|
-
|
|
13725
|
-
|
|
13558
|
+
if (isObject(file)) {
|
|
13559
|
+
if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
|
|
13560
|
+
if (mod.includes('bin')) {
|
|
13561
|
+
try {
|
|
13562
|
+
return {
|
|
13563
|
+
pool: this.fromPb(file),
|
|
13564
|
+
fmt: 'danuni.pb.bin'
|
|
13565
|
+
};
|
|
13566
|
+
} catch {}
|
|
13567
|
+
try {
|
|
13568
|
+
return {
|
|
13569
|
+
pool: this.fromBiliGrpc(file),
|
|
13570
|
+
fmt: 'bili.pb.bin'
|
|
13571
|
+
};
|
|
13572
|
+
} catch {}
|
|
13573
|
+
try {
|
|
13574
|
+
return {
|
|
13575
|
+
pool: this.fromBiliCommandGrpc(file),
|
|
13576
|
+
fmt: 'bili.cmd.pb.bin'
|
|
13577
|
+
};
|
|
13578
|
+
} catch {}
|
|
13579
|
+
}
|
|
13580
|
+
try {
|
|
13581
|
+
const fileStr = new TextDecoder().decode(file);
|
|
13582
|
+
const prStr = parseStr(fileStr);
|
|
13583
|
+
if (prStr) return prStr;
|
|
13584
|
+
errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
|
|
13585
|
+
} catch {}
|
|
13586
|
+
} else if (mod.includes('json')) {
|
|
13587
|
+
const prJSON = parseJSON(file);
|
|
13588
|
+
if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
|
|
13589
|
+
return prJSON;
|
|
13590
|
+
}
|
|
13591
|
+
} else if (isString(file)) {
|
|
13726
13592
|
const prStr = parseStr(file);
|
|
13727
13593
|
if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
|
|
13728
13594
|
return prStr;
|
|
@@ -13787,9 +13653,14 @@ class src_UniPool {
|
|
|
13787
13653
|
static fromBiliXML(xml, options) {
|
|
13788
13654
|
const parser = new XMLParser({
|
|
13789
13655
|
ignoreAttributes: false
|
|
13790
|
-
})
|
|
13656
|
+
});
|
|
13657
|
+
const oriData = parser.parse(xml);
|
|
13658
|
+
const dans = oriData.i.d;
|
|
13659
|
+
const fromConverted = !!oriData.danuni;
|
|
13660
|
+
const cid = BigInt(oriData.i.chatid);
|
|
13791
13661
|
return new src_UniPool(dans.map((d)=>{
|
|
13792
|
-
const p_str = d['@_p']
|
|
13662
|
+
const p_str = d['@_p'];
|
|
13663
|
+
const p_arr = p_str.split(',');
|
|
13793
13664
|
return UniDM.fromBili({
|
|
13794
13665
|
content: d['#text'],
|
|
13795
13666
|
progress: Number.parseFloat(p_arr[0]),
|
|
@@ -13844,14 +13715,16 @@ class src_UniPool {
|
|
|
13844
13715
|
});
|
|
13845
13716
|
}
|
|
13846
13717
|
static fromBiliGrpc(bin, options) {
|
|
13847
|
-
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin))
|
|
13718
|
+
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin));
|
|
13719
|
+
const json = data.elems;
|
|
13848
13720
|
return new src_UniPool(json.map((d)=>UniDM.fromBili({
|
|
13849
13721
|
...d,
|
|
13850
13722
|
progress: d.progress / 1000
|
|
13851
13723
|
}, d.oid, options)), options);
|
|
13852
13724
|
}
|
|
13853
13725
|
static fromBiliCommandGrpc(bin, options) {
|
|
13854
|
-
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin))
|
|
13726
|
+
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin));
|
|
13727
|
+
const json = data.commandDms;
|
|
13855
13728
|
return new src_UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
|
|
13856
13729
|
}
|
|
13857
13730
|
static fromDplayer(json, playerID, domain = 'other', options) {
|