From c4a068aa35114db02ba4c6d9354d3e6321481f61 Mon Sep 17 00:00:00 2001 From: Gambit Date: Wed, 29 May 2024 23:49:36 -0400 Subject: [PATCH] 0.1.52 --- .github/workflows/main.yml | 8 +- module.json | 2 +- .../{000476.log => 000494.log} | 0 .../{000439.ldb => 000496.ldb} | Bin 11054 -> 12359 bytes packs/gps-3rd-party-features/CURRENT | 2 +- packs/gps-3rd-party-features/LOG | 23 +- packs/gps-3rd-party-features/LOG.old | 16 +- packs/gps-3rd-party-features/MANIFEST-000474 | Bin 200 -> 0 bytes packs/gps-3rd-party-features/MANIFEST-000492 | Bin 0 -> 476 bytes .../{000474.log => 000492.log} | 0 packs/gps-3rd-party-items/CURRENT | 2 +- packs/gps-3rd-party-items/LOG | 16 +- packs/gps-3rd-party-items/LOG.old | 16 +- .../{MANIFEST-000472 => MANIFEST-000490} | Bin 224 -> 224 bytes .../{000478.ldb => 000492.ldb} | Bin 58876 -> 59515 bytes .../{000476.log => 000499.log} | 0 packs/gps-3rd-party-spells/CURRENT | 2 +- packs/gps-3rd-party-spells/LOG | 23 +- packs/gps-3rd-party-spells/LOG.old | 16 +- packs/gps-3rd-party-spells/MANIFEST-000474 | Bin 500 -> 0 bytes packs/gps-3rd-party-spells/MANIFEST-000497 | Bin 0 -> 233 bytes packs/gps-actors/{000946.log => 000964.log} | 0 packs/gps-actors/CURRENT | 2 +- packs/gps-actors/LOG | 16 +- packs/gps-actors/LOG.old | 16 +- .../{MANIFEST-000944 => MANIFEST-000962} | Bin 272 -> 272 bytes .../{002122.log => 002140.log} | 0 packs/gps-class-features/CURRENT | 2 +- packs/gps-class-features/LOG | 16 +- packs/gps-class-features/LOG.old | 16 +- .../{MANIFEST-002120 => MANIFEST-002138} | Bin 287 -> 287 bytes packs/gps-generic-features/002167.ldb | Bin 25302 -> 0 bytes .../{002196.log => 002217.log} | 0 packs/gps-generic-features/002219.ldb | Bin 0 -> 29789 bytes packs/gps-generic-features/CURRENT | 2 +- packs/gps-generic-features/LOG | 23 +- packs/gps-generic-features/LOG.old | 16 +- packs/gps-generic-features/MANIFEST-002194 | Bin 285 -> 0 bytes packs/gps-generic-features/MANIFEST-002215 | Bin 0 -> 512 bytes .../{002102.log => 002120.log} | 0 packs/gps-homebrew-features/CURRENT | 2 +- packs/gps-homebrew-features/LOG | 16 +- packs/gps-homebrew-features/LOG.old | 16 +- .../{MANIFEST-002100 => MANIFEST-002118} | Bin 285 -> 285 bytes .../{002111.log => 002129.log} | 0 packs/gps-homebrew-items/CURRENT | 2 +- packs/gps-homebrew-items/LOG | 16 +- packs/gps-homebrew-items/LOG.old | 16 +- .../{MANIFEST-002109 => MANIFEST-002127} | Bin 235 -> 235 bytes .../{001779.log => 001797.log} | 0 packs/gps-homebrew-spells/CURRENT | 2 +- packs/gps-homebrew-spells/LOG | 16 +- packs/gps-homebrew-spells/LOG.old | 16 +- .../{MANIFEST-001777 => MANIFEST-001795} | Bin 225 -> 225 bytes packs/gps-items/{002104.log => 002122.log} | 0 packs/gps-items/CURRENT | 2 +- packs/gps-items/LOG | 16 +- packs/gps-items/LOG.old | 16 +- .../{MANIFEST-002102 => MANIFEST-002120} | Bin 201 -> 201 bytes .../{002102.log => 002120.log} | 0 packs/gps-monster-features/CURRENT | 2 +- packs/gps-monster-features/LOG | 16 +- packs/gps-monster-features/LOG.old | 16 +- .../{MANIFEST-002100 => MANIFEST-002118} | Bin 285 -> 285 bytes packs/gps-spells/{002126.ldb => 002161.ldb} | Bin 159285 -> 159275 bytes packs/gps-spells/{002147.log => 002168.log} | 0 packs/gps-spells/CURRENT | 2 +- packs/gps-spells/LOG | 16 +- packs/gps-spells/LOG.old | 16 +- packs/gps-spells/MANIFEST-002145 | Bin 260 -> 0 bytes packs/gps-spells/MANIFEST-002166 | Bin 0 -> 235 bytes scripts/helpers.js | 1 - scripts/macros/poetryInMisery.js | 2 +- scripts/macros/witchesHex.js | 232 ++++++++++-------- scripts/module.js | 101 +++++--- scripts/settings.js | 29 +++ templates/classFeaturesSettingsMenu.html | 15 ++ 77 files changed, 467 insertions(+), 352 deletions(-) rename packs/gps-3rd-party-features/{000476.log => 000494.log} (100%) rename packs/gps-3rd-party-features/{000439.ldb => 000496.ldb} (74%) delete mode 100644 packs/gps-3rd-party-features/MANIFEST-000474 create mode 100644 packs/gps-3rd-party-features/MANIFEST-000492 rename packs/gps-3rd-party-items/{000474.log => 000492.log} (100%) rename packs/gps-3rd-party-items/{MANIFEST-000472 => MANIFEST-000490} (57%) rename packs/gps-3rd-party-spells/{000478.ldb => 000492.ldb} (65%) rename packs/gps-3rd-party-spells/{000476.log => 000499.log} (100%) delete mode 100644 packs/gps-3rd-party-spells/MANIFEST-000474 create mode 100644 packs/gps-3rd-party-spells/MANIFEST-000497 rename packs/gps-actors/{000946.log => 000964.log} (100%) rename packs/gps-actors/{MANIFEST-000944 => MANIFEST-000962} (70%) rename packs/gps-class-features/{002122.log => 002140.log} (100%) rename packs/gps-class-features/{MANIFEST-002120 => MANIFEST-002138} (66%) delete mode 100644 packs/gps-generic-features/002167.ldb rename packs/gps-generic-features/{002196.log => 002217.log} (100%) create mode 100644 packs/gps-generic-features/002219.ldb delete mode 100644 packs/gps-generic-features/MANIFEST-002194 create mode 100644 packs/gps-generic-features/MANIFEST-002215 rename packs/gps-homebrew-features/{002102.log => 002120.log} (100%) rename packs/gps-homebrew-features/{MANIFEST-002100 => MANIFEST-002118} (67%) rename packs/gps-homebrew-items/{002111.log => 002129.log} (100%) rename packs/gps-homebrew-items/{MANIFEST-002109 => MANIFEST-002127} (81%) rename packs/gps-homebrew-spells/{001779.log => 001797.log} (100%) rename packs/gps-homebrew-spells/{MANIFEST-001777 => MANIFEST-001795} (56%) rename packs/gps-items/{002104.log => 002122.log} (100%) rename packs/gps-items/{MANIFEST-002102 => MANIFEST-002120} (63%) rename packs/gps-monster-features/{002102.log => 002120.log} (100%) rename packs/gps-monster-features/{MANIFEST-002100 => MANIFEST-002118} (67%) rename packs/gps-spells/{002126.ldb => 002161.ldb} (97%) rename packs/gps-spells/{002147.log => 002168.log} (100%) delete mode 100644 packs/gps-spells/MANIFEST-002145 create mode 100644 packs/gps-spells/MANIFEST-002166 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0df94153..0346265f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,13 @@ jobs: id: set-release-notes-github run: | echo "- General:" >> release_notes.txt - echo " - Helper: Actually fix token validator not appropriately checking spell level against valid spells." >> release_notes.txt + echo " - Settings: Reworked settings implementation so that a browser refresh is no longer needed when updating a given setting." >> release_notes.txt + echo "- Additions:" >> release_notes.txt + echo " - Hex: Automation for the Witch classes Hexing 3rd party reaction. Required changing the name of the item to Witches Hex in order to avoid unwanted crossover with the Hex spell." >> release_notes.txt + echo "- Updates:" >> release_notes.txt + echo " - Opportunity Attack: Big update. Re-worked the deployment implementation. Canvas freezing has been resolved, template outlines displaying until the ruler is clicked has been resolved. Deployment should be much faster." >> release_notes.txt + echo "- Bugfixes:" >> release_notes.txt + echo " - Poetry in Misery: Add additional validation check for rogue save hooks firing." >> release_notes.txt echo "release-notes-github<> $GITHUB_ENV cat release_notes.txt >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV diff --git a/module.json b/module.json index 5b77c7f7..431ee74d 100644 --- a/module.json +++ b/module.json @@ -7,7 +7,7 @@ "name": "Gambit" } ], - "version": "0.1.51", + "version": "0.1.52", "compatibility": { "minimum": "11", "verified": "11", diff --git a/packs/gps-3rd-party-features/000476.log b/packs/gps-3rd-party-features/000494.log similarity index 100% rename from packs/gps-3rd-party-features/000476.log rename to packs/gps-3rd-party-features/000494.log diff --git a/packs/gps-3rd-party-features/000439.ldb b/packs/gps-3rd-party-features/000496.ldb similarity index 74% rename from packs/gps-3rd-party-features/000439.ldb rename to packs/gps-3rd-party-features/000496.ldb index 52db60a476f3b958a03c425d4d8a73218a89fac6..b1f22e21646d29124b5bf5646dc18e71eccc3a8f 100644 GIT binary patch delta 2525 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 QlAp*8`ng=#e=!&N7p 12359 bytes +2024/05/29-23:45:18.397 5698 compacted to: files[ 0 0 1 0 0 0 0 ] +2024/05/29-23:45:18.397 5698 Delete type=2 #439 +2024/05/29-23:45:18.397 5698 Delete type=2 #495 +2024/05/29-23:45:18.404 5698 Manual compaction at level-1 from '!items.effects!y6y7B3DSHbduxFDF.qKj7KcuvbZ2tAJ5t' @ 17 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-features/LOG.old b/packs/gps-3rd-party-features/LOG.old index 72b1417d..d3013883 100644 --- a/packs/gps-3rd-party-features/LOG.old +++ b/packs/gps-3rd-party-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.812 1158 Recovering log #468 -2024/05/26-17:09:46.818 1158 Delete type=0 #468 -2024/05/26-17:09:46.818 1158 Delete type=3 #466 -2024/05/26-17:21:26.910 2de0 Level-0 table #473: started -2024/05/26-17:21:26.910 2de0 Level-0 table #473: 0 bytes OK -2024/05/26-17:21:26.913 2de0 Delete type=0 #471 -2024/05/26-17:21:26.918 2de0 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.919 2de0 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.558 6aa0 Recovering log #486 +2024/05/29-10:23:20.564 6aa0 Delete type=0 #486 +2024/05/29-10:23:20.564 6aa0 Delete type=3 #484 +2024/05/29-20:37:15.382 5698 Level-0 table #491: started +2024/05/29-20:37:15.382 5698 Level-0 table #491: 0 bytes OK +2024/05/29-20:37:15.384 5698 Delete type=0 #489 +2024/05/29-20:37:15.387 5698 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.388 5698 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-features/MANIFEST-000474 b/packs/gps-3rd-party-features/MANIFEST-000474 deleted file mode 100644 index d062879f933553cc83cb537b605725d7adfe19dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmaFyd8gle21Z7yoYb<^oRlOzr^=Gl^338?=ltA)#G=HK{32FHdBx0<)ZAi4H>pF)cqQCAFwn(Zn^mI3?RW+t97dx7gC(jgcLq z&H`eNUTRueYH~@jqPvl&OPRT$p=)@Nzngh#nqIc6d5D3FxvQCTo^M%JSrH=#M57Py gt86X?MyA`$oD9r&m{|mZ_g>io61W2rxCayf05ID)RsaA1 diff --git a/packs/gps-3rd-party-features/MANIFEST-000492 b/packs/gps-3rd-party-features/MANIFEST-000492 new file mode 100644 index 0000000000000000000000000000000000000000..b3fd384994468081165a4fe3982962c224d564a5 GIT binary patch literal 476 zcmaFyd8gle21Z7yoYb<^oRlOzr^=Gl^338?=ltA)#G=HK{32FHdBx0<)ZAi4H>pF)cqQCAFwn(Zn^mI3?RW+t97dx7gC(jgcLq z&H`eNUTRueYH~@jqPvl&OPRT$p=)@Nzngh#nqIc6d5D3FxvQCTo^M%JSrH=#MB|j? zPxf34j7)EtIT@JWF|!DKyS$ep6DaTwB=CWmMTVX6J@dy9m_sYgD$SjYU4lK5Qc5e_ zT-+FCusZ-j7&F~IT@I5F|)`T&c8AbBybBPa0e&=03AjPhyVZp diff --git a/packs/gps-3rd-party-spells/000478.ldb b/packs/gps-3rd-party-spells/000492.ldb similarity index 65% rename from packs/gps-3rd-party-spells/000478.ldb rename to packs/gps-3rd-party-spells/000492.ldb index 1c51219e207bf73906708512924358bdbb065fa7..da6f7cd4c13ec8b49fd640503fc1256c0781f408 100644 GIT binary patch delta 6377 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 delta 6429 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 58876 bytes -2024/05/26-20:17:06.746 2de0 compacted to: files[ 0 0 1 0 0 0 0 ] -2024/05/26-20:17:06.746 2de0 Delete type=2 #455 -2024/05/26-20:17:06.747 2de0 Delete type=2 #477 -2024/05/26-20:17:06.747 2de0 Manual compaction at level-1 from '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 88 : 1 .. '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.331 6aa0 Recovering log #495 +2024/05/29-20:37:30.344 6aa0 Delete type=0 #495 +2024/05/29-20:37:30.345 6aa0 Delete type=3 #493 +2024/05/29-23:45:18.398 5698 Level-0 table #500: started +2024/05/29-23:45:18.398 5698 Level-0 table #500: 0 bytes OK +2024/05/29-23:45:18.404 5698 Delete type=0 #498 +2024/05/29-23:45:18.412 5698 Manual compaction at level-0 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.415 5698 Manual compaction at level-1 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-spells/LOG.old b/packs/gps-3rd-party-spells/LOG.old index 79adcd00..e83db9a0 100644 --- a/packs/gps-3rd-party-spells/LOG.old +++ b/packs/gps-3rd-party-spells/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.827 1158 Recovering log #468 -2024/05/26-17:09:46.832 1158 Delete type=0 #468 -2024/05/26-17:09:46.832 1158 Delete type=3 #466 -2024/05/26-17:21:26.913 2de0 Level-0 table #473: started -2024/05/26-17:21:26.913 2de0 Level-0 table #473: 0 bytes OK -2024/05/26-17:21:26.916 2de0 Delete type=0 #471 -2024/05/26-17:21:26.919 2de0 Manual compaction at level-0 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!qBnx0VU4WBSLrGeK.1rqXmIHKKjGKbbi8' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.919 2de0 Manual compaction at level-1 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!qBnx0VU4WBSLrGeK.1rqXmIHKKjGKbbi8' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.580 6aa0 Recovering log #489 +2024/05/29-10:23:20.585 6aa0 Delete type=0 #489 +2024/05/29-10:23:20.585 6aa0 Delete type=3 #486 +2024/05/29-20:37:15.389 5698 Level-0 table #496: started +2024/05/29-20:37:15.389 5698 Level-0 table #496: 0 bytes OK +2024/05/29-20:37:15.392 5698 Delete type=0 #494 +2024/05/29-20:37:15.400 5698 Manual compaction at level-0 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.400 5698 Manual compaction at level-1 from '!items!2YNbYocBRdEDgO4Q' @ 72057594037927935 : 1 .. '!items.effects!sR2IAM3IQAq6m4xU.N6BqEfnUtgKmw2xw' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-spells/MANIFEST-000474 b/packs/gps-3rd-party-spells/MANIFEST-000474 deleted file mode 100644 index d82ec8c8512cd3f2e416a6384fe708544667d171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmZ3!M=f(Z10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei199g<@t&YHqP!YFb)q za!Ijbp;KOkL0G6sxKprCk$bAQo?%g8M6RcYw|ADicT!TO1!EWk7_c)PXa2Z^SstQa z(J0a{DKbCVDJaF&CEed7kkK2WjBNAYefGM?#lXmPo0*e=`3^Hnc+Czgtt_Cx9gx61 zW|kOs#=Fd4S2Ds}P#k3B>F8_h8R%GOmTOWG${2&)1?cMZ{LGvRUDNVHOVYh_%Z)0^ q86zMXeWY&qt%X^5A7~+FXc27|8_=z6zz}0+y2t$IG|8bxv^@aW1CX!) diff --git a/packs/gps-3rd-party-spells/MANIFEST-000497 b/packs/gps-3rd-party-spells/MANIFEST-000497 new file mode 100644 index 0000000000000000000000000000000000000000..bd1a9987a7d892ef7d7d6fe6749066d0d9ea8569 GIT binary patch literal 233 zcmd-%ur}}j10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei18!ykcfaYHqP&agdRx zqpz`Npktv~u1Q5GV-f=xurlIQkpfY{&h&=)_XTE{GNVYpq{#ear=S#9mvn!VKt^wf zG7E@BdZ}q?smUdn7V7z#ITgC5<%O1{d*_xLRg^PEKs2sw^e*ONU}XBl%*nv~nVBW^ Q-vj&KAc4;yfv-RT03tj>SO5S3 literal 0 HcmV?d00001 diff --git a/packs/gps-actors/000946.log b/packs/gps-actors/000964.log similarity index 100% rename from packs/gps-actors/000946.log rename to packs/gps-actors/000964.log diff --git a/packs/gps-actors/CURRENT b/packs/gps-actors/CURRENT index e48d6098..46235fba 100644 --- a/packs/gps-actors/CURRENT +++ b/packs/gps-actors/CURRENT @@ -1 +1 @@ -MANIFEST-000944 +MANIFEST-000962 diff --git a/packs/gps-actors/LOG b/packs/gps-actors/LOG index 7a742e23..589a02e5 100644 --- a/packs/gps-actors/LOG +++ b/packs/gps-actors/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.798 6bec Recovering log #942 -2024/05/26-17:22:00.808 6bec Delete type=0 #942 -2024/05/26-17:22:00.809 6bec Delete type=3 #940 -2024/05/26-20:17:06.689 2de0 Level-0 table #947: started -2024/05/26-20:17:06.689 2de0 Level-0 table #947: 0 bytes OK -2024/05/26-20:17:06.691 2de0 Delete type=0 #945 -2024/05/26-20:17:06.698 2de0 Manual compaction at level-0 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.698 2de0 Manual compaction at level-1 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.249 6b00 Recovering log #960 +2024/05/29-20:37:30.255 6b00 Delete type=0 #960 +2024/05/29-20:37:30.255 6b00 Delete type=3 #958 +2024/05/29-23:45:18.376 5698 Level-0 table #965: started +2024/05/29-23:45:18.376 5698 Level-0 table #965: 0 bytes OK +2024/05/29-23:45:18.379 5698 Delete type=0 #963 +2024/05/29-23:45:18.380 5698 Manual compaction at level-0 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.398 5698 Manual compaction at level-1 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) diff --git a/packs/gps-actors/LOG.old b/packs/gps-actors/LOG.old index 00dbee66..88e1e163 100644 --- a/packs/gps-actors/LOG.old +++ b/packs/gps-actors/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.804 6bec Recovering log #938 -2024/05/26-17:09:46.811 6bec Delete type=0 #938 -2024/05/26-17:09:46.811 6bec Delete type=3 #936 -2024/05/26-17:21:26.906 2de0 Level-0 table #943: started -2024/05/26-17:21:26.906 2de0 Level-0 table #943: 0 bytes OK -2024/05/26-17:21:26.909 2de0 Delete type=0 #941 -2024/05/26-17:21:26.918 2de0 Manual compaction at level-0 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.919 2de0 Manual compaction at level-1 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.548 683c Recovering log #956 +2024/05/29-10:23:20.553 683c Delete type=0 #956 +2024/05/29-10:23:20.553 683c Delete type=3 #954 +2024/05/29-20:37:15.384 5698 Level-0 table #961: started +2024/05/29-20:37:15.384 5698 Level-0 table #961: 0 bytes OK +2024/05/29-20:37:15.387 5698 Delete type=0 #959 +2024/05/29-20:37:15.387 5698 Manual compaction at level-0 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.388 5698 Manual compaction at level-1 from '!actors!2Q055cZ4Q4eMWCQT' @ 72057594037927935 : 1 .. '!actors.items.effects!2Q055cZ4Q4eMWCQT.icorevoMIkBVXL37.jFKhp34XZd32ryYT' @ 0 : 0; will stop at (end) diff --git a/packs/gps-actors/MANIFEST-000944 b/packs/gps-actors/MANIFEST-000962 similarity index 70% rename from packs/gps-actors/MANIFEST-000944 rename to packs/gps-actors/MANIFEST-000962 index 3f4a593f2453d575666e967e4d30640891d161b6..c027906c0bdfe305dfdacdfeeaca6f70447a0b57 100644 GIT binary patch delta 41 scmbQhG=XWtJEa^B?RG8(MyA8;oD9rI*jWUNZzw(j2^;|l90Ljf0Oh_3!TmBt332XuhYyk=Y0PFqmAWdPt0< zvE_LEptoL%dRN60o0I%-I5ohh1|)vz;9xwFO2@*f5#Er zz8n=dOMEI0zr*nLa7^Br-~;hkK#HXjqI{F`8ALugC`BUt@PL&03ZIgX3yM*=g22mH z4Tv#*P)da2iD>55lW}~sJ^*Km4#s0}t|T81@yZrH$xB0Uj^P2OLwRR#SQ6o5_$(n` zVjwIs@g?O=INW|A+Q>V`K)B1Q4nmm?{M4Rth!#442Thl`ByQVLiC3t(6O}R zrkzwg)+_C!y<(ZJB_a;R6ZAy|&_`2Y_%?n(?le+zARY;77qq>Nt%^~bp3!VK4~hxX zUdy`mHZwe268Z|hq~rmE+yl}P5m#!UCB>nVh5D;Zk|G$;Zom(qu&EQ7o4<>LZ9LlU zOkCBVNc(A{GFY6Dwxq)eDJsSA9^4BrI56P*34YvlJEmtXpKanbncj~rYJWVIZtl|A z%%O;ws#|18rlV1KR_)OOXgBD9sj%rSYTf!#rGWZN-q!?!{%~~cN2WIv+s$LAb#2i2 z)eh^d-R~I8l|q%^uJmQe?RGzv45yS!JhW0{?uCJ8w~icBr}&5@-ZiGQmiUh5x9K{? z!NG70e|O=!?dC9?r?SRohK>zQi1%CnMr(Y^e4Tx1_)cWER>{wv_Tw@GbRHPUcIJTE zo{HPYYSeZyWmg{1*rAKtwFl_=%qBx95td@Xh%$n@PUfLSyYm$M$|HY3HoY13(3_Z& z!(Sk3bp5Dl%n`6FIvg2aB{zEA#w80c5`1;%0H@C(* zRy($?svTV01zi$G(EvP2C=?3R1}oh)4tGrmj;js0Dno9!TdE7zR@b>5&f2;_U1c5I zmdzZ68?|qVN8}kV9$S%=I>kUD-X%s&y9(fpiFhR9Yrb2(OiJ|n-ktb;aZn10>4-d2 zPW}Kb61>U+Xx&gq3Zz_mghs~$C?OWr!ik5)NJI+4jSfb{=6z_pGEbdsjKszK0&{;P z?iV9X`T%z5x}{_)5q>;?%w99Hz;PY%z~4BZl3IUtRdo9@*P*hkQ^(bv%S z@onl*I1#l8Aq@W#cTM~vP|KN(N29svbI&<6Bj^tn8`4-vza3>ad$E%)Hr#4eInl7G&0=etQ$M`s%D z&^p()42S!jO+AfmBa1^#9r!knlvB_YPD-(UvENi6e4;=$*AK8Exj7t(BrC*G-RK}2KGcc7K2sO-k%UhoYz@JdOUV*j-p#SwY4_McR~;6moM$G@lC$w_FXyLZ8Qo_ zY&FHkXqX{yAH)48hnQKE7)Z64R9LTw$4t+$Wh&$xo7htfzvvNPyT%NwP7DvR5gM88 zKbx|uSgT5%lp>*1m%e6KDHl#TRaZMzrhQjesFdYLCXJXfq*LJt3=_^lqsCGjO~KMX zwNM4yEeloR{;7JEv0jBnKU%l@iTaU9V|U20G`x6dV8uxLpl|F6MJQs-SGB!^>||6` z1@{IMLUKToQud@&BC_==Mr}kizZj;JL^#0v7*hd^9hm-8_R@K39iSI6C5jD#4r!#A z=#P}Xt-?PMx~Y>!yaLun?gHk>qf@J>@>LX$xfjozvd!FSn@L#OZJRmeow?6D6Qyo3 z&D?!!sGag(I@5K8Rs=#<-EA32gp>9`nE%Bfsg*Aij)mer+L+P`xiiQCX1tb+<*I80 zr?Z>RG2W!QxiTO+9Mw`)$QANCt1F!jQFK?xOD|0?04&gZRw5uehX!H9L6YC0UNVoO`LEZvk62U_sl zEWn7X&tb$KdC`bT@;j6fBKv=b5T81O5WA-r%IWTRw)Y7<-zfvKBy?IC%{9xfM&h;6 z54|#+lA$CFx-{%cN-4N_fAZVFFXfOJVd1ZYS3 zJzWMAhLt{QgiqlQ@yoWeBNX6Wz*MCWc;#bA)PGO;U;#W(H6Ka|c9F-dXR$FQg+qC5m6~3N&GY(^{zqq zRysmKL+O8LIUf`L`Rkal$_1EEk}=_{fC;O#J50wN8B_?f+%zP#03@uVg6V|5W_gp0 z2u%-U5Md;P2+zUCuj4}NOq^mG=+g6$;j{k@8NT6KjQ-yP!#JQXC%&=d6>WMN8tTcn zKtsK)c{S>lerlajEXNoB3p7;A;eaXIdNuQ3z@f6_EI6e5s58(IKYJcD)R{9;hN-!& zB!dq9XV4)^>}{pahlZx&^PnM0iU0in3JiNQz;K*ofMJ!>I_rq?TY#Z{$ywwj@gqx^ zKjCHHL|$~5F2|dDzZH4eOS%TmhhB1=@!zo5V0=YKPh(54wxcQDQ7H{VhdG12YHNco zr|5D@0k^+WtagVaNvx`=bNFju{R}ulwf-sqVs7XE5qnMGbJ(k7G=sfNw~ybWo5o%f z%@ex;c~OdU$jhTg2Nw#nko1{vf$e^J%QvWXiOw^cO004FsTDJZXw0&&jGyog( zeOY($Gysdv{7(Q@e-406gYJ>@QP|ifv~=QH{k(G+?C~KzcOC?5WAr74GqLdt7JKA; z9QG+wcn*iH(6@dKhn?&J95#Fghm9XX70OGls7Q`P{c!*sfH9yuNU6X8fHB|*q=?-g z5rY{_CN7|FgX!XkS)Bo3Y5-ssS~_mX05G$S$&>NdRf3GaPR;%X{2H2uUlZo@;a3%a zrSssI+W`=)#_6c5J`a9PZ2M36C1l{&nE#|zcYz%Hn7y3pTk#jWyfuTr2Bz`Xgs!(| zZTGhLrclpdIzAk3@4=5?5>S-}RhDIO2(N%G=oFLVD?hnz?5BA9;Y}({h5}(5X!aor zEiM0?-n+|ihV&pQDzQXmzLjQbkht4IuRR`z=pE+n{)iYJl5D^gMEp`BXydn}#RMQ5 z0Ii{rO(qv$UJ(;EvYj?xN>d{5pSV!F%zGJq@+jR;cGBbl)kLkDhmeWPRAHU*Hd-wc zB;++3C6#(j61W}yFL6?p<6|ixD(FJpU?Ln96Gi`4Su$iohGpPSzozDcVF|Ba9jxLl z{zy95FU4j2XchQX1L26Id_*B8$dxJzXbz%MwSR%sgW=6mC<}AfsG1+2IAorm(|uh| zX+sVLL<raK#Vsl;}6hpO%UsS8!-Z&zQaDj7lp zQ=_W$x1FPKVD0pt`$kpuvG#%L)p1Al>b90mE7!CxDIHZEudekw{8b`MDpfUs>Y9+d z8bZ84AXw|Ksq?!esjj-FveFrHota?ZWc%Q(qc+y5niBu()-9?|KSw1i202VCk`s7y75BKJ7U$4?sRn^rvaW-o)UFr4AMFtO_p%qv1s5sm|0K0iO8h^jQ z!#4sB13IV6z}xx8gcxWXL54HXJ>PvU$Z07@nz%m_j^$fxyTVZ!88!nCGzc_Ds18w` zz(YQt@3A#WVi1N?H*jkM-anv5JJPg7M*Jh*Ql#mQ_ot=&<(8gdU;_NjII)w~NqlYm1R>tu#0=lHhwF zJm1{t!Zu%WKuiQhAh*hr%DE^=&s7Y1^Sjg)&{|kq1z|kUUf!;FN`gjYh=%VS2q%{h zbbj{-87eeGQo()uWzsVUAXMf6<554vDKhH_XptsuSNeXwY_S;ihhfjMOqc;ERmQ^2 zPf+kG+rP-#7zSoC1Dj#~keSh7oR7s*d`zOF>Zlk?D=*f-`T3M^6e&{iwkZv;lD%=J z=^`F@(ire42^gyUG%t~olD27TRYv64ZIEFp@D|ED3RY$43%*x7&vF)%L$t5$(Ui4@ zgOc7{z&FMdK`BwDG<#+vO)I?dh*+qGE>>nLVE!dvwJoH469|PNNx2p7U^8^IPC&ja zTCE+brd>Zn1;8%GVJ1qNN)T^ar(Lyso}#R|#H-+a&Y$JqYH7~UD#2SY@ zbj=Z&dQ)2Prv+tA(@ac$t9mhTA7g{MR++pkYwqb>`}{OZeJ%!>W}xBOV|+3-5|JAE z%%ONJWe@0WpJ|^=^;$31$dOUPbP+6>XJP#q1&r_R=kSB)(Y+g{ zF+ElC5A9h@f92N*-(CNK>6=|wqiIP0Ah5mNzB!6W#MEN_0RZ}8vyVE5=)-HI>*;WY z=rxr9n!igXdP_CX8e)pQkum^nC{w-60$?nBuQ#{(-qQUi)BCm>m|h!}sopHUJzO;fa{-CJeu*XgLOb<|e7T)^D|i1JG#K->dG374gp;F5*rPKQ6y zyg9fyw763osE)OojOU>Lijj-#9Lb>-=22**bEGSM$0M$ZfRrhVs&78MZaum0VRFA70ujMmBAZiDCR5MNll+ zgrZ};rX?|z$`FqB1KtYzUahJ)lP#%8!gL#CX7cuaz&XI+!Gh`t+6U8#!N@d~=li_v zL9R-LuTuo#yO*kEcz$^o6@~Du(P9>pBe4Ja3j3h3mYTTl+1K0M6zZURP!BtpgUa&bsI`PFC1H zXlO8RpcFz_{{a;aS)58{rJ}S{Z=qQvFo%$JtpRC-p>Q%xK2Rwdc2F{Yu*}8rjpgqvu$d;uvey^Eq&*B z@;hbMjJ z_4a$Ppo9EnIJjyr)3^s|B7jXSrXzTN+qD=Yi&7W8L9sx1^$q5*E;=l3h9|lJ*Xu14 z^C);-o!1pWg3HS9*ulFy&{zn*`FO3ildEL%m!Sp95~gT8M$dM)q77Ff#f}~BD^ZID zp(K6~S@W-T#nCZ0y~Xtg^0y+N(dwy=u|v$!D0W%0;FU3_O;)>tP35k=5^+oG*% zN;`H|;}T|1HAacU7DRSaRG-1I8NYZ?Q#1Z{#Wf`u$rW1sjVI_hSmi z_(r_(g^woxG4?yQkfPsI^h+;x&cOTCFeXgGT7;~(fA-Ki?HqLzU@ZNJ`D#jAgum~+ zK&!*9S8MGF`fe&6OFnlmLL04v&=E%I9PLcS{JzU?P*jvp&P66Jht|Pt!&g*rFXc{n z$ZRb{(!=!plDibbFnf(gdw0VxF@_PqzLi5kSp3mtsIBA}wXt}+)}@AlI?8+>@5XLw zw7f!lzNq;M57oTPX98 zi@wQsL$Mqz_sZ%2n9)Z^|1HmOa*?ySaIq~IG|m(jQXRn2>O$Arpd znxO$|HZk&e2f30i-$fNZRxH4TVkv{1aM|OVq_y;YY6+6rQ~S`$eMlKMnO1%e;isUf z)B=3vPQ)CgZ{rv>JC8-Y`3p6>B3CE$!>l4GjrN4;00nf4{SDM|WF9kn>}BOVqd-G@ zNyMdsF|S>xYiNL3F?9MpmlaW|KC|oR*efFWT{{^Gjat`wBS;s82{4gtS%*-xJrC`R zA<7|CY6q83;(r<-Ki&-qbh3}Jdhn$!!7LKVXjpX}v})-u7Ds zA7yW%n0ERX80)uE4Scos@7CZ$I}1ycuQDfX0>IXEK(biiuEKvrR?${iXL7Tvbn2C$ z0wK2$;o2-^zHyhD*^V);Qpe)G1Ex>CZ)Gd^1+KVibU#`!`W*%D36(-)3?vF8rU~Vx z^bLGzDQ^lVyTqO#H&?%+{1h|-WX8zJGQH-NoFlO8`m}K@+qc+|g z(5@K7hf#{$z$t{_?FW#+zNVMfBPYJ4?kYt?139A2*Xrg$a|<=h1|*H`OLQURYJ?xv z?oNapx4@6eot@~8!>FYbDV&Z!T#Haud&1kKrJ)c+XXG#Ja%2`@^3UB zR*Bn5uZFHi4MtTCyNE*T1d3IxU$EsNEHD@Of;d;%;694;4P6J3{z8(UgDmD*Io2MG zxmzf*jUtcDE)dd#kO7k{g(i&IUfTK{1qccl3PLI6FTBk;I$;17%tqrQvmp#F6C=ao zNRlwKNmLiAM6Oq6AFhR*#{j^+80VU;_V9f%PZZvzw3XD)!ChRU05}pa*7Fr&5}rR< z5hjNXu#5eS=3Xm6ZJ1>}94fOq(5PvtNppE3`ek`sO;Ak}`bb84Ytdi!9ZV(-E>wW|bw{tGO0AhukMgr|G7$TmV)i{aUr=QDic z8XzFZRWL2G6}eMOP|+4GJ5y)O%OP`fg}FI62+QJIw;!{(8U_ge& z)A!?z|9oQd+7BK^%7>-*NQ}aLFXqtrvZ+5H{0H5lc&tSX;7c1h8oyr{+_1yQ-jL%N zE(B&E94n0$l9_Y?2#S(`f(7;uEVWEb7Ukt0{1aM6mKG?2eeQn{>!YnPX&BgtcodS) z7T}8Fks*onGK!?ce!)`lbV|!QHNr*kA4tEmA4nnhoBM2>j744 zihMIY4j-LMfs^-(P>@p=gY={l!kP=n$8*SUSeXfj1UgB~p@|_moi{I?$74JBODS8! zb2^sz=P&|$N1^e4ZP5@9^Kzo-8Ld8#6d3>+kk9h8dAe!l*bTYg>0G@*(Ktevqft`8 z7d=>jpW^(L=A1!5B5EKADKvhq(&Xgm4A z+)UblzKFQZR7@ITm(HC|9_U|Fe?z-LycSzVy74WU1N95eJ!^ zb8J{|K~d6DCX9lBg9ZV|+3W!~WA-^22m72(U#Q7wIE*v&dOZr4JgA!%aFG2*CLiuM z{oZcm+ivv~KvXOy7k8TVzd`Y$lO{64RBZ>Q2gtMj-Y`&sHu@g85$CKUJ{OCSk33d{ zY^QEe*!(0g&v&DmALScZgB7rt_s0sdKcBKhlO$>|UZ`0+pg`NZH!0N7q;)=-LyfiI zTM4gJ6T3Mlkg%oc1`1EL=)sYm_#Ix5*0XcV-J0d`jj72;bfbjN901S_;YhP2!P1OeAisW9Hh55 z-!z#CQ$0(N=W4Y3b+MrN8hii+i!Q1_LH5&mLQj?kSWGF&UTOy&B#1({+^xOae4+yX zOt}og`1f<)r9E7cTmn%aj^r_xLwa#Y8J$B_TNA|&S5oxVwXoZ>BEVFjW9lYrjI+n&{MKbc>8 z{VNEC*v$?UGH!OPeI2n^IEudOIPn&8)uWb4?Jx zl3Sn#A)-h+Dy%m+AJNW54O4{*f1!f?pls(avdETsD9S#cgXSOk2!*xRm|cdk7wJ-z zICV?oe5<|^36M;0C;yXESZ6$$BV*pec4XDAA}3~-IF%waLy?YxkfPCz9#08>$Raz+ zI6Z~t8;jM#!kOeLr&5@_^W+kc5Zqoum|4#*LVWow3*y634FE$3twbkoQbcVN7voOU zZ~S*9=uD$TS%5~g9poXS#xDUqd;2fjFPpLZ-IJHPER`oaT(c_aymp}+wK2oAsa>e# z?kh8GRSbx?zoFgQb@7ang3JHToH(hS*dY|6+qHX!W+-Fcrfeh-J>Qs~p`7QcQ835Z zi7G-=FAY>anyEaF(@g{sDar-s`lB{193=6S#t5N@jMTPsD z*gJBj9#nbPm*WWORPR|+eoR@C!_8pG!*fEPAy=RrZRftA!k;R5%hW*mx$TaDa`N^Z zt5=J~*=u%?x^lM0Jmo1jddfW!J`2J5=l%_qJwpdWw>V2V@{ESlOm*~lGPRUCX z-tKKVOoxI`vYj68N!8dTjDf!HaSRW}=#&>|AV9J^&2LkTkruq)Lu9E-5s+M71Q5ze z`dsCM6x9Pl+V_m(W&-kXK=gMYQpLD}EP=^gD`3oEY2` zs5gPdR9O5eT_L;p*u2`fPeMjLr^v_k zuzqdqi`56iL*@(TldbGRU9NrG{Z(&j(^O7=(4r!&eW&;eLp6`V)knS6~msBarmt%MbGu>}M}9Av-td zp*(!8vN96i3Yt4H7$5e4Qpz>Bm9K*TiGIImaoChu2El2a5AAU5UDpJ{$0<-B;`tWm zd`KuI`a!Y_G1FX~hj%#!x8~PiTmad`Rq=Er$VMBeNO&{(M;>`ZjWsA?{wq5k=63F{-GUy6*)RW$Umm(0>Z(j_7V$SDg-8sDw24kAB!bC&*y4&?Ws zez#^9z`ZOQh{u!6-tZ?Bj*^BSp(<;nL(X2o4tOL$ zxWKB;g)DO853tf^@6sMqINh{Q1J57cR`QYkS%p8o=Q9jl{JjPZ?2v8o#kjjOL>-%i(P88X)4=PNZEs7@>r<_m~Rh6uaR^#){YeijnU85 z_J|bP5?`*P^Sq%f^4nr(Hq-3diivZf!tWh_or1I~xw=3HeWkv_&u&|=CJUF6gA1(t zSgx6ZoW~d*hL=(HXtUYfy^1Z zmE56i>6wWZFjBP5y9Gu6vhr2zR%IdQ_(<1Zu=XUJ*z}nFee%M56n4Ll@eaD!`5r2( z{v#^0{{fZ7PGMAb{qHf}l>afUvi{BhlWqqD^z7^+vS5)SA(Hld_U?r`$Vx-LnBCO` z5d`;o6B;H)70kr|O2}~oxhsd*on&njTi8r~+C8xOnx)kfyn;&$M=PJ1#7O!r3 zUPB(FU3L^&Qi+$WT~-AYXkYo4mB@Kbvh=1(ypX*o2k$dhYPA?h*`TQW++zUA0s!dJ zg&Gi-OCr0q3I<&aECPMzd)K z?qii_PnO`2_u+bV3g%}Zv<~*7!c!wj1t+ z+_;zob70hRiDHdqAQg?U9}~1al)`W^>rD6WFtNLhCUO8H(_gOI*YcnN^_gONUK%%T zGQQ8j?qhu6BC>PAE#rt@$c+@B*#?v9`c24ljS6nZ`%*UiRK((k zHe_ME!ma3vU;OVZEpDvNnsR16?acba6_{1mO&!Fy9K* z?(QtvuVqPSv#=8%RoLzAKz3sN7Um$Jv-f~6($;J^fyp{nTdd*h8+Zr%JcXCR4ez~M zC&d5wXWEcJmjS6>Q`Z6T6{Tf+fvy|=K zl(!V7d~yqgn%H}rufK&7+zOQT?_ALJloDBm;RRY;2xGf2m&su@4T`=PJzRuKdy^3I zNGXd|khV&JbV~9;ylLs<78w9BF3Vwe+0pisaWbaw3Kp|RRmO)^D9P<{(hU@31B{pF zlw7FpiwzHuBW4INUO3D?mv3g&Y1=7NesSmQmbp0_j+aXz*DQ~sQC8yFR{P#}OOL5hH~XdG)K3uKm1m*fhuqIQHhXMcMDqsPB%#UAR?4x&Ett6cYN2}Ps8Jw_jJR}6n=ywa^7@%!w(-` zoz4A(7LH~4^R?bF{^40#29M=B^XdCpWlqWcuFDXao%5StBku*sU#xC<3EeRT0Gl7n z!!zMT#!fZ-gnqYwQFR#w*^S@OutehxAF(Y;?EcgPAKvmNLcC{5=}wFw4)wmTP{U}7 zHBS2AGj6Zx5JPog1cNz2zGv8Ur#u6}Jp0`>xMl2T+a{=({3p9}-BcS=wvmXPeab*8 z&D`IZhcUW~$)fRzO4&OEsjAJAG}sm-9cD#Z;^r`P#~!#~PnPk4ZuWOe@A@s()r@K( z?hqqj(@cb6&XkhMWk;JZd6y!l3ZiAmPv+h7&@32_3!2m|UjR!J)1Laq*5|-P$I#{@K?n5g%N~r;= zu45-CZd5SWwoPmyzodj<0X!%9$Kp)7eW~@tiz^l6Z)Om2MIue?iVZR~9gnq!Q)MT1 z!VH1i)h%GX(YBKx=bc!LZaI+Mb%@)5(d6f)_sUrq^4whZxJS?d>HP5fGdOKAukwOd_`AUUl zyYYmM{3;JtDDNS3?DMV=y5&&}1IyZIzu3Q0)d7@qKj>o830M|;GA`7mzN0@P`+klN z{7ZpiQ{DpDw!zOO7`DUk^RwCCy1n+<><>PkeH~{1m4EO$ZnOTaZL{5%s^lql>Xh+! zr;PNey}1+P3QIM&p^&`GdjFPBfk2TBy4Yez(V9l#xmE2>)NMApFRoJvA#z(_=i6e- z36Hr*IQA9=34QiNE_XcV`u(Woc4NYlKY1}4J$!k=)B&USfKfhE(RYkQ)k1m)Nok1pS^yPzS?eIaNUS)(!|k`FPqk?f<$-=j7Gfc|Dd zjDfs0#r?z0T4s}Bl`*{N^poTnJG+C`l*I-EWn^U@$Em$Vh*USIK}aQ$N7t0j=X^)V z6V&qWpoXVi{oK1&Lm-`yMRDfN3&@`|#tk9z!}%y_vNV56ma5bs&=VLZ5|neepGo)& zW|qDclo#B(JY^YXVEO>MuQZz>*Vu}#X(AhW+HE#7g>$NvgDwwXrt8@$XIK=sZ}RzC-tEc!+hARCol;xb@+%syayH&9a%DB{!Iemmeojv1j$6d*h2=<@ z)-Nym5!3v8ss-kmFB@F*nw2cOnZaFT+^*;elV33kUMjkz2S`4^-l6qsATHA-r;CC9 z1Hhh$`_txUwZ0MJR&!S;Ky?-_dZtCO)JMu|g)Rgc%&|8wKa$>_U!w5xt|LhKau;Yd z=G`AG%35t~=~sT-Rf$mjVaU+hyVfDsbNKZ0_nso(D`E3HVL9i1-%c6~u9NMoZiR3= zwvLiofg0s^w3i5IV^PiAHhalTcOEQ0#)EAnM7?kiIbJ$-=Zybfw#GYW5F6EUe_nS3 zA)2|sTwIYu?x)ojXnpp>Jj8P!<*E6mv?PbppXZrxSGV+`q8>}jCo?wOQrOaj$QqsT zjzZEzPYun4EjBb0HIw=(5*tdq*3qq+zpKmdcac=8-?7 z$U`g0^^5WH{0R4(lA&Yz#tO748{3~7be9!BKkYVS|+)Wf-nhjTmsI`u>@3)?Ig zJ6GFM2PVJ>!Tsvw0+{nYXjVuGAG-%s#|s27Q7h-81?-@P{agol#P#Dn@H6d^n}OZ# z+VYTM(ct*y>;`Vl-(8$UUT{!gBsAZ=16F)%(JV>1lKd`z<9>qy+?El z@@*M+0JlSL^%0mm-nxXlZijjmlzQMaF^~$ZYw6G8f)*rbt9a0;Wef%*?MK)a8{*PU z*9!=8WlLJrVq#?dF`G6CM4-{!T=NZK`iyuF#svXB8;T&C6#GH~O;1 z=Xul^%_o(A9$5VyvR1Xn_XL^{LJ)}oEK_hKifC#}u3cnzkhE}+5eEb6 zqKOd_-+jJS2p8(6o!W#S!-bI7<9<_vmXOzWQGh9E!{eT5vk*6D56zJ`_UQ8{@N2WD zSJ1Py&aeF1VAo}TbTRptar{2IldaxE27-W8i^93=UMMo5NH&t|JB*hFLH4sHh&lK+ zQFb?*A+2wW?V>;nP0&69-Lh#98ek91(g1A`6XCdEP^lrW_aif8LI%vMwr!6@|-igx}~Q5_t?PjI+1_Yg0a%k zvTa50imjocfyJvp8o%jh_~=gYq3H zn{O|Kl5zb&3JKJBkR${lHSZq*o{|T7QA#%CKw?JL`Gb}xW94W9XM^n30CLX;gEj<` zJg7$if_@NDfv8GOq{Yf)(Fzz$<>RESp!WtFqO z(rLf!c?Q+91xIYk?u|ikKBUgNV$ZkPGIeJRvUI=JQ-98Ma?VwYckwpaX(DU6mFs>W z+jhas0D3|J8XKy{1ZC}W2r`h+LB3MMn=U$E4G%&ZC~Tt3sNqHDxcw;y94kNMw7eaw zsZ3=P(4o>bbfmrUGThioVrw+G)-E z*D9Mxjo)Hlwf`@5O?+RRscZ7o*}5jWOkEQ*{jG&fyo|TGRoy77$-ne{a<;AaMs7Vvdsyy z_ouJQnpVB|(9yRq1JreFH4mrC6!u7s^-jA>ZN<=!pyH8S+hZK&*dxUXUtr|n=!WqJ zK%sGGHnK4`kYs$bu187nxBE*I=lrEd+NS-bR+KQkB)bNJA{flfQT(#$l-D`qtZH6d zYNjZHp&lIr_BNe8nNiklFZ+ zaq;vUYT1EiH5F{kD6rS97lx2$9V$MjUAE}ITfH1(FDRkq)L;HQW)0{q+l8Ni2Kz?% zVFRRuR~C%IE0I$AXxZGl_XuEA&>~6RJVYwbSXxE8lmac%sb9gmc~**q8lPPPe&Z7bXY0J+r_P`U z)9c4xhh<&dsD>gh@v$gvxZEXIc{!=1xv`!9#bm5IQ|0BY@kQDJP~bGD3qZLA&@L4o zzZq?x^k-y4op&I!@OQ<3n2Mh*EqO~5KU3Rf(vFsra#}yna<;S!6ukl$s6D$NQ{4q@ z^ZGKS_E=D_J1Y+=`hsHSpXV+f_cDdL=_)VW^Qv#Si@7pdDVTow{wyVZ`^F4%5Jwg_ z#+QY*Eb2@S`cs=nw#E}#EeEnEKXPr#mM#IfuunbysdS0L<-mBuW8mGKZ1sGYeWv=#ZESLA ziP#iZu44Ixv3fb&lG5y?M)hj2}I@!0u zr--N~SgqgjY!jr?L3aVNkP;Qc?)+B{*{&+LQRatL$|loG>|b+`bMn!tKj*-9=+8Nd zYFqc|97QPQYn=L14s4!3<%};kjTXU9bA0z9fRxkU{rt~46xb(sH^85J{+u&;sliS1@%++5;&RySSWjJ2u_wNzDNYokXnCa?L@mGO4%0yAzsG1A<+KdmXnvF$`}b6{dS|m5 zUpe*2%yZjEk04v)e2^@W8(cLa7&fZ?)zzX@=d5)}VyM2TE6NOfRXa=IOoORDk* z%tg0pn-{|bO>W3p=-k?pTE4O~);W@HiMobe0`bucg;dqjk+8UIU{$TND&=0bLjEo@ z^*rNwo|#&%g6-+$DzYjEM0?vsM>$K^cLmmT4lb{0tn40cOm{4*AuKIKXpLONWRTpT zVMht7;D(3|)IKoCgOKZ%B=b(W3Bo&?ii<~8H$n?b+v_3B&wgGqb;bU__^Xu8ha znNnN8M*aYfgz_MnN_%pxtaFBhv-ZLy)Kr11YIAkdu2wBkC%_4kU!akpW>Py_*#@2j z9`t@{ATVRJwpU&aLGuGXUjTk*fEmOrBg@PgA2D#fnev3wM*cQWEq)&E0ZfyyD9Y2v zcJpRw1XgVsizJ0JD}6*bS5Z(F>w^0&#r*MjrkDWKJ%p+Pavejt0-_Vn1;J}305*GE zj!~F<&Q?4uF}9lFepbdD>;F0Trq&w{B~0 zu`hMLYG~dHYj!fJKM7h2h#TZ&tLbTFBla4m-JeY>nA!}Qnzms0;Jql{P=u2>N58jN zgumd-U0|1PG(D`Ft_^0|U~(DGm^zi}X#t5G574=k9PRwV^i(nEN8-_pb%UM_25z}L zR}ValKCBs#AY81o=|D3MP+ebSf!7A+w2@vYZU&11WOAU?lcd)eWb4M#SRh|pAXnj# zwXn(|$C-+fqwu<+^xlts|Gr@~*ZTa7Zx*}~zF7nc--^3_nQi$B7D@P%Z>@Os!IRnE z?<3EX+3styrSEjVoUL%$JTGQXJ(it*?3}sWmmhxATZc{mN%v1w-2*Q*0eI1Bg{8GV29lU{Epq>!`2g=??Ke)!_-EpIhmlFj5#?aDrXyJJ_j zOiMhVV&_uiNlFoqk-KTCITpkWr=_c)w?Go)te29k0=nrNUdq$U6v7Zar}x{8lzlM} z-p0k|7&%EjAA}=20d#-UBRO5p30#uX=Jqo+w4{u=yIJW$e9P%9RE9TXyj%JW8C)s$ zGDEs)#9gf`x44MEHL4 z3I#IAJ~MvRRHI!9`eOW^mf&E)Sv;(t3w#xmR?B8kY<5>5&HTRDXdiPMl!yW?P9Tjp z%gJ|X)b1=u$(D97fnWnf_tX9r3sm6{g5Z!MlaxWoc&csmynK$kpT_<8_!$!-_l6o@ zQ$ler#t;f;yoi_qtB{vh(#sbs!~pq`dRgxXls%Y+@8?iAj~&`FTV_cbl!7uIcKHx6 zY9ywTd9@F6w2S07E2{HbXs{)cDu$jd>_upSf1m736!syR?M~vm&NvgfzcTce!WTES zA~fH0ukZK5zp+Ux1hD0d|4+77ZOQ6nl#*;Dve0er&vDxkNb?`eQTt-So)tIwugO9y z8-DA1OxT5#9~W+f2Azr_)Vut0yt#R|@9<&JO3Q^&BU0xo-;!=ZQOME`MNxV|eQPSb z$JtPlMgdD&#fhKmU}US7;r0M@U;bW?PI0wa*}`*Opl_oGfmhb+QM zu-XV?0PltU%IL)tI z7bG172tMt-RIqvPM@m-+AN}m~#_?NDkA~Ky!pGCRDOF-uwm_RJ84A zz5O|4J9gl>bv`%~ALc#Pr?O@GMve|f zY^EW!k|6ENRc)_R;J8rES_tji-m|nzkPA}A`aw(hvZw2hS!kVhHCk^fo46RpCU4Pq zC`=9Dt5U=y=0g2Npo@6fiPzqhrTu?8Iscd@&M=O@uiSM#=s~Zxg=#Bz1eg_Cpknzo zeiTckOb`?l4N=Q4>5wA7jZOqNx421!O*iKfkqi=H;SZQggltn(HqDkLm}t;t8fDJl z)QvypV%*rC_u2|WNR|=q8ZIT_n&a;Me4pp@?9^RCNmu^Bc=93Q{kwfxH3*eDRx@^U z^eJ+fjo8Lhk8<(%NO0P+?)ktKn{f_yBPTkdR8FS(4#vT9cF!v;qU5WHKg}uyS{X=zY0Qra3 zBO@aRqgwQ+85Y07_{xm1dcf6CWq+s$cP^&?q@O{F{Szryim{=dNss4K$rKenf_FEK zvc;3fLD5RYI>R6Y@=$DVOM|w#)B!=Cl64sCj)0q#T+41@JM0yG_awyCVO}3;5-!t+ zEW0x@QF+6zWme|F5FOL6@9`gHN6M{k)!QiMA70mx9T$kx;#yMYhiqZN>{81YbVSH4 zDa5|Fq@rr5C;;;iBb!O>2b=L)%w z+thSyQ#@g8p)k3mB2Pa$q4&WTK|)oH3qiJVuaW zxnZ~Ko`Ahr!R2-Q0bxR??Afuw~{xU7HDB|SS*xDUU zS@k82>9&k2OJ1zSX!pOZO>?YYSLrxzq1nFP5gcU6gRox9k~%u8-TwA!4xM7onavT-uVznFo_6spCHhC z@dN{Bt)7Jp%29?@hPAVaD7kPJ5v{6RfQaC8y(ILKA=HG242$G$7&>nF3YBJO@*W&= zR$D$3B7`^@;UP-`4KqRjn><9s#-;%il7x8{6Fr!Zi7W;$6OCi%3=_%4rg}%PmxwG$ z|C@+FR;jDEoQaV^W0VL)WiUQyhKTI_GE(I@Bnt}>zJ?W>LvSy}?aLgvP@F~LUd4jp z;7vqB@=kgqQD>YOiQ1c_+x1Dfgvm!69PQH^5xWuEo1r_a(or@YDb`@z7c$f&wP28t z_J0U*5zpMhzD%!p?V6u{_;j65i0(3=l^=Fn0D4emU&bTpLJG0UT?XOB}YTML=3 zm=QQs8y&r&FxVT;1k&94wxUx3`ty>xL7H)Hu!09L>e`O>_7sYM1et}nptU6SY(`PN z>!W7}EUxq|G_r(!{9?${y4d}64WfFGe{z*(V`2XEtwJ(I&jMO!1(|Pg{%~! zRJ4S=gMkecNVIf;EfkI$JewI_{g8J1o;Ohly`NYf@vLen-SnKo&gwxLZ)X+vAu0_6_nGEF9J+GJ94 zDHJGD6c7|t5LCQYMFj;HU0GZ&Yf)UmyY8y1t}80Kva4TpSHE6%>+eZ%{ki+y{r`Ud z|Lf0dnzVB{bLPxB&v`$e=Q%uHydF(G!WLV>t2O{7MF(OMl$GFOAx`e+5}Y^)WvuH}waJeM*NFlghGX&c zEqcRZB*;M};0l~$?~Xw;^a@fi!E^Y7{PZ1C36YZ@Q^rLhVAdc`{)`@~0sCWh9wgX2 zdU%omG(TRgOjp+?Q}+r9PLS)ZCMp~i@!c{fr|N_Yg75(G9ufbFk|INNWpe;ZOs3)@ zZyAPH1x*kT&CgW_QVD2mXx1{`$(NU5Bc3fA6!6X1+^#j>UmHt6lS`>c1e!l41;g|- zWWg1(V9K^0yXH@&;I;TB$r2WNnmQ006yv&?6>)K$7_@joLL?#DE%g1yIy$6Y7Y-(S zHRZatMfWU(YX;)bW>9i6o)V!paY5>lzplEBo~?|;q@D&p(!*Y8h(tpYQBh$%K2E_! zxyNL2QT`YjQsugn2yQ4PQbHTrSZCL~OpmCAXe=dF)~XW$AtI{2D}W+|?r;P;mS)tv znTkmZ#a*;lDAM{P!eA^;Z^?%~nhe9)_>pv{5fi#U%{7JAJM0KKq?~Oay7K1Fle2r+iw)zArB9@yQFvC(UHQ;%&;gTS^E=dvmBVr#^;j>cgTd}_bmUg^+p>+8k&m@4(D;>Q zwkg}*)mzH>3f^7r%SgA|!&D-il+W?daFNr`{cP=$K3F7bO=d@e2>}zUEHDBL(fq4=|l0bCK60 zE*6gjd1wXtWqY3xjf!yxm2uqFxTqink0bco;nBZH$MDf0!me&4escmW5 z`X$u^%R8V;!YJy6Ckcf@f$CtnyQ<7x6@u%k1FrIr+wB%>g4LBZ?lNa}O`xW{2C8MZ zM4_UNwXsOr;>Dyz39(%W#A6*o)O=Y!lo*diBEF^vmGi{-Lf`vi9~1<|kdTU`E#v39u9h(2sQYfNR!j)MEXt(DO3V*wdL2V(-te1f)R4#F5;ZkXnj?Y20m2_fjwqyc#Kcg-8g#IRVVKUkFG1QI)O+=PDO~v2MskqnA;0 zlfAxs9C`V%P^cLU)Dk9#()rY2V8a2vAIUYg&vjN5;D1T!SW1e`;`NA{)hn7mQAuF+ zdU_&aQ&Wx3We@jAvADP}mJ}khK90(HVTCLlHUA!k$L>R=h7**mbRD^ol24lH2ng{( zG3bD5i~KsVdtlN2frQ1g!qT$7Ein)X4Y^w82R77%mswWYEvpkr0h`c9LyL#-pGXi}8m#DJSn@8Ymb@xvbU+rqWr7r@&p5VsK&joPVCvU0qe?sxGT=R#rNp zYs7-#P*`Vdu5wmXR=LW`-4&HJc1r{dce~1r8qVEP8;^B14y|i+)(oUvi`PeH`Kpy6 zus`N|4lhTmM-%W;r)1%u&xFa*;wiIRV(TQZK)vAsA%A`+&TUwUf}Zl>;mP`A8s~EV zx^R!PaX~}N(CkoS8@|sYX5}}A6Qa~3^qBMcFJ;K?x*qEj{ozO?Q7R1kzHciHg?nH& zaKuxR1hb~2CoT**Z?*~asB~kNtW!L{zB<9RLl5WX&uz1FjlQPV%d*(}XcQbiRu*2!X$`30s(ft({_+Y8`}9`d!SEimgyc#w(E$m00fxJ|*> z6v~7c37y~Zrb8j0Iqp;(a4O8Z4wNe7C5O%#Fr`l=!x0!JY#EIj3hgunQ~&r(1#CxV zDugS>YZZoC1seW*#kQwwhawG~p|ZK**@L}{hFS-FBTvgh5ksz`d>A`m{*#Wv=}Iloi;xtAI$n#^q9k-j3jd(M zck-Ro83SGfb0fQ2b?C|QB~-~03QO+UlgI6oH`^x@hIZR0k9#NY@=iv{Bj(B5?hUn4 z-8&|`4$-neX#a!7z436uF#z^o2$JgbZNgG0=A#Ws4WB)U>`{$YlaXv?74LL*(piSP z759_}gtD?qu_ELObvrA|on?aHF0ZK+onp{gDGKfyS4FVAyQ%^js$@nMnN8R73wo=& zC08W8Wck{GCRddCV>T&Lj4%1$8yX%zOAVf-3d$>;&{fNvZg`I79xOq?F-@)UOf52UDI0-m5!9;jb?*xse8S5u7DojkrcKHevP}vq1CDM2( z2Dxq#cu!1lWgJj|e40MpZ-D#cN`1PU^V}>|B>*5y)Pu2pv2``lCb$sLj(neX0t&-& zA2q}!@n`tA_J52}z`KCCLdJ9Qr;woACx0{_9;lKFC3!sZBf%!{%k=4moX`UV3wIPQ z(jD9yo*bW)2@)#F8Arisw}$OI8a zCW!DyeEerFv`xlIRUKXU6Eb}MKat_vuG#4SJs8G-zMS}W>l>QXMKsire}jfPd(%?1 zP`uwZsUYoN{2$OznRW-vnYII}{{V+_>p$R-?xKD`L;UkUgVk+~v9@w?06NSM>{VSIbU6i=Qw+Gf z%Y{mJNEC&Ns+zLyDwsb5WufZs3IH*;^Z${(#_*5qWgVViFZ0pSpKC9&*I3ioHXtub z_9JXj6ZVN zB3<)8aoCv!z+vlt;IPrXs8oLG)uoA{Xm<>N0~iCkgP08T0*rx1AVwVB5g|CiWI{cC zADD|n7UcwhDFMKWY4N0f0>CVGRZg0}_Va1}I-mD1_%(PDzs4*-#jgs0rJvxJy9^Ml z%2`%Z`4jva+wec}i=V)+k?u1#?dr7eWAUb=NcW7>ramUnK5^@SD; zq+;vBtqbrIm;@AsK}GSr7`RuU7PJeA(ZyfhJaRwYc(6~Qo{&J8I+}TmLUT*LrFUMY z|3UO1Nh&@^VY!!9RUu(pF}?g`47_)+-8~T@JSf^hD~NQ9@t~bsn-bzcHUO=mkUcFf zfL#&dcCwMS?4T)u>mIvAGtYZDedaE@hisA9D~cz?gb9^_`}j>I7YvJd<+FggCiYL4nLc6pGfrA>}~0Ukqhn_69}M>9M_*8Cjh-XBF0EQ6RK1 zFl`P&rQkvEPWCAU>Xj~2$jZxnzcC+gxJ)6mGMf}F7sfA9{B%2TiNZRFddG(qKixJD z!-drs_na73)JmeFz6IEqrmZbM($@c!(0<^q{Qo=dqJX>nv(Y9HutzF6K}{xThC(b8t1jF5km70EdB` z)1l`aTti$4Gz=mA59prj{?WJRrwO;RssKJ5M{>V`Gkhc)2J7Ya5F?W9Pf_0z-bf*IS5fOh};TNR95a*A@ zk{~nmdutI|U_QoqxE3h{;3xPL%PpvE4zMl=NnEP{4Y#}i*_Vq0y+d(s0l4S=4K8f= zC3=N;PylhOC?TJQg7h@mfH${8SqiO%H5K5-gY4z)h$Tg6L={nU3wy(f`MvE|T|Xg( zPKZ=c@9wnd83YJTYk;w6H~1-O)e&fsCN0l*tKf2K$j#MuRaMZ$O zLo6N?<3)0dCl9Hc;f+TGqY}DUkvU)WUHYyqA^Gn?P#6^D>!Aky(9zm~d>OP#PGq2Dr**0BP)MWL_IG^)px%U<~O~@*VB0E>4Gg;f*uOMwxBrUzk zi}8Qw7d2i~Vse|6vqAe98PGPT#ml0m1?|gUx~NkB=!0BTpyAmiE|DCHh;?0-P)tfX zLP9hg8S)hM^nmUx$*C?DFb-a6;qZ zP?trXs`w}G+Mat9BXihn`UOigBKP5S8Mei;gxJ-9KpI z|69r(9s6f&uLNvY!?1)&;|*+5H~urd3x88}POy9V%epkXk1a+C)ie|^ z_YC|8a-UF@lXyT?mk(3wMPav0*YevNIk^0yu&ZiH>$elC?rW+hy8j})&;C)>HO6Vj zgsgkN5-t&S_oem8N7A~kDn)@NjFT6|-E+;r$kXv1su$^nG9h{nYc9Qr@VP(NUX*rK zUFMBxW!IXZYt0Y+L)qO-fwH^pQT*^vWZe}P*&SOy(ENklxBZi_JMur+-Rs(iE~5Lx zpz6*+mh(R|&uTG3odztW)Q{jEo-JNUhbQ!0vjw32-n5=OMGY+=B$=xzJ*b0eMORf1 z!i4WklgIa*_J0bxZ!1C2wd1s+`^SrlF8LE>el!1~4qM?|G?(nA(k*;Zjx}#xpVoPu zW!2SX)s-$6=(GS#-Qp04^dLvVz3DmFI@8i#)*Wx^56%wFZWnqhrDn6?N6eo!Bso|R zWQXyi+>i1qeeKB~U|gsYtI~6&QwWv?%0+jeqRLen3I;@XO2Pf#;8E`JRD&ZFuy_7WX{n8+yjbUM7XIe=om=F2O<}x zJ)yYi0Ly_;v>QXpQ)T?)te z!~g^uii`Ln80X`kQ_EP3yx6u+4QJp9=ClV%pX0Den4F zMDDWKp(?S$c-EogsQ>eO@JXt^o)f-9Gw>?>r6#57k`)%}cBmN2Tvw;d(bn^+R5+;n zJH{YEq@@RroTaNnFjezHH;9HXOVn{Ar&Q0v3zp2&weVVDie=4Nx@VXcWf>m|OTpqW zR|o0|?_>0QGS(JbCt?RB7TX+GsMkT1FTkwMl66`58F=(>O0binFKIUGS9Dn#VzDUk z(fJK&i0`tjR9%6$Yaz-P4lZfwXxNU_5tzY?@jeI|+>9|QmTM7jdr4N$KRicuP#aw* z^mkdzGjXl1c;sf;z<^n8o}CYoARD)76X$M2zPsVnZAUci?7pnrd8l4)RhfitI?vsV zR$Yr^n>M+xMgC%h68KSM%e~PRL*aGwTG!jCyBV1e+B}sK^IFzjQS2(tfHqToY_>UM zrwf)}i`Z3^>nTLvOP6h~#8%bzN{r$Mi_zGB3q!i6=g(4uIyWG&uT!XArCM3sFoImA zND01#C>}&b^b|@A7GWoIZFYx%kj;MyVw)&eA(jQ=>`er9`M*c4Jko-!7#-?ruX2rK za(q|{03(YDTfguEvbF0_*R~Wg^IJ3Zd<4|lWG}v**0i<~S?%D80Hmxw#Frx=2=pi~Nj5D8)4%{Kf!M+vH2oaQNL zgpw{I%DU71yTXAxEQJv z{s`FwyRpVs$}|xDVhF8^(Cjy6$a4)cO0^MVTmcjP!d~-#d*8{FarLhMk`G^j>W8nC zah^~iqM%`o5%ZXQ2Ynk?Sjd^fi4LK|s5|YKU+ww@Tz%A>-!3G3dAOBra_-!e;SQVi zrKQaf^c!M6&H}gc+;ZX8Vz8XRzHx}2CP^d*CC~NKWrtg>zpyU|ZxH8(LO{G+-79x7H6TRy6W5P!An=HE4lu&75)`9thU#pU>tY7;W=2csKL7XkGbKiw?^&QtB z-6eJP`dJh1>{8OH66I*U=7g4C$CYv}RiXhxY|C^`Gz34rMkhXJ`nyWo2n^5FU309W zC|Ts;iUQ$yAOg^6%SJ_`D`Z8UZQBu#l^Q*@zQ|*1RNbx7qan8*3W8lpaXp!;R>O5& z7S_#z@9CYV=1O5=6O)P3Fd1NASII3bYQYTR$se-8m}@$ne}iHxzs}9`9n{0j1y`48 zbon80{bt1?G1rSo#s@H?n`Zt9&U0!oRu`qU7#w`;RgASov3R&Aj0L7jO-2Y~&9+s6 zg&$TehR-6?k!<%$a7|S$%0)0a$nKXN>w6P$`jygHBf5V0@3^?*-o}j zN2YQ$vo!1Z58!sLzf3yOh*(T%X3^yK25{Wg3E?)gL8H9giT}xy{v@ zJ6MXE-b1`+3)1rt^j|kuVvpn?_v=0k@H4mKU5*J zcatuoaFdK19-T51e7qT5U6PO(k^)>PB?U$biaB`TWN|bB5MsK4YL>)x;LOFM5X&nD z*E<#&6q(oP;vf{{Vefuce#7fl4eOZdMDC7%+MK z7fAlDp$=ln5Wv_B-(6jngsK%Qkdp%sUH2v6w%AY?srOGMmi-@pPn2t4O4rq5!Cvk8^1ky~g_ULOCT1hI0$a zIl3W+I;W$)O^E*p&V}FvYhsw~+1dzXrUZvbixLINBBe~=m@uPCV2cvw<3Xz*_2_Dp z38=xxm(T~*5MCD(EeFyze1$nm+NQz~RLbleo}`8z5lWHAD6FD$%6#$YL_SWl5ESCM zQ`8H3LB}O$wd&b%Au(XoQ$R{aqJ{jS9uS|3)eEAK{)7!^rFp$?SK3CikFdG}4GuNf zP}Sq~w3d~6NREhv#UNcvB{)y(G(`V}O4zz~T3U9|I$=7ksACHA85+8WhLo$DmU|AP zgHK`e^<@A70^}fslLAm#w3Z4dT6h+br)l8>#4Y+2xm)9!hE)4)vZiOnqV&Y-X+sSM z5&IX7EF5Zi2Jb~d(-AWYGG-H>%20#bE+&}cQz7vOvY^(U)BVD7-i&`9CLe!ft3U}y z$SPQU9gZpRN-ereu`2hhaW(l!b#q|z>qsa;gXV5MxaDb8hWR^(ICgfPTuFfsuX`G` z%cqggER`Gh=aA)Bdel`iFAH@sPwLfB6r>;2vrp?Wt9pv!io^UWM8W(40e^2GqwWQY z4+s7GWu8ZH?guEu9JZj4;jm@ZM~HdRVtT>y$^|g}sPhx#vLO01R}OmbFUWNu!w!nX zERaT`>A)Hp(kdYzM<55xwqI1fp(#Lh<9=DlFJn}O?eAugmyIYY{1-zE+Zs?CJ*-4t69cL$5`J?5k=YIDTZ$wAu?RtEYJm&2IG-Kb= zn@>U~_}yc2yJwEvHz(aOnbIP1se*Yn`|xkco$O|0%-vunC`3|4nC5FH%U84xqL$wj zLv-;U8FElD{}wbjOX1#vkjO47_O+>dW8g>SUco<-!EicDkIwRFCvoq?e|`J&lZ8`Kd39^<^zzi(KP|wMNw78Zki+xfDLkW_*V=->@{h z?>dA+?yDe`V)rXMOJ!W~hW(~<%gA+b4*N~Md4#xY!`MtK{5^6eL-Y6Vs7!{vitF zw{Lc!6g@-TA_c|u-d`Dsizu9OE5-<{QI#pBe$sX=sU2Eyv(X} za#0Ob?Qj-$)3CS9dk~So7RUmks~%C{ZW3(8%L_lFs0EPN_7}qqd3sKW4D<@!%zGu; zNMs1CCtoSI^9k?_i;D$2*KNa}B5=AXJ`y9yM(!(A1FjZ#%XPM6&yPTF`lOfwgLrro z`JM)@H!#)`rG^YTG$pF5nbRumKq|?FljODOR5CVTnM!L)=!IT{%?I84F*BS))$=O~ z39DUM&&LG6>P9w0Y29sJ?_Py!Qh+b2vu+(?rm*JF$ZIYy)~6)MYzZa301tM@UcAxu z2F~5!YK7QAD$(n)A*0{dfx_Uo=10=gUK>oWDx&R3MIjc#{E|kz={g5d6IpSQH%m{p zJ6fw1xJ?POW0C7E%sy*2Jg0Zvna(5}sN5=BQ%e_P3zZV~r&7Tsi0^Bj1h${qPoZLFy9L>B3m|lOd#DyYbVyapxC|(Gunrx+TT@3tij!_V zz62)V;o4IAvwZIw8{ZcTON>u}4c5EOx3LR!N|>IK1eF!kackgp)CR+Yrae5{qHcs- zt04~;iiqoHz*~dtCWpCFnec%BeVd_p2G<8En&HrpBS5!Y?SU{)I-9LqOs)eHGXoTf zU=ZeK4_7$=S9b#}_rytaK5{S{b7dZ`!a-SkG0!PrRpFC@!Bxu*8Z~Y~+R=yD0hO{I;sdUkh=K=)Sp!(I zHX?M3k&*7EP39&o=%NuZ!1z=hNv!Tp2VHeP(?WVIWT)D4W#$`s(m|WP#}@Z z#fFWD?xnbJaKlE#te&d%faFqUtviV-Y}?w>;xg=jM*?CB2f1kwsg7&0Z_Z*W(|WDv3Pjb0r7;hwRaiGLLt3gkwjSG^dyfASIb24N zD_D(-j4NFCXNZkxknG}>kb3G6uZAE8WD*7;cD5CjHe8CDm__S4C4{^$Z)M9XTG~;4 zYkP*P2)k7%UM(}bWsaa}zmXK>DI=+<)H*|U&BEOkN=HNtt-W)8C7t8lkwI3QoY|@- za~)4Gxujgy?Hy|E+X%`oVPJO)f99E=J=Gl>l<#!*!?2N zvFA3RuG8&qJQ)oeYRV~qLGnizO59vo*`}j`9Hlkq<{5rPx$cuQuIi)5fi;qKn}}}e z_;EQZGL!V*p5@5=6b0{rp32Y5)M2#fnmzPw;9W{$3S&OWO7-?WB zqA`$_N>XJduT(Mnt4UEcxlT`vT8ig+=351;)e$b2Dt4BUZC1;DYNpPpY!m}wa=)Pf z7!+g}5u~)HcYW8VAp`hnrH-{K$ijTmW=A5^ZBfSJLfjJ6lI2+~r!Dnaq|wCQnlpNL zOC`AaE668mD+@CyatXgi9_Dq5C9Z$u=`qh0netqm1A+qJ(ghvtG#BL<5{asoEwhm2 zdiih8_ma10oI`iczeASrwEx_HX9jlQne#uyYFVI{WZFO@%Tju{6)U|{5j&JaoBSU$ zL{fNN$Z&r(GcN~uOzc$lGz*UZ9Fw97D~U8U*93pD%*|HSe&jTAXxJ+uW``2H7B_<& zE;uaaop>b-3tYwgb*dUtMMc57z&3}Rt-?m*5XP=y7~HtPrjyUc+5R2rKMar=*fJL@ z7Z;}gGO>Ry#|n7bXB1f9fl=Yt3e-YYS=raJyl-c8)TGa;QzpUCGdjKJV{m{GE^hfV z2@(q2A$Err6?e?XuvZP4$q~^uH%#W=hTq_y#!#5$k}Q1}{99A7ksdL;lO>-^K2XZK z)@*J@dXTk}kVqYhr7xBZi3e?PD`po({{bxvdpBQ+G?-jIgVZQt__L3g)y2KZXoUGb zd-Hm+W)1$)8N>ovxuMC)|(>wJs2In*663eStIW$Z@(MS zKDI}X5~fl&X;+}I!Ra1leI@KZMbp&d7wCL*?(GS{=d2El8Wb}4lu5Az>oYK3ITv+o zYksdIW4txvmDY?;@4&V@7_W8wPJH4{tOW@MIvx4U8-4~!4-8=q2F8$>HZu6@Ord{N zGSo6)vS8SBoXljeo@O~p8;;gf&{;=ZpwjHi@x6}3M+G3JZYh(eL0WK)VR|3pTmFoS<8$R?D2I1J|7dW-hwrF1 zCN;vm!G3HFIpny+rKS0p3QPZ7@4UH=K zrGWp;davzGV|49prqQBqLk8>2qi4Qi$UrNWN(v;f%?7kYu)LQYfjI&WdZa*w#X{TFxi9AIqffdusYBiONfTu^?q92 zkdKe;LFT84*~E_8QJt$F?OJGhydRmg2DF4RG-*a^34n1`;~}}c@ea&=NL!d zPHyx2Oyo5`rjX6^4Dw%#-OnPq|I~F@(?}ljH7p_;qwCo`y^RlpfbC&qklzw4dLWLB z-{H0CxXhNi`%bOPWE&Oy6B!!{81Eexa}3!}SQr%^sdg69Pcn~WS)X@ZgUHKSZ~hK> z*PsobC_8?S9yo+$9Jj3=Q}9G1{dv!CK)e?*A$ z9xjIFgB^o|e z(H-02&I1{Stm#Z${RubS;YZcr`3MnMw-pbAaTOEv{3ETHfOwbbf|vs7@-iRo;Ap4tQPjNX!D z2T#g6m*+@uRjr+TN5NFbyk0|A=dmqL%MFcVKVv~_$~Hl%rde~*T-#HxRm%vmLPkd< z(#YJmAT0vMq~>t4=PX%3s#2m z^1wU8r>v7%zEGCnJy&9KX|2m!E{mrg;Pa17#^E#UykhfN%M%KdE=LLJ7z5-R9rK1N zZT9K71`xi>^h0e-;oxO0cW8dLhU>XZL?%(jbqAeH~dLVM1 zio+DTU}9O?T;I7vR&mc-v}X+Mog+um_-~A`9e~f37`CV3bGPw7ZTxQIS38WnUB>q2 zUDM5m*bgTeJ&LRe>pQ+G|Jzmhs?T@UpOedqD-H6gCe( z8O)#Z$+9fNp4qHKkyB;Np&WIQG!Q5vJGCrQc}<8YeM(5d5D8gavSW&%ARFil{7NQn z$IbbH6ofFO9oMaGBO%e8=1 zDzG;VQB?T3%6oG&?Y5|iacU(^&gZIqgRyYXV5njOv+7P8{+`92b$}0F#FqGxK(C-6 zg`HWulJxl@n`DS1)FSpn2N|oEC40$d4(3ROEFLCOWjfn0ol_1;fDv+bHr)s+)WacJ zqL+EQ0tuwR!3-DGJkVe zYxt}Zw32?8yszF?ZT9esk$jVG@$o~}uPHy+t1+Lep+(LxokTvD;mxuIVe%^id6mE* zTs`6#CYLgi+)ydelp)*gfpN5=}}c>{l}s(gt2vWPj{ z!&r^%vbm^>I9ps(=7PNh>g7*h+jgR~P{Z7&*0;*g8k5V~GQ+BJ=OB55;kWI~AE~|O z$wX!wH%DYFDAqG)fbad6KSggFY0GY#&fd&?RF|B z`#mOmT=T>Bo+jI)&1N6ZV(!hd+@Tu(=3lpWzEO?6l~z#=@eL-<*!R|?gJ0=n12NKG zNkzFR+ZZE%X(O}LWO9x_hS+&VdL^+Xyja{yBO@NCfEAs3gWJLPH$ za$Iwb%5+XH+25;7=j39C+(JR7B>UlVMpuDDxm($sV)|giVGVs9xm@RUqCO52V~!=W zl@Q7>b2|IzJas+a4NmI(spOL!`S^F<~gPpYF+#-CNQ&#Fo&qGGVNRF5U;7=68y!~=AqVCbNqJ1?rXk&X;ljG zp_PZ%XcC}!k{QkBtBh}06%WtT*dZT-xwgRf;a`{!a@!Y?+4UPT=z2hR{^FVSvlcoF%o-f$9)9bn#0G`xgd zn={7iNJky<-jexgN`5GX?8A4m1)Kw$Ur)#H8kx;oM<=0PEGI9O^tH$ieodjEd=c}W z3H9z@WB7_{U5l0#k1xO-3oyNw*;IpiKb?!Mb1NJ7?wi7vd&ft!nbGX=qye^rNrP?7 z|9WO&bx|QqiSTYpb{N^VsV2IA>`&eR<_kgkG)?E!MUe6kA#3|k8Eusf&)~fY(<`}D zV=Q18swse#_WqXHe7h)+flEhOK!gmH5!($rGTovmmy#qmaikbI5pgBrA>3zw&KWT zUdmNjMlSUtiN3WUoeu!(h{325%f^B@tn!b=BFXRovt=0tDk@!QnC`{H`gD$0thK*5-jIyw|Jx2(2_k@(g*}MYV@NwUqGw z=T<}~TTPB{A&ph(1s$*slsLE0 zBtNa!r`uedsiw*ipwGDI%|Xo64hoi|lDD_g zGqe}iK)7KQJVE(NS{gG&2iO$$lQRv0FuBU(5tNJCy00iV3NLAe0da_V}Bt(2~&;1F35 zExx#HrX{^l7ds2D@6|#PupXLxz7p|_B)w=(Uf^ctUu709|bmH)E-7=LS@Sbh9& z7Qf){(OhzkMK_%!E^{-8f_2Cv23D@t6{9HmY6m|IYmjMJgPcw&B3~_FZ(H@_LS*KP z8l6!+u?pERr$MJfVe6yXi%XD6_9|5_)YbjDA-`DpD&F<5XM^|>#WU=Mhg%3#Nnp`B6 z+`e+}F^Rad&mNULy=eKp5?*=ecV8YN1s2Oo5_znt3Ysr3zR-mNk z8i~9@=1*l$I&Hb*&3&ECedk|m3D~yzdTE96>%yxD#I}!Wm^&yoU(Mf*_TGifH@SC7 z@-IAflI0rO)L>;Yt=o4>_<&~)@*F_h-V*YgZoqpinGyuA$JX!*GFEMuR1cOEN~jLH zBF~y>o1JVGWRQ<=s2^E$Tf(QH+O09;au~PFTZN{K*x-vuKwCFUs>chxQl(_os-ChO zZaHt1Io4WgcOW6RhB;27e$C18q-01+;`^Svaqb&~aY^-->)Yrr-$AZg* z6b11~N@8Z$9@f`7b+)vfo83ueNN=v+R`$S4rL)WN;`?bxHE(T=(fD|6vBdLP8QV z?-Fuw8Tl%{tpN3sm)4NZYsfcISt_w@+EFW!+sBtmp{0`l@<~mz$V*z(x@^`HC7Zl?%GZ+#@7Q;0T za?cdV*lcN}*J5Me03wT{s^;)h5YEk8lz&d$Fi9fMm{8=+T~~S{XwMzdg_t?LP}DKK`*Jk?S@hIr(L;?I?7kAQBR0N zzqOb+N^fBJs(6UMN%pAAMqF3ON?dlzD{caWEqx_jN; zyl70-W_mZe|G!jv_GlE%px;($<*N~AdOK>}r83aGcOR18idqJ!&2L0MeLZ@##Qmoh z@+%ivGDVgGQ@7Xh1w}gNYHZI7OpXc-xPB9L?9|u}U*i25o#~e)#hUHRyz*VIMw?n8 zYs%89a8E(1r_+JaF4n*+_^Fe~i+a@C`BK!jgZ#da4eZP*nPe+--9Scf;EndXT-L%J7uHeBR?4jS?|?{L>!O zte){(qg!u{$}HZU%TR4eN#Cx6Q4M5)y>?x6+lwHtY*1~}VBXZvTspC?K3uP zAApz`s^vFA5llFT3`N;>@ayqag-7Pse12qYl*FRCCn4-GFQZjN8~UQUHa;7>l&EhC zCZql1V)SYFA3wgsvf2U5vVMPeH1};ZVEFPja@9b|>S)bYX?g$Q_jj%6mk&5=H59Wb z`uu=vrJNy!hr7q;M?2<6DM;XUFG1#`hK{KGa05nX+oQC|wnk~?GJbq^)HFLPUkX{a z=BEs8G5@Tnv0%JDx}iQQ@5}uH?CKh(YATt(42k2_(N)z@T4^bJZYuNHEVe4zzL?or zTzGbM;i5J21Ey80$Yv9B1x@Z!Fga71R&JGlmEmRuiE`|XdQwQwe^9n!qm^Q&M#1B| zYQ9{75~plYvg|6VE7`@?t&%tIk`>C`^B)`SCEM#jNUkUPsL{YKU~sPgB{iurmrT0y ze3D^i;ZjC1-EBe!-JRHE_)4w8sLM1d3iCea%)P{P%QO)BQAl!2kKpfd3b^D z;q+OquOe2{#7dHeyaMB4c%5B_gHzc*M^=G<8Z&(qS!@Q`5lVX@z`Pr2xHTP8IhM8a z4Q72i5%kQ>w^`omHZ&?bK!~h0)U7fcnU?;wknSe^D*o+A_kOtA^j5_CyNEA^IZ)+L zz_e&RlbTNt8Pr)KFhLh_uZqt?hRhzabbdT7n4%%}rO4LwZ_E=Vs# ze%0B?-a$BEo9uoMvp3GWeHJqRdfUAtyZnzrdJ}oSQ^$#;=00S*OF)M?<17#wo{Zc+ zis+f_P(B21PDMNq)8yl8Nv7VcATzAylFb+y9*6KF^1hl0)o0)D*c(TS+_H|? zhm{$iYfoZ4kIUfjr_PLa=Z9D0Lu2FD;3L;y@X^Wbky~!c)L{0(F!H!=jWoQC1>Y!7 zK50n%9DQofwTjk0IXh#zR~{h`l*y7&)6Eh7#t8FBj^+R)W2R7i`SlT4xCR5wiSHuU zMLNyMdktzh5b1P-T+e7$SoTLcOW=6R*7&uN&9GuEVA>byw4v6snT6LxTrLPKXUdm) zuS)+4jTa!kszV7vOZXeIC(=-a%q;z9x&8AI_sik&woFf3rtv$A%#JaAxo6Ydh6mEu ztnp7l-a@DX>M9(L96Unt7Z6GnKCp1tGjbwD8ty~J3y{5>t;!Wvaw&NPVZsXsLj{H`zOb!Guf}5P_c=Rypy&0S zP?6b6k2Twi(fD!I#m#?QMRqfb-|6q`OYb*7#n$Opy$#sodJ{e@Z}i9SONSXDX|411 zen@`BcuWS75W{Qz9lz;6^ebF)3v{*LT3S1^R$+Ad%2h^`E@c_tzWU1@mS>B=_K#iS z^&>clSCN~{>?K79p6@q=@{fFuaL6>EXCF1Cv)akC+3q|v_P%iW7i-XwI#lxOKK>@e zoa$$v=zs6={s(qo=OohB?|KX>)%r+(>%;xGN0IS!90{H5zr7QLW)qOy;f(HFO~aF6 zQ?&KSLlYs4Y-fe-VNklQ54$c$WK74r$YS?FsBuE!U5&a6l>S%IFP}#Si*gS}N2aIq z&{iC&EHd2Q|1=G@8?XAD@yl^xN%fxJ!IK~PJ>1AMr*Jbw9G*hn3o;Zi9O%FO9%x(k zG4tNXbUdQxtAZ7+I21)+^! zmZQZR`fsntfTD(Li{nQgJC-epI_(w+wIM-^Saxo?)oC{W<0(juVh1>J4==x<>TiK@0~Z$=XYk0 zjT$cWF$HDbzvMC>_mN4tV;+Ot&kTsC`(+&0;Y6JlgZmngx7kab1eyE14J8lG{^V08 zvyFUTdiWhM?`+mQHZ!mFQPg<_@*g$Ci*w1S8Vw)Zoj<=d99Bq{A6v9;bb4O z3_jRcSk`CRL7AtL(PnZekG-nT^MtW3#;)*^|JB;vfHzg1eE@%+Ca2`IIj6}X32A9d zPHZ88G&E_OwgDmuO=&9)ZRrQ!a@wZt32pk3wos9eqIEAQDku(dQ|e^1DsC|JQl>Z* zCNOl0!zri}5fNl6yZo4n;k}=eq|}PruJ?MmPU{+4mZoXWbKlSX{~f23JsvQ(Exawj z{n8#D2s}Ix@b0wU5r<~5T`l|eyi6CPhELZAbn64uWmgGoLk3ulR(EuUTm+&=+&9FAD+x5mm`z$;InKhuXCky zpKb_?fsJC|^}Xyf6T`dX|6dNz?s#?yUHt6Wsyz&QWrlT$sVgjUyP5aC6P;t3;vEQD z*v8u?gnP%pv8ET=wYtBE;l43HKECQ3^MRQSZxbWON%$Xn=EsLe&m3r;c(y71iY3q- zzvTgqbEEi5H`iH~^7kfnfHQ0HfbLZoZByxbRVlZM5LjId6&ANngdz40_GS^&_LU-5 z>$*kjb`{gAdoz<`N<0s$sCDcUDTNe0H6X*fcj~PCY~2gj>7FYMw~H^fi|kr0_i(1} zV{P~-qK~G#ME0SvGahi3m8t)wwmKd!s$+;wW}DYfpP4^F0UFAED|iXb{~6oCQUCpgOzS|;OVRf|N|0=UIqCw8j19%tu} zZjTtQ6?L^DZ};s(fo_?xTJ%iI*{~GPX6w$*cO68T4&ifc7MnT6H%G)f zkw4`dlZ!`Nic#r1)GXtvtn@k!3i-UE(=4I}?q-2BX8apI(3NWzCbSH?q4O#33QrT^ z$XxBZg6^+VA4k{kcZ%M){x)ZEOS!T)U!=B{%|Ky?_@+a2-_&2(v= z&ZB&J)JF5Hr`y&-dvbtVn9jYPEgTI`7ON(U4wwbMSE1Y6(tp8tpV;$(?ib_2g}RA_ zI=Yn;9bto*Vi4uQ)tu@q`#+8BE3A@OT)HaQ2K{Ixnu60b5wnhcKNY7zJ4jbmpa8Ot z^EJ|X?$0i0i-DTb&Yk{<*0B$q(~ebuT*sZSp~tIjKbGs*=YK!=G+oYp{Sn*J2y+Lv z9_|kCHsv7?yQ)!cbf$dxAv7M(_>qN51MG~w_yTt&z08QXq)DiS>r7TbA1f%ZH#Er` z8z~h#;|*B0q88&l$IHA3g4I%Fot@gL`^!09@NDu%nA>6NKGD5nh7#rDkKxX<^pupo zB)6T8?XmWD1-WbE^xP+3Fv}Thn zKiih;D9FvpEo4m}J0>>g+VbJH+-%4R=NIN%JX4#CWi2q(ccB@Gxo0l16V9byXs(^u zg0k7?o19fG7Q&hU`-R}_fbg1g*}vFp0sHGfa#W*etj#XIsiwMSWm9jc0~xK7a07^w+RFXE8+b{D1(!EZntCSP4LZ7y*PWAWi~wsG+_O zWzQ;AIwx&)dLYy-$Vf~Pe27&|xF2u9&@Qp{kZOLguR55Cy_U ziepTnCSrxr&1&cLVSi&77{j+3ECk&ko3qrSZA35w*8w(bt?*z2pxa2I;Y|=wfoI57 z7=T|l5(a<(92l?Ag9R8sunlG%&W5ig-()20kCh4ud8H~P6TohJgI*=?4lyK;4E(_G9e|3X$Du}>jR*-O zPnh{^By3xe>2fo&y1oeFtEw$KF3mQ5(g$<6lXfotmb z+naKma+=^tqPOSd1G&}67wV(XY39o?ZU>tL<^7)`-_U%b5lF^qcYk#R+OlN8^9b-~ z!ki8^BLB_|xx1lnf7{Z*KR}azw+vYr3-t9z6Q`LO*QU0*hN-Qcr4ee&jJo(Yh^){k zfVE?6!zcK&E?fLC7%sk?GrRYw-Mp8_l3 z&}#a31AkBg6AXim5|Y*QBpwPFD=lIBT9@E!snME z>yZzTHQ5NA!+hMCnJ&B`H}F_AMDp(tzO_~$It9wt6r~x$aDyip5ANGgAunyTu0XUV zI|Lbh@SRNN>tVu=v8xDRz|#}p@5_8B)lW15_|8hbsbC5i1jr3if48)EU8MzTw&)2e zu&iA;|BjMiJZ3(1nUt|#w8YwroQqJ#a6a9ny(_O0V;AJzN#r7V3bO#>(Ph?0U~K(i zcxQ1nB3zpq+uGXcY5jK_TkfIGdVOS1OMGf!#MM#_{aPR0&AR_VU3<)vFGTm- zVJk~T6X$EgPFfq=%z_}HgsUD9=!pv0%sTsLB63FevXJMM8-QNhml`8)@!{z5fj>2L z3eM=lG9@e?+WXsR{U$pBZ;w#4u7Ax>cx##{c>CVqEOiTP<#>BiA$2KH%Y%=iRj2Ev z&8PAwknsqN#IMd8nhl zdwCzhY<&;LsfY-Y$G(v09E{UMmJB<~mOOHG!C-wfE_Vc5o0DyE?uJ`{ON()!4vS}B zT=AW<)0gZ4ng148FKko}e(k?SZqLSe=|NzuPM0`8mqj7kC%91W4MJ6uuY2zN^11Wd z>l}EG^Ic`d4?HHP0S0(LK46#9#(NUD90jsuxrClqKU3D8R%#@?vYQo@ELLi7ex(Rf zOpvyNXkcan!>#!)kzJKA*`hG+PoRqUH@MFdk?r(L;fslIY`K^y&$CoPPQ0nx?FoO9 z2#52N#KB5_bvoQ=Y#-PH%d*JletR)d0g}|f4EXT2i;1UyrZ?uW{@wx|;)ZNot8d^KWIia%Va$kv~)wa@o4}eEaJ*UImQ6&;FgZ##` z%A4+2Qo;eqIZn<|qOP-l(QT(;g63mJ>5s_b znZ~B**&X(L0aT8>`n){BUuY|^`-P?gTMjJ$^8JNPdHFU+w%_j0t#2@D4T_SAyt`f2*bM$my!-DdT%6v~w)e29~oLTvx;#ym274cj<*c~cvHH)U|dRYr3 zK4HhY5n@Gtzi|!gd{9yLMPj&?*45G$khg8N99XgD+jD}oG%DB*x0leaFBQ-k<4R~` z1M2q05;}EwjkzK$Q)f!>7e|#|m>uC8IpCHRzguvN>O<$vv8lw+I z&>5^y!KguKDvn>4HQJGeGoSQh#(9s9aBtwXA0TqcyouPtSxpggKdO$qwxDhBl^~@` z7absMIJ^pWNlES)wiE(h7XDw=Ng9|a1>j4~D!ah?NKRFerDjMy9=0T_umSdxl`y&) zq}A2rYzR?LAkSdo7hRYI1>9Hh!z(pJOv6%V0e%hc1Nc#JQY0@QtBlM2eQ?&6Yy)fb zOy6paMMwQsxIg4V3Cy`?Bv%nG0Rg}wxugTR7=#V}EtsZ}=5dTpd-iI0?TKCdAv2}K z2!AcnVNGzg2ub_5;4_Nuo)EQOzQjVW=4UAy1wS>0e%DkQ91cmRozEaVbTyoZ{oUHj z$zwHcDZ;N!hIM(c+YK@7J}sw$$F5;H?<55gk*$1uK1?x?IDe_PIBTx$ZM}CT1js`n z?GcErLES)-D*RE(gI)R#2=IWSUc(eft0}jH|B$p0^$u(Y<3#O-3;{lZf7u6eoQL19 zfnpPwbbcvs*GF=6MheFHNLY{519XytR68&5hch6o*WM;UEA)7uN$Z5NdH@Yu)nBu3t*q@> z&*siGv_8CAHuCs%wQSqQsiQ$d>*(qi&x}LD8no(c0o3Z$m~XDvNd8lZ9sxidaOk4| zR9D%U=>Rej`7R1<`$K`6G1EsoQ_eeOP3vU+&8}Nyj^||cn`Ov$s2_FxqY7oazdh3B znL8%;hm_)h>8XaA4#>9nLtozLnvWm*g-kRpd_cB;ldSW+=S~@u9KK67@^}&k+@N#u zrv%QbV2>*x^~CO{72aSYY`~_{x$t}%VM?*}FoHG0l)~eX_532awU?eyeJxK4Xon(Y zyWkD7e^uPv2wzG3IHECxgeL!Ne>dQN@KlrRYnZ0`xlBp)JKBj1#pfX>hnFg0Y0GPu zN{daQn(5WF`kRG@zHkUxLtyvJq35A_+&l%XN zrY#PxUd-$T#0t`o4LvwScD4Nj>JB|&{{VHtdMNuNAdLy6(ug0H&}ZzKz4yBopeAKRZm=KnxpnMHn}-OA)*8bm5~HbalMZb0bz`i%sovTj6VYBz-U zL{TbT97}hm9S@WsG>w1CebM?o=G9=Un4i8Cy?t&KLBZ*3P zuyJ0^Z|eu+Q0o821s|00h9cve0%uDU(AHkdNu2wid`mucUrX z9`~NxQ8@$gI%_T1Io5ty_gn9w+SX@60N4DgxEzJ@j%{Bh&pZiZN8^$_C-IV{0-_$G zUrkG)Zv_b{Wk8`M-IYA6O45xePDKEdF8*$`nE7p9r3Pm5h}-kmBqfNKt?VThew)ws(lun*IU z7H=z;&yuM=?>lnSB6S&BlJzRG4Bhz*m?~4JLI8GNjpc*&j2M!9`rM7wd-K(`h*QH+!Lp6O*@FD9r+sL^IsqX`$Phx z13)W{Nq+t0p>L4ju;OBa{2vwgRm6+MWoKpZl=Z#S$TQf?Y5A5IKm|Cgg~@>|yo))k z#^#H91xm7Wx=fXdMfo=ztyt+1}Z?XVelg`0TuSn4wM9i%a=8(>o`tDE)| z7y!3xXfRBH)Ei0hGxg`U0lVbHX<2)K-GPYXrkNO$GP`-RtLzS(c9-0cHKU7J$ZRfc zdF*UFfr03o53Jx1QycJS-V)T*(~(|8UwD?X?K1CVUttb36#-I1yfCRT5(C4Sw|E1Y z?n_yfh>9~OFyr0NQB#cXDUhFiPXWKgAcob@3g9_CV}Z&7KV=gX#lvElW;G1@hy0$O zM#I=Rnzt9{WxJ& zXubV>eCMUJ9rzyp4)#`!CL*s*yp-UZhZOL_f$Qu*r%JpUcT<9}X7#@E=MSt;zlDkB zA9Tm*l(o#R3E3iC^9C9|5q3?uk^71+&HxOprP6%pj9G?XO212?eT&x@zlGRfBK3k@ zi}4AwB@1O0IXj;HnRolZ(qSy57-+>nEbZZZ+l?Q+Lsix&x{xItI@p9d)mLE6hWb zrx^#C%yG%{`X5)rv+*BVHD+Aog=q%8`xczp(}^GBURF52X9kuc8-Ap4_kjoH+2*Ul zSbbM1(Z%3h9x#C@`#yM=1DW6LccbDG0&*h!W)o*fBjHT|DT-~ zB=PJ1OG7g4EWY_rlFvHExliHil_|h4>-vsv`at<*u5S-2r^@M{ig&@&-d>MCXDLT-_3Ru|=V zHLob^Zs_$Cd)wTVxo&GIYfPUhRL$)Q2EkM|4p?NE1n`H6MRIaX-L%sbyTX7)J<9j&dXBaq@F-=(aP!3 zYgbOvMec?-F(PG?;2ejcmv)V^36|yf?f*)(M=8UYuX3QT^h2<^(i7E^p*Ms~Jxds@i!Ls61 zkpgU6)_&AjUSf!rU}C%b_xuz-UrA~(cOm65!Q%ko7^waYvfs>9q_ zu{!K6EMBd{R8k!#Oo&xs?rHz$DojbLF!x@Y5^|_g5#|TI`Dztbx=TrZ?>8tjjr^Zr zF(~kn#eHeIfai}`B!g!&47^r87;D3d`BEFUbcJG>c^Yn@tI<5+?r<$)YC)}lFzj-{ zAGS#QK9MJ~p&zFj$VJY;Ugt3~(C=ZWGh6)hf#~uoiB4N=HGpge?g|(p5KIKX!~g-g z9!TPvvfD>q&Bi|m`oztoFCl1ag`o_%t{QwN&_V9rw0K97`H%6Vn|IdH%^bWNqrqip z)z0}+Q3ibyX|3#b?p%PT4pn83Z0ZC(3n}EzeBj58rT(!+Kk6$P9i3FB*WsY#)gpvl zf;;OWMB6a5Rsq+TF*ng4KuyKBISSCpAT?Zx3f1Vwot-W-793A?_C71$lnAHY@IHCj zKKU-~)?=HWrS+&W{EU3$@z^tRN1N>GtKUOs;#U+Q%{sY3PRC1~s7Q|FS_(b~Aqd^Vgb+gG|HE4b{5^Tgf;R`eB_hk) zq34iM9;r^C8t8?KCDdCzJy5NPK`8gz+lr;a#s2+SU{c|a^g{cGlD&09aFrib?79GU ze1*mu^boYg<**v8QS0=NXwGp+MKR;hLiITP-IHz~z$l5)BO`pY;|ctb7U`LBsj>E0 za(?Q;1Ndp^!Bbk>x+|yfH{^RlFg_sNSugx|F}&RjZ{$11rsB)0FF(Sz$IoGDhZt`A Q$v<`9t-C#=XZET81(l=6*8l(j literal 0 HcmV?d00001 diff --git a/packs/gps-generic-features/CURRENT b/packs/gps-generic-features/CURRENT index 19ea8677..3d871d98 100644 --- a/packs/gps-generic-features/CURRENT +++ b/packs/gps-generic-features/CURRENT @@ -1 +1 @@ -MANIFEST-002194 +MANIFEST-002215 diff --git a/packs/gps-generic-features/LOG b/packs/gps-generic-features/LOG index ea84622a..d63a84ce 100644 --- a/packs/gps-generic-features/LOG +++ b/packs/gps-generic-features/LOG @@ -1,8 +1,15 @@ -2024/05/26-17:22:00.706 1158 Recovering log #2192 -2024/05/26-17:22:00.712 1158 Delete type=0 #2192 -2024/05/26-17:22:00.712 1158 Delete type=3 #2190 -2024/05/26-20:17:06.668 2de0 Level-0 table #2197: started -2024/05/26-20:17:06.668 2de0 Level-0 table #2197: 0 bytes OK -2024/05/26-20:17:06.671 2de0 Delete type=0 #2195 -2024/05/26-20:17:06.682 2de0 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.682 2de0 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.138 6aa0 Recovering log #2213 +2024/05/29-20:37:30.148 6aa0 Delete type=0 #2213 +2024/05/29-20:37:30.148 6aa0 Delete type=3 #2211 +2024/05/29-23:45:18.303 5698 Level-0 table #2218: started +2024/05/29-23:45:18.318 5698 Level-0 table #2218: 20347 bytes OK +2024/05/29-23:45:18.321 5698 Delete type=0 #2216 +2024/05/29-23:45:18.322 5698 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.323 5698 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at '!items.effects!dTFcLHRsLxw4R7PQ.1IkBgxOFEYJd4z53' @ 574 : 0 +2024/05/29-23:45:18.323 5698 Compacting 1@1 + 1@2 files +2024/05/29-23:45:18.337 5698 Generated table #2219@1: 12 keys, 29789 bytes +2024/05/29-23:45:18.337 5698 Compacted 1@1 + 1@2 files => 29789 bytes +2024/05/29-23:45:18.340 5698 compacted to: files[ 0 0 1 0 0 0 0 ] +2024/05/29-23:45:18.341 5698 Delete type=2 #2210 +2024/05/29-23:45:18.341 5698 Delete type=2 #2218 +2024/05/29-23:45:18.353 5698 Manual compaction at level-1 from '!items.effects!dTFcLHRsLxw4R7PQ.1IkBgxOFEYJd4z53' @ 574 : 0 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) diff --git a/packs/gps-generic-features/LOG.old b/packs/gps-generic-features/LOG.old index 3963fbe2..90253d89 100644 --- a/packs/gps-generic-features/LOG.old +++ b/packs/gps-generic-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.762 1158 Recovering log #2188 -2024/05/26-17:09:46.768 1158 Delete type=0 #2188 -2024/05/26-17:09:46.768 1158 Delete type=3 #2186 -2024/05/26-17:21:26.883 2de0 Level-0 table #2193: started -2024/05/26-17:21:26.883 2de0 Level-0 table #2193: 0 bytes OK -2024/05/26-17:21:26.885 2de0 Delete type=0 #2191 -2024/05/26-17:21:26.889 2de0 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.889 2de0 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.486 6aa0 Recovering log #2207 +2024/05/29-10:23:20.491 6aa0 Delete type=0 #2207 +2024/05/29-10:23:20.491 6aa0 Delete type=3 #2204 +2024/05/29-20:37:15.365 5698 Level-0 table #2214: started +2024/05/29-20:37:15.365 5698 Level-0 table #2214: 0 bytes OK +2024/05/29-20:37:15.367 5698 Delete type=0 #2212 +2024/05/29-20:37:15.375 5698 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.375 5698 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) diff --git a/packs/gps-generic-features/MANIFEST-002194 b/packs/gps-generic-features/MANIFEST-002194 deleted file mode 100644 index 097f8778553c7dc0c4e5ee30bfcc86a16d0fc2e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmca`RZi&>10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei18!g<@t&YHqP!YFb)q za!IjbN{Cysk4I3kPer*&ka<9$o}p*9Q+kEJn`@+3ib<8JF{3yW0|>A(lCISZqLrQL zyTG-hjPekx6%8Wt1I=^X1A@!5d@bC|O&G5+f^9%IzqrghF(}Qi#6QBH)9aAgJ&`GMv+?g7E&S-uwTY-3{oT)-&|Xc1o}CcXN&ON-?Q2HD<7bXmprYCA1D^;~J2Stc+wE#s+jO T8!*t=nN|zleF1kg)dLOyK(vva literal 0 HcmV?d00001 diff --git a/packs/gps-homebrew-features/002102.log b/packs/gps-homebrew-features/002120.log similarity index 100% rename from packs/gps-homebrew-features/002102.log rename to packs/gps-homebrew-features/002120.log diff --git a/packs/gps-homebrew-features/CURRENT b/packs/gps-homebrew-features/CURRENT index f8472509..7cb1b04c 100644 --- a/packs/gps-homebrew-features/CURRENT +++ b/packs/gps-homebrew-features/CURRENT @@ -1 +1 @@ -MANIFEST-002100 +MANIFEST-002118 diff --git a/packs/gps-homebrew-features/LOG b/packs/gps-homebrew-features/LOG index 13e3f721..96d1d898 100644 --- a/packs/gps-homebrew-features/LOG +++ b/packs/gps-homebrew-features/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.716 6bec Recovering log #2098 -2024/05/26-17:22:00.725 6bec Delete type=0 #2098 -2024/05/26-17:22:00.726 6bec Delete type=3 #2096 -2024/05/26-20:17:06.677 2de0 Level-0 table #2103: started -2024/05/26-20:17:06.677 2de0 Level-0 table #2103: 0 bytes OK -2024/05/26-20:17:06.682 2de0 Delete type=0 #2101 -2024/05/26-20:17:06.682 2de0 Manual compaction at level-0 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.682 2de0 Manual compaction at level-1 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.152 6b00 Recovering log #2116 +2024/05/29-20:37:30.163 6b00 Delete type=0 #2116 +2024/05/29-20:37:30.163 6b00 Delete type=3 #2114 +2024/05/29-23:45:18.349 5698 Level-0 table #2121: started +2024/05/29-23:45:18.349 5698 Level-0 table #2121: 0 bytes OK +2024/05/29-23:45:18.353 5698 Delete type=0 #2119 +2024/05/29-23:45:18.354 5698 Manual compaction at level-0 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.354 5698 Manual compaction at level-1 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-features/LOG.old b/packs/gps-homebrew-features/LOG.old index 4c3f1a50..69198aa2 100644 --- a/packs/gps-homebrew-features/LOG.old +++ b/packs/gps-homebrew-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.770 6bec Recovering log #2094 -2024/05/26-17:09:46.776 6bec Delete type=0 #2094 -2024/05/26-17:09:46.776 6bec Delete type=3 #2092 -2024/05/26-17:21:26.891 2de0 Level-0 table #2099: started -2024/05/26-17:21:26.891 2de0 Level-0 table #2099: 0 bytes OK -2024/05/26-17:21:26.895 2de0 Delete type=0 #2097 -2024/05/26-17:21:26.904 2de0 Manual compaction at level-0 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.905 2de0 Manual compaction at level-1 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.494 683c Recovering log #2112 +2024/05/29-10:23:20.499 683c Delete type=0 #2112 +2024/05/29-10:23:20.499 683c Delete type=3 #2110 +2024/05/29-20:37:15.367 5698 Level-0 table #2117: started +2024/05/29-20:37:15.367 5698 Level-0 table #2117: 0 bytes OK +2024/05/29-20:37:15.370 5698 Delete type=0 #2115 +2024/05/29-20:37:15.375 5698 Manual compaction at level-0 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.375 5698 Manual compaction at level-1 from '!folders!4OzV9QdsPgTyK99q' @ 72057594037927935 : 1 .. '!items.effects!ba3fwkX1XMdyqBaE.hPR9ii2vho7FqWlZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-features/MANIFEST-002100 b/packs/gps-homebrew-features/MANIFEST-002118 similarity index 67% rename from packs/gps-homebrew-features/MANIFEST-002100 rename to packs/gps-homebrew-features/MANIFEST-002118 index 03121006e51ba901b1f8c8406bb6a074346a34cc..890d55baf79ae9b40db1d0ce33b91940d7a2b730 100644 GIT binary patch delta 41 rcmbQsG?!_@Z>7Tbf<{~nj7-M`I2o8v2(YAi=1Ycv1WteiP5}h~^eGA( delta 41 scmbQsG?!_@Z>2>)7T)AyU}V}Vz{$Y8O@JjW&-FzfNMIXCU=K diff --git a/packs/gps-homebrew-spells/001779.log b/packs/gps-homebrew-spells/001797.log similarity index 100% rename from packs/gps-homebrew-spells/001779.log rename to packs/gps-homebrew-spells/001797.log diff --git a/packs/gps-homebrew-spells/CURRENT b/packs/gps-homebrew-spells/CURRENT index d55cb1aa..1d443462 100644 --- a/packs/gps-homebrew-spells/CURRENT +++ b/packs/gps-homebrew-spells/CURRENT @@ -1 +1 @@ -MANIFEST-001777 +MANIFEST-001795 diff --git a/packs/gps-homebrew-spells/LOG b/packs/gps-homebrew-spells/LOG index ec829f9f..365f7108 100644 --- a/packs/gps-homebrew-spells/LOG +++ b/packs/gps-homebrew-spells/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.750 6bec Recovering log #1775 -2024/05/26-17:22:00.760 6bec Delete type=0 #1775 -2024/05/26-17:22:00.760 6bec Delete type=3 #1773 -2024/05/26-20:17:06.671 2de0 Level-0 table #1780: started -2024/05/26-20:17:06.671 2de0 Level-0 table #1780: 0 bytes OK -2024/05/26-20:17:06.674 2de0 Delete type=0 #1778 -2024/05/26-20:17:06.682 2de0 Manual compaction at level-0 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.682 2de0 Manual compaction at level-1 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.191 6b00 Recovering log #1793 +2024/05/29-20:37:30.201 6b00 Delete type=0 #1793 +2024/05/29-20:37:30.201 6b00 Delete type=3 #1791 +2024/05/29-23:45:18.346 5698 Level-0 table #1798: started +2024/05/29-23:45:18.346 5698 Level-0 table #1798: 0 bytes OK +2024/05/29-23:45:18.349 5698 Delete type=0 #1796 +2024/05/29-23:45:18.354 5698 Manual compaction at level-0 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.354 5698 Manual compaction at level-1 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-spells/LOG.old b/packs/gps-homebrew-spells/LOG.old index 88cef30d..a0f924f7 100644 --- a/packs/gps-homebrew-spells/LOG.old +++ b/packs/gps-homebrew-spells/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.786 6bec Recovering log #1771 -2024/05/26-17:09:46.792 6bec Delete type=0 #1771 -2024/05/26-17:09:46.792 6bec Delete type=3 #1769 -2024/05/26-17:21:26.895 2de0 Level-0 table #1776: started -2024/05/26-17:21:26.895 2de0 Level-0 table #1776: 0 bytes OK -2024/05/26-17:21:26.899 2de0 Delete type=0 #1774 -2024/05/26-17:21:26.905 2de0 Manual compaction at level-0 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.905 2de0 Manual compaction at level-1 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.518 683c Recovering log #1789 +2024/05/29-10:23:20.524 683c Delete type=0 #1789 +2024/05/29-10:23:20.524 683c Delete type=3 #1787 +2024/05/29-20:37:15.372 5698 Level-0 table #1794: started +2024/05/29-20:37:15.372 5698 Level-0 table #1794: 0 bytes OK +2024/05/29-20:37:15.375 5698 Delete type=0 #1792 +2024/05/29-20:37:15.375 5698 Manual compaction at level-0 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.376 5698 Manual compaction at level-1 from '!items!iVqgFn89rGOnPTK4' @ 72057594037927935 : 1 .. '!items.effects!iVqgFn89rGOnPTK4.fAK9x7lIORqSnaz1' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-spells/MANIFEST-001777 b/packs/gps-homebrew-spells/MANIFEST-001795 similarity index 56% rename from packs/gps-homebrew-spells/MANIFEST-001777 rename to packs/gps-homebrew-spells/MANIFEST-001795 index 1741e71376c53020f631169eaa335faec08be032..f2847e4a1ed64fe20ed110d1ee5e003a9deb92f5 100644 GIT binary patch delta 43 scmaFJ_>ghJUKO^_$#L8aj7%+joD9sZd@PF@=V#8H0upHjiL`@602!PL`Tzg` delta 43 tcmaFJ_>ghJUKN*qGjnbRMy5}^oD9sLd07@SKKrxU2_*6vB=Qv`0st_W49Wli diff --git a/packs/gps-items/002104.log b/packs/gps-items/002122.log similarity index 100% rename from packs/gps-items/002104.log rename to packs/gps-items/002122.log diff --git a/packs/gps-items/CURRENT b/packs/gps-items/CURRENT index d3f70127..918bd753 100644 --- a/packs/gps-items/CURRENT +++ b/packs/gps-items/CURRENT @@ -1 +1 @@ -MANIFEST-002102 +MANIFEST-002120 diff --git a/packs/gps-items/LOG b/packs/gps-items/LOG index bb683c07..3d39bc23 100644 --- a/packs/gps-items/LOG +++ b/packs/gps-items/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.674 1158 Recovering log #2100 -2024/05/26-17:22:00.684 1158 Delete type=0 #2100 -2024/05/26-17:22:00.684 1158 Delete type=3 #2098 -2024/05/26-20:17:06.657 2de0 Level-0 table #2105: started -2024/05/26-20:17:06.657 2de0 Level-0 table #2105: 0 bytes OK -2024/05/26-20:17:06.659 2de0 Delete type=0 #2103 -2024/05/26-20:17:06.665 2de0 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.665 2de0 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.105 6aa0 Recovering log #2118 +2024/05/29-20:37:30.112 6aa0 Delete type=0 #2118 +2024/05/29-20:37:30.113 6aa0 Delete type=3 #2116 +2024/05/29-23:45:18.289 5698 Level-0 table #2123: started +2024/05/29-23:45:18.289 5698 Level-0 table #2123: 0 bytes OK +2024/05/29-23:45:18.296 5698 Delete type=0 #2121 +2024/05/29-23:45:18.322 5698 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.322 5698 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) diff --git a/packs/gps-items/LOG.old b/packs/gps-items/LOG.old index ab445ae2..d9ecc466 100644 --- a/packs/gps-items/LOG.old +++ b/packs/gps-items/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.748 1158 Recovering log #2096 -2024/05/26-17:09:46.753 1158 Delete type=0 #2096 -2024/05/26-17:09:46.753 1158 Delete type=3 #2094 -2024/05/26-17:21:26.880 2de0 Level-0 table #2101: started -2024/05/26-17:21:26.880 2de0 Level-0 table #2101: 0 bytes OK -2024/05/26-17:21:26.883 2de0 Delete type=0 #2099 -2024/05/26-17:21:26.889 2de0 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.889 2de0 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.466 6aa0 Recovering log #2114 +2024/05/29-10:23:20.471 6aa0 Delete type=0 #2114 +2024/05/29-10:23:20.471 6aa0 Delete type=3 #2112 +2024/05/29-20:37:15.356 5698 Level-0 table #2119: started +2024/05/29-20:37:15.356 5698 Level-0 table #2119: 0 bytes OK +2024/05/29-20:37:15.358 5698 Delete type=0 #2117 +2024/05/29-20:37:15.363 5698 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.363 5698 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) diff --git a/packs/gps-items/MANIFEST-002102 b/packs/gps-items/MANIFEST-002120 similarity index 63% rename from packs/gps-items/MANIFEST-002102 rename to packs/gps-items/MANIFEST-002120 index 55d7d7fcf7855d70e2a88d8f4d1d19949db610d8..d5c589e8db96f0a93642bae785b27bb8ce9f9aec 100644 GIT binary patch delta 43 tcmX@fc#?6#Qk55{%GkLX7@1BAa56BT5@6|JJRQC8D@f!NNaPGi1OPY<4441_ delta 43 tcmX@fc#?6#QWgJ)^}XB-j7-}FI2o9C2(a`pdPF?62Z`(eiR=Q2001Me3uOQR diff --git a/packs/gps-monster-features/002102.log b/packs/gps-monster-features/002120.log similarity index 100% rename from packs/gps-monster-features/002102.log rename to packs/gps-monster-features/002120.log diff --git a/packs/gps-monster-features/CURRENT b/packs/gps-monster-features/CURRENT index f8472509..7cb1b04c 100644 --- a/packs/gps-monster-features/CURRENT +++ b/packs/gps-monster-features/CURRENT @@ -1 +1 @@ -MANIFEST-002100 +MANIFEST-002118 diff --git a/packs/gps-monster-features/LOG b/packs/gps-monster-features/LOG index 81e09ed5..927869fd 100644 --- a/packs/gps-monster-features/LOG +++ b/packs/gps-monster-features/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.691 6bec Recovering log #2098 -2024/05/26-17:22:00.701 6bec Delete type=0 #2098 -2024/05/26-17:22:00.701 6bec Delete type=3 #2096 -2024/05/26-20:17:06.663 2de0 Level-0 table #2103: started -2024/05/26-20:17:06.663 2de0 Level-0 table #2103: 0 bytes OK -2024/05/26-20:17:06.665 2de0 Delete type=0 #2101 -2024/05/26-20:17:06.665 2de0 Manual compaction at level-0 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.665 2de0 Manual compaction at level-1 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.119 6b00 Recovering log #2116 +2024/05/29-20:37:30.129 6b00 Delete type=0 #2116 +2024/05/29-20:37:30.129 6b00 Delete type=3 #2114 +2024/05/29-23:45:18.297 5698 Level-0 table #2121: started +2024/05/29-23:45:18.297 5698 Level-0 table #2121: 0 bytes OK +2024/05/29-23:45:18.299 5698 Delete type=0 #2119 +2024/05/29-23:45:18.322 5698 Manual compaction at level-0 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.322 5698 Manual compaction at level-1 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) diff --git a/packs/gps-monster-features/LOG.old b/packs/gps-monster-features/LOG.old index 9a601f53..51d4ab81 100644 --- a/packs/gps-monster-features/LOG.old +++ b/packs/gps-monster-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.755 6bec Recovering log #2094 -2024/05/26-17:09:46.761 6bec Delete type=0 #2094 -2024/05/26-17:09:46.761 6bec Delete type=3 #2092 -2024/05/26-17:21:26.886 2de0 Level-0 table #2099: started -2024/05/26-17:21:26.886 2de0 Level-0 table #2099: 0 bytes OK -2024/05/26-17:21:26.889 2de0 Delete type=0 #2097 -2024/05/26-17:21:26.889 2de0 Manual compaction at level-0 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.889 2de0 Manual compaction at level-1 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.476 683c Recovering log #2112 +2024/05/29-10:23:20.481 683c Delete type=0 #2112 +2024/05/29-10:23:20.481 683c Delete type=3 #2110 +2024/05/29-20:37:15.379 5698 Level-0 table #2117: started +2024/05/29-20:37:15.379 5698 Level-0 table #2117: 0 bytes OK +2024/05/29-20:37:15.382 5698 Delete type=0 #2115 +2024/05/29-20:37:15.387 5698 Manual compaction at level-0 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.388 5698 Manual compaction at level-1 from '!folders!44lJ4L7xySVYZzED' @ 72057594037927935 : 1 .. '!items.effects!yp0IIuvsEkJd6KKW.WlySPDKKWMIOowHi' @ 0 : 0; will stop at (end) diff --git a/packs/gps-monster-features/MANIFEST-002100 b/packs/gps-monster-features/MANIFEST-002118 similarity index 67% rename from packs/gps-monster-features/MANIFEST-002100 rename to packs/gps-monster-features/MANIFEST-002118 index a82b0a639ce313a851ac59905b740007ba85e702..d86efc0c398c5579535b9a410b882d799bb6a3ba 100644 GIT binary patch delta 41 scmbQsG?!_@Z>0^dE~s)bFftt%;ACJvA;1#Fk##*DBya*Ga0(~@02p-(asU7T delta 41 scmbQsG?!_@Z>8ji3HP`d7@4*Ta56A&6JUv2-=mcb64(Y3*Z~v(02GZ2Jpcdz diff --git a/packs/gps-spells/002126.ldb b/packs/gps-spells/002161.ldb similarity index 97% rename from packs/gps-spells/002126.ldb rename to packs/gps-spells/002161.ldb index 5d09f3634d01380915e260604fef46a9546842d9..e226f23cdbd1414dde817199ce60ad4b762ab6b2 100644 GIT binary patch delta 2104 zcmXw43vd(18Qv8qd}m9myR#(g{E$y)BV=1XTb6BXVOz+SA3TkX!4TwNSvuKgWSx;t zHsBbKLxGf(A>l~GBcX9J<1`Rj!Xsg(VSr3CL(|ZdW`G6=ZJ;Csm^97M4x|Bkbf!DA zui5#(|C{goclX3K;?OnX$S%I%`4`}GApg=fXcJ{&C}H!(2b)%HjQN_{h0ekLfniuP zK=Rl~x*6&VFY*<|_{o6J&rZV#}=8bliCyB=i}$5MD!ni(`p0 z&m3S`((PYb^B8B_bJcWxLR1>1cTy@ddgv}hvzDWG)1e-WqkB3mDVy_%)KnR?PPFK)4@jfO zJ?`YzAYeeNGto^0f1M^1Qe5WH#dPa8G%Q7<>GTIWbCm_XM-z1f306#QM~_Luqzg%L zp&=8X0~SmOn;AV}$A_day)TP50x}v*$cyzB(3qWWri+p5ePI}$XGaHwm|utr@?@(q zYm5sfS{GZVNDxZCLq?=H>lhkG-znvDvnFO6bcrH%Z2nPFjIa)yHb0kFjgaC+Eb7sb zVk{}lC2T~8Eg!5v#Z2+UN*yLt>cTN?8J&Qx!CXE>LtUX}!#VPV_B- z1-RfH+f||m6BG1DnPgCm3E|FOAg%xjIDnpzxC$`AxR}Mn5qQD$Yf!Y~IsP!fld;70 z-vAh>I1Dhmz2X$G@KRjt7h_unaW!-HzD%%Td@Bgd7Xj~b03I!&Cx61#LZJ@xeIU3^ zC&+@s=2BhgL%wufb4(UcpLu!u`5mh=idGiQ0qxq|z-Rlis^{!x7#=b01H8?RC06ri zA=bk;Q*buiG_{xS0K!pI$9o56iFk_?*Gj;_mjf-W&|r z{-;Jv7@68SdAu+z2BT7cmncWK3^gyZ7b@@66~JxE`8p1omGA33>R3{r0~aW*^;YaA ze(Q=N*1O=_%Kmzvr9H!ZCJ&u6(g)KmebJ;^s}ia-(L0s<^))7g75L1Lb=v3gu&_RF zBR&vJm=7wxhDDWcnYZLm{h{G|!2hT#e0tmbK{?3QBSE!6Mjz?Xvl+U^F4j+P%~z#z zqUj9uGv#c93A@8(f2>?-sI|Vr0uNoS*ZOn;IUrZRn2mW@`fusXsRjtFKE>rV!Ocpm zm+Q1=!+%;<_qxN?z0T6V!Z~AiLB<>Xs+PuFQ0%H}XOWV?itc4JgnACjV|*bZcLPOpZz6|b*kc5eYDZy;z;rgcCk2y=h2 z8)ad=TpC1v>Zu+ih0Ps7+m)Anym1kQiD4o`yIpmHoibqc0c*GNxo?cVl0P|uH%T%2 z?}o{D(MCN=S9%*a!dB&KBLfdB|7xs_Cq zDml&7(5iGc7Z%o(_`{L75Kfeaq}YfM6NQ*uN*u%!Wg<$eP^UPuEBl&r;3nn$=1SP1 z+->Gyxq@0actdfu)T9+wV?jCl2W7bB5d2KZZS8lxT8*9*VVnom6w_OsFyk42vEF9= zMI%>PY~_Q-55m$u9cw(2TFk7%vD> zUi{Y88T_ljA6Ylt;hP^{($&)Es#sgQ5YogYH8~a4!XFKSfmn7W>PP5a2i4Ev=)U%M1(jYV1-2Ue~dcEL0vrQ4huj%sqMcHPk4 zuHOyTRqZC9Jl4LxScQpG6XevVGw(T=3BR0Ztd{$N%NA{jCkMh!>)=fFkKL6zqjK=x z+mrS}UIdI%5zE6{Y4^K!qSoB%Byby_~KWk#uzb)s!!fzV@)4&33 zsf+SiPNZ^%GzIXNDesWRn)S6pJTkT%1l&IHt+?FJ>WMYybcN delta 2053 zcmXw43vd(18Qv8qxU;3z-B}WnWy`0tu_Y|dmTeg$EZMRozlt$7VAoUz%hE}ftp`YF zgYCMmad@WCzySh6+Bi*Ud4wSZHF+L-K**1ts?T5W%y8pcQAf7neemB z1mU6kvlM1~c{!nyN7O9|b2(;Z&{{FypgQw0 zjr3tk3W|8x-AHOB!$MK__}d zV1736*z{MT7mKFpD>-B!n&3m7eIObDX*htgC|t6jx9Qu6)9{++6tL{tCVsTkI5~_< z4szef0izRJfxjgRIGY)8sE3}JhfCC;-sJj0V4H#$c(chSfgeZiEQK#2@F=cbopt44 zPqyXzmc^i5z7M!fpW1sb?1m$n!+C$t*8%u5nvS=QEr{Zc z$&@?^%$yjhCCyC7mn0Vq#A5X2|6Me}kId|uI$IQq24cy`s;Cg#689}DE)#!VTL|}x zAJ($aB;KoaNTbPVfU8BP(}+F5@7@*HIc@NaxX0<%t;yD2&PN}s>Deq@e{5J{WD?bB z=)>Zd&Kgaw5xBL4Qob1v@tg9;@PR;DJ1Z`BEo(ca-BK`f+4VKxnjr+6>@E}_wBV>yb|!_koGNc1D>%oZN+wK7H{ z3EH&{xwwNFM>S%szJR)|!X}s{r4rBqWwjLlPVq>6AM6#M)*JE{uox3G{R#cJSRLax z1(PvkF9rhoy%I3AOSHR7ONI(DVU(ajncNJmAjIA&Rtx+lVNn3JQ_mqWP}tHDv|rrj z=G5I377Y>E@|{v*m>Cu3^c(xdOYU*{Zo$+D?nx%-zp189qA?}Xh+Pe1uv5I&poi~@ zUo|-4R?*@)3#Y}Ko&mT)Z1Qe`zZK7WTjv=TVQCIM5h-6aw1~~VBIpt0J_Aly;OVjy zvWYMG3~+~d(pLrj;w>Kwmx@>;3;!;bG}g>3tHuIC?o%<`cmjSR(oGTDOf`CD!B_{X zSxE1(!t6EPg-Vk#)4*0ORI`b5@utFt>cvaS%k7KpHRz8^ zs{0l;R+Ylz$WRJc*D((~N*hXXTSYm9YkNzPwZ^rh)G9rP6F_S4c|W!L`Y)$d&D&JX z@EujN>^+vgbd|V`{r?=~WZgfW`E*d$D%)I{u?)%b42NEVCl&ybDgn)ui@Y=ozp2ve z!1pK}c`?%`36MYg4?Ld-D5@J~ zuv~x68(G=C((Y?(8Co2QwsemA;6I5ldG087D_{Q<8}L#Q@)y6uwiM_mK~#$E%{$m% zY9xmVY5roSB__+O+I2?0Ge6^9U%kAlJ67J)(c09oamC7V_=LzPj@*{tckTll?EA3ibjta893Ku#A7r}ciS7@#@cSyDcQF84VWZr-_cK&n zR#<&(Gw}fhEUtP`zp|@iMPssS_$gpC3rbO8*Pk?@QAF diff --git a/packs/gps-spells/002147.log b/packs/gps-spells/002168.log similarity index 100% rename from packs/gps-spells/002147.log rename to packs/gps-spells/002168.log diff --git a/packs/gps-spells/CURRENT b/packs/gps-spells/CURRENT index be8c00e8..b1363aac 100644 --- a/packs/gps-spells/CURRENT +++ b/packs/gps-spells/CURRENT @@ -1 +1 @@ -MANIFEST-002145 +MANIFEST-002166 diff --git a/packs/gps-spells/LOG b/packs/gps-spells/LOG index 509d8c86..9e712d31 100644 --- a/packs/gps-spells/LOG +++ b/packs/gps-spells/LOG @@ -1,8 +1,8 @@ -2024/05/26-17:22:00.639 1158 Recovering log #2143 -2024/05/26-17:22:00.648 1158 Delete type=0 #2143 -2024/05/26-17:22:00.649 1158 Delete type=3 #2141 -2024/05/26-20:17:06.652 2de0 Level-0 table #2148: started -2024/05/26-20:17:06.652 2de0 Level-0 table #2148: 0 bytes OK -2024/05/26-20:17:06.657 2de0 Delete type=0 #2146 -2024/05/26-20:17:06.665 2de0 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) -2024/05/26-20:17:06.665 2de0 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/29-20:37:30.068 6aa0 Recovering log #2164 +2024/05/29-20:37:30.078 6aa0 Delete type=0 #2164 +2024/05/29-20:37:30.078 6aa0 Delete type=3 #2162 +2024/05/29-23:45:18.299 5698 Level-0 table #2169: started +2024/05/29-23:45:18.299 5698 Level-0 table #2169: 0 bytes OK +2024/05/29-23:45:18.303 5698 Delete type=0 #2167 +2024/05/29-23:45:18.322 5698 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/29-23:45:18.323 5698 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-spells/LOG.old b/packs/gps-spells/LOG.old index 0738d995..9c003e88 100644 --- a/packs/gps-spells/LOG.old +++ b/packs/gps-spells/LOG.old @@ -1,8 +1,8 @@ -2024/05/26-17:09:46.733 1158 Recovering log #2139 -2024/05/26-17:09:46.738 1158 Delete type=0 #2139 -2024/05/26-17:09:46.738 1158 Delete type=3 #2137 -2024/05/26-17:21:26.867 2de0 Level-0 table #2144: started -2024/05/26-17:21:26.868 2de0 Level-0 table #2144: 0 bytes OK -2024/05/26-17:21:26.870 2de0 Delete type=0 #2142 -2024/05/26-17:21:26.873 2de0 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) -2024/05/26-17:21:26.873 2de0 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/29-10:23:20.445 6aa0 Recovering log #2158 +2024/05/29-10:23:20.450 6aa0 Delete type=0 #2158 +2024/05/29-10:23:20.450 6aa0 Delete type=3 #2155 +2024/05/29-20:37:15.361 5698 Level-0 table #2165: started +2024/05/29-20:37:15.361 5698 Level-0 table #2165: 0 bytes OK +2024/05/29-20:37:15.363 5698 Delete type=0 #2163 +2024/05/29-20:37:15.363 5698 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/29-20:37:15.363 5698 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-spells/MANIFEST-002145 b/packs/gps-spells/MANIFEST-002145 deleted file mode 100644 index b07991130f74df17e9a2c4433b69a0932b2c4eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmdnIa*F&-21Z7yoYb<^oRlOzr^=Gl^338?=ltA)#G=HK{32EcdBx0<)ZAi4xAfvD z%S@B}g2YOLs?>-A#=T4oAi&CK0a2lsnwFNDTvDu9lw9Z%Xc_6~n3nC9osr?LXINAi zk?ZNOwPGIXDPM8e_>8@#hMd?wcjumBjKBgXw91vyb=9g6z zrKgAF7i3pt6dL#-ArH? jtaB`o<7QxF`Yyo9!2CmiWe3~J9pBc0M1Fuoet|>){If+> literal 0 HcmV?d00001 diff --git a/scripts/helpers.js b/scripts/helpers.js index 652f6757..dbb4583d 100644 --- a/scripts/helpers.js +++ b/scripts/helpers.js @@ -100,7 +100,6 @@ export function pauseDialogById({ dialogId, timeLeft, isPaused }) { export async function rollAsUser({ rollParams, type }) { if(!rollParams) return; let reroll; - //const DamageRoll = CONFIG.Dice.DamageRoll; reroll = await new Roll(`${rollParams}`).evaluate({async: true}); diff --git a/scripts/macros/poetryInMisery.js b/scripts/macros/poetryInMisery.js index 66a736fe..1a5c8df2 100644 --- a/scripts/macros/poetryInMisery.js +++ b/scripts/macros/poetryInMisery.js @@ -12,7 +12,7 @@ export async function poetryInMisery({workflowData,workflowType,workflowCombat}) let initiatingToken; (workflow) ? initiatingToken = workflow.token : initiatingToken = await MidiQOL.tokenForActor(workflowData.actor.uuid); - if (!game.combat && (workflowType === "attack")) return; + if (!game.combat && (workflowType === "attack" || (workflowType === "save" && workflowCombat === true))) return; // Check if Opportunity Attack is initiating the workflow if(workflow?.item.name === "Opportunity Attack") return; diff --git a/scripts/macros/witchesHex.js b/scripts/macros/witchesHex.js index 2a632164..72aceb60 100644 --- a/scripts/macros/witchesHex.js +++ b/scripts/macros/witchesHex.js @@ -14,6 +14,7 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { // Check if Opportunity Attack is initiating the workflow if(workflow.item.name === "Opportunity Attack") return; + if(workflowType === "save" && workflow.saveResults.length === 0) return; let findValidTokens; @@ -31,7 +32,7 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { const dialogTitlePrimary = `${validTokenPrimary.actor.name} | ${itemProperName}`; const dialogTitleGM = `Waiting for ${validTokenPrimary.actor.name}'s selection | ${itemProperName}`; let originTokenUuidPrimary = workflow.token.document.uuid; - let spellData = validTokenPrimary.actor.items.find(i => i.name === itemProperName); + let itemData = validTokenPrimary.actor.items.find(i => i.name === itemProperName); let hexDie = validTokenPrimary.actor.system.scale["kp-witch"]["hex-die"].die; browserUser = MidiQOL.playerForActor(validTokenPrimary.actor); if (!browserUser.active) { @@ -76,26 +77,29 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { } if (userDecision === true) { await socket.executeAsGM("deleteChatMessage", { chatId: notificationMessage._id }); + const saveSetting = workflow.options.noOnUseMacro; + workflow.options.noOnUseMacro = true; let saveDC = workflow.saveItem.system.save.dc; - let saveAbility = workflow.saveItem.system.save.ability; - let workflowTarget = Array.from(workflow.targets).find(t => t.document.uuid === returnedTokenUuid); - const workflowIndex = Array.from(workflow.targets).findIndex(t => t.document.uuid === returnedTokenUuid); - let targetSaveBonus = workflowTarget.actor.system.abilities[`${saveAbility}`].save + workflowTarget.actor.system.abilities[`${saveAbility}`].saveBonus; - let reroll; - if(source && source === "user") reroll = await socket.executeAsUser("rollAsUser", browserUser.id, { rollParams: `1d20 + ${targetSaveBonus}` }); - if(source && source === "gm") reroll = await socket.executeAsGM("rollAsUser", { rollParams: `1d20 + ${targetSaveBonus}` }); - - if(reroll.total < saveDC) { + + if(source && source === "user") reroll = await socket.executeAsUser("rollAsUser", browserUser.id, { rollParams: `1${hexDie}`, type: workflowType }); + if(source && source === "gm") reroll = await socket.executeAsGM("rollAsUser", { rollParams: `1${hexDie}`, type: workflowType }); + let rollFound = workflow.saveRolls.find(roll => roll.data.tokenUuid === returnedTokenUuid); + let rollTotal = rollFound.total; + let modifiedRoll = await new Roll(`${rollTotal} - ${reroll.total}`).evaluate({async: true}); + + workflow.options.noOnUseMacro = saveSetting; + + if(modifiedRoll < saveDC) { workflow.saves.delete(workflowTarget); workflow.failedSaves.add(workflowTarget); let chatList = []; - chatList = `The creature was silvery barbed and failed their save. `; + chatList = `The creature was hexed and failed their save. `; let msgHistory = []; game.messages.reduce((list, message) => { - if (message.flags["midi-qol"]?.itemId === spellData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); + if (message.flags["midi-qol"]?.itemId === itemData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); }, msgHistory); let itemCard = msgHistory[msgHistory.length - 1]; let chatMessage = await game.messages.get(itemCard); @@ -110,11 +114,11 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { else { let chatList = []; - chatList = `The creature was silvery barbed but still succeeded their save. `; + chatList = `The creature was hexed but still succeeded their save. `; let msgHistory = []; game.messages.reduce((list, message) => { - if (message.flags["midi-qol"]?.itemId === spellData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); + if (message.flags["midi-qol"]?.itemId === itemData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); }, msgHistory); let itemCard = msgHistory[msgHistory.length - 1]; let chatMessage = await game.messages.get(itemCard); @@ -129,8 +133,6 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { } if(workflowType === "attack") { - if (workflow.token.document.disposition === validTokenPrimary.document.disposition) return; - let result; if (MidiQOL.safeGetGameSetting('gambits-premades', 'Mirror 3rd Party Dialog for GMs') && browserUser.id !== game.users?.activeGM.id) { @@ -143,7 +145,7 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { result = await socket.executeAsUser("showWitchesHexDialog", browserUser.id, {targetUuids: originTokenUuidPrimary, actorUuid: actorUuidPrimary, tokenUuid: validTokenPrimary.document.uuid, dialogTitle: dialogTitlePrimary, targetNames: originTokenUuidPrimary, outcomeType: "attack", rollTotals: workflow.attackTotal, itemProperName: itemProperName, source: browserUser.isGM ? "gm" : "user", type: "singleDialog"}); } - const { userDecision, damageChosen, source, type } = result; + const { userDecision, returnedTokenUuid, source, type } = result; if (userDecision === false || !userDecision) { if(source && source === "user" && type === "multiDialog") await socket.executeAsGM("closeDialogById", { dialogId: dialogId }); @@ -162,14 +164,14 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { await workflow.setAttackRoll(rerollNew); workflow.options.noOnUseMacro = saveSetting; - if((workflow.attackTotal - reroll.total) < targetAC) { + if(rerollNew.total < targetAC) { let chatList = []; - chatList = `The creature takes a cutting word reducing their attack by ${reroll.total}, and were unable to hit their target. `; + chatList = `The creature was hexed reducing their attack by ${reroll.total}, and were unable to hit their target. `; let msgHistory = []; game.messages.reduce((list, message) => { - if (message.flags["midi-qol"]?.itemId === spellData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); + if (message.flags["midi-qol"]?.itemId === itemData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); }, msgHistory); let itemCard = msgHistory[msgHistory.length - 1]; let chatMessage = await game.messages.get(itemCard); @@ -184,11 +186,11 @@ export async function witchesHex({workflowData,workflowType,workflowCombat}) { else { let chatList = []; - chatList = `The creature takes a cutting word reducing their attack by ${reroll.total}, but were still able to hit their target. `; + chatList = `The creature was hexed reducing their attack by ${reroll.total}, but were still able to hit their target. `; let msgHistory = []; game.messages.reduce((list, message) => { - if (message.flags["midi-qol"]?.itemId === spellData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); + if (message.flags["midi-qol"]?.itemId === itemData._id && message.speaker.token === validTokenPrimary.id) msgHistory.push(message.id); }, msgHistory); let itemCard = msgHistory[msgHistory.length - 1]; let chatMessage = await game.messages.get(itemCard); @@ -214,30 +216,17 @@ export async function showWitchesHexDialog({targetUuids, actorUuid, tokenUuid, d let dialogContent; let originToken = fromUuidSync(tokenUuid); let browserUser = MidiQOL.playerForActor(originToken.actor); - const rollDetailSetting = MidiQOL.safeGetGameSetting('midi-qol', 'ConfigSettings').hideRollDetails; - const nearbyFriendlies = MidiQOL.findNearby(null, originToken.object, 60, { includeToken: true }); - let validFriendlies = nearbyFriendlies.filter(token => token.document.disposition === originToken.disposition && MidiQOL.canSee(tokenUuid,token.document.uuid) && !token.actor.effects.getName(`${itemProperName} - Advantage`)); if(outcomeType === "attack") { dialogContent = ` -
-
-

Would you like to use your reaction to cast ${itemProperName}? ${["none", "detailsDSN", "details"].includes(rollDetailSetting) ? `An enemy successfully hit your ally with a ${attackTotal}.` : "An enemy successfully hit your ally."}

+
+
+

Would you like to use your reaction to cast ${itemProperName}?

-
-
-

Choose who is advantaged:

- ${validFriendlies.length >= 1 ? - `` : '

No valid friendlies in range.

' - } -
-
-

Time remaining

-

${initialTimeLeft} seconds

-

-
+
+

Time remaining

+

${initialTimeLeft} seconds

+

`; @@ -260,17 +249,7 @@ export async function showWitchesHexDialog({targetUuids, actorUuid, tokenUuid, d ${targetNames.map((name, index) => ``).join('')}
- -
-

Choose who is advantaged:

- ${validFriendlies.length >= 1 ? - `` : '

No valid friendlies in range.

' - } -
-

Time remaining

${initialTimeLeft} seconds

@@ -292,12 +271,11 @@ export async function showWitchesHexDialog({targetUuids, actorUuid, tokenUuid, d callback: async (html) => { dialog.dialogState.interacted = true; dialog.dialogState.decision = "yes"; - if(source && source === "user") await socket.executeAsGM("closeDialogById", { dialogId: dialogId }); - if(source && source === "gm") await socket.executeAsUser("closeDialogById", browserUser.id, { dialogId: dialogId }); + if(source && source === "user" && type === "multiDialog") await socket.executeAsGM("closeDialogById", { dialogId: dialogId }); + if(source && source === "gm" && type === "multiDialog") await socket.executeAsUser("closeDialogById", browserUser.id, { dialogId: dialogId }); let actor = await fromUuid(actorUuid); let uuid = actor.uuid; let originToken; - let advantageToken = await fromUuid(html.find("#advantagedSelection").val()); if(outcomeType === "attack") { originToken = await fromUuid(targetUuids); originToken = await MidiQOL.tokenForActor(originToken.actor.uuid); @@ -306,80 +284,122 @@ export async function showWitchesHexDialog({targetUuids, actorUuid, tokenUuid, d originToken = await MidiQOL.tokenForActor(html.find("#targetSelection").val()); } - let chosenSpell = actor.items.find(i => i.name === itemProperName); - - chosenSpell.prepareData(); - chosenSpell.prepareFinalAttributes(); + let chosenItem = actor.items.find(i => i.name === itemProperName); + chosenItem.prepareData(); + chosenItem.prepareFinalAttributes(); const options = { showFullCard: false, createWorkflow: true, versatile: false, configureDialog: true, - targetUuids: [originToken.document.uuid], + targetUuids: [originToken.uuid], }; - const itemRoll = await MidiQOL.completeItemUse(chosenSpell, {}, options); + const itemRoll = await MidiQOL.completeItemUse(chosenItem, {}, options); + if(itemRoll.aborted === true) return resolve({ userDecision: false, returnedTokenUuid: false, programmaticallyClosed: false, source, type }); const hasEffectApplied = await game.dfreds.effectInterface.hasEffectApplied('Reaction', uuid); if (!hasEffectApplied) { game.dfreds.effectInterface.addEffect({ effectName: 'Reaction', uuid }); } - - if(itemRoll.aborted === true) return resolve({ userDecision: false, returnedTokenUuid: null, programmaticallyClosed: false, source, type }); let userDecision = true; let returnedTokenUuid = originToken.document.uuid; - let effectData = [ - { - "icon": `${chosenSpell.img}`, - "duration": { - "rounds": null, - "startTime": null, - "seconds": 60, - "combat": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "disabled": false, - "name": "Silvery Barbs - Advantage", - "changes": [ - { - "key": "flags.midi-qol.advantage.attack.all", - "mode": 0, - "value": "1", - "priority": 20 + let actorLevel = actor.system.details.level; + let flamesEmbrace = actor.items.getName("Flame's Embrace"); + + if(actorLevel >= 6 && flamesEmbrace) { + + let spellDC = actor.system.attributes.spelldc; + let saveData = { + name: "Flame's Embrace Save", + type: "feat", + img: `${flamesEmbrace.img}`, + effects: [], + flags: { + "midi-qol": { + noProvokeReaction: true, + onUseMacroName: null, + forceCEOff: true }, - { - "key": "flags.midi-qol.advantage.ability.check.all", - "mode": 0, - "value": "1", - "priority": 20 + "midiProperties": { + nodam: true, + magiceffect: true }, - { - "key": "flags.midi-qol.advantage.ability.save.all", - "mode": 0, - "value": "1", - "priority": 20 + "autoanimations": { + killAnim: true } - ], - "transfer": false, - "flags": { - "dae": { - "specialDuration": [ - "1Attack", - "isCheck", - "isSave", - "isSkill" - ] + }, + system: { + equipped: true, + actionType: "save", + save: { "dc": `${spellDC}`, "ability": 'con', "scaling": "flat" }, + components: { concentration: false, material: false, ritual: false, somatic: false, value: "", vocal: false }, + duration: { units: "inst", value: undefined }, + properties: {mgc: true} + }, + }; + const itemUpdate = new CONFIG.Item.documentClass(saveData, {parent: actor}); + const options = { showFullCard: false, createWorkflow: true, versatile: false, configureDialog: false, targetUuids: [`${originToken.document.uuid}`] }; + let saveResult = await MidiQOL.completeItemUse(itemUpdate, {}, options); + + if(saveResult.failedSaves.size !== 0) { + + let itemData = { + "name": "Flame's Embrace", + "type": "feat", + "img": `${flamesEmbrace.img}`, + "system": { + "description": { + "value": "

You have been hexed and are under the effect of Flame's Embrace.

" + }, + }, + "effects": [ + { + "icon": `${flamesEmbrace.img}`, + "duration": { + "seconds": 60 + }, + "disabled": false, + "name": "Flame's Embrace", + "changes": [ + { + "key": "system.traits.dv.value", + "mode": 0, + "value": "fire", + "priority": 20 + }, + { + "key": "flags.midi-qol.onUseMacroName", + "mode": 0, + "value": "ItemMacro, isDamaged", + "priority": 20 + } + ], + "transfer": true, + "tint": null + } + ], + "flags": { + "dae": { + "macro": { + "name": "Hexed", + "img": "systems/dnd5e/icons/svg/items/feature.svg", + "type": "script", + "scope": "global", + "command": `if(args[0].macroPass === \"isDamaged\") {\n let damageTypes = [\"fire\"];\n let rollFound = workflow.damageDetail.some(roll => damageTypes.includes(roll.type));\n\n if(rollFound) {\n let originActor = await fromUuid(\`${actorUuid}\`);\n let spellDC = originActor.system.attributes.spelldc;\n const itemData = {\n name: \"Flame's Embrace Save\",\n type: \"feat\",\n img: \`${flamesEmbrace.img}\`,\n effects: [],\n flags: {\n \"midi-qol\": {\n noProvokeReaction: true,\n onUseMacroName: null,\n forceCEOff: true\n },\n \"midiProperties\": {\n nodam: true, magiceffect: true\n }, "autoanimations": {\n killAnim: true\n }},\n system: {\n equipped: true,\n actionType: \"save\",\n save: { \"dc\": spellDC, \"ability\": 'con', \"scaling\": \"flat\" },\n components: { concentration: false, material: false, ritual: false, somatic: false, value: \"\", vocal: false },\n duration: { units: \"inst\", value: undefined },\n properties: {mgc: true}\n },\n };\n const itemUpdate = new CONFIG.Item.documentClass(itemData, {parent: originActor});\n const options = { showFullCard: false, createWorkflow: true, versatile: false, configureDialog: false, targetUuids: [token.document.uuid] };\n let saveResult = await MidiQOL.completeItemUse(itemUpdate, {}, options);\n\n if(saveResult.failedSaves.size === 0) {\n await macroItem.delete();\n }\n }\n}` + } + } + } } - } + + await originToken.actor.createEmbeddedDocuments("Item", [itemData]); } - ]; - if(advantageToken) await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: advantageToken.uuid, effects: effectData }); + } + resolve({ userDecision, returnedTokenUuid, programmaticallyClosed: false, source, type }); } }, diff --git a/scripts/module.js b/scripts/module.js index a441d50c..c325953c 100644 --- a/scripts/module.js +++ b/scripts/module.js @@ -7,12 +7,15 @@ import { protection, showProtectionDialog } from './macros/protection.js'; import { indomitable, showIndomitableDialog } from './macros/indomitable.js'; import { sentinel, showSentinelDialog } from './macros/sentinel.js'; import { riposte, showRiposteDialog } from './macros/riposte.js'; +import { witchesHex, showWitchesHexDialog } from './macros/witchesHex.js'; import { enableOpportunityAttack, disableOpportunityAttack } from './macros/opportunityAttack.js'; import { deleteChatMessage, gmIdentifyItem, closeDialogById, handleDialogPromises, rollAsUser, convertFromFeet, gmUpdateTemplateSize, findValidTokens, chooseUseItemUser, pauseDialogById, freeSpellUse } from './helpers.js'; export let socket; Hooks.once('init', async function() { registerSettings(); + game.gpsSettings = game.gpsSettings || {}; + await updateSettings(); }); Hooks.once('socketlib.ready', async function() { @@ -47,6 +50,8 @@ Hooks.once('socketlib.ready', async function() { socket.register("pauseDialogById", pauseDialogById); socket.register("riposte", riposte); socket.register("showRiposteDialog", showRiposteDialog); + socket.register("witchesHex", witchesHex); + socket.register("showWitchesHexDialog", showWitchesHexDialog); socket.register("freeSpellUse", freeSpellUse); }) @@ -65,18 +70,6 @@ Hooks.once('ready', async function() { socket }; - const counterspellEnabled = game.settings.get('gambits-premades', 'Enable Counterspell'); - const silveryBarbsEnabled = game.settings.get('gambits-premades', 'Enable Silvery Barbs'); - const cuttingWordsEnabled = game.settings.get('gambits-premades', 'Enable Cutting Words'); - const poetryInMiseryEnabled = game.settings.get('gambits-premades', 'Enable Poetry in Misery'); - const interceptionEnabled = game.settings.get('gambits-premades', 'Enable Interception'); - const indomitableEnabled = game.settings.get('gambits-premades', 'Enable Indomitable'); - const protectionEnabled = game.settings.get('gambits-premades', 'Enable Protection'); - const enableProtectionOnSuccess = game.settings.get('gambits-premades', 'enableProtectionOnSuccess'); - const sentinelEnabled = game.settings.get('gambits-premades', 'Enable Sentinel'); - const riposteEnabled = game.settings.get('gambits-premades', 'Enable Riposte'); - const identifyRestrictionEnabled = game.settings.get('gambits-premades', 'Enable Identify Restrictions'); - async function executeWorkflow({ workflowItem, workflowData, workflowType, workflowCombat }) { if (game.user.isGM) { await socket.executeAsGM( workflowItem, { workflowData: workflowData, workflowType: workflowType, workflowCombat: workflowCombat }); @@ -87,45 +80,47 @@ Hooks.once('ready', async function() { Hooks.on("midi-qol.prePreambleComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (counterspellEnabled) await executeWorkflow({ workflowItem: "counterspell", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.counterspellEnabled) await executeWorkflow({ workflowItem: "counterspell", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); }); Hooks.on("midi-qol.preCheckHits", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); - if (cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.enableWitchesHex) await executeWorkflow({ workflowItem: "witchesHex", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); }); Hooks.on("midi-qol.preAttackRoll", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (protectionEnabled && !enableProtectionOnSuccess) await executeWorkflow({ workflowItem: "protection", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.protectionEnabled && !enableProtectionOnSuccess) await executeWorkflow({ workflowItem: "protection", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); }); Hooks.on("midi-qol.preAttackRollComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (sentinelEnabled) await executeWorkflow({ workflowItem: "sentinel", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); - if (protectionEnabled && enableProtectionOnSuccess) await executeWorkflow({ workflowItem: "protection", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.sentinelEnabled) await executeWorkflow({ workflowItem: "sentinel", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.protectionEnabled && enableProtectionOnSuccess) await executeWorkflow({ workflowItem: "protection", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); }); Hooks.on("midi-qol.postAttackRollComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); - if (riposteEnabled) await executeWorkflow({ workflowItem: "riposte", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); + if (game.gpsSettings.riposteEnabled) await executeWorkflow({ workflowItem: "riposte", workflowData: workflowItemUuid, workflowType: "attack", workflowCombat: true }); }); Hooks.on("midi-qol.preSavesComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); - if (indomitableEnabled) await executeWorkflow({ workflowItem: "indomitable", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); + if (game.gpsSettings.silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); + if (game.gpsSettings.indomitableEnabled) await executeWorkflow({ workflowItem: "indomitable", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); + if (game.gpsSettings.enableWitchesHex) await executeWorkflow({ workflowItem: "witchesHex", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); }); Hooks.on("midi-qol.postSavesComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); + if (game.gpsSettings.poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "save", workflowCombat: true }); }); Hooks.on("preUpdateItem", (item, update) => { - if (!game.user.isGM && ("identified" in (update.system ?? {})) && identifyRestrictionEnabled) { + if (!game.user.isGM && ("identified" in (update.system ?? {})) && game.gpsSettings.identifyRestrictionEnabled) { ui.notifications.error(`${game.settings.get('gambits-premades', 'Identify Restriction Message')}`); return false; } @@ -133,20 +128,20 @@ Hooks.once('ready', async function() { Hooks.on("midi-qol.preDamageRollComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "damage", workflowCombat: true }); - if (interceptionEnabled) await executeWorkflow({ workflowItem: "interception", workflowData: workflowItemUuid, workflowType: "damage", workflowCombat: true }); + if (game.gpsSettings.cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "damage", workflowCombat: true }); + if (game.gpsSettings.interceptionEnabled) await executeWorkflow({ workflowItem: "interception", workflowData: workflowItemUuid, workflowType: "damage", workflowCombat: true }); }); Hooks.on("dnd5e.rollAbilitySave", async (actor, roll, abilityId) => { - if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "save", workflowCombat: false }); + if (game.gpsSettings.poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "save", workflowCombat: false }); }); Hooks.on("dnd5e.rollAbilityTest", async (actor, roll, abilityId) => { - if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "ability", workflowCombat: false }); + if (game.gpsSettings.poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "ability", workflowCombat: false }); }); Hooks.on("dnd5e.rollSkill", async (actor, roll, abilityId) => { - if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "skill", workflowCombat: false }); + if (game.gpsSettings.poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, abilityId: abilityId }, workflowType: "skill", workflowCombat: false }); }); }); @@ -159,8 +154,7 @@ Hooks.on("preUpdateCombat", (combat, update, options) => { Hooks.on("updateCombat", async (combat, update, options) => { if(!game.user.isGM) return; - async function wait(ms) { return new Promise(resolve => { setTimeout(resolve, ms); }); }; - await wait(3000); //Give the canvas time to settle down + await new Promise(resolve => setTimeout(resolve, 1000)); const combatStarted = combat.started && !foundry.utils.getProperty(options, `gambits-premades.started`); const hasProcessedStart = await combat.getFlag('gambits-premades', `startProcessed-${combat.id}`); if(combatStarted && !hasProcessedStart && game.settings.get('gambits-premades', 'Enable Opportunity Attack') === true) { @@ -190,6 +184,51 @@ Hooks.on("deleteCombatant", async (combatant, options, userId) => { } }); +async function updateSettings(settingKey = null) { + if (settingKey === null || settingKey === 'gambits-premades.Enable Counterspell') { + game.gpsSettings.counterspellEnabled = game.settings.get('gambits-premades', 'Enable Counterspell'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Silvery Barbs') { + game.gpsSettings.silveryBarbsEnabled = game.settings.get('gambits-premades', 'Enable Silvery Barbs'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Cutting Words') { + game.gpsSettings.cuttingWordsEnabled = game.settings.get('gambits-premades', 'Enable Cutting Words'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Poetry in Misery') { + game.gpsSettings.poetryInMiseryEnabled = game.settings.get('gambits-premades', 'Enable Poetry in Misery'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Interception') { + game.gpsSettings.interceptionEnabled = game.settings.get('gambits-premades', 'Enable Interception'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Indomitable') { + game.gpsSettings.indomitableEnabled = game.settings.get('gambits-premades', 'Enable Indomitable'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Protection') { + game.gpsSettings.protectionEnabled = game.settings.get('gambits-premades', 'Enable Protection'); + } + if (settingKey === null || settingKey === 'gambits-premades.enableProtectionOnSuccess') { + game.gpsSettings.enableProtectionOnSuccess = game.settings.get('gambits-premades', 'enableProtectionOnSuccess'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Sentinel') { + game.gpsSettings.sentinelEnabled = game.settings.get('gambits-premades', 'Enable Sentinel'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Riposte') { + game.gpsSettings.riposteEnabled = game.settings.get('gambits-premades', 'Enable Riposte'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Witches Hex') { + game.gpsSettings.enableWitchesHex = game.settings.get('gambits-premades', 'Enable Witches Hex'); + } + if (settingKey === null || settingKey === 'gambits-premades.Enable Identify Restrictions') { + game.gpsSettings.identifyRestrictionEnabled = game.settings.get('gambits-premades', 'Enable Identify Restrictions'); + } +} + +Hooks.on('updateSetting', (setting) => { + if (setting.key.startsWith('gambits-premades.')) { + updateSettings(setting.key); + } +}); + /* Store initial positions let initialPositions = new Map(); diff --git a/scripts/settings.js b/scripts/settings.js index 7c8debf2..156ef721 100644 --- a/scripts/settings.js +++ b/scripts/settings.js @@ -260,6 +260,31 @@ function registerSettings() { } }); + game.settings.register('gambits-premades', 'Enable Witches Hex', { + name: "Enable Witches Hex", + hint: "If enabled, this will present an appropriate dialog to users with the witches Hex feature, and automate application when used.", + scope: 'world', + config: false, + type: Boolean, + default: false + }); + + game.settings.register('gambits-premades', 'Witches Hex Timeout', { + name: "Witches Hex Timeout", + hint: "Enter custom number (in seconds). Default timeout value is 30 seconds.", + scope: 'world', + config: false, + type: String, + default: "30", + onChange: value => { + const numericValue = Number(value); + if (!isNaN(numericValue)) { + } else { + console.error("Invalid input for Numeric Setting Example: Not a number."); + } + } + }); + game.settings.register('gambits-premades', 'Enable Identify Restrictions', { name: "Enable Identify Restrictions", hint: "If enabled, this will prevent player characters from Identifying unidentified items through usual methods.", @@ -567,6 +592,8 @@ class classFeaturesSettingsMenu extends BaseSettingsMenu { enableProtectionOnSuccess: game.settings.get("gambits-premades", "enableProtectionOnSuccess"), enableRiposte: game.settings.get("gambits-premades", "Enable Riposte"), riposteTimeout: game.settings.get("gambits-premades", "Riposte Timeout"), + enableWitchesHex: game.settings.get("gambits-premades", "Enable Witches Hex"), + witchesHexTimeout: game.settings.get("gambits-premades", "Witches Hex Timeout"), }; return data; @@ -590,6 +617,8 @@ class classFeaturesSettingsMenu extends BaseSettingsMenu { await game.settings.set("gambits-premades", "enableProtectionOnSuccess", formData.enableProtectionOnSuccess); await game.settings.set("gambits-premades", "Enable Riposte", formData.enableRiposte); await game.settings.set("gambits-premades", "Riposte Timeout", formData.riposteTimeout); + await game.settings.set("gambits-premades", "Enable Witches Hex", formData.enableWitchesHex); + await game.settings.set("gambits-premades", "Witches Hex Timeout", formData.witchesHexTimeout); } } diff --git a/templates/classFeaturesSettingsMenu.html b/templates/classFeaturesSettingsMenu.html index 1632e0a0..c0d1f87d 100644 --- a/templates/classFeaturesSettingsMenu.html +++ b/templates/classFeaturesSettingsMenu.html @@ -246,6 +246,21 @@ + + + + + + +
+ +
+ + + + +