@dan-uni/dan-any 0.8.1 → 0.8.6
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/dist/index.js +139 -65
- package/dist/index.umd.min.js +139 -66
- package/dist/src/index.d.ts +62 -15
- package/dist/src/utils/dm-gen.d.ts +6 -2
- package/package.json +1 -1
- package/src/index.test.ts +23 -10
- package/src/index.ts +92 -36
- package/src/utils/dm-gen.ts +26 -6
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
|
5
5
|
import { file_google_protobuf_timestamp, timestampDate, timestampFromDate, timestampNow } from "@bufbuild/protobuf/wkt";
|
|
6
6
|
import { fileDesc, messageDesc as codegenv2_messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
7
7
|
import { Expose, plainToInstance } from "class-transformer";
|
|
8
|
-
import { IsDate, IsEmail, IsEnum, IsInt, IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, validateOrReject } from "class-validator";
|
|
8
|
+
import { IsDate, IsEmail, IsEnum, IsInt, IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, isEmail, validateOrReject } from "class-validator";
|
|
9
9
|
import hh_mm_ss from "hh-mm-ss";
|
|
10
10
|
import jssha from "jssha";
|
|
11
11
|
import { brotliCompressSync, brotliDecompressSync, gunzipSync, gzipSync } from "node:zlib";
|
|
@@ -60,6 +60,7 @@ __webpack_require__.d(dm_gen_namespaceObject, {
|
|
|
60
60
|
Pools: ()=>dm_gen_Pools,
|
|
61
61
|
UniDM: ()=>UniDM
|
|
62
62
|
});
|
|
63
|
+
var package_namespaceObject = JSON.parse('{"u2":"@dan-uni/dan-any","i8":"0.8.6","e8":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
|
|
63
64
|
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
64
65
|
const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
|
|
65
66
|
const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
|
|
@@ -421,11 +422,13 @@ class UniDM {
|
|
|
421
422
|
}
|
|
422
423
|
return mode;
|
|
423
424
|
}
|
|
424
|
-
static fromBili(args, cid, options) {
|
|
425
|
+
static fromBili(args, cid, options, recSOID) {
|
|
425
426
|
if (args.oid && !cid) cid = args.oid;
|
|
426
|
-
const SOID = `def_${platform_PlatformVideoSource.Bilibili}+${id_gen_UniID.fromBili({
|
|
427
|
+
const SOID = recSOID || `def_${platform_PlatformVideoSource.Bilibili}+${id_gen_UniID.fromBili({
|
|
427
428
|
cid
|
|
428
|
-
})}`, senderID =
|
|
429
|
+
})}`, senderID = isEmail(args.midHash, {
|
|
430
|
+
require_tld: false
|
|
431
|
+
}) ? args.midHash : id_gen_UniID.fromBili({
|
|
429
432
|
midHash: args.midHash
|
|
430
433
|
});
|
|
431
434
|
let mode = 0;
|
|
@@ -522,7 +525,7 @@ class UniDM {
|
|
|
522
525
|
this.color,
|
|
523
526
|
this.ctime.getTime() / 1000,
|
|
524
527
|
this.extra.bili?.pool || this.pool,
|
|
525
|
-
this.senderID,
|
|
528
|
+
options?.avoidSenderIDWithAt ? this.senderID.replaceAll(`@${platform_PlatformVideoSource.Bilibili}`, '') : this.senderID,
|
|
526
529
|
this.extra.bili?.dmid || this.DMID || this.toDMID(),
|
|
527
530
|
this.weight
|
|
528
531
|
].join(',')
|
|
@@ -638,7 +641,7 @@ class UniDM {
|
|
|
638
641
|
color: this.color,
|
|
639
642
|
uid: this.senderID,
|
|
640
643
|
m: this.content,
|
|
641
|
-
cid: Number(this.DMID)
|
|
644
|
+
cid: this.DMID ? Number.parseInt(Buffer.from(this.DMID).toString('hex'), 16) : 0
|
|
642
645
|
};
|
|
643
646
|
}
|
|
644
647
|
constructor(){
|
|
@@ -837,10 +840,17 @@ _ts_decorate([
|
|
|
837
840
|
const src_JSON = json_bigint({
|
|
838
841
|
useNativeBigInt: true
|
|
839
842
|
});
|
|
843
|
+
const DanUniConvertTipTemplate = {
|
|
844
|
+
meassage: 'Converted by DanUni!',
|
|
845
|
+
version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
|
|
846
|
+
};
|
|
840
847
|
class UniPool {
|
|
841
|
-
constructor(dans, options = {}
|
|
848
|
+
constructor(dans, options = {}, info = {
|
|
849
|
+
fromConverted: false
|
|
850
|
+
}){
|
|
842
851
|
this.dans = dans;
|
|
843
852
|
this.options = options;
|
|
853
|
+
this.info = info;
|
|
844
854
|
if (false !== options.dedupe) options.dedupe = true;
|
|
845
855
|
if (this.options.dedupe) this.dedupe();
|
|
846
856
|
}
|
|
@@ -990,15 +1000,21 @@ class UniPool {
|
|
|
990
1000
|
if (dans instanceof UniPool) return new UniPool([
|
|
991
1001
|
...this.dans,
|
|
992
1002
|
...dans.dans
|
|
993
|
-
]
|
|
1003
|
+
], {
|
|
1004
|
+
...this.options,
|
|
1005
|
+
...dans.options
|
|
1006
|
+
}, {
|
|
1007
|
+
...this.info,
|
|
1008
|
+
...dans.info
|
|
1009
|
+
});
|
|
994
1010
|
if (dans instanceof UniDM) return new UniPool([
|
|
995
1011
|
...this.dans,
|
|
996
1012
|
dans
|
|
997
|
-
]);
|
|
1013
|
+
], this.options, this.info);
|
|
998
1014
|
if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new UniPool([
|
|
999
1015
|
...this.dans,
|
|
1000
1016
|
...dans
|
|
1001
|
-
]);
|
|
1017
|
+
], this.options, this.info);
|
|
1002
1018
|
return this;
|
|
1003
1019
|
}
|
|
1004
1020
|
split(key) {
|
|
@@ -1009,8 +1025,9 @@ class UniPool {
|
|
|
1009
1025
|
return [
|
|
1010
1026
|
...set
|
|
1011
1027
|
].map((v)=>new UniPool(this.dans.filter((d)=>d[key] === v), {
|
|
1028
|
+
...this.options,
|
|
1012
1029
|
dedupe: false
|
|
1013
|
-
}));
|
|
1030
|
+
}, this.info));
|
|
1014
1031
|
}
|
|
1015
1032
|
dedupe() {
|
|
1016
1033
|
if (false !== this.options.dmid) {
|
|
@@ -1121,7 +1138,7 @@ class UniPool {
|
|
|
1121
1138
|
];
|
|
1122
1139
|
}
|
|
1123
1140
|
});
|
|
1124
|
-
return new UniPool(result);
|
|
1141
|
+
return new UniPool(result, this.options, this.info);
|
|
1125
1142
|
}
|
|
1126
1143
|
minify() {
|
|
1127
1144
|
return this.dans.map((d)=>d.minify());
|
|
@@ -1152,6 +1169,7 @@ class UniPool {
|
|
|
1152
1169
|
const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
|
|
1153
1170
|
return new UniPool(data.danmakus.map((d)=>UniDM.create({
|
|
1154
1171
|
...d,
|
|
1172
|
+
progress: d.progress / 1000,
|
|
1155
1173
|
mode: d.mode,
|
|
1156
1174
|
ctime: timestampDate(d.ctime || timestampNow()),
|
|
1157
1175
|
pool: d.pool,
|
|
@@ -1163,7 +1181,7 @@ class UniPool {
|
|
|
1163
1181
|
danmakus: this.dans.map((d)=>({
|
|
1164
1182
|
SOID: d.SOID,
|
|
1165
1183
|
DMID: d.DMID,
|
|
1166
|
-
progress: d.progress,
|
|
1184
|
+
progress: 1000 * d.progress,
|
|
1167
1185
|
mode: d.mode,
|
|
1168
1186
|
fontsize: d.fontsize,
|
|
1169
1187
|
color: d.color,
|
|
@@ -1181,7 +1199,7 @@ class UniPool {
|
|
|
1181
1199
|
static fromBiliXML(xml, options) {
|
|
1182
1200
|
const parser = new XMLParser({
|
|
1183
1201
|
ignoreAttributes: false
|
|
1184
|
-
}), oriData = parser.parse(xml), dans = oriData.i.d;
|
|
1202
|
+
}), oriData = parser.parse(xml), dans = oriData.i.d, fromConverted = !!oriData.danuni, cid = BigInt(oriData.i.chatid);
|
|
1185
1203
|
return new UniPool(dans.map((d)=>{
|
|
1186
1204
|
const p_str = d['@_p'], p_arr = p_str.split(',');
|
|
1187
1205
|
return UniDM.fromBili({
|
|
@@ -1195,18 +1213,24 @@ class UniPool {
|
|
|
1195
1213
|
midHash: p_arr[6],
|
|
1196
1214
|
id: BigInt(p_arr[7]),
|
|
1197
1215
|
weight: Number.parseInt(p_arr[8])
|
|
1198
|
-
},
|
|
1199
|
-
}).filter((d)=>null !== d), options
|
|
1216
|
+
}, cid, options, fromConverted ? oriData.danuni?.data : void 0);
|
|
1217
|
+
}).filter((d)=>null !== d), options, {
|
|
1218
|
+
fromConverted
|
|
1219
|
+
});
|
|
1200
1220
|
}
|
|
1201
|
-
toBiliXML() {
|
|
1221
|
+
toBiliXML(options) {
|
|
1202
1222
|
const genCID = (id)=>{
|
|
1203
1223
|
const UniID = id_gen_UniID.fromString(id);
|
|
1204
1224
|
if (UniID.domain === platform_PlatformVideoSource.Bilibili) {
|
|
1205
1225
|
const cid = UniID.id.replaceAll(`def_${platform_PlatformVideoSource.Bilibili}+`, '');
|
|
1206
1226
|
if (cid) return cid;
|
|
1207
1227
|
}
|
|
1208
|
-
return
|
|
1228
|
+
return !options?.cid || id;
|
|
1209
1229
|
};
|
|
1230
|
+
if (options?.avoidSenderIDWithAt) {
|
|
1231
|
+
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
1232
|
+
if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
|
|
1233
|
+
}
|
|
1210
1234
|
const builder = new XMLBuilder({
|
|
1211
1235
|
ignoreAttributes: false
|
|
1212
1236
|
});
|
|
@@ -1215,6 +1239,10 @@ class UniPool {
|
|
|
1215
1239
|
'@_version': '1.0',
|
|
1216
1240
|
'@_encoding': 'UTF-8'
|
|
1217
1241
|
},
|
|
1242
|
+
danuni: {
|
|
1243
|
+
...DanUniConvertTipTemplate,
|
|
1244
|
+
data: this.shared.SOID
|
|
1245
|
+
},
|
|
1218
1246
|
i: {
|
|
1219
1247
|
chatserver: 'chat.bilibili.com',
|
|
1220
1248
|
chatid: genCID(this.dans[0].SOID),
|
|
@@ -1223,7 +1251,7 @@ class UniPool {
|
|
|
1223
1251
|
state: 0,
|
|
1224
1252
|
real_name: 0,
|
|
1225
1253
|
source: 'k-v',
|
|
1226
|
-
d: this.dans.map((dan)=>dan.toBiliXML())
|
|
1254
|
+
d: this.dans.map((dan)=>dan.toBiliXML(options))
|
|
1227
1255
|
}
|
|
1228
1256
|
});
|
|
1229
1257
|
}
|
|
@@ -1245,11 +1273,14 @@ class UniPool {
|
|
|
1245
1273
|
mode: d[1],
|
|
1246
1274
|
color: d[2],
|
|
1247
1275
|
midHash: d[3]
|
|
1248
|
-
}, playerID, domain, options)), options
|
|
1276
|
+
}, playerID, domain, options)), options, {
|
|
1277
|
+
fromConverted: !!json.danuni
|
|
1278
|
+
});
|
|
1249
1279
|
}
|
|
1250
1280
|
toDplayer() {
|
|
1251
1281
|
return {
|
|
1252
1282
|
code: 0,
|
|
1283
|
+
danuni: DanUniConvertTipTemplate,
|
|
1253
1284
|
data: this.dans.map((dan)=>{
|
|
1254
1285
|
const d = dan.toDplayer();
|
|
1255
1286
|
return [
|
|
@@ -1263,26 +1294,31 @@ class UniPool {
|
|
|
1263
1294
|
};
|
|
1264
1295
|
}
|
|
1265
1296
|
static fromArtplayer(json, playerID, domain = 'other', options) {
|
|
1266
|
-
return new UniPool(json.map((d)=>UniDM.fromArtplayer({
|
|
1297
|
+
return new UniPool(json.danmuku.map((d)=>UniDM.fromArtplayer({
|
|
1267
1298
|
content: d.text,
|
|
1268
1299
|
progress: d.time || 0,
|
|
1269
1300
|
mode: d.mode || 0,
|
|
1270
1301
|
color: Number((d.color || 'FFFFFF').replace('#', '0x')),
|
|
1271
1302
|
style: d.style
|
|
1272
|
-
}, playerID, domain, options)), options
|
|
1303
|
+
}, playerID, domain, options)), options, {
|
|
1304
|
+
fromConverted: !!json.danuni
|
|
1305
|
+
});
|
|
1273
1306
|
}
|
|
1274
1307
|
toArtplayer() {
|
|
1275
|
-
return
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1308
|
+
return {
|
|
1309
|
+
danuni: DanUniConvertTipTemplate,
|
|
1310
|
+
danmuku: this.dans.map((dan)=>{
|
|
1311
|
+
const d = dan.toArtplayer();
|
|
1312
|
+
return {
|
|
1313
|
+
text: d.content,
|
|
1314
|
+
time: d.progress,
|
|
1315
|
+
mode: d.mode,
|
|
1316
|
+
color: `#${d.color.toString(16).toUpperCase() || 'FFFFFF'}`,
|
|
1317
|
+
border: d.border,
|
|
1318
|
+
style: d.style
|
|
1319
|
+
};
|
|
1320
|
+
})
|
|
1321
|
+
};
|
|
1286
1322
|
}
|
|
1287
1323
|
static fromDDPlay(json, episodeId, options) {
|
|
1288
1324
|
return new UniPool(json.comments.map((d)=>{
|
|
@@ -1295,10 +1331,13 @@ class UniPool {
|
|
|
1295
1331
|
progress: Number.parseFloat(p_arr[0]),
|
|
1296
1332
|
uid: p_arr[3]
|
|
1297
1333
|
}, episodeId, void 0, options);
|
|
1298
|
-
}), options
|
|
1334
|
+
}), options, {
|
|
1335
|
+
fromConverted: !!json.danuni
|
|
1336
|
+
});
|
|
1299
1337
|
}
|
|
1300
1338
|
toDDplay() {
|
|
1301
1339
|
return {
|
|
1340
|
+
danuni: DanUniConvertTipTemplate,
|
|
1302
1341
|
count: this.dans.length,
|
|
1303
1342
|
comments: this.dans.map((dan)=>{
|
|
1304
1343
|
const d = dan.toDDplay();
|
|
@@ -1604,8 +1643,7 @@ const ass_event = (list, config)=>{
|
|
|
1604
1643
|
];
|
|
1605
1644
|
return content.join('\n');
|
|
1606
1645
|
};
|
|
1607
|
-
|
|
1608
|
-
const info = ({ playResX, playResY }, { filename, title })=>{
|
|
1646
|
+
const ass_info = ({ playResX, playResY }, { filename, title })=>{
|
|
1609
1647
|
const content = [
|
|
1610
1648
|
'[Script Info]',
|
|
1611
1649
|
`Title: ${title}`,
|
|
@@ -1704,7 +1742,7 @@ const ass_create = (list, rawList, config, context = {
|
|
|
1704
1742
|
}, rawConfig)=>{
|
|
1705
1743
|
const Elist = UniPool2DanmakuLists(list), ErawList = UniPool2DanmakuLists(rawList);
|
|
1706
1744
|
const content = [
|
|
1707
|
-
|
|
1745
|
+
ass_info(config, context),
|
|
1708
1746
|
style(config),
|
|
1709
1747
|
ass_event(Elist, config)
|
|
1710
1748
|
];
|
|
@@ -1764,10 +1802,17 @@ function parseAssRawField(ass) {
|
|
|
1764
1802
|
const src_JSON_0 = json_bigint({
|
|
1765
1803
|
useNativeBigInt: true
|
|
1766
1804
|
});
|
|
1805
|
+
const src_DanUniConvertTipTemplate = {
|
|
1806
|
+
meassage: 'Converted by DanUni!',
|
|
1807
|
+
version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
|
|
1808
|
+
};
|
|
1767
1809
|
class src_UniPool {
|
|
1768
|
-
constructor(dans, options = {}
|
|
1810
|
+
constructor(dans, options = {}, info = {
|
|
1811
|
+
fromConverted: false
|
|
1812
|
+
}){
|
|
1769
1813
|
this.dans = dans;
|
|
1770
1814
|
this.options = options;
|
|
1815
|
+
this.info = info;
|
|
1771
1816
|
if (false !== options.dedupe) options.dedupe = true;
|
|
1772
1817
|
if (this.options.dedupe) this.dedupe();
|
|
1773
1818
|
}
|
|
@@ -1917,15 +1962,21 @@ class src_UniPool {
|
|
|
1917
1962
|
if (dans instanceof src_UniPool) return new src_UniPool([
|
|
1918
1963
|
...this.dans,
|
|
1919
1964
|
...dans.dans
|
|
1920
|
-
]
|
|
1965
|
+
], {
|
|
1966
|
+
...this.options,
|
|
1967
|
+
...dans.options
|
|
1968
|
+
}, {
|
|
1969
|
+
...this.info,
|
|
1970
|
+
...dans.info
|
|
1971
|
+
});
|
|
1921
1972
|
if (dans instanceof UniDM) return new src_UniPool([
|
|
1922
1973
|
...this.dans,
|
|
1923
1974
|
dans
|
|
1924
|
-
]);
|
|
1975
|
+
], this.options, this.info);
|
|
1925
1976
|
if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new src_UniPool([
|
|
1926
1977
|
...this.dans,
|
|
1927
1978
|
...dans
|
|
1928
|
-
]);
|
|
1979
|
+
], this.options, this.info);
|
|
1929
1980
|
return this;
|
|
1930
1981
|
}
|
|
1931
1982
|
split(key) {
|
|
@@ -1936,8 +1987,9 @@ class src_UniPool {
|
|
|
1936
1987
|
return [
|
|
1937
1988
|
...set
|
|
1938
1989
|
].map((v)=>new src_UniPool(this.dans.filter((d)=>d[key] === v), {
|
|
1990
|
+
...this.options,
|
|
1939
1991
|
dedupe: false
|
|
1940
|
-
}));
|
|
1992
|
+
}, this.info));
|
|
1941
1993
|
}
|
|
1942
1994
|
dedupe() {
|
|
1943
1995
|
if (false !== this.options.dmid) {
|
|
@@ -2048,7 +2100,7 @@ class src_UniPool {
|
|
|
2048
2100
|
];
|
|
2049
2101
|
}
|
|
2050
2102
|
});
|
|
2051
|
-
return new src_UniPool(result);
|
|
2103
|
+
return new src_UniPool(result, this.options, this.info);
|
|
2052
2104
|
}
|
|
2053
2105
|
minify() {
|
|
2054
2106
|
return this.dans.map((d)=>d.minify());
|
|
@@ -2079,6 +2131,7 @@ class src_UniPool {
|
|
|
2079
2131
|
const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
|
|
2080
2132
|
return new src_UniPool(data.danmakus.map((d)=>UniDM.create({
|
|
2081
2133
|
...d,
|
|
2134
|
+
progress: d.progress / 1000,
|
|
2082
2135
|
mode: d.mode,
|
|
2083
2136
|
ctime: timestampDate(d.ctime || timestampNow()),
|
|
2084
2137
|
pool: d.pool,
|
|
@@ -2090,7 +2143,7 @@ class src_UniPool {
|
|
|
2090
2143
|
danmakus: this.dans.map((d)=>({
|
|
2091
2144
|
SOID: d.SOID,
|
|
2092
2145
|
DMID: d.DMID,
|
|
2093
|
-
progress: d.progress,
|
|
2146
|
+
progress: 1000 * d.progress,
|
|
2094
2147
|
mode: d.mode,
|
|
2095
2148
|
fontsize: d.fontsize,
|
|
2096
2149
|
color: d.color,
|
|
@@ -2108,7 +2161,7 @@ class src_UniPool {
|
|
|
2108
2161
|
static fromBiliXML(xml, options) {
|
|
2109
2162
|
const parser = new XMLParser({
|
|
2110
2163
|
ignoreAttributes: false
|
|
2111
|
-
}), oriData = parser.parse(xml), dans = oriData.i.d;
|
|
2164
|
+
}), oriData = parser.parse(xml), dans = oriData.i.d, fromConverted = !!oriData.danuni, cid = BigInt(oriData.i.chatid);
|
|
2112
2165
|
return new src_UniPool(dans.map((d)=>{
|
|
2113
2166
|
const p_str = d['@_p'], p_arr = p_str.split(',');
|
|
2114
2167
|
return UniDM.fromBili({
|
|
@@ -2122,18 +2175,24 @@ class src_UniPool {
|
|
|
2122
2175
|
midHash: p_arr[6],
|
|
2123
2176
|
id: BigInt(p_arr[7]),
|
|
2124
2177
|
weight: Number.parseInt(p_arr[8])
|
|
2125
|
-
},
|
|
2126
|
-
}).filter((d)=>null !== d), options
|
|
2178
|
+
}, cid, options, fromConverted ? oriData.danuni?.data : void 0);
|
|
2179
|
+
}).filter((d)=>null !== d), options, {
|
|
2180
|
+
fromConverted
|
|
2181
|
+
});
|
|
2127
2182
|
}
|
|
2128
|
-
toBiliXML() {
|
|
2183
|
+
toBiliXML(options) {
|
|
2129
2184
|
const genCID = (id)=>{
|
|
2130
2185
|
const UniID = id_gen_UniID.fromString(id);
|
|
2131
2186
|
if (UniID.domain === platform_PlatformVideoSource.Bilibili) {
|
|
2132
2187
|
const cid = UniID.id.replaceAll(`def_${platform_PlatformVideoSource.Bilibili}+`, '');
|
|
2133
2188
|
if (cid) return cid;
|
|
2134
2189
|
}
|
|
2135
|
-
return
|
|
2190
|
+
return !options?.cid || id;
|
|
2136
2191
|
};
|
|
2192
|
+
if (options?.avoidSenderIDWithAt) {
|
|
2193
|
+
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
2194
|
+
if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
|
|
2195
|
+
}
|
|
2137
2196
|
const builder = new XMLBuilder({
|
|
2138
2197
|
ignoreAttributes: false
|
|
2139
2198
|
});
|
|
@@ -2142,6 +2201,10 @@ class src_UniPool {
|
|
|
2142
2201
|
'@_version': '1.0',
|
|
2143
2202
|
'@_encoding': 'UTF-8'
|
|
2144
2203
|
},
|
|
2204
|
+
danuni: {
|
|
2205
|
+
...src_DanUniConvertTipTemplate,
|
|
2206
|
+
data: this.shared.SOID
|
|
2207
|
+
},
|
|
2145
2208
|
i: {
|
|
2146
2209
|
chatserver: 'chat.bilibili.com',
|
|
2147
2210
|
chatid: genCID(this.dans[0].SOID),
|
|
@@ -2150,7 +2213,7 @@ class src_UniPool {
|
|
|
2150
2213
|
state: 0,
|
|
2151
2214
|
real_name: 0,
|
|
2152
2215
|
source: 'k-v',
|
|
2153
|
-
d: this.dans.map((dan)=>dan.toBiliXML())
|
|
2216
|
+
d: this.dans.map((dan)=>dan.toBiliXML(options))
|
|
2154
2217
|
}
|
|
2155
2218
|
});
|
|
2156
2219
|
}
|
|
@@ -2172,11 +2235,14 @@ class src_UniPool {
|
|
|
2172
2235
|
mode: d[1],
|
|
2173
2236
|
color: d[2],
|
|
2174
2237
|
midHash: d[3]
|
|
2175
|
-
}, playerID, domain, options)), options
|
|
2238
|
+
}, playerID, domain, options)), options, {
|
|
2239
|
+
fromConverted: !!json.danuni
|
|
2240
|
+
});
|
|
2176
2241
|
}
|
|
2177
2242
|
toDplayer() {
|
|
2178
2243
|
return {
|
|
2179
2244
|
code: 0,
|
|
2245
|
+
danuni: src_DanUniConvertTipTemplate,
|
|
2180
2246
|
data: this.dans.map((dan)=>{
|
|
2181
2247
|
const d = dan.toDplayer();
|
|
2182
2248
|
return [
|
|
@@ -2190,26 +2256,31 @@ class src_UniPool {
|
|
|
2190
2256
|
};
|
|
2191
2257
|
}
|
|
2192
2258
|
static fromArtplayer(json, playerID, domain = 'other', options) {
|
|
2193
|
-
return new src_UniPool(json.map((d)=>UniDM.fromArtplayer({
|
|
2259
|
+
return new src_UniPool(json.danmuku.map((d)=>UniDM.fromArtplayer({
|
|
2194
2260
|
content: d.text,
|
|
2195
2261
|
progress: d.time || 0,
|
|
2196
2262
|
mode: d.mode || 0,
|
|
2197
2263
|
color: Number((d.color || 'FFFFFF').replace('#', '0x')),
|
|
2198
2264
|
style: d.style
|
|
2199
|
-
}, playerID, domain, options)), options
|
|
2265
|
+
}, playerID, domain, options)), options, {
|
|
2266
|
+
fromConverted: !!json.danuni
|
|
2267
|
+
});
|
|
2200
2268
|
}
|
|
2201
2269
|
toArtplayer() {
|
|
2202
|
-
return
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2270
|
+
return {
|
|
2271
|
+
danuni: src_DanUniConvertTipTemplate,
|
|
2272
|
+
danmuku: this.dans.map((dan)=>{
|
|
2273
|
+
const d = dan.toArtplayer();
|
|
2274
|
+
return {
|
|
2275
|
+
text: d.content,
|
|
2276
|
+
time: d.progress,
|
|
2277
|
+
mode: d.mode,
|
|
2278
|
+
color: `#${d.color.toString(16).toUpperCase() || 'FFFFFF'}`,
|
|
2279
|
+
border: d.border,
|
|
2280
|
+
style: d.style
|
|
2281
|
+
};
|
|
2282
|
+
})
|
|
2283
|
+
};
|
|
2213
2284
|
}
|
|
2214
2285
|
static fromDDPlay(json, episodeId, options) {
|
|
2215
2286
|
return new src_UniPool(json.comments.map((d)=>{
|
|
@@ -2222,10 +2293,13 @@ class src_UniPool {
|
|
|
2222
2293
|
progress: Number.parseFloat(p_arr[0]),
|
|
2223
2294
|
uid: p_arr[3]
|
|
2224
2295
|
}, episodeId, void 0, options);
|
|
2225
|
-
}), options
|
|
2296
|
+
}), options, {
|
|
2297
|
+
fromConverted: !!json.danuni
|
|
2298
|
+
});
|
|
2226
2299
|
}
|
|
2227
2300
|
toDDplay() {
|
|
2228
2301
|
return {
|
|
2302
|
+
danuni: src_DanUniConvertTipTemplate,
|
|
2229
2303
|
count: this.dans.length,
|
|
2230
2304
|
comments: this.dans.map((dan)=>{
|
|
2231
2305
|
const d = dan.toDDplay();
|