bc-deeplib 2.2.0 → 2.4.0
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/deeplib.d.ts +28 -29
- package/dist/deeplib.js +103 -104
- package/dist/deeplib.js.map +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/deeplib.js
CHANGED
|
@@ -231,7 +231,9 @@ var BaseModule = class {
|
|
|
231
231
|
if (!modStorage.playerStorage) {
|
|
232
232
|
Player[modName] = {};
|
|
233
233
|
this.registerDefaultSettings();
|
|
234
|
-
} else if (!modStorage.playerStorage[this.settingsStorage])
|
|
234
|
+
} else if (!modStorage.playerStorage[this.settingsStorage]) {
|
|
235
|
+
this.registerDefaultSettings();
|
|
236
|
+
}
|
|
235
237
|
return modStorage.playerStorage[this.settingsStorage];
|
|
236
238
|
}
|
|
237
239
|
/**
|
|
@@ -245,7 +247,9 @@ var BaseModule = class {
|
|
|
245
247
|
if (!storage.playerStorage) {
|
|
246
248
|
Player[modName] = {};
|
|
247
249
|
this.registerDefaultSettings();
|
|
248
|
-
} else if (!storage.playerStorage[this.settingsStorage])
|
|
250
|
+
} else if (!storage.playerStorage[this.settingsStorage]) {
|
|
251
|
+
this.registerDefaultSettings();
|
|
252
|
+
}
|
|
249
253
|
storage.playerStorage[this.settingsStorage] = value;
|
|
250
254
|
}
|
|
251
255
|
/**
|
|
@@ -254,7 +258,6 @@ var BaseModule = class {
|
|
|
254
258
|
* Subclasses can override to perform additional setup.
|
|
255
259
|
*/
|
|
256
260
|
init() {
|
|
257
|
-
this.registerDefaultSettings();
|
|
258
261
|
}
|
|
259
262
|
/**
|
|
260
263
|
* Registers default settings for this module in persistent storage.
|
|
@@ -264,10 +267,11 @@ var BaseModule = class {
|
|
|
264
267
|
* Existing values will NOT be overwritten.
|
|
265
268
|
*/
|
|
266
269
|
registerDefaultSettings() {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
270
|
+
if (this.defaultSettings && hasGetter(this, "defaultSettings") && this.settings && hasSetter(this, "settings")) {
|
|
271
|
+
if (!this.defaultSettings || !this.settings) return;
|
|
272
|
+
if (Object.entries(this.defaultSettings).length === 0) return;
|
|
273
|
+
this.settings = deepMerge(this.defaultSettings, this.settings, { concatArrays: false });
|
|
274
|
+
}
|
|
271
275
|
}
|
|
272
276
|
/**
|
|
273
277
|
* Provides default settings for this module.
|
|
@@ -331,6 +335,8 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
331
335
|
settingsWidth: 1e3,
|
|
332
336
|
forceUpCharacter: false
|
|
333
337
|
};
|
|
338
|
+
/** The menu at the top of the subscreen */
|
|
339
|
+
static menu = null;
|
|
334
340
|
constructor(module) {
|
|
335
341
|
if (module) this.module = module;
|
|
336
342
|
const ctor = this.constructor;
|
|
@@ -422,14 +428,14 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
422
428
|
load() {
|
|
423
429
|
for (const module of modules()) {
|
|
424
430
|
if (!module.settingsScreen) continue;
|
|
425
|
-
if (!module.settings || !Object.keys(module.settings).length) module.registerDefaultSettings();
|
|
431
|
+
if (!module.settings || !Object.keys(module.settings).length) module.registerDefaultSettings(modStorage.playerStorage);
|
|
426
432
|
}
|
|
427
433
|
_BaseSubscreen.currentPage = 1;
|
|
428
434
|
layout.getSubscreen();
|
|
429
435
|
const settingsElement = layout.getSettingsDiv();
|
|
430
436
|
layout.appendToSubscreen(settingsElement);
|
|
431
|
-
|
|
432
|
-
layout.appendToSubscreen(menu);
|
|
437
|
+
_BaseSubscreen.menu = ElementMenu.Create("deeplib-nav-menu", []);
|
|
438
|
+
layout.appendToSubscreen(_BaseSubscreen.menu);
|
|
433
439
|
if (this.pageStructure.length > 1) {
|
|
434
440
|
const backNext = advElement.createBackNext({
|
|
435
441
|
id: "deeplib-page-back-next",
|
|
@@ -439,7 +445,7 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
439
445
|
initialPrevTooltip: getText("settings.button.prev_button_hint"),
|
|
440
446
|
initialLabel: this.getPageLabel()
|
|
441
447
|
});
|
|
442
|
-
|
|
448
|
+
_BaseSubscreen.menu.prepend(backNext);
|
|
443
449
|
}
|
|
444
450
|
if (this.options.help) {
|
|
445
451
|
const onClick = this.options.help.onClick;
|
|
@@ -463,7 +469,7 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
463
469
|
tooltip: this.options.help.tooltip
|
|
464
470
|
}
|
|
465
471
|
});
|
|
466
|
-
|
|
472
|
+
_BaseSubscreen.menu.append(helpButton);
|
|
467
473
|
}
|
|
468
474
|
if (this.options.doShowTitle) {
|
|
469
475
|
const subscreenTitle = advElement.createLabel({
|
|
@@ -484,7 +490,7 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
484
490
|
tooltip: getText("settings.button.back_button_hint")
|
|
485
491
|
}
|
|
486
492
|
});
|
|
487
|
-
|
|
493
|
+
_BaseSubscreen.menu.append(exitButton);
|
|
488
494
|
}
|
|
489
495
|
const tooltip = advElement.createTooltip();
|
|
490
496
|
layout.appendToSubscreen(tooltip);
|
|
@@ -568,8 +574,10 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
568
574
|
ElementSetFontSize(subscreen, "auto");
|
|
569
575
|
ElementSetPosition(settingsDiv, 530 - offset, 170);
|
|
570
576
|
ElementSetSize(settingsDiv, this.options.settingsWidth ?? 1e3 + offset, 660);
|
|
571
|
-
|
|
572
|
-
|
|
577
|
+
if (this.options.doShowTitle) {
|
|
578
|
+
ElementSetPosition("deeplib-subscreen-title", 530 - offset, 75);
|
|
579
|
+
ElementSetSize("deeplib-subscreen-title", 800, 60);
|
|
580
|
+
}
|
|
573
581
|
ElementSetPosition("deeplib-nav-menu", 1905, 75, "top-right");
|
|
574
582
|
ElementSetSize("deeplib-nav-menu", null, 90);
|
|
575
583
|
ElementSetPosition(advElement.getTooltip() || "", 250, 850);
|
|
@@ -622,12 +630,9 @@ var styles_default = `.deeplib-subscreen,
|
|
|
622
630
|
width: 100%;
|
|
623
631
|
height: 100%;
|
|
624
632
|
}
|
|
625
|
-
|
|
626
|
-
.deeplib-button.button-styling,
|
|
627
|
-
.deeplib-button.button-styling::before {
|
|
633
|
+
.deeplib-button.button-styling, .deeplib-button.button-styling::before {
|
|
628
634
|
border-radius: min(1dvh, 0.5dvw);
|
|
629
635
|
}
|
|
630
|
-
|
|
631
636
|
.deeplib-button img {
|
|
632
637
|
position: absolute;
|
|
633
638
|
top: 0%;
|
|
@@ -647,17 +652,15 @@ var styles_default = `.deeplib-subscreen,
|
|
|
647
652
|
mask-image: var(--image);
|
|
648
653
|
pointer-events: none;
|
|
649
654
|
}
|
|
650
|
-
|
|
651
655
|
.deeplib-button:hover img {
|
|
652
656
|
background-color: var(--deeplib-icon-hover-color);
|
|
653
657
|
}
|
|
654
|
-
|
|
655
658
|
.deeplib-button .button-label {
|
|
656
659
|
background-color: transparent !important;
|
|
657
660
|
color: var(--deeplib-text-color);
|
|
658
661
|
font-size: min(3.6dvh, 1.8dvw);
|
|
662
|
+
display: contents;
|
|
659
663
|
}
|
|
660
|
-
|
|
661
664
|
.deeplib-button .button-tooltip {
|
|
662
665
|
border-radius: min(1dvh, 0.5dvw);
|
|
663
666
|
}
|
|
@@ -666,11 +669,14 @@ var styles_default = `.deeplib-subscreen,
|
|
|
666
669
|
display: flex;
|
|
667
670
|
align-items: center;
|
|
668
671
|
justify-content: center;
|
|
672
|
+
pointer-events: none;
|
|
669
673
|
}
|
|
670
674
|
|
|
671
675
|
#deeplib-subscreen-title {
|
|
672
676
|
text-align: left;
|
|
673
677
|
color: var(--deeplib-text-color);
|
|
678
|
+
user-select: none;
|
|
679
|
+
pointer-events: none;
|
|
674
680
|
}
|
|
675
681
|
|
|
676
682
|
.deeplib-text {
|
|
@@ -740,12 +746,17 @@ var styles_default = `.deeplib-subscreen,
|
|
|
740
746
|
}
|
|
741
747
|
.deeplib-prev-next .deeplib-prev-next-label {
|
|
742
748
|
white-space: nowrap;
|
|
749
|
+
user-select: none;
|
|
743
750
|
}
|
|
744
751
|
|
|
745
752
|
#deeplib-nav-menu {
|
|
746
753
|
display: flex;
|
|
747
754
|
flex-direction: row;
|
|
748
755
|
gap: min(2dvh, 1dvw);
|
|
756
|
+
z-index: 1;
|
|
757
|
+
}
|
|
758
|
+
#deeplib-nav-menu > .deeplib-button {
|
|
759
|
+
flex: 1 0 auto;
|
|
749
760
|
}
|
|
750
761
|
|
|
751
762
|
#deeplib-storage-meter {
|
|
@@ -760,8 +771,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
760
771
|
border-radius: var(--deeplib-border-radius);
|
|
761
772
|
z-index: -1;
|
|
762
773
|
}
|
|
763
|
-
|
|
764
|
-
#deeplib-storage-bar {
|
|
774
|
+
#deeplib-storage-meter #deeplib-storage-bar {
|
|
765
775
|
height: 100%;
|
|
766
776
|
width: 0%;
|
|
767
777
|
background: var(--deeplib-accent-color);
|
|
@@ -772,9 +782,12 @@ var styles_default = `.deeplib-subscreen,
|
|
|
772
782
|
flex-direction: row;
|
|
773
783
|
align-items: center;
|
|
774
784
|
gap: 0.3em;
|
|
785
|
+
width: fit-content;
|
|
775
786
|
}
|
|
776
|
-
|
|
777
|
-
|
|
787
|
+
.deeplib-checkbox-container span {
|
|
788
|
+
user-select: none;
|
|
789
|
+
}
|
|
790
|
+
.deeplib-checkbox-container .deeplib-input {
|
|
778
791
|
width: min(5vh, 2.5vw);
|
|
779
792
|
height: min(5vh, 2.5vw);
|
|
780
793
|
width: min(5dvh, 2.5dvw);
|
|
@@ -782,8 +795,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
782
795
|
border-radius: min(1vh, 0.5vw);
|
|
783
796
|
border-radius: min(1dvh, 0.5dvw);
|
|
784
797
|
}
|
|
785
|
-
|
|
786
|
-
.deeplib-checkbox-container input.deeplib-input[type=checkbox]:checked::before {
|
|
798
|
+
.deeplib-checkbox-container .deeplib-input[type=checkbox]:checked::before {
|
|
787
799
|
width: 80%;
|
|
788
800
|
height: 80%;
|
|
789
801
|
}
|
|
@@ -793,14 +805,16 @@ var styles_default = `.deeplib-subscreen,
|
|
|
793
805
|
flex-direction: row;
|
|
794
806
|
align-items: center;
|
|
795
807
|
gap: 0.3em;
|
|
808
|
+
width: fit-content;
|
|
796
809
|
}
|
|
797
|
-
|
|
798
|
-
|
|
810
|
+
.deeplib-input-container span {
|
|
811
|
+
user-select: none;
|
|
812
|
+
}
|
|
813
|
+
.deeplib-input-container:has(.deeplib-text) {
|
|
799
814
|
margin-top: min(1vh, 0.5vw);
|
|
800
815
|
margin-top: min(1dvh, 0.5dvw);
|
|
801
816
|
}
|
|
802
|
-
|
|
803
|
-
.deeplib-input-container input.deeplib-input {
|
|
817
|
+
.deeplib-input-container .deeplib-input {
|
|
804
818
|
font-size: 0.6em;
|
|
805
819
|
padding: min(1vh, 0.5vw);
|
|
806
820
|
padding: min(1dvh, 0.5dvw);
|
|
@@ -811,8 +825,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
811
825
|
border-radius: min(1vh, 0.5vw);
|
|
812
826
|
border-radius: min(1dvh, 0.5dvw);
|
|
813
827
|
}
|
|
814
|
-
|
|
815
|
-
.deeplib-input-container input.deeplib-input[type=color] {
|
|
828
|
+
.deeplib-input-container .deeplib-input[type=color] {
|
|
816
829
|
padding: 0px;
|
|
817
830
|
width: min(5vh, 2.5vw);
|
|
818
831
|
height: min(5vh, 2.5vw);
|
|
@@ -820,8 +833,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
820
833
|
height: min(5dvh, 2.5dvw);
|
|
821
834
|
border-radius: 0px;
|
|
822
835
|
}
|
|
823
|
-
|
|
824
|
-
.deeplib-input-container input.deeplib-input[type=color]:disabled {
|
|
836
|
+
.deeplib-input-container .deeplib-input[type=color]:disabled {
|
|
825
837
|
border: var(--deeplib-blocked-color) solid var(--deeplib-border-width);
|
|
826
838
|
cursor: not-allowed;
|
|
827
839
|
}
|
|
@@ -833,6 +845,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
833
845
|
gap: min(2vh, 1vw);
|
|
834
846
|
gap: min(2dvh, 1dvw);
|
|
835
847
|
color: var(--deeplib-text-color);
|
|
848
|
+
width: fit-content;
|
|
836
849
|
}
|
|
837
850
|
.deeplib-dropdown-container select {
|
|
838
851
|
padding: 0 min(1vh, 0.5vw);
|
|
@@ -840,6 +853,9 @@ var styles_default = `.deeplib-subscreen,
|
|
|
840
853
|
border-radius: min(1vh, 0.5vw);
|
|
841
854
|
border-radius: min(1dvh, 0.5dvw);
|
|
842
855
|
}
|
|
856
|
+
.deeplib-dropdown-container span {
|
|
857
|
+
user-select: none;
|
|
858
|
+
}
|
|
843
859
|
|
|
844
860
|
.deeplib-highlight-text {
|
|
845
861
|
font-weight: bold;
|
|
@@ -933,21 +949,23 @@ var styles_default = `.deeplib-subscreen,
|
|
|
933
949
|
height: 100dvh;
|
|
934
950
|
background-color: rgba(0, 0, 0, 0.5);
|
|
935
951
|
}
|
|
936
|
-
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21udC9zaGluZG93cy9TdHVmZi9Db2RlL2JjL0JDLURlZXBMaWIvc3JjL3N0eWxlcyIsInNvdXJjZXMiOlsidmFycy5zY3NzIiwiYnV0dG9ucy5zY3NzIiwiZWxlbWVudHMuc2NzcyIsImlucHV0cy5zY3NzIiwibWVzc2FnZXMuc2NzcyIsIm1vZGFsLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUNkRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUMzQ0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0U7RUFDRTtFQUNBOztBQUhKO0VBTUU7RUFDQTs7QUFHRjtFQUNFOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQ3pHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUN2RUo7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FDN0JGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLmRlZXBsaWItc3Vic2NyZWVuLFxuLmRlZXBsaWItbW9kYWwge1xuICAtLWRlZXBsaWItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdG1kLW1haW4sIHdoaXRlKTtcbiAgLS1kZWVwbGliLWVsZW1lbnQtY29sb3I6IHZhcigtLXRtZC1lbGVtZW50LCB3aGl0ZSk7XG4gIC0tZGVlcGxpYi1lbGVtZW50LWhvdmVyLWNvbG9yOiB2YXIoLS10bWQtZWxlbWVudC1ob3ZlciwgY3lhbik7XG4gIC0tZGVlcGxpYi1hY2NlbnQtY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsICNGRkZGODgpO1xuICAtLWRlZXBsaWItYmxvY2tlZC1jb2xvcjogdmFyKC0tdG1kLWJsb2NrZWQsIHJlZCk7XG4gIC0tZGVlcGxpYi10ZXh0LWNvbG9yOiB2YXIoLS10bWQtdGV4dCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWFjY2VudC1ob3ZlciwgYmxhY2spO1xuICAtLWRlZXBsaWItYm9yZGVyLWNvbG9yOiB2YXIoLS10bWQtYWNjZW50LCBibGFjayk7XG4gIC0tZGVlcGxpYi1ib3JkZXItd2lkdGg6IG1pbigwLjJ2aCwgMC4xdncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXdpZHRoOiBtaW4oMC4yZHZoLCAwLjFkdncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXJhZGl1czogbWluKDF2aCwgMC41dncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXJhZGl1czogbWluKDFkdmgsIDAuNWR2dyk7XG59XG4iLCIuZGVlcGxpYi1idXR0b24ge1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmRlZXBsaWItYnV0dG9uLmJ1dHRvbi1zdHlsaW5nLFxuLmRlZXBsaWItYnV0dG9uLmJ1dHRvbi1zdHlsaW5nOjpiZWZvcmUge1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuXG4uZGVlcGxpYi1idXR0b24gaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAlO1xuICBsZWZ0OiAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1pY29uLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBtYXNrLXBvc2l0aW9uOiBsZWZ0O1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcblxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1pbWFnZSk7XG4gIG1hc2staW1hZ2U6IHZhcigtLWltYWdlKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5kZWVwbGliLWJ1dHRvbjpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWljb24taG92ZXItY29sb3IpO1xufVxuXG4uZGVlcGxpYi1idXR0b24gLmJ1dHRvbi1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICBmb250LXNpemU6IG1pbigzLjZkdmgsIDEuOGR2dyk7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiAuYnV0dG9uLXRvb2x0aXAge1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuIiwiI2RlZXBsaWItcGFnZS1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4jZGVlcGxpYi1zdWJzY3JlZW4tdGl0bGUge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbn1cblxuLmRlZXBsaWItdGV4dCB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4uZGVlcGxpYi1zdWJzY3JlZW4ge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGVlcGxpYi1zdWJzY3JlZW4gKiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG5cbi5kZWVwbGliLXNldHRpbmdzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1hdXRvLXJvd3M6IG1pbi1jb250ZW50O1xuICBwYWRkaW5nOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1taXNjIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICBnYXA6IG1pbigxdmgsIDAuNXZ3KTtcbn1cblxuLmRlZXBsaWItdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgcGFkZGluZzogbWluKDF2aCwgMC41dncpO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBib3JkZXI6IG1pbigwLjJ2aCwgMC4xdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgei1pbmRleDogMTtcbn1cblxuLmRlZXBsaWItb3ZlcmZsb3ctYm94IHtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcikgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItd2lkdGgpO1xufVxuXG4uZGVlcGxpYi1wcmV2LW5leHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG5cbiAgLmRlZXBsaWItcHJldi1uZXh0LWJ1dHRvbiB7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtaG92ZXItY29sb3IpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gICAgXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgfVxuXG4gIC5kZWVwbGliLXByZXYtbmV4dC1sYWJlbCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxufVxuXG4jZGVlcGxpYi1uYXYtbWVudSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogbWluKDJkdmgsIDFkdncpO1xufVxuXG4jZGVlcGxpYi1zdG9yYWdlLW1ldGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBib3JkZXI6IHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXBsaWItYm9yZGVyLXJhZGl1cyk7XG4gIHotaW5kZXg6IC0xO1xufVxuXG4jZGVlcGxpYi1zdG9yYWdlLWJhciB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDAlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVwbGliLWFjY2VudC1jb2xvcik7XG59XG4iLCIuZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dCB7XG4gIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gIGhlaWdodDogbWluKDV2aCwgMi41dncpO1xuICB3aWR0aDogbWluKDVkdmgsIDIuNWR2dyk7XG4gIGhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjB2aCwgMC41dncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuXG4uZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZDo6YmVmb3JlIHtcbiAgd2lkdGg6IDgwJTtcbiAgaGVpZ2h0OiA4MCU7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zZW07XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lcjpoYXMobGFiZWwuZGVlcGxpYi10ZXh0KSB7XG4gIG1hcmdpbi10b3A6IG1pbigxdmgsIDAuNXZ3KTtcbiAgbWFyZ2luLXRvcDogbWluKDFkdmgsIDAuNWR2dyk7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0IHtcbiAgZm9udC1zaXplOiAwLjZlbTtcbiAgcGFkZGluZzogbWluKDF2aCwgMC41dncpO1xuICBwYWRkaW5nOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIG91dGxpbmU6IG5vbmU7XG4gIG1pbi1oZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgbWluLWhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjB2aCwgMC41dncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dFt0eXBlPVwiY29sb3JcIl0ge1xuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gIGhlaWdodDogbWluKDV2aCwgMi41dncpO1xuICB3aWR0aDogbWluKDVkdmgsIDIuNWR2dyk7XG4gIGhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbn1cblxuLmRlZXBsaWItaW5wdXQtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNvbG9yXCJdOmRpc2FibGVkIHtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJsb2NrZWQtY29sb3IpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmRlZXBsaWItZHJvcGRvd24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiBtaW4oMnZoLCAxdncpO1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nOiAwIG1pbigxdmgsIDAuNXZ3KTtcbiAgICBwYWRkaW5nOiAwIG1pbigxZHZoLCAwLjVkdncpO1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxdmgsIDAuNXZ3KTtcbiAgICBib3JkZXItcmFkaXVzOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgfVxufSIsIi5kZWVwbGliLWhpZ2hsaWdodC10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiByZ2IoMjAzLCAxODUsIDIzKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsnXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgIzQ0MDE3MTtcbiAgY29sb3I6ICMxMTE7XG4gIHBhZGRpbmctbGVmdDogbWluKDAuNmR2aCwgMC4zZHZ3KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2cgZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICMxMTE7XG59XG4iLCIuZGVlcGxpYi1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB6LWluZGV4OiAxMDAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVlbTtcbiAgd2lkdGg6IG1heCg1MGR2dywgMjVkdmgpO1xuICBmb250LXNpemU6IG1pbig0ZHZoLCAyZHZ3KTtcbiAgcGFkZGluZzogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4yZHZoLCAwLjZkdncpO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcblxuICAuZGVlcGxpYi1tb2RhbC1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC1zaXplOiBtaW4oMi42ZHZoLCAxLjhkdncpO1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gICAgcGFkZGluZzogbWluKDFkdmgsIDAuNWR2dyk7XG4gIH1cblxuICBpbnB1dC5kZWVwbGliLW1vZGFsLWlucHV0IHtcbiAgICBtYXgtd2lkdGg6IG1heCg1MGR2aCwgMjVkdncpO1xuICB9XG5cbiAgLmRlZXBsaWItbW9kYWwtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjVlbTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC5kZWVwbGliLWJ1dHRvbiB7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZzogbWluKDAuNHZoLCAwLjJ2dykgbWluKDJ2aCwgMXZ3KTtcblxuICAgICAgLmJ1dHRvbi1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kZWVwbGliLW1vZGFsLXByb21wdC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG5cbi5kZWVwbGliLW1vZGFsLWJsb2NrZXIge1xuICB6LWluZGV4OiAxMDAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMGR2dztcbiAgaGVpZ2h0OiAxMDBkdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cbiJdfQ== */`;
|
|
952
|
+
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21udC9zaGluZG93cy9TdHVmZi9Db2RlL2JjL0JDLURlZXBMaWIvc3JjL3N0eWxlcyIsInNvdXJjZXMiOlsidmFycy5zY3NzIiwiYnV0dG9ucy5zY3NzIiwiZWxlbWVudHMuc2NzcyIsImlucHV0cy5zY3NzIiwibWVzc2FnZXMuc2NzcyIsIm1vZGFsLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUNkRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUVFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7O0FDM0NKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFISjtFQU1FO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7OztBQ2pISjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7OztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7OztBQU9SO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOzs7QUN2Rko7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FDN0JGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLmRlZXBsaWItc3Vic2NyZWVuLFxuLmRlZXBsaWItbW9kYWwge1xuICAtLWRlZXBsaWItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdG1kLW1haW4sIHdoaXRlKTtcbiAgLS1kZWVwbGliLWVsZW1lbnQtY29sb3I6IHZhcigtLXRtZC1lbGVtZW50LCB3aGl0ZSk7XG4gIC0tZGVlcGxpYi1lbGVtZW50LWhvdmVyLWNvbG9yOiB2YXIoLS10bWQtZWxlbWVudC1ob3ZlciwgY3lhbik7XG4gIC0tZGVlcGxpYi1hY2NlbnQtY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsICNGRkZGODgpO1xuICAtLWRlZXBsaWItYmxvY2tlZC1jb2xvcjogdmFyKC0tdG1kLWJsb2NrZWQsIHJlZCk7XG4gIC0tZGVlcGxpYi10ZXh0LWNvbG9yOiB2YXIoLS10bWQtdGV4dCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWFjY2VudC1ob3ZlciwgYmxhY2spO1xuICAtLWRlZXBsaWItYm9yZGVyLWNvbG9yOiB2YXIoLS10bWQtYWNjZW50LCBibGFjayk7XG4gIC0tZGVlcGxpYi1ib3JkZXItd2lkdGg6IG1pbigwLjJ2aCwgMC4xdncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXdpZHRoOiBtaW4oMC4yZHZoLCAwLjFkdncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXJhZGl1czogbWluKDF2aCwgMC41dncpO1xuICAtLWRlZXBsaWItYm9yZGVyLXJhZGl1czogbWluKDFkdmgsIDAuNWR2dyk7XG59XG4iLCIuZGVlcGxpYi1idXR0b24ge1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcblxuICAmLmJ1dHRvbi1zdHlsaW5nLFxuICAmLmJ1dHRvbi1zdHlsaW5nOjpiZWZvcmUge1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIH1cblxuICBpbWcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAlO1xuICAgIGxlZnQ6IDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItaWNvbi1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1wb3NpdGlvbjogbGVmdDtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWltYWdlKTtcbiAgICBtYXNrLWltYWdlOiB2YXIoLS1pbWFnZSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAmOmhvdmVyIGltZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1pY29uLWhvdmVyLWNvbG9yKTtcbiAgfVxuXG4gIC5idXR0b24tbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gICAgZm9udC1zaXplOiBtaW4oMy42ZHZoLCAxLjhkdncpO1xuICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICB9XG5cbiAgLmJ1dHRvbi10b29sdGlwIHtcbiAgICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xuICB9XG59IiwiI2RlZXBsaWItcGFnZS1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuI2RlZXBsaWItc3Vic2NyZWVuLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRlZXBsaWItdGV4dCB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4uZGVlcGxpYi1zdWJzY3JlZW4ge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGVlcGxpYi1zdWJzY3JlZW4gKiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG5cbi5kZWVwbGliLXNldHRpbmdzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1hdXRvLXJvd3M6IG1pbi1jb250ZW50O1xuICBwYWRkaW5nOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1taXNjIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICBnYXA6IG1pbigxdmgsIDAuNXZ3KTtcbn1cblxuLmRlZXBsaWItdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgcGFkZGluZzogbWluKDF2aCwgMC41dncpO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBib3JkZXI6IG1pbigwLjJ2aCwgMC4xdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgei1pbmRleDogMTtcbn1cblxuLmRlZXBsaWItb3ZlcmZsb3ctYm94IHtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcikgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItd2lkdGgpO1xufVxuXG4uZGVlcGxpYi1wcmV2LW5leHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG5cbiAgLmRlZXBsaWItcHJldi1uZXh0LWJ1dHRvbiB7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtaG92ZXItY29sb3IpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG5cbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICB9XG5cbiAgLmRlZXBsaWItcHJldi1uZXh0LWxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICB9XG59XG5cbiNkZWVwbGliLW5hdi1tZW51IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiBtaW4oMmR2aCwgMWR2dyk7XG4gIHotaW5kZXg6IDE7XG5cbiAgJj4uZGVlcGxpYi1idXR0b24ge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG59XG5cbiNkZWVwbGliLXN0b3JhZ2UtbWV0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzKTtcbiAgei1pbmRleDogLTE7XG5cbiAgI2RlZXBsaWItc3RvcmFnZS1iYXIge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMCU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcGxpYi1hY2NlbnQtY29sb3IpO1xuICB9XG59IiwiLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjNlbTtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuXG4gIHNwYW4ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICB9XG5cbiAgLmRlZXBsaWItaW5wdXQge1xuICAgIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gICAgaGVpZ2h0OiBtaW4oNXZoLCAyLjV2dyk7XG4gICAgd2lkdGg6IG1pbig1ZHZoLCAyLjVkdncpO1xuICAgIGhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMHZoLCAwLjV2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcblxuICAgICZbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQ6OmJlZm9yZSB7XG4gICAgICB3aWR0aDogODAlO1xuICAgICAgaGVpZ2h0OiA4MCU7XG4gICAgfVxuICB9XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zZW07XG4gIHdpZHRoOiBmaXQtY29udGVudDtcblxuICBzcGFuIHtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gICY6aGFzKC5kZWVwbGliLXRleHQpIHtcbiAgICBtYXJnaW4tdG9wOiBtaW4oMXZoLCAwLjV2dyk7XG4gICAgbWFyZ2luLXRvcDogbWluKDFkdmgsIDAuNWR2dyk7XG4gIH1cblxuICAuZGVlcGxpYi1pbnB1dCB7XG4gICAgZm9udC1zaXplOiAwLjZlbTtcbiAgICBwYWRkaW5nOiBtaW4oMXZoLCAwLjV2dyk7XG4gICAgcGFkZGluZzogbWluKDFkdmgsIDAuNWR2dyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4taGVpZ2h0OiBtaW4oNXZoLCAyLjV2dyk7XG4gICAgbWluLWhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMHZoLCAwLjV2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcblxuICAgICZbdHlwZT1cImNvbG9yXCJdIHtcbiAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gICAgICBoZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgICAgIHdpZHRoOiBtaW4oNWR2aCwgMi41ZHZ3KTtcbiAgICAgIGhlaWdodDogbWluKDVkdmgsIDIuNWR2dyk7XG4gICAgICBib3JkZXItcmFkaXVzOiAwcHg7XG5cbiAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICBib3JkZXI6IHZhcigtLWRlZXBsaWItYmxvY2tlZC1jb2xvcikgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItd2lkdGgpO1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi5kZWVwbGliLWRyb3Bkb3duLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogbWluKDJ2aCwgMXZ3KTtcbiAgZ2FwOiBtaW4oMmR2aCwgMWR2dyk7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nOiAwIG1pbigxdmgsIDAuNXZ3KTtcbiAgICBwYWRkaW5nOiAwIG1pbigxZHZoLCAwLjVkdncpO1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxdmgsIDAuNXZ3KTtcbiAgICBib3JkZXItcmFkaXVzOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgfVxuXG4gIHNwYW4ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICB9XG59IiwiLmRlZXBsaWItaGlnaGxpZ2h0LXRleHQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6IHJnYigyMDMsIDE4NSwgMjMpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyayddIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2UsXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyazInXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgYm9yZGVyOiBtaW4oMC4yZHZoLCAwLjFkdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2cgZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCAjNDQwMTcxO1xuICBjb2xvcjogIzExMTtcbiAgcGFkZGluZy1sZWZ0OiBtaW4oMC42ZHZoLCAwLjNkdncpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsnXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEsXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyazInXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEge1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZyBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogIzExMTtcbn1cbiIsIi5kZWVwbGliLW1vZGFsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDEwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHotaW5kZXg6IDEwMDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNWVtO1xuICB3aWR0aDogbWF4KDUwZHZ3LCAyNWR2aCk7XG4gIGZvbnQtc2l6ZTogbWluKDRkdmgsIDJkdncpO1xuICBwYWRkaW5nOiBtaW4oMmR2aCwgMWR2dyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjJkdmgsIDAuNmR2dyk7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuXG4gIC5kZWVwbGliLW1vZGFsLWlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IG1pbigyLjZkdmgsIDEuOGR2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgICBwYWRkaW5nOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgfVxuXG4gIGlucHV0LmRlZXBsaWItbW9kYWwtaW5wdXQge1xuICAgIG1heC13aWR0aDogbWF4KDUwZHZoLCAyNWR2dyk7XG4gIH1cblxuICAuZGVlcGxpYi1tb2RhbC1idXR0b24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IDAuNWVtO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLmRlZXBsaWItYnV0dG9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBwYWRkaW5nOiBtaW4oMC40dmgsIDAuMnZ3KSBtaW4oMnZoLCAxdncpO1xuXG4gICAgICAuYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmRlZXBsaWItbW9kYWwtcHJvbXB0LWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cblxuLmRlZXBsaWItbW9kYWwtYmxvY2tlciB7XG4gIHotaW5kZXg6IDEwMDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwZHZ3O1xuICBoZWlnaHQ6IDEwMGR2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxuIl19 */`;
|
|
937
953
|
|
|
938
954
|
// src/base/initialization.ts
|
|
939
955
|
var modStorage;
|
|
940
956
|
var sdk;
|
|
957
|
+
var logger;
|
|
941
958
|
function initMod(options) {
|
|
942
959
|
sdk = new ModSdkManager(options.modInfo.info, options.modInfo.options);
|
|
943
960
|
const MOD_NAME = ModSdkManager.ModInfo.name;
|
|
944
961
|
modStorage = new ModStorage(ModSdkManager.ModInfo.name);
|
|
962
|
+
logger = new Logger(MOD_NAME);
|
|
945
963
|
Style.injectInline("deeplib-style", styles_default);
|
|
946
|
-
|
|
964
|
+
logger.debug("Init wait");
|
|
947
965
|
if (CurrentScreen == null || CurrentScreen === "Login") {
|
|
948
966
|
options.beforeLogin?.();
|
|
949
967
|
const removeHook = sdk.hookFunction("LoginResponse", 0, (args, next) => {
|
|
950
|
-
|
|
968
|
+
logger.debug("Init! LoginResponse caught: ", args);
|
|
951
969
|
next(args);
|
|
952
970
|
const response = args[0];
|
|
953
971
|
if (response === "InvalidNamePassword") return next(args);
|
|
@@ -957,7 +975,7 @@ function initMod(options) {
|
|
|
957
975
|
}
|
|
958
976
|
});
|
|
959
977
|
} else {
|
|
960
|
-
|
|
978
|
+
logger.debug(`Already logged in, initing ${MOD_NAME}`);
|
|
961
979
|
init(options);
|
|
962
980
|
}
|
|
963
981
|
}
|
|
@@ -972,26 +990,14 @@ async function init(options) {
|
|
|
972
990
|
unloadMod();
|
|
973
991
|
return;
|
|
974
992
|
}
|
|
975
|
-
if (options.migrators) {
|
|
976
|
-
for (const m of options.migrators) {
|
|
977
|
-
VersionModule.registerMigrator(m);
|
|
978
|
-
}
|
|
979
|
-
}
|
|
980
993
|
await options.initFunction?.();
|
|
981
994
|
if (options.mainMenuOptions)
|
|
982
995
|
MainMenu.setOptions(options.mainMenuOptions);
|
|
983
|
-
for (const m of modules()) {
|
|
984
|
-
if (m.defaultSettings && hasGetter(m, "defaultSettings") && m.settings && hasSetter(m, "settings")) {
|
|
985
|
-
if (Object.entries(m.defaultSettings).length === 0) continue;
|
|
986
|
-
m.settings = deepMergeMatchingProperties(m.defaultSettings, m.settings);
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
996
|
window[MOD_NAME + "Loaded"] = true;
|
|
990
|
-
|
|
997
|
+
logger.log(`Loaded! Version: ${MOD_VERSION}`);
|
|
991
998
|
}
|
|
992
999
|
__name(init, "init");
|
|
993
1000
|
function initModules(modulesToRegister) {
|
|
994
|
-
const MOD_NAME = ModSdkManager.ModInfo.name;
|
|
995
1001
|
for (const module of modulesToRegister) {
|
|
996
1002
|
registerModule(module);
|
|
997
1003
|
}
|
|
@@ -1004,7 +1010,10 @@ function initModules(modulesToRegister) {
|
|
|
1004
1010
|
for (const module of modules()) {
|
|
1005
1011
|
module.run();
|
|
1006
1012
|
}
|
|
1007
|
-
|
|
1013
|
+
for (const module of modules()) {
|
|
1014
|
+
module.registerDefaultSettings();
|
|
1015
|
+
}
|
|
1016
|
+
logger.debug("Modules Loaded.");
|
|
1008
1017
|
return true;
|
|
1009
1018
|
}
|
|
1010
1019
|
__name(initModules, "initModules");
|
|
@@ -1012,7 +1021,7 @@ function unloadMod() {
|
|
|
1012
1021
|
const MOD_NAME = ModSdkManager.ModInfo.name;
|
|
1013
1022
|
unloadModules();
|
|
1014
1023
|
delete window[MOD_NAME + "Loaded"];
|
|
1015
|
-
|
|
1024
|
+
logger.debug("Unloaded.");
|
|
1016
1025
|
return true;
|
|
1017
1026
|
}
|
|
1018
1027
|
__name(unloadMod, "unloadMod");
|
|
@@ -1040,7 +1049,7 @@ function getModule(moduleType) {
|
|
|
1040
1049
|
__name(getModule, "getModule");
|
|
1041
1050
|
|
|
1042
1051
|
// src/migrators/base_migrator.ts
|
|
1043
|
-
var
|
|
1052
|
+
var BaseMigrator = class {
|
|
1044
1053
|
static {
|
|
1045
1054
|
__name(this, "BaseMigrator");
|
|
1046
1055
|
}
|
|
@@ -1125,21 +1134,20 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1125
1134
|
static isItNewVersion = false;
|
|
1126
1135
|
/** The current mod version (retrieved from `ModSdkManager.ModInfo.version`) */
|
|
1127
1136
|
static version;
|
|
1128
|
-
/** Message to display when a new version is detected */
|
|
1129
1137
|
static newVersionMessage = "";
|
|
1130
1138
|
/** List of registered migration handlers, sorted by version */
|
|
1131
1139
|
static migrators = [];
|
|
1132
|
-
/** Optional lifecycle hook. Runs before each migration */
|
|
1133
1140
|
static beforeEach;
|
|
1134
|
-
/** Optional lifecycle hook. Runs after each migration */
|
|
1135
1141
|
static afterEach;
|
|
1136
|
-
/** Optional lifecycle hook. Runs before all migrations */
|
|
1137
1142
|
static beforeAll;
|
|
1138
|
-
/** Optional lifecycle hook. Runs after all migrations */
|
|
1139
1143
|
static afterAll;
|
|
1140
1144
|
constructor(options) {
|
|
1141
1145
|
super();
|
|
1142
1146
|
_VersionModule.newVersionMessage = options.newVersionMessage;
|
|
1147
|
+
if (options.migrators) {
|
|
1148
|
+
_VersionModule.migrators = options.migrators;
|
|
1149
|
+
_VersionModule.migrators.sort((a, b) => a.migrationVersion.localeCompare(b.migrationVersion));
|
|
1150
|
+
}
|
|
1143
1151
|
_VersionModule.beforeEach = options.beforeEach;
|
|
1144
1152
|
_VersionModule.afterEach = options.afterEach;
|
|
1145
1153
|
_VersionModule.beforeAll = options.beforeAll;
|
|
@@ -1196,14 +1204,6 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1196
1204
|
}
|
|
1197
1205
|
_VersionModule.afterAll?.();
|
|
1198
1206
|
}
|
|
1199
|
-
/**
|
|
1200
|
-
* Registers a new migrator for handling version-specific changes.
|
|
1201
|
-
* Migrators are sorted by their `MigrationVersion` in ascending order.
|
|
1202
|
-
*/
|
|
1203
|
-
static registerMigrator(migrator) {
|
|
1204
|
-
_VersionModule.migrators.push(migrator);
|
|
1205
|
-
_VersionModule.migrators.sort((a, b) => a.migrationVersion.localeCompare(b.migrationVersion));
|
|
1206
|
-
}
|
|
1207
1207
|
/** Sends the currently configured "new version" message to the local player. */
|
|
1208
1208
|
static sendNewVersionMessage() {
|
|
1209
1209
|
if (!_VersionModule.newVersionMessage) return;
|
|
@@ -1436,13 +1436,13 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1436
1436
|
|
|
1437
1437
|
// src/utilities/common.ts
|
|
1438
1438
|
function isPlainObject(value) {
|
|
1439
|
-
return value !== null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype;
|
|
1439
|
+
return value !== null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype && !Array.isArray(value);
|
|
1440
1440
|
}
|
|
1441
1441
|
__name(isPlainObject, "isPlainObject");
|
|
1442
|
-
function deepMerge(target, source) {
|
|
1442
|
+
function deepMerge(target, source, options = { concatArrays: true }) {
|
|
1443
1443
|
if (target === void 0) return source;
|
|
1444
1444
|
if (source === void 0) return target;
|
|
1445
|
-
if (Array.isArray(target) && Array.isArray(source)) {
|
|
1445
|
+
if (Array.isArray(target) && Array.isArray(source) && options.concatArrays) {
|
|
1446
1446
|
return [...target, ...source];
|
|
1447
1447
|
}
|
|
1448
1448
|
if (isPlainObject(target) && isPlainObject(source)) {
|
|
@@ -1451,7 +1451,7 @@ function deepMerge(target, source) {
|
|
|
1451
1451
|
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
1452
1452
|
continue;
|
|
1453
1453
|
}
|
|
1454
|
-
result[key] = key in target ? deepMerge(target[key], source[key]) : source[key];
|
|
1454
|
+
result[key] = key in target ? deepMerge(target[key], source[key], options) : source[key];
|
|
1455
1455
|
}
|
|
1456
1456
|
return result;
|
|
1457
1457
|
}
|
|
@@ -1481,18 +1481,6 @@ function exportToGlobal(name, value) {
|
|
|
1481
1481
|
current[keys[keys.length - 1]] = value;
|
|
1482
1482
|
}
|
|
1483
1483
|
__name(exportToGlobal, "exportToGlobal");
|
|
1484
|
-
function deepMergeMatchingProperties(mergeTo, mergeFrom) {
|
|
1485
|
-
const mergedObject = { ...mergeTo };
|
|
1486
|
-
for (const key in mergeFrom) {
|
|
1487
|
-
if (mergeFrom[key] !== null && typeof mergeFrom[key] === "object") {
|
|
1488
|
-
mergedObject[key] = deepMergeMatchingProperties(mergedObject[key] || {}, mergeFrom[key]);
|
|
1489
|
-
} else if (key in mergedObject) {
|
|
1490
|
-
mergedObject[key] = mergeFrom[key];
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
return mergedObject;
|
|
1494
|
-
}
|
|
1495
|
-
__name(deepMergeMatchingProperties, "deepMergeMatchingProperties");
|
|
1496
1484
|
function hasGetter(obj, prop) {
|
|
1497
1485
|
while (obj && obj !== Object.prototype) {
|
|
1498
1486
|
const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
@@ -1579,10 +1567,11 @@ function elementCreateCheckbox(options) {
|
|
|
1579
1567
|
options.type = "checkbox";
|
|
1580
1568
|
const disabled = typeof options?.disabled === "function" ? options?.disabled() : options?.disabled;
|
|
1581
1569
|
const retElem = ElementCreate(deepMerge({
|
|
1582
|
-
tag: "
|
|
1570
|
+
tag: "label",
|
|
1583
1571
|
classList: ["deeplib-checkbox-container"],
|
|
1584
1572
|
attributes: {
|
|
1585
|
-
id: `${options.id}-container
|
|
1573
|
+
id: `${options.id}-container`,
|
|
1574
|
+
for: options.id
|
|
1586
1575
|
},
|
|
1587
1576
|
children: [
|
|
1588
1577
|
deepMerge({
|
|
@@ -1601,10 +1590,10 @@ function elementCreateCheckbox(options) {
|
|
|
1601
1590
|
}
|
|
1602
1591
|
}, options.htmlOptions?.checkbox),
|
|
1603
1592
|
deepMerge({
|
|
1604
|
-
tag: "
|
|
1593
|
+
tag: "span",
|
|
1605
1594
|
classList: ["deeplib-text"],
|
|
1606
1595
|
attributes: {
|
|
1607
|
-
|
|
1596
|
+
id: `${options.id}-label`
|
|
1608
1597
|
},
|
|
1609
1598
|
children: [options.label]
|
|
1610
1599
|
}, options.htmlOptions?.label)
|
|
@@ -1639,10 +1628,11 @@ function elementCreateInput(options) {
|
|
|
1639
1628
|
if (elem) return elem;
|
|
1640
1629
|
const disabled = typeof options?.disabled === "function" ? options?.disabled() : options?.disabled;
|
|
1641
1630
|
const retElem = ElementCreate(deepMerge({
|
|
1642
|
-
tag: "
|
|
1631
|
+
tag: "label",
|
|
1643
1632
|
classList: ["deeplib-input-container"],
|
|
1644
1633
|
attributes: {
|
|
1645
|
-
id: `${options.id}-container
|
|
1634
|
+
id: `${options.id}-container`,
|
|
1635
|
+
for: options.id
|
|
1646
1636
|
},
|
|
1647
1637
|
children: [
|
|
1648
1638
|
deepMerge({
|
|
@@ -1662,10 +1652,10 @@ function elementCreateInput(options) {
|
|
|
1662
1652
|
}
|
|
1663
1653
|
}, options.htmlOptions?.input),
|
|
1664
1654
|
options.label ? deepMerge({
|
|
1665
|
-
tag: "
|
|
1655
|
+
tag: "span",
|
|
1666
1656
|
classList: ["deeplib-text"],
|
|
1667
1657
|
attributes: {
|
|
1668
|
-
|
|
1658
|
+
id: `${options.id}-label`
|
|
1669
1659
|
},
|
|
1670
1660
|
children: [options.label]
|
|
1671
1661
|
}, options.htmlOptions?.label) : void 0
|
|
@@ -1688,7 +1678,7 @@ function elementCreateLabel(options) {
|
|
|
1688
1678
|
if (elem) return elem;
|
|
1689
1679
|
options.type = "label";
|
|
1690
1680
|
const retElem = ElementCreate(deepMerge({
|
|
1691
|
-
tag: "
|
|
1681
|
+
tag: "label",
|
|
1692
1682
|
classList: ["deeplib-label", "deeplib-text"],
|
|
1693
1683
|
attributes: {
|
|
1694
1684
|
id: options.id
|
|
@@ -1715,17 +1705,18 @@ function elementCreateDropdown(options) {
|
|
|
1715
1705
|
if (elem) return elem;
|
|
1716
1706
|
options.type = "dropdown";
|
|
1717
1707
|
const retElem = ElementCreate(deepMerge({
|
|
1718
|
-
tag: "
|
|
1708
|
+
tag: "label",
|
|
1719
1709
|
classList: ["deeplib-dropdown-container"],
|
|
1720
1710
|
attributes: {
|
|
1721
|
-
id: `${options.id}-container
|
|
1711
|
+
id: `${options.id}-container`,
|
|
1712
|
+
for: options.id
|
|
1722
1713
|
},
|
|
1723
1714
|
children: [
|
|
1724
1715
|
options.label ? deepMerge({
|
|
1725
|
-
tag: "
|
|
1716
|
+
tag: "span",
|
|
1726
1717
|
classList: ["deeplib-text"],
|
|
1727
1718
|
attributes: {
|
|
1728
|
-
|
|
1719
|
+
id: `${options.id}-label`
|
|
1729
1720
|
},
|
|
1730
1721
|
children: [options.label]
|
|
1731
1722
|
}, options.htmlOptions?.label) : void 0,
|
|
@@ -2184,7 +2175,7 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
2184
2175
|
}
|
|
2185
2176
|
if (_MainMenu.options.storageFullnessIndicator) {
|
|
2186
2177
|
const maxStorageCapacityKB = 180;
|
|
2187
|
-
const currentStorageCapacityKB = byteToKB(ModStorage.measureSize(
|
|
2178
|
+
const currentStorageCapacityKB = byteToKB(ModStorage.measureSize(modStorage.extensionStorage));
|
|
2188
2179
|
const fullness = (currentStorageCapacityKB / maxStorageCapacityKB * 100).toFixed(1);
|
|
2189
2180
|
const storageFullnessWrapper = advElement.createButton({
|
|
2190
2181
|
id: CommonGenerateUniqueID(),
|
|
@@ -2250,7 +2241,7 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
2250
2241
|
PreferenceSubscreenExtensionsClear();
|
|
2251
2242
|
});
|
|
2252
2243
|
} else if (returnScreen instanceof BaseSubscreen) {
|
|
2253
|
-
setSubscreen(returnScreen
|
|
2244
|
+
setSubscreen(returnScreen).then(() => {
|
|
2254
2245
|
});
|
|
2255
2246
|
} else if (Array.isArray(returnScreen)) {
|
|
2256
2247
|
CommonSetScreen(...returnScreen);
|
|
@@ -2340,7 +2331,10 @@ var GuiImportExport = class extends BaseSubscreen {
|
|
|
2340
2331
|
if (transferMethod === "clipboard") {
|
|
2341
2332
|
await this.exportToClipboard(data);
|
|
2342
2333
|
} else if (transferMethod === "file") {
|
|
2343
|
-
await this.exportToFile(data, "
|
|
2334
|
+
if (!await this.exportToFile(data, "settings")) {
|
|
2335
|
+
return;
|
|
2336
|
+
}
|
|
2337
|
+
;
|
|
2344
2338
|
}
|
|
2345
2339
|
this.importExportOptions.onExport?.();
|
|
2346
2340
|
ToastManager.success("Data exported successfully.");
|
|
@@ -2365,6 +2359,9 @@ var GuiImportExport = class extends BaseSubscreen {
|
|
|
2365
2359
|
if (!data) {
|
|
2366
2360
|
throw new Error("Invalid data.");
|
|
2367
2361
|
}
|
|
2362
|
+
for (const module of modules()) {
|
|
2363
|
+
module.registerDefaultSettings(data);
|
|
2364
|
+
}
|
|
2368
2365
|
modStorage.playerStorage = data;
|
|
2369
2366
|
this.importExportOptions.onImport?.();
|
|
2370
2367
|
ToastManager.success("Data imported successfully.");
|
|
@@ -2391,13 +2388,14 @@ var GuiImportExport = class extends BaseSubscreen {
|
|
|
2391
2388
|
const writable = await handle.createWritable();
|
|
2392
2389
|
await writable.write(data);
|
|
2393
2390
|
await writable.close();
|
|
2391
|
+
return true;
|
|
2394
2392
|
} catch (error) {
|
|
2395
2393
|
throw new Error("File save cancelled or failed: " + error.message);
|
|
2396
2394
|
}
|
|
2397
2395
|
} else {
|
|
2398
2396
|
const fileName = await Modal.prompt("Enter file name", suggestedName);
|
|
2399
2397
|
if (fileName === null) {
|
|
2400
|
-
return;
|
|
2398
|
+
return false;
|
|
2401
2399
|
} else if (fileName === "") {
|
|
2402
2400
|
throw new Error("File name cannot be empty.");
|
|
2403
2401
|
}
|
|
@@ -2411,6 +2409,7 @@ var GuiImportExport = class extends BaseSubscreen {
|
|
|
2411
2409
|
});
|
|
2412
2410
|
link.click();
|
|
2413
2411
|
URL.revokeObjectURL(link.href);
|
|
2412
|
+
return true;
|
|
2414
2413
|
}
|
|
2415
2414
|
}
|
|
2416
2415
|
/** Opens a file picker and reads the selected file's contents, importing the data. */
|
|
@@ -3132,7 +3131,7 @@ var EventChannel = class {
|
|
|
3132
3131
|
}
|
|
3133
3132
|
};
|
|
3134
3133
|
export {
|
|
3135
|
-
|
|
3134
|
+
BaseMigrator,
|
|
3136
3135
|
BaseModule,
|
|
3137
3136
|
BaseSubscreen,
|
|
3138
3137
|
EventChannel,
|
|
@@ -3152,7 +3151,6 @@ export {
|
|
|
3152
3151
|
byteToKB,
|
|
3153
3152
|
deepLibLogger,
|
|
3154
3153
|
deepMerge,
|
|
3155
|
-
deepMergeMatchingProperties,
|
|
3156
3154
|
domUtil,
|
|
3157
3155
|
exportToGlobal,
|
|
3158
3156
|
getModule,
|
|
@@ -3161,6 +3159,7 @@ export {
|
|
|
3161
3159
|
hasSetter,
|
|
3162
3160
|
initMod,
|
|
3163
3161
|
layout,
|
|
3162
|
+
logger,
|
|
3164
3163
|
modStorage,
|
|
3165
3164
|
modules,
|
|
3166
3165
|
modulesMap,
|