@dan-uni/dan-any 0.9.3 → 0.9.5
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 +4 -0
- package/dist/index.js +202 -172
- package/dist/index.min.js +211 -186
- package/dist/index.umd.min.js +446 -325
- package/dist/src/ass-gen/ass/create.d.ts +1 -2
- package/dist/src/ass-gen/ass/dialogue.d.ts +1 -2
- package/dist/src/ass-gen/ass/event.d.ts +1 -2
- package/dist/src/ass-gen/ass/info.d.ts +2 -2
- package/dist/src/ass-gen/ass/style.d.ts +1 -2
- package/dist/src/ass-gen/config.d.ts +1 -2
- package/dist/src/index.d.ts +5 -1
- package/package.json +6 -6
- package/src/ass-gen/__tests__/generate.test.ts +2 -2
- package/src/ass-gen/ass/create.ts +7 -6
- package/src/ass-gen/ass/dialogue.ts +1 -2
- package/src/ass-gen/ass/event.ts +2 -3
- package/src/ass-gen/ass/info.ts +1 -2
- package/src/ass-gen/ass/raw.ts +7 -7
- package/src/ass-gen/ass/style.ts +1 -2
- package/src/ass-gen/config.ts +1 -1
- package/src/ass-gen/index.ts +7 -4
- package/src/ass-gen/util/layout.ts +1 -1
- package/src/index.ts +61 -37
- package/src/proto/gen/bili/dm_pb.ts +1 -1
- package/src/proto/gen/danuni_pb.ts +1 -1
- package/src/utils/dm-gen.ts +28 -27
- package/types/tsconfig.tsbuildinfo +1 -1
package/dist/index.min.js
CHANGED
|
@@ -3919,6 +3919,10 @@ var __webpack_modules__ = {
|
|
|
3919
3919
|
var implementation = __webpack_require__("../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js");
|
|
3920
3920
|
module.exports = Function.prototype.bind || implementation;
|
|
3921
3921
|
},
|
|
3922
|
+
"../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js": function(module) {
|
|
3923
|
+
const cached = (function*() {}).constructor;
|
|
3924
|
+
module.exports = ()=>cached;
|
|
3925
|
+
},
|
|
3922
3926
|
"../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
|
|
3923
3927
|
var undefined;
|
|
3924
3928
|
var $Object = __webpack_require__("../../node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js");
|
|
@@ -4663,7 +4667,7 @@ var __webpack_modules__ = {
|
|
|
4663
4667
|
return tryFunctionObject(value);
|
|
4664
4668
|
};
|
|
4665
4669
|
},
|
|
4666
|
-
"../../node_modules/.pnpm/is-generator-function@1.1.
|
|
4670
|
+
"../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
|
|
4667
4671
|
var callBound = __webpack_require__("../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js");
|
|
4668
4672
|
var safeRegexTest = __webpack_require__("../../node_modules/.pnpm/safe-regex-test@1.1.0/node_modules/safe-regex-test/index.js");
|
|
4669
4673
|
var isFnRegex = safeRegexTest(/^\s*(?:function)?\*/);
|
|
@@ -4671,13 +4675,7 @@ var __webpack_modules__ = {
|
|
|
4671
4675
|
var getProto = __webpack_require__("../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js");
|
|
4672
4676
|
var toStr = callBound('Object.prototype.toString');
|
|
4673
4677
|
var fnToStr = callBound('Function.prototype.toString');
|
|
4674
|
-
var
|
|
4675
|
-
if (!hasToStringTag) return false;
|
|
4676
|
-
try {
|
|
4677
|
-
return Function('return function*() {}')();
|
|
4678
|
-
} catch (e) {}
|
|
4679
|
-
};
|
|
4680
|
-
var GeneratorFunction;
|
|
4678
|
+
var getGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js");
|
|
4681
4679
|
module.exports = function(fn) {
|
|
4682
4680
|
if ('function' != typeof fn) return false;
|
|
4683
4681
|
if (isFnRegex(fnToStr(fn))) return true;
|
|
@@ -4686,11 +4684,8 @@ var __webpack_modules__ = {
|
|
|
4686
4684
|
return '[object GeneratorFunction]' === str;
|
|
4687
4685
|
}
|
|
4688
4686
|
if (!getProto) return false;
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;
|
|
4692
|
-
}
|
|
4693
|
-
return getProto(fn) === GeneratorFunction;
|
|
4687
|
+
var GeneratorFunction = getGeneratorFunction();
|
|
4688
|
+
return GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;
|
|
4694
4689
|
};
|
|
4695
4690
|
},
|
|
4696
4691
|
"../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/implementation.js": function(module) {
|
|
@@ -10686,7 +10681,7 @@ var __webpack_modules__ = {
|
|
|
10686
10681
|
},
|
|
10687
10682
|
"../../node_modules/.pnpm/util@0.12.5/node_modules/util/support/types.js": function(__unused_webpack_module, exports, __webpack_require__) {
|
|
10688
10683
|
var isArgumentsObject = __webpack_require__("../../node_modules/.pnpm/is-arguments@1.2.0/node_modules/is-arguments/index.js");
|
|
10689
|
-
var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.
|
|
10684
|
+
var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js");
|
|
10690
10685
|
var whichTypedArray = __webpack_require__("../../node_modules/.pnpm/which-typed-array@1.1.19/node_modules/which-typed-array/index.js");
|
|
10691
10686
|
var isTypedArray = __webpack_require__("../../node_modules/.pnpm/is-typed-array@1.1.15/node_modules/is-typed-array/index.js");
|
|
10692
10687
|
function uncurryThis(f) {
|
|
@@ -11500,7 +11495,7 @@ __webpack_require__.d(dm_gen_namespaceObject, {
|
|
|
11500
11495
|
Pools: ()=>dm_gen_Pools,
|
|
11501
11496
|
UniDM: ()=>UniDM
|
|
11502
11497
|
});
|
|
11503
|
-
var package_namespaceObject = JSON.parse('{"
|
|
11498
|
+
var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.5","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
|
|
11504
11499
|
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
11505
11500
|
const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
|
|
11506
11501
|
const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
|
|
@@ -11657,16 +11652,16 @@ var dm_gen_ExtraDanUniChapterType = /*#__PURE__*/ function(ExtraDanUniChapterTyp
|
|
|
11657
11652
|
}({});
|
|
11658
11653
|
const ExtraDanUniChapterTypeDict = {
|
|
11659
11654
|
chs: {
|
|
11660
|
-
ch:
|
|
11661
|
-
rev:
|
|
11662
|
-
op:
|
|
11663
|
-
int:
|
|
11664
|
-
ed:
|
|
11665
|
-
prvw:
|
|
11666
|
-
cut:
|
|
11667
|
-
dup:
|
|
11668
|
-
biz:
|
|
11669
|
-
promo:
|
|
11655
|
+
ch: '其它片段',
|
|
11656
|
+
rev: '回顾',
|
|
11657
|
+
op: '片头',
|
|
11658
|
+
int: '中场',
|
|
11659
|
+
ed: '片尾',
|
|
11660
|
+
prvw: '预告',
|
|
11661
|
+
cut: '删减',
|
|
11662
|
+
dup: '补档',
|
|
11663
|
+
biz: '商业广告',
|
|
11664
|
+
promo: '推广'
|
|
11670
11665
|
}
|
|
11671
11666
|
};
|
|
11672
11667
|
var dm_gen_ExtraDanUniChapterAction = /*#__PURE__*/ function(ExtraDanUniChapterAction) {
|
|
@@ -11765,22 +11760,27 @@ class UniDM {
|
|
|
11765
11760
|
minify() {
|
|
11766
11761
|
const def = UniDM.create();
|
|
11767
11762
|
const dan = UniDM.create(this);
|
|
11768
|
-
|
|
11769
|
-
|
|
11770
|
-
|
|
11771
|
-
if (
|
|
11772
|
-
|
|
11773
|
-
|
|
11774
|
-
|
|
11763
|
+
const shouldKeep = (key, value)=>{
|
|
11764
|
+
if ('SOID' === key) return true;
|
|
11765
|
+
if (null == value) return false;
|
|
11766
|
+
if (value === def[key]) return false;
|
|
11767
|
+
if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
|
|
11768
|
+
if ('extraStr' === key && '{}' === value) return false;
|
|
11769
|
+
return true;
|
|
11770
|
+
};
|
|
11771
|
+
const result = {
|
|
11772
|
+
SOID: dan.SOID
|
|
11773
|
+
};
|
|
11774
|
+
for (const key of Object.keys(dan)){
|
|
11775
|
+
const value = dan[key];
|
|
11776
|
+
if (shouldKeep(key, value)) {
|
|
11777
|
+
if ('SOID' === key) continue;
|
|
11778
|
+
Reflect.set(result, key, value);
|
|
11775
11779
|
}
|
|
11776
|
-
else delete dan[k];
|
|
11777
11780
|
}
|
|
11778
|
-
return
|
|
11781
|
+
return result;
|
|
11779
11782
|
}
|
|
11780
|
-
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {
|
|
11781
|
-
include: [],
|
|
11782
|
-
exclude: []
|
|
11783
|
-
}) {
|
|
11783
|
+
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
|
|
11784
11784
|
if (!this.extra) return this;
|
|
11785
11785
|
{
|
|
11786
11786
|
if (!include) include = [];
|
|
@@ -11795,16 +11795,16 @@ class UniDM {
|
|
|
11795
11795
|
clone.content = `${this.content} x${merge.count}`;
|
|
11796
11796
|
} else if (danuni.chapter) {
|
|
11797
11797
|
const chapter = danuni.chapter;
|
|
11798
|
-
if ("cut" === chapter.type) clone.content = `[
|
|
11799
|
-
else if ("dup" === chapter.type) clone.content = `[
|
|
11800
|
-
else clone.content = `[
|
|
11798
|
+
if ("cut" === chapter.type) clone.content = `[提示]${clone.platform}源${ExtraDanUniChapterTypeDict.chs[chapter.type]}了${chapter.duration}秒`;
|
|
11799
|
+
else if ("dup" === chapter.type) clone.content = `[提示(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}源-${chapter.duration}秒`;
|
|
11800
|
+
else clone.content = `[空降(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss.fromS(clone.progress + chapter.duration)}`;
|
|
11801
11801
|
}
|
|
11802
11802
|
} else if (check('bili') && clone.extra.bili) {
|
|
11803
11803
|
const bili = clone.extra.bili;
|
|
11804
|
-
if (7 === bili.mode && bili.adv) clone.content = `[B
|
|
11804
|
+
if (7 === bili.mode && bili.adv) clone.content = `[B站高级弹幕]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
|
|
11805
11805
|
else if (bili.command) {
|
|
11806
11806
|
const command = bili.command;
|
|
11807
|
-
clone.content = `[B
|
|
11807
|
+
clone.content = `[B站指令弹幕]${command.content}`;
|
|
11808
11808
|
clone.fontsize = 36;
|
|
11809
11809
|
}
|
|
11810
11810
|
}
|
|
@@ -11919,7 +11919,7 @@ class UniDM {
|
|
|
11919
11919
|
mode,
|
|
11920
11920
|
senderID: senderID.toString(),
|
|
11921
11921
|
ctime: this.transCtime(args.ctime, 's'),
|
|
11922
|
-
weight: args.weight
|
|
11922
|
+
weight: args.weight || (3 === pool ? 1 : 0),
|
|
11923
11923
|
pool,
|
|
11924
11924
|
attr: DMAttrUtils.fromBin(args.attr, platform_PlatformVideoSource.Bilibili),
|
|
11925
11925
|
platform: platform_PlatformVideoSource.Bilibili,
|
|
@@ -12293,7 +12293,7 @@ const src_JSON = json_bigint({
|
|
|
12293
12293
|
});
|
|
12294
12294
|
const DanUniConvertTipTemplate = {
|
|
12295
12295
|
meassage: 'Converted by DanUni!',
|
|
12296
|
-
version: `JS/TS ${package_namespaceObject.
|
|
12296
|
+
version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
|
|
12297
12297
|
};
|
|
12298
12298
|
class UniPool {
|
|
12299
12299
|
constructor(dans, options = {}, info = {
|
|
@@ -12340,7 +12340,7 @@ class UniPool {
|
|
|
12340
12340
|
return stats;
|
|
12341
12341
|
}
|
|
12342
12342
|
getMost(key) {
|
|
12343
|
-
return this.getStat(key).
|
|
12343
|
+
return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
|
|
12344
12344
|
}
|
|
12345
12345
|
get most() {
|
|
12346
12346
|
return {
|
|
@@ -12402,7 +12402,7 @@ class UniPool {
|
|
|
12402
12402
|
}
|
|
12403
12403
|
merge(lifetime = 0) {
|
|
12404
12404
|
if (!this.shared.SOID) {
|
|
12405
|
-
console.error("
|
|
12405
|
+
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
12406
12406
|
return this;
|
|
12407
12407
|
}
|
|
12408
12408
|
if (lifetime <= 0) return this;
|
|
@@ -12505,8 +12505,13 @@ class UniPool {
|
|
|
12505
12505
|
minify() {
|
|
12506
12506
|
return this.dans.map((d)=>d.minify());
|
|
12507
12507
|
}
|
|
12508
|
-
static import(file, options) {
|
|
12509
|
-
|
|
12508
|
+
static import(file, options, mod) {
|
|
12509
|
+
if (!mod) mod = [
|
|
12510
|
+
'json',
|
|
12511
|
+
'str',
|
|
12512
|
+
'bin'
|
|
12513
|
+
];
|
|
12514
|
+
const err = '无法识别该文件,请手动指定格式!';
|
|
12510
12515
|
const parseJSON = (json)=>{
|
|
12511
12516
|
try {
|
|
12512
12517
|
if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
|
|
@@ -12528,63 +12533,68 @@ class UniPool {
|
|
|
12528
12533
|
} catch {}
|
|
12529
12534
|
};
|
|
12530
12535
|
const parseStr = (file)=>{
|
|
12531
|
-
try {
|
|
12536
|
+
if (mod.includes('json')) try {
|
|
12532
12537
|
if (isJSON(file)) {
|
|
12533
12538
|
const json = src_JSON.parse(file);
|
|
12534
12539
|
return parseJSON(json);
|
|
12535
12540
|
}
|
|
12536
12541
|
} catch {}
|
|
12537
|
-
|
|
12538
|
-
|
|
12539
|
-
|
|
12540
|
-
|
|
12541
|
-
|
|
12542
|
-
|
|
12543
|
-
|
|
12544
|
-
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
|
|
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
|
+
}
|
|
12553
12560
|
};
|
|
12554
12561
|
let errmesg;
|
|
12555
|
-
if (isObject(file))
|
|
12556
|
-
|
|
12557
|
-
|
|
12558
|
-
|
|
12559
|
-
|
|
12560
|
-
|
|
12561
|
-
|
|
12562
|
-
|
|
12563
|
-
|
|
12564
|
-
|
|
12565
|
-
|
|
12566
|
-
|
|
12567
|
-
|
|
12568
|
-
|
|
12569
|
-
|
|
12570
|
-
|
|
12571
|
-
|
|
12572
|
-
|
|
12573
|
-
|
|
12574
|
-
|
|
12575
|
-
|
|
12576
|
-
|
|
12577
|
-
|
|
12578
|
-
|
|
12579
|
-
|
|
12580
|
-
|
|
12581
|
-
|
|
12582
|
-
|
|
12583
|
-
|
|
12584
|
-
|
|
12585
|
-
|
|
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}(定位: bin->string)`;
|
|
12589
|
+
} catch {}
|
|
12590
|
+
} else if (mod.includes('json')) {
|
|
12591
|
+
const prJSON = parseJSON(file);
|
|
12592
|
+
if (!prJSON) throw new Error(`${err}(定位: json)`);
|
|
12593
|
+
return prJSON;
|
|
12594
|
+
}
|
|
12595
|
+
} else if (isString(file)) {
|
|
12586
12596
|
const prStr = parseStr(file);
|
|
12587
|
-
if (!prStr) throw new Error(`${err}(
|
|
12597
|
+
if (!prStr) throw new Error(`${err}(定位: string)`);
|
|
12588
12598
|
return prStr;
|
|
12589
12599
|
}
|
|
12590
12600
|
throw new Error(errmesg ?? err);
|
|
@@ -12682,7 +12692,7 @@ class UniPool {
|
|
|
12682
12692
|
};
|
|
12683
12693
|
if (options?.avoidSenderIDWithAt) {
|
|
12684
12694
|
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
12685
|
-
if (!ok) throw new Error(
|
|
12695
|
+
if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
|
|
12686
12696
|
}
|
|
12687
12697
|
const builder = new XMLBuilder({
|
|
12688
12698
|
ignoreAttributes: false
|
|
@@ -12817,14 +12827,16 @@ class UniPool {
|
|
|
12817
12827
|
static fromASS(ass, options) {
|
|
12818
12828
|
return parseAssRawField(ass, options);
|
|
12819
12829
|
}
|
|
12820
|
-
toASS(canvasCtx, options
|
|
12821
|
-
|
|
12822
|
-
|
|
12830
|
+
toASS(canvasCtx, options) {
|
|
12831
|
+
const defaultOptions = {
|
|
12832
|
+
substyle: {}
|
|
12833
|
+
};
|
|
12834
|
+
const finalOptions = options ?? defaultOptions;
|
|
12823
12835
|
const fn = this.shared.SOID;
|
|
12824
12836
|
return generateASS(this, {
|
|
12825
12837
|
filename: fn,
|
|
12826
12838
|
title: fn,
|
|
12827
|
-
...
|
|
12839
|
+
...finalOptions
|
|
12828
12840
|
}, canvasCtx);
|
|
12829
12841
|
}
|
|
12830
12842
|
}
|
|
@@ -12936,7 +12948,7 @@ const splitGrids = ({ fontSize, padding, playResY, bottomSpace })=>{
|
|
|
12936
12948
|
};
|
|
12937
12949
|
};
|
|
12938
12950
|
const measureTextWidthConstructor = (canvasContext)=>{
|
|
12939
|
-
const supportTextMeasure = !!canvasContext.measureText(
|
|
12951
|
+
const supportTextMeasure = !!canvasContext.measureText('中');
|
|
12940
12952
|
if (supportTextMeasure) return (fontName, fontSize, bold, text)=>{
|
|
12941
12953
|
canvasContext.font = `${bold ? 'bold' : 'normal'} ${fontSize}px ${fontName}`;
|
|
12942
12954
|
const textWidth = canvasContext.measureText(text).width;
|
|
@@ -13014,7 +13026,7 @@ const initializeLayout = (config, canvasCtx)=>{
|
|
|
13014
13026
|
const layoutDanmaku = (inputList, config, canvasCtx)=>{
|
|
13015
13027
|
const list = [
|
|
13016
13028
|
...UniPool2DanmakuLists(inputList)
|
|
13017
|
-
].
|
|
13029
|
+
].toSorted((x, y)=>x.time - y.time);
|
|
13018
13030
|
const layout = initializeLayout(config, canvasCtx);
|
|
13019
13031
|
return DanmakuList2UniPool(list.map(layout).filter((danmaku)=>!!danmaku));
|
|
13020
13032
|
};
|
|
@@ -13028,7 +13040,7 @@ const formatTime = (seconds)=>{
|
|
|
13028
13040
|
const minorSecond = Math.floor((seconds - integer) * 100);
|
|
13029
13041
|
return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
|
|
13030
13042
|
};
|
|
13031
|
-
const encode = (text)=>text.toString().replaceAll('{',
|
|
13043
|
+
const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
|
|
13032
13044
|
const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
|
|
13033
13045
|
const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
|
|
13034
13046
|
const colorCommand = (color)=>`\\c${formatColor(color)}`;
|
|
@@ -13097,7 +13109,7 @@ const calculateDanmakuPosition = (danmaku, config)=>{
|
|
|
13097
13109
|
throw new Error(`Unknown danmaku type: ${danmaku.type}`);
|
|
13098
13110
|
}
|
|
13099
13111
|
};
|
|
13100
|
-
const
|
|
13112
|
+
const event_event = (list, config)=>{
|
|
13101
13113
|
const content = [
|
|
13102
13114
|
'[Events]',
|
|
13103
13115
|
'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text',
|
|
@@ -13108,11 +13120,11 @@ const ass_event = (list, config)=>{
|
|
|
13108
13120
|
];
|
|
13109
13121
|
return content.join('\n');
|
|
13110
13122
|
};
|
|
13111
|
-
const
|
|
13123
|
+
const info_info = ({ playResX, playResY }, { filename, title })=>{
|
|
13112
13124
|
const content = [
|
|
13113
13125
|
'[Script Info]',
|
|
13114
13126
|
`Title: ${title}`,
|
|
13115
|
-
`Original Script:
|
|
13127
|
+
`Original Script: 根据 ${filename} 的弹幕信息,由 ${package_namespaceObject.TB} 生成`,
|
|
13116
13128
|
'ScriptType: v4.00+',
|
|
13117
13129
|
'Collisions: Reverse',
|
|
13118
13130
|
`PlayResX: ${playResX}`,
|
|
@@ -13123,17 +13135,17 @@ const ass_info = ({ playResX, playResY }, { filename, title })=>{
|
|
|
13123
13135
|
};
|
|
13124
13136
|
var lib = __webpack_require__("../../node_modules/.pnpm/browserify-zlib@0.2.0/node_modules/browserify-zlib/lib/index.js");
|
|
13125
13137
|
var raw_Buffer = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js")["Buffer"];
|
|
13126
|
-
const compressTypes = [
|
|
13138
|
+
const compressTypes = new Set([
|
|
13127
13139
|
'brotli',
|
|
13128
13140
|
'gzip'
|
|
13129
|
-
];
|
|
13130
|
-
const baseTypes = [
|
|
13141
|
+
]);
|
|
13142
|
+
const baseTypes = new Set([
|
|
13131
13143
|
'base64',
|
|
13132
13144
|
'base18384'
|
|
13133
|
-
];
|
|
13145
|
+
]);
|
|
13134
13146
|
function fromUint16Array(array) {
|
|
13135
13147
|
let result = '';
|
|
13136
|
-
for (const element of array)result += String.
|
|
13148
|
+
for (const element of array)result += String.fromCodePoint(element);
|
|
13137
13149
|
return result;
|
|
13138
13150
|
}
|
|
13139
13151
|
function raw_raw(list, config, context, compressType = 'brotli', baseType = 'base18384') {
|
|
@@ -13156,14 +13168,14 @@ function deRaw(ass) {
|
|
|
13156
13168
|
{
|
|
13157
13169
|
let compressType = lineCompressType.replace(';RawCompressType: ', '').trim();
|
|
13158
13170
|
let baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
|
|
13159
|
-
if (!compressTypes.
|
|
13160
|
-
if (!baseTypes.
|
|
13171
|
+
if (!compressTypes.has(compressType)) compressType = 'gzip';
|
|
13172
|
+
if (!baseTypes.has(baseType)) baseType = 'base64';
|
|
13161
13173
|
const text = lineRaw.replace(';Raw: ', '').trim();
|
|
13162
|
-
const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(decode(raw_Buffer.from(text, '
|
|
13174
|
+
const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(decode(raw_Buffer.from(text, 'utf8').toString('utf8')));
|
|
13163
13175
|
let decompress;
|
|
13164
13176
|
decompress = 'brotli' === compressType ? (0, lib.brotliDecompressSync)(buffer) : (0, lib.gunzipSync)(buffer);
|
|
13165
13177
|
try {
|
|
13166
|
-
return JSON.parse(decompress.toString('
|
|
13178
|
+
return JSON.parse(decompress.toString('utf8'));
|
|
13167
13179
|
} catch {
|
|
13168
13180
|
return;
|
|
13169
13181
|
}
|
|
@@ -13210,21 +13222,22 @@ const style = ({ fontName, fontSize, color: configColor, outlineColor, backColor
|
|
|
13210
13222
|
];
|
|
13211
13223
|
return content.join('\n');
|
|
13212
13224
|
};
|
|
13213
|
-
const
|
|
13225
|
+
const default_context = {
|
|
13214
13226
|
filename: 'unknown',
|
|
13215
13227
|
title: 'unknown'
|
|
13216
|
-
}
|
|
13228
|
+
};
|
|
13229
|
+
const create_ass = (list, rawList, config, context = default_context, rawConfig)=>{
|
|
13217
13230
|
const Elist = UniPool2DanmakuLists(list);
|
|
13218
13231
|
const ErawList = UniPool2DanmakuLists(rawList);
|
|
13219
13232
|
const content = [
|
|
13220
|
-
|
|
13233
|
+
info_info(config, context),
|
|
13221
13234
|
style(config),
|
|
13222
|
-
|
|
13235
|
+
event_event(Elist, config)
|
|
13223
13236
|
];
|
|
13224
13237
|
if (config.includeRaw) content.push(raw_raw(ErawList, config, context, rawConfig?.compressType, rawConfig?.baseType));
|
|
13225
13238
|
return `${content.join('\n\n')}\n`;
|
|
13226
13239
|
};
|
|
13227
|
-
const
|
|
13240
|
+
const getConfig = (overrides = {})=>{
|
|
13228
13241
|
const defaults = {
|
|
13229
13242
|
fontSize: [
|
|
13230
13243
|
25,
|
|
@@ -13260,10 +13273,10 @@ const ass_gen_config = (overrides = {})=>{
|
|
|
13260
13273
|
return config;
|
|
13261
13274
|
};
|
|
13262
13275
|
function generateASS(danmaku, options, canvasCtx) {
|
|
13263
|
-
const config =
|
|
13276
|
+
const config = getConfig(options.substyle);
|
|
13264
13277
|
const mergedList = danmaku.merge(config.mergeIn);
|
|
13265
13278
|
const layoutList = layoutDanmaku(mergedList, config, canvasCtx);
|
|
13266
|
-
const content =
|
|
13279
|
+
const content = create_ass(layoutList, danmaku, config, {
|
|
13267
13280
|
filename: options?.filename || 'unknown',
|
|
13268
13281
|
title: options?.title || 'unknown'
|
|
13269
13282
|
}, options.raw);
|
|
@@ -13271,15 +13284,15 @@ function generateASS(danmaku, options, canvasCtx) {
|
|
|
13271
13284
|
}
|
|
13272
13285
|
function parseAssRawField(ass, options) {
|
|
13273
13286
|
const raw = deRaw(ass);
|
|
13274
|
-
if (
|
|
13275
|
-
return
|
|
13287
|
+
if (raw) return DanmakuList2UniPool(raw.list, options);
|
|
13288
|
+
return UniPool.create();
|
|
13276
13289
|
}
|
|
13277
13290
|
const src_JSON_0 = json_bigint({
|
|
13278
13291
|
useNativeBigInt: true
|
|
13279
13292
|
});
|
|
13280
13293
|
const src_DanUniConvertTipTemplate = {
|
|
13281
13294
|
meassage: 'Converted by DanUni!',
|
|
13282
|
-
version: `JS/TS ${package_namespaceObject.
|
|
13295
|
+
version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
|
|
13283
13296
|
};
|
|
13284
13297
|
class src_UniPool {
|
|
13285
13298
|
constructor(dans, options = {}, info = {
|
|
@@ -13326,7 +13339,7 @@ class src_UniPool {
|
|
|
13326
13339
|
return stats;
|
|
13327
13340
|
}
|
|
13328
13341
|
getMost(key) {
|
|
13329
|
-
return this.getStat(key).
|
|
13342
|
+
return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
|
|
13330
13343
|
}
|
|
13331
13344
|
get most() {
|
|
13332
13345
|
return {
|
|
@@ -13388,7 +13401,7 @@ class src_UniPool {
|
|
|
13388
13401
|
}
|
|
13389
13402
|
merge(lifetime = 0) {
|
|
13390
13403
|
if (!this.shared.SOID) {
|
|
13391
|
-
console.error("
|
|
13404
|
+
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
13392
13405
|
return this;
|
|
13393
13406
|
}
|
|
13394
13407
|
if (lifetime <= 0) return this;
|
|
@@ -13491,8 +13504,13 @@ class src_UniPool {
|
|
|
13491
13504
|
minify() {
|
|
13492
13505
|
return this.dans.map((d)=>d.minify());
|
|
13493
13506
|
}
|
|
13494
|
-
static import(file, options) {
|
|
13495
|
-
|
|
13507
|
+
static import(file, options, mod) {
|
|
13508
|
+
if (!mod) mod = [
|
|
13509
|
+
'json',
|
|
13510
|
+
'str',
|
|
13511
|
+
'bin'
|
|
13512
|
+
];
|
|
13513
|
+
const err = '无法识别该文件,请手动指定格式!';
|
|
13496
13514
|
const parseJSON = (json)=>{
|
|
13497
13515
|
try {
|
|
13498
13516
|
if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
|
|
@@ -13514,63 +13532,68 @@ class src_UniPool {
|
|
|
13514
13532
|
} catch {}
|
|
13515
13533
|
};
|
|
13516
13534
|
const parseStr = (file)=>{
|
|
13517
|
-
try {
|
|
13535
|
+
if (mod.includes('json')) try {
|
|
13518
13536
|
if (isJSON(file)) {
|
|
13519
13537
|
const json = src_JSON_0.parse(file);
|
|
13520
13538
|
return parseJSON(json);
|
|
13521
13539
|
}
|
|
13522
13540
|
} catch {}
|
|
13523
|
-
|
|
13524
|
-
|
|
13525
|
-
|
|
13526
|
-
|
|
13527
|
-
|
|
13528
|
-
|
|
13529
|
-
|
|
13530
|
-
|
|
13531
|
-
|
|
13532
|
-
|
|
13533
|
-
|
|
13534
|
-
|
|
13535
|
-
|
|
13536
|
-
|
|
13537
|
-
|
|
13538
|
-
|
|
13541
|
+
if (mod.includes('str')) {
|
|
13542
|
+
try {
|
|
13543
|
+
const xmlParser = new XMLParser({
|
|
13544
|
+
ignoreAttributes: false
|
|
13545
|
+
});
|
|
13546
|
+
const xml = xmlParser.parse(file);
|
|
13547
|
+
if (xml?.i?.d) return {
|
|
13548
|
+
pool: this.fromBiliXML(file, options),
|
|
13549
|
+
fmt: 'bili.xml'
|
|
13550
|
+
};
|
|
13551
|
+
} catch {}
|
|
13552
|
+
try {
|
|
13553
|
+
return {
|
|
13554
|
+
pool: this.fromASS(file, options),
|
|
13555
|
+
fmt: 'common.ass'
|
|
13556
|
+
};
|
|
13557
|
+
} catch {}
|
|
13558
|
+
}
|
|
13539
13559
|
};
|
|
13540
13560
|
let errmesg;
|
|
13541
|
-
if (isObject(file))
|
|
13542
|
-
|
|
13543
|
-
|
|
13544
|
-
|
|
13545
|
-
|
|
13546
|
-
|
|
13547
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13550
|
-
|
|
13551
|
-
|
|
13552
|
-
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13561
|
+
if (isObject(file)) {
|
|
13562
|
+
if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
|
|
13563
|
+
if (mod.includes('bin')) {
|
|
13564
|
+
try {
|
|
13565
|
+
return {
|
|
13566
|
+
pool: this.fromPb(file),
|
|
13567
|
+
fmt: 'danuni.pb.bin'
|
|
13568
|
+
};
|
|
13569
|
+
} catch {}
|
|
13570
|
+
try {
|
|
13571
|
+
return {
|
|
13572
|
+
pool: this.fromBiliGrpc(file),
|
|
13573
|
+
fmt: 'bili.pb.bin'
|
|
13574
|
+
};
|
|
13575
|
+
} catch {}
|
|
13576
|
+
try {
|
|
13577
|
+
return {
|
|
13578
|
+
pool: this.fromBiliCommandGrpc(file),
|
|
13579
|
+
fmt: 'bili.cmd.pb.bin'
|
|
13580
|
+
};
|
|
13581
|
+
} catch {}
|
|
13582
|
+
}
|
|
13583
|
+
try {
|
|
13584
|
+
const fileStr = new TextDecoder().decode(file);
|
|
13585
|
+
const prStr = parseStr(fileStr);
|
|
13586
|
+
if (prStr) return prStr;
|
|
13587
|
+
errmesg = `${err}(定位: bin->string)`;
|
|
13588
|
+
} catch {}
|
|
13589
|
+
} else if (mod.includes('json')) {
|
|
13590
|
+
const prJSON = parseJSON(file);
|
|
13591
|
+
if (!prJSON) throw new Error(`${err}(定位: json)`);
|
|
13592
|
+
return prJSON;
|
|
13593
|
+
}
|
|
13594
|
+
} else if (isString(file)) {
|
|
13572
13595
|
const prStr = parseStr(file);
|
|
13573
|
-
if (!prStr) throw new Error(`${err}(
|
|
13596
|
+
if (!prStr) throw new Error(`${err}(定位: string)`);
|
|
13574
13597
|
return prStr;
|
|
13575
13598
|
}
|
|
13576
13599
|
throw new Error(errmesg ?? err);
|
|
@@ -13668,7 +13691,7 @@ class src_UniPool {
|
|
|
13668
13691
|
};
|
|
13669
13692
|
if (options?.avoidSenderIDWithAt) {
|
|
13670
13693
|
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
13671
|
-
if (!ok) throw new Error(
|
|
13694
|
+
if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
|
|
13672
13695
|
}
|
|
13673
13696
|
const builder = new XMLBuilder({
|
|
13674
13697
|
ignoreAttributes: false
|
|
@@ -13803,14 +13826,16 @@ class src_UniPool {
|
|
|
13803
13826
|
static fromASS(ass, options) {
|
|
13804
13827
|
return parseAssRawField(ass, options);
|
|
13805
13828
|
}
|
|
13806
|
-
toASS(canvasCtx, options
|
|
13807
|
-
|
|
13808
|
-
|
|
13829
|
+
toASS(canvasCtx, options) {
|
|
13830
|
+
const defaultOptions = {
|
|
13831
|
+
substyle: {}
|
|
13832
|
+
};
|
|
13833
|
+
const finalOptions = options ?? defaultOptions;
|
|
13809
13834
|
const fn = this.shared.SOID;
|
|
13810
13835
|
return generateASS(this, {
|
|
13811
13836
|
filename: fn,
|
|
13812
13837
|
title: fn,
|
|
13813
|
-
...
|
|
13838
|
+
...finalOptions
|
|
13814
13839
|
}, canvasCtx);
|
|
13815
13840
|
}
|
|
13816
13841
|
}
|