warframe-worldstate-parser 5.2.13 → 5.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Alert-DdertJK5.mjs → Alert-Ccyxuldo.mjs} +4 -4
- package/dist/{Archidemea-6_LmmSCn.mjs → Archimedea-MT79fX4N.mjs} +3 -3
- package/dist/{Calendar-DYcJQeUa.d.mts → Calendar-BVfnZcTO.d.mts} +2 -2
- package/dist/{Calendar-BIT29qag.mjs → Calendar-D2zXOqHk.mjs} +2 -2
- package/dist/{CambionCycle-zr8UYAii.mjs → CambionCycle-CtOGMFLX.mjs} +3 -3
- package/dist/{CambionCycle-BWvDFHKA.d.mts → CambionCycle-yM3kRJ6o.d.mts} +4 -4
- package/dist/{CetusCycle-DduQI2fw.mjs → CetusCycle-BapW947t.mjs} +3 -3
- package/dist/{CetusCycle-yvOEjkgM.d.mts → CetusCycle-D6Q5OhkS.d.mts} +3 -3
- package/dist/{ConclaveChallenge-CXZ5q0ym.mjs → ConclaveChallenge-BqKAuCTT.mjs} +3 -3
- package/dist/{ConstructionProgress-Df9wkF6v.d.mts → ConstructionProgress-B2ihYAWM.d.mts} +3 -3
- package/dist/{ConstructionProgress-hOBhqNeN.mjs → ConstructionProgress-C0zBCrEM.mjs} +3 -3
- package/dist/{DailyDeal-B_-51xgg.mjs → DailyDeal-Bg0amN6J.mjs} +2 -2
- package/dist/{DarkSector-DiE6QETB.mjs → DarkSector-8wPNWuFP.mjs} +5 -5
- package/dist/{DarkSectorBattle-6Rn7YpT7.d.mts → DarkSectorBattle-DssudFiO.d.mts} +1 -1
- package/dist/Dependency-DvuPTTK9.mjs +1 -0
- package/dist/{Dependency-CSKUY3rf.d.mts → Dependency-XUV01ffF.d.mts} +1 -1
- package/dist/{DuviriChoice-CDdk3VSm.mjs → DuviriChoice-DV4-9YID.mjs} +4 -1
- package/dist/{DuviriCycle-B450OsF9.mjs → DuviriCycle-DZbe-zrM.mjs} +4 -4
- package/dist/{EarthCycle-IzR2qmA5.mjs → EarthCycle-BnN2Xl9g.mjs} +3 -3
- package/dist/{EarthCycle-LH8s0Lhw.d.mts → EarthCycle-D-4SVBf_.d.mts} +3 -3
- package/dist/ExternalMission-Be-3jTxK.mjs +1 -0
- package/dist/FetchProxy-BjfmTCj7.d.mts +10 -0
- package/dist/{FetchProxy-DTHjN-NQ.mjs → FetchProxy-TCdGknYu.mjs} +3 -3
- package/dist/{Fissure-DJYjBf1K.mjs → Fissure-BoZQVEF9.mjs} +3 -3
- package/dist/{FlashSale-CQQ51ZyI.mjs → FlashSale-DmwnZtWc.mjs} +2 -2
- package/dist/{GlobalUpgrade-CECXB3Yf.mjs → GlobalUpgrade-qtE-SaGP.mjs} +2 -2
- package/dist/ImgCdn-CXfqq7vV.d.mts +6 -0
- package/dist/{Invasion-e0UPwE-J.mjs → Invasion-D0BFYPUI.mjs} +3 -3
- package/dist/{KuvaLogEntry-CBItxLlZ.d.mts → KuvaLogEntry-D58IjMvQ.d.mts} +3 -3
- package/dist/KuvaLogEntry-wUb9IOIj.mjs +1 -0
- package/dist/MidrathCycle-DqyVY2Wf.mjs +68 -0
- package/dist/MidrathCycle-hKjEvfm4.d.mts +25 -0
- package/dist/{Mission-BBCUFfnN.mjs → Mission-4n_i7W8j.mjs} +1 -1
- package/dist/{News-DZVYtsd3.mjs → News-DM9GFMMz.mjs} +4 -4
- package/dist/{News-CGpkrc6F.d.mts → News-DrNtDW5I.d.mts} +3 -3
- package/dist/{Nightwave-sW1Cry-L.mjs → Nightwave-DqLM-MSj.mjs} +5 -5
- package/dist/{Nightwave-DTQksQJ1.d.mts → Nightwave-DrZSdWDz.d.mts} +5 -5
- package/dist/{NightwaveChallenge-DAMnDdda.d.mts → NightwaveChallenge-D7AsQ5ex.d.mts} +3 -3
- package/dist/{NightwaveChallenge-BjTpO8Mh.mjs → NightwaveChallenge-iPlf04Gb.mjs} +3 -3
- package/dist/{PersistentEnemy-BndRTL7c.d.mts → PersistentEnemy-B81sr9O4.d.mts} +3 -3
- package/dist/{PersistentEnemy-BogypbtV.mjs → PersistentEnemy-CvWvgrmu.mjs} +3 -3
- package/dist/{Reward-CjwLb2gj.mjs → Reward-DhCSvJkg.mjs} +1 -1
- package/dist/RewardData-CxzLqb9k.d.mts +11 -0
- package/dist/{RewardTypes-C6zFAcZ1.mjs → RewardTypes-C9mdyWtP.mjs} +2 -2
- package/dist/{Sortie-BWrQosyz.mjs → Sortie-BH6D31pZ.mjs} +5 -5
- package/dist/{SyndicateJob-BdKRf7qq.mjs → SyndicateJob-Vxg8T9Sf.mjs} +6 -6
- package/dist/{SyndicateMission-Dif5Lp-C.mjs → SyndicateMission-R1kv29yd.mjs} +4 -4
- package/dist/{Tmp-DuhaXk2g.mjs → Tmp-DjsDBCOw.mjs} +3 -3
- package/dist/{VallisCycle-BUg8cwKo.mjs → VallisCycle-D03Vz9pB.mjs} +3 -3
- package/dist/{VallisCycle-CfUcMlno.d.mts → VallisCycle-DpU7YoeY.d.mts} +3 -3
- package/dist/{VoidTrader-6aBnhs9P.mjs → VoidTrader-Dhv3-c_H.mjs} +5 -5
- package/dist/{WeeklyChallenge-BNlgGlbI.mjs → WeeklyChallenge-CZyrIreL.mjs} +4 -4
- package/dist/{WorldEvent-D5RguRlU.mjs → WorldEvent-DIlV4p7s.mjs} +6 -6
- package/dist/{WorldstateObject-C5n5EJvt.d.mts → WorldStateObject-HVH8YH1P.d.mts} +6 -6
- package/dist/{WorldstateObject-CIQkveJ1.mjs → WorldStateObject-iHgm5OJw.mjs} +6 -6
- package/dist/{ZarimanCycle-Cq3E8Dp2.mjs → ZarimanCycle-C1UCndAe.mjs} +3 -3
- package/dist/{ZarimanCycle-D7E0AeuR.d.mts → ZarimanCycle-DjqKRzjh.d.mts} +3 -3
- package/dist/index-Coq_3Ei-.d.mts +1673 -0
- package/dist/lib/WorldState.d.mts +21 -46
- package/dist/lib/WorldState.mjs +46 -43
- package/dist/lib/models/Alert.d.mts +18 -6
- package/dist/lib/models/Alert.mjs +6 -6
- package/dist/lib/models/Archimedea.d.mts +18 -0
- package/dist/lib/models/Archimedea.mjs +4 -0
- package/dist/lib/models/Calendar.d.mts +3 -3
- package/dist/lib/models/Calendar.mjs +3 -3
- package/dist/lib/models/CambionCycle.d.mts +4 -4
- package/dist/lib/models/CambionCycle.mjs +3 -3
- package/dist/lib/models/CetusCycle.d.mts +3 -3
- package/dist/lib/models/CetusCycle.mjs +3 -3
- package/dist/lib/models/ChallengeInstance.d.mts +18 -3
- package/dist/lib/models/ChallengeInstance.mjs +2 -2
- package/dist/lib/models/ConclaveChallenge.d.mts +18 -4
- package/dist/lib/models/ConclaveChallenge.mjs +3 -3
- package/dist/lib/models/ConstructionProgress.d.mts +3 -3
- package/dist/lib/models/ConstructionProgress.mjs +3 -3
- package/dist/lib/models/DailyDeal.d.mts +18 -4
- package/dist/lib/models/DailyDeal.mjs +3 -3
- package/dist/lib/models/DarkSector.d.mts +18 -7
- package/dist/lib/models/DarkSector.mjs +7 -7
- package/dist/lib/models/DarkSectorBattle.d.mts +3 -3
- package/dist/lib/models/DarkSectorBattle.mjs +2 -2
- package/dist/lib/models/DuviriCycle.d.mts +18 -4
- package/dist/lib/models/DuviriCycle.mjs +3 -3
- package/dist/lib/models/EarthCycle.d.mts +3 -3
- package/dist/lib/models/EarthCycle.mjs +3 -3
- package/dist/lib/models/Fissure.d.mts +18 -4
- package/dist/lib/models/Fissure.mjs +3 -3
- package/dist/lib/models/FlashSale.d.mts +18 -4
- package/dist/lib/models/FlashSale.mjs +3 -3
- package/dist/lib/models/GlobalUpgrade.d.mts +18 -4
- package/dist/lib/models/GlobalUpgrade.mjs +3 -3
- package/dist/lib/models/Invasion.d.mts +18 -5
- package/dist/lib/models/Invasion.mjs +5 -5
- package/dist/lib/models/Kinepage.d.mts +2 -2
- package/dist/lib/models/Kinepage.mjs +2 -2
- package/dist/lib/models/Kuva.d.mts +18 -21
- package/dist/lib/models/Kuva.mjs +2 -2
- package/dist/lib/models/MidrathCycle.d.mts +3 -25
- package/dist/lib/models/MidrathCycle.mjs +3 -67
- package/dist/lib/models/Mission.d.mts +18 -4
- package/dist/lib/models/Mission.mjs +4 -4
- package/dist/lib/models/News.d.mts +3 -3
- package/dist/lib/models/News.mjs +3 -3
- package/dist/lib/models/Nightwave.d.mts +4 -4
- package/dist/lib/models/Nightwave.mjs +4 -4
- package/dist/lib/models/NightwaveChallenge.d.mts +3 -3
- package/dist/lib/models/NightwaveChallenge.mjs +3 -3
- package/dist/lib/models/PersistentEnemy.d.mts +3 -3
- package/dist/lib/models/PersistentEnemy.mjs +3 -3
- package/dist/lib/models/Reward.d.mts +18 -3
- package/dist/lib/models/Reward.mjs +3 -3
- package/dist/lib/models/SentientOutpost.d.mts +18 -3
- package/dist/lib/models/SentientOutpost.mjs +2 -2
- package/dist/lib/models/Simaris.d.mts +18 -3
- package/dist/lib/models/Simaris.mjs +2 -2
- package/dist/lib/models/Sortie.d.mts +18 -7
- package/dist/lib/models/Sortie.mjs +7 -7
- package/dist/lib/models/SortieVariant.d.mts +18 -3
- package/dist/lib/models/SortieVariant.mjs +2 -2
- package/dist/lib/models/SteelPathOffering.d.mts +2 -2
- package/dist/lib/models/SteelPathOffering.mjs +2 -2
- package/dist/lib/models/SyndicateJob.d.mts +18 -4
- package/dist/lib/models/SyndicateJob.mjs +6 -4
- package/dist/lib/models/SyndicateMission.d.mts +18 -5
- package/dist/lib/models/SyndicateMission.mjs +7 -5
- package/dist/lib/models/Tmp.d.mts +18 -0
- package/dist/lib/models/Tmp.mjs +4 -0
- package/dist/lib/models/VallisCycle.d.mts +3 -3
- package/dist/lib/models/VallisCycle.mjs +3 -3
- package/dist/lib/models/VoidTrader.d.mts +18 -6
- package/dist/lib/models/VoidTrader.mjs +5 -5
- package/dist/lib/models/VoidTraderItem.d.mts +18 -3
- package/dist/lib/models/VoidTraderItem.mjs +2 -2
- package/dist/lib/models/VoidTraderSchedule.d.mts +18 -3
- package/dist/lib/models/VoidTraderSchedule.mjs +2 -2
- package/dist/lib/models/WeeklyChallenge.d.mts +18 -5
- package/dist/lib/models/WeeklyChallenge.mjs +4 -4
- package/dist/lib/models/WorldEvent.d.mts +18 -6
- package/dist/lib/models/WorldEvent.mjs +8 -7
- package/dist/lib/models/WorldStateObject.d.mts +2 -0
- package/dist/lib/models/WorldStateObject.mjs +3 -0
- package/dist/lib/models/ZarimanCycle.d.mts +3 -3
- package/dist/lib/models/ZarimanCycle.mjs +3 -3
- package/dist/lib/models/index.d.mts +19 -0
- package/dist/lib/models/index.mjs +47 -0
- package/dist/lib/supporting/Dependency.d.mts +2 -2
- package/dist/lib/supporting/DuviriChoice.d.mts +18 -3
- package/dist/lib/supporting/DuviriChoice.mjs +2 -2
- package/dist/lib/supporting/ExternalMission.d.mts +2 -2
- package/dist/lib/supporting/FetchProxy.d.mts +2 -10
- package/dist/lib/supporting/FetchProxy.mjs +2 -2
- package/dist/lib/supporting/ImgCdn.d.mts +1 -5
- package/dist/lib/supporting/ImgCdn.mjs +1 -1
- package/dist/lib/supporting/KuvaLogEntry.d.mts +1 -1
- package/dist/lib/supporting/RewardData.d.mts +1 -10
- package/dist/lib/supporting/RewardData.mjs +1 -1
- package/dist/lib/supporting/RewardTypes.d.mts +1 -1
- package/dist/lib/supporting/RewardTypes.mjs +1 -1
- package/dist/lib/supporting/index.d.mts +24 -0
- package/dist/lib/supporting/index.mjs +8 -0
- package/dist/main.d.mts +25 -41
- package/dist/main.mjs +50 -43
- package/dist/supporting-2nt4XfjJ.mjs +1 -0
- package/package.json +3 -3
- package/dist/Alert-CXF2Z-1T.d.mts +0 -45
- package/dist/Archidemea-Cz5f5mO4.d.mts +0 -89
- package/dist/ChallengeInstance-B_3KnbyT.d.mts +0 -53
- package/dist/ConclaveChallenge-uZ0oYk9e.d.mts +0 -76
- package/dist/DailyDeal-oEVS6ilW.d.mts +0 -66
- package/dist/DarkSector-CKfnMGsZ.d.mts +0 -142
- package/dist/DuviriChoice-DYsa_ggn.d.mts +0 -18
- package/dist/DuviriCycle-CXL7Lztx.d.mts +0 -25
- package/dist/Fissure-C0kjA66u.d.mts +0 -78
- package/dist/FlashSale-CnfQLuVA.d.mts +0 -71
- package/dist/GlobalUpgrade-CGIiG66-.d.mts +0 -55
- package/dist/Invasion-D8U6YHiR.d.mts +0 -113
- package/dist/Mission-BJlVA-sm.d.mts +0 -138
- package/dist/Reward-CQ5fnfGv.d.mts +0 -68
- package/dist/SentientOutpost-DtFyMZgh.d.mts +0 -47
- package/dist/Simaris-CfajVEDs.d.mts +0 -37
- package/dist/Sortie-CcmgVhMp.d.mts +0 -60
- package/dist/SortieVariant-Dq1ap8Vj.d.mts +0 -49
- package/dist/SyndicateJob-BShg8By1.d.mts +0 -92
- package/dist/SyndicateMission-CCyl4jtq.d.mts +0 -58
- package/dist/VoidTrader-CyW5f24k.d.mts +0 -76
- package/dist/VoidTraderItem-Bg8_rReH.d.mts +0 -43
- package/dist/VoidTraderSchedule-D_oo6wbz.d.mts +0 -16
- package/dist/WeeklyChallenge-y44JasTT.d.mts +0 -20
- package/dist/WorldEvent-CWpEcJtK.d.mts +0 -205
- package/dist/lib/Tmp.d.mts +0 -34
- package/dist/lib/Tmp.mjs +0 -4
- package/dist/lib/models/Archidemea.d.mts +0 -4
- package/dist/lib/models/Archidemea.mjs +0 -4
- package/dist/lib/models/WorldstateObject.d.mts +0 -2
- package/dist/lib/models/WorldstateObject.mjs +0 -3
- /package/dist/{ChallengeInstance-DjZAJQQG.mjs → ChallengeInstance-DygjwvEF.mjs} +0 -0
- /package/dist/{DarkSectorBattle-DEqEgOOi.mjs → DarkSectorBattle-D8UJUdh9.mjs} +0 -0
- /package/dist/{ExternalMission-DeoVC7ra.d.mts → ExternalMission-jOcIvvoD.d.mts} +0 -0
- /package/dist/{ImgCdn-DccBIUuf.mjs → ImgCdn-DwNJEJ5E.mjs} +0 -0
- /package/dist/{Kinepage-yW6FgpW4.d.mts → Kinepage-DDd48L3V.d.mts} +0 -0
- /package/dist/{Kinepage-CRA80WnO.mjs → Kinepage-bk44D3NM.mjs} +0 -0
- /package/dist/{Kuva-CPoswpEP.mjs → Kuva-zzcdntDZ.mjs} +0 -0
- /package/dist/{RewardData-nEchYwsN.mjs → RewardData-Cn2YQn9p.mjs} +0 -0
- /package/dist/{RewardTypes-nWMw8qZb.d.mts → RewardTypes-gG75RYbQ.d.mts} +0 -0
- /package/dist/{SentientOutpost-D8iqaZqS.mjs → SentientOutpost-CgPBpuXR.mjs} +0 -0
- /package/dist/{Simaris-Dpbxjfex.mjs → Simaris-BgkOf90G.mjs} +0 -0
- /package/dist/{SortieVariant-CULYYgY1.mjs → SortieVariant-DD0mRbCN.mjs} +0 -0
- /package/dist/{SteelPathOffering-hc8I6jT8.mjs → SteelPathOffering-DcPYvPOo.mjs} +0 -0
- /package/dist/{SteelPathOffering-CHBuC34b.d.mts → SteelPathOffering-DuyzIIbw.d.mts} +0 -0
- /package/dist/{VoidTraderItem-B0waOIHJ.mjs → VoidTraderItem-D-gayDfb.mjs} +0 -0
- /package/dist/{VoidTraderSchedule-CK_ciC_O.mjs → VoidTraderSchedule-DNcJIJFz.mjs} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as Mission } from "./Mission-
|
|
2
|
-
import { t as
|
|
1
|
+
import { t as Mission } from "./Mission-4n_i7W8j.mjs";
|
|
2
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
3
3
|
import { fromNow, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
5
5
|
//#region lib/models/Alert.ts
|
|
6
6
|
/**
|
|
7
7
|
* Represents an alert
|
|
8
|
-
* @augments {
|
|
8
|
+
* @augments {WorldStateObject}
|
|
9
9
|
*/
|
|
10
|
-
var Alert = class extends
|
|
10
|
+
var Alert = class extends WorldStateObject {
|
|
11
11
|
/**
|
|
12
12
|
* The mission that the players have to complete
|
|
13
13
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { faction, languageDesc, languageString, missionType } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
5
|
-
//#region lib/models/
|
|
5
|
+
//#region lib/models/Archimedea.ts
|
|
6
6
|
/**
|
|
7
7
|
* An Archimedea mission with risk and deviations
|
|
8
8
|
*/
|
|
@@ -47,7 +47,7 @@ var ArchimedeaMission = class {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
var Archimedea = class extends
|
|
50
|
+
var Archimedea = class extends WorldStateObject {
|
|
51
51
|
/**
|
|
52
52
|
* MD5 generated ID
|
|
53
53
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as WorldStateObject, t as BaseContentObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/models/Calendar.d.ts
|
|
4
4
|
interface RawCalender extends BaseContentObject {
|
|
@@ -41,7 +41,7 @@ declare class DayEvent {
|
|
|
41
41
|
constructor(event: RawDay);
|
|
42
42
|
private eventDescription;
|
|
43
43
|
}
|
|
44
|
-
declare class Calendar extends
|
|
44
|
+
declare class Calendar extends WorldStateObject {
|
|
45
45
|
/**
|
|
46
46
|
* Rewards, Challenges, and Calender events
|
|
47
47
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { languageDesc, languageString, translateCalendarEvent, translateSeason } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/Calendar.ts
|
|
@@ -32,7 +32,7 @@ var DayEvent = class {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
var Calendar = class extends
|
|
35
|
+
var Calendar = class extends WorldStateObject {
|
|
36
36
|
/**
|
|
37
37
|
* Rewards, Challenges, and Calender events
|
|
38
38
|
*/
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/CambionCycle.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents the current Cambion Drift Fass/Vome Cycle
|
|
7
|
-
* @augments {
|
|
7
|
+
* @augments {WorldStateObject}
|
|
8
8
|
*/
|
|
9
|
-
var CambionCycle = class extends
|
|
9
|
+
var CambionCycle = class extends WorldStateObject {
|
|
10
10
|
timeLeft;
|
|
11
11
|
state;
|
|
12
12
|
/**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { r as
|
|
2
|
-
import { t as CetusCycle } from "./CetusCycle-
|
|
1
|
+
import { r as WorldStateObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
|
+
import { t as CetusCycle } from "./CetusCycle-D6Q5OhkS.mjs";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/CambionCycle.d.ts
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Represents the current Cambion Drift Fass/Vome Cycle
|
|
8
|
-
* @augments {
|
|
8
|
+
* @augments {WorldStateObject}
|
|
9
9
|
*/
|
|
10
|
-
declare class CambionCycle extends
|
|
10
|
+
declare class CambionCycle extends WorldStateObject {
|
|
11
11
|
timeLeft: string;
|
|
12
12
|
state: string;
|
|
13
13
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/CetusCycle.ts
|
|
@@ -9,9 +9,9 @@ const maximums = {
|
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* Represents the current Earth Day/Night Cycle
|
|
12
|
-
* @augments {
|
|
12
|
+
* @augments {WorldStateObject}
|
|
13
13
|
*/
|
|
14
|
-
var CetusCycle = class extends
|
|
14
|
+
var CetusCycle = class extends WorldStateObject {
|
|
15
15
|
/**
|
|
16
16
|
* The end of the Ostron bounties timer (marks the end of night)
|
|
17
17
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as WorldStateObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/models/CetusCycle.d.ts
|
|
4
4
|
interface CurrentCetusCycle {
|
|
@@ -11,9 +11,9 @@ interface CurrentCetusCycle {
|
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Represents the current Earth Day/Night Cycle
|
|
14
|
-
* @augments {
|
|
14
|
+
* @augments {WorldStateObject}
|
|
15
15
|
*/
|
|
16
|
-
declare class CetusCycle extends
|
|
16
|
+
declare class CetusCycle extends WorldStateObject {
|
|
17
17
|
#private;
|
|
18
18
|
/**
|
|
19
19
|
* Whether it's daytime
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { conclaveCategory, conclaveChallenge, conclaveMode, fromNow, parseDate, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/ConclaveChallenge.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents a Conclave challenge
|
|
7
|
-
* @augments {
|
|
7
|
+
* @augments {WorldStateObject}
|
|
8
8
|
*/
|
|
9
|
-
var ConclaveChallenge = class extends
|
|
9
|
+
var ConclaveChallenge = class extends WorldStateObject {
|
|
10
10
|
/**
|
|
11
11
|
* The number of times that the challenge's objective needs to be completed
|
|
12
12
|
*/
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as WorldStateObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/models/ConstructionProgress.d.ts
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Represents enemy construction progress
|
|
7
|
-
* @augments {
|
|
7
|
+
* @augments {WorldStateObject}
|
|
8
8
|
*/
|
|
9
|
-
declare class ConstructionProgress extends
|
|
9
|
+
declare class ConstructionProgress extends WorldStateObject {
|
|
10
10
|
fomorianProgress: string;
|
|
11
11
|
razorbackProgress: string;
|
|
12
12
|
unknownProgress: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/ConstructionProgress.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents enemy construction progress
|
|
7
|
-
* @augments {
|
|
7
|
+
* @augments {WorldStateObject}
|
|
8
8
|
*/
|
|
9
|
-
var ConstructionProgress = class extends
|
|
9
|
+
var ConstructionProgress = class extends WorldStateObject {
|
|
10
10
|
fomorianProgress;
|
|
11
11
|
razorbackProgress;
|
|
12
12
|
unknownProgress;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow, languageString, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/DailyDeal.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents a daily deal
|
|
7
7
|
*/
|
|
8
|
-
var DailyDeal = class extends
|
|
8
|
+
var DailyDeal = class extends WorldStateObject {
|
|
9
9
|
/**
|
|
10
10
|
* The item that is being offered in the sale
|
|
11
11
|
*/
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { t as Mission } from "./Mission-
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as DarkSectorBattle } from "./DarkSectorBattle-
|
|
1
|
+
import { t as Mission } from "./Mission-4n_i7W8j.mjs";
|
|
2
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
3
|
+
import { t as DarkSectorBattle } from "./DarkSectorBattle-D8UJUdh9.mjs";
|
|
4
4
|
import { languageString, parseDate } from "warframe-worldstate-data/utilities";
|
|
5
5
|
|
|
6
6
|
//#region lib/models/DarkSector.ts
|
|
7
7
|
/**
|
|
8
8
|
* Represents a dark sector
|
|
9
|
-
* @augments {
|
|
9
|
+
* @augments {WorldStateObject}
|
|
10
10
|
*/
|
|
11
|
-
var DarkSector = class extends
|
|
11
|
+
var DarkSector = class extends WorldStateObject {
|
|
12
12
|
/**
|
|
13
13
|
* The dark sector credit tax rate
|
|
14
14
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -11,7 +11,10 @@ var DuviriChoice = class {
|
|
|
11
11
|
case "EXC_NORMAL":
|
|
12
12
|
this.category = "normal";
|
|
13
13
|
break;
|
|
14
|
-
case "EXC_HARD":
|
|
14
|
+
case "EXC_HARD":
|
|
15
|
+
this.category = "hard";
|
|
16
|
+
break;
|
|
17
|
+
default: throw new Error(`Unknown category ${data.Category}`);
|
|
15
18
|
}
|
|
16
19
|
this.categoryKey = data.Category;
|
|
17
20
|
this.choices = data.Choices;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/models/DuviriCycle.ts
|
|
4
4
|
const cycleTime = 36e3;
|
|
@@ -27,10 +27,10 @@ const getStageInfo = () => {
|
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
|
-
* @typedef {
|
|
31
|
-
* @augments {
|
|
30
|
+
* @typedef {WorldStateObject} DuviriCycle
|
|
31
|
+
* @augments {WorldStateObject}
|
|
32
32
|
*/
|
|
33
|
-
var DuviriCycle = class extends
|
|
33
|
+
var DuviriCycle = class extends WorldStateObject {
|
|
34
34
|
/**
|
|
35
35
|
* Current stage key
|
|
36
36
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/EarthCycle.ts
|
|
@@ -37,9 +37,9 @@ function getCurrentEarthCycle() {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Represents the current Earth Day/Night Cycle
|
|
40
|
-
* @augments {
|
|
40
|
+
* @augments {WorldStateObject}
|
|
41
41
|
*/
|
|
42
|
-
var EarthCycle = class extends
|
|
42
|
+
var EarthCycle = class extends WorldStateObject {
|
|
43
43
|
#ec = getCurrentEarthCycle();
|
|
44
44
|
/**
|
|
45
45
|
* Whether or not this it's daytime
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as WorldStateObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/models/EarthCycle.d.ts
|
|
4
4
|
interface EarthCycleType {
|
|
@@ -33,9 +33,9 @@ interface EarthCycleType {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Represents the current Earth Day/Night Cycle
|
|
36
|
-
* @augments {
|
|
36
|
+
* @augments {WorldStateObject}
|
|
37
37
|
*/
|
|
38
|
-
declare class EarthCycle extends
|
|
38
|
+
declare class EarthCycle extends WorldStateObject {
|
|
39
39
|
#private;
|
|
40
40
|
/**
|
|
41
41
|
* Whether or not this it's daytime
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -3,7 +3,7 @@ const proxyUrl = process.env.PROXY_URL ?? void 0;
|
|
|
3
3
|
const isCI = process.env.CI === "true";
|
|
4
4
|
const ciTimeout = process.env.CI_TIMEOUT ? parseInt(process.env.CI_TIMEOUT, 10) : 6e4;
|
|
5
5
|
const localTimeout = process.env.LOCAL_TIMEOUT ? parseInt(process.env.LOCAL_TIMEOUT, 10) : 12e6;
|
|
6
|
-
|
|
6
|
+
const fetchProxy = async (url, { session = "parser-session", contentType = "application/json" } = {
|
|
7
7
|
session: "parser-session",
|
|
8
8
|
contentType: "application/json"
|
|
9
9
|
}) => {
|
|
@@ -28,7 +28,7 @@ var FetchProxy_default = async (url, { session = "parser-session", contentType =
|
|
|
28
28
|
json: async () => {
|
|
29
29
|
try {
|
|
30
30
|
return JSON.parse(solution.response);
|
|
31
|
-
} catch (
|
|
31
|
+
} catch (_error) {
|
|
32
32
|
return {};
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -43,4 +43,4 @@ var FetchProxy_default = async (url, { session = "parser-session", contentType =
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
//#endregion
|
|
46
|
-
export {
|
|
46
|
+
export { fetchProxy as t };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fissureModifier, fissureTier, fromNow, missionType, node, nodeEnemy, nodeMissionType, parseDate, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/Fissure.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents a fissure mission
|
|
7
|
-
* @augments {
|
|
7
|
+
* @augments {WorldStateObject}
|
|
8
8
|
*/
|
|
9
|
-
var Fissure = class extends
|
|
9
|
+
var Fissure = class extends WorldStateObject {
|
|
10
10
|
/**
|
|
11
11
|
* The node where the fissure has appeared
|
|
12
12
|
*/
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow, languageString, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/FlashSale.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents a flash sale
|
|
7
7
|
*/
|
|
8
|
-
var FlashSale = class extends
|
|
8
|
+
var FlashSale = class extends WorldStateObject {
|
|
9
9
|
/**
|
|
10
10
|
* The item being offered in the flash sale
|
|
11
11
|
*/
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
2
|
import { fromNow, operation, operationSymbol, timeDeltaToString, upgrade } from "warframe-worldstate-data/utilities";
|
|
3
3
|
|
|
4
4
|
//#region lib/models/GlobalUpgrade.ts
|
|
5
5
|
/**
|
|
6
6
|
* Represents an upgrade that applies to all players
|
|
7
7
|
*/
|
|
8
|
-
var GlobalUpgrade = class extends
|
|
8
|
+
var GlobalUpgrade = class extends WorldStateObject {
|
|
9
9
|
/**
|
|
10
10
|
* The effect of the upgrade
|
|
11
11
|
*/
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as Reward } from "./Reward-
|
|
2
|
-
import { t as
|
|
1
|
+
import { t as Reward } from "./Reward-DhCSvJkg.mjs";
|
|
2
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
3
3
|
import { faction, languageString, node, timeDeltaToString, toNow } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
5
5
|
//#region lib/models/Invasion.ts
|
|
6
6
|
/**
|
|
7
7
|
* Represents an invasion
|
|
8
8
|
*/
|
|
9
|
-
var Invasion = class extends
|
|
9
|
+
var Invasion = class extends WorldStateObject {
|
|
10
10
|
/**
|
|
11
11
|
* The node where the invasion is taking place
|
|
12
12
|
*/
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
interface KuvaLogEntry {
|
|
3
3
|
start: string;
|
|
4
4
|
end: string;
|
|
5
|
-
missiontype
|
|
5
|
+
missiontype?: string;
|
|
6
6
|
solnode: string;
|
|
7
|
-
solnodedata
|
|
8
|
-
realtime
|
|
7
|
+
solnodedata?: SolnodeData;
|
|
8
|
+
realtime?: string;
|
|
9
9
|
}
|
|
10
10
|
interface SolnodeData {
|
|
11
11
|
name: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { fromNow, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
4
|
+
|
|
5
|
+
//#region lib/models/MidrathCycle.ts
|
|
6
|
+
/**
|
|
7
|
+
* Get the current Midrath cycle time
|
|
8
|
+
*/
|
|
9
|
+
function getCurrentMidrathCycle() {
|
|
10
|
+
const dayDuration = 1920 * 1e3;
|
|
11
|
+
const nightDuration = 960 * 1e3;
|
|
12
|
+
const totalDuration = dayDuration + nightDuration;
|
|
13
|
+
const refPoint = Date.parse("2025-08-07T16:05:29Z");
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
const elapsedInCycle = (now - refPoint) % totalDuration;
|
|
16
|
+
const isDay = elapsedInCycle < dayDuration;
|
|
17
|
+
let phase = {
|
|
18
|
+
name: "night",
|
|
19
|
+
remaining: totalDuration - elapsedInCycle,
|
|
20
|
+
duration: nightDuration
|
|
21
|
+
};
|
|
22
|
+
if (isDay) phase = {
|
|
23
|
+
name: "day",
|
|
24
|
+
remaining: dayDuration - elapsedInCycle,
|
|
25
|
+
duration: dayDuration
|
|
26
|
+
};
|
|
27
|
+
const activation = new Date(now - (phase.duration - phase.remaining));
|
|
28
|
+
return {
|
|
29
|
+
activation,
|
|
30
|
+
expiry: new Date(activation.getTime() + phase.duration),
|
|
31
|
+
state: phase.name,
|
|
32
|
+
isDay
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
var MidrathCycle = class extends WorldStateObject {
|
|
36
|
+
#cycle = getCurrentMidrathCycle();
|
|
37
|
+
/**
|
|
38
|
+
* Whether it's day or not
|
|
39
|
+
*/
|
|
40
|
+
isDay;
|
|
41
|
+
/**
|
|
42
|
+
* The current state
|
|
43
|
+
*/
|
|
44
|
+
state;
|
|
45
|
+
constructor() {
|
|
46
|
+
super({ _id: { $oid: "midrathCycle0" } });
|
|
47
|
+
this.activation = this.#cycle.activation;
|
|
48
|
+
this.expiry = this.#cycle.expiry;
|
|
49
|
+
this.isDay = this.#cycle.isDay;
|
|
50
|
+
this.state = this.#cycle.state;
|
|
51
|
+
this.id = createHash("md5").update(JSON.stringify(this.expiry), "utf8").digest("hex");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get whether or not the event has expired
|
|
55
|
+
*/
|
|
56
|
+
get expired() {
|
|
57
|
+
return fromNow(this.expiry) < 0;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The amount of time left as a string
|
|
61
|
+
*/
|
|
62
|
+
get timeLeft() {
|
|
63
|
+
return timeDeltaToString(fromNow(this.expiry));
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { MidrathCycle as t };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { r as WorldStateObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
|
+
|
|
3
|
+
//#region lib/models/MidrathCycle.d.ts
|
|
4
|
+
declare class MidrathCycle extends WorldStateObject {
|
|
5
|
+
#private;
|
|
6
|
+
/**
|
|
7
|
+
* Whether it's day or not
|
|
8
|
+
*/
|
|
9
|
+
isDay: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* The current state
|
|
12
|
+
*/
|
|
13
|
+
state: string;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Get whether or not the event has expired
|
|
17
|
+
*/
|
|
18
|
+
get expired(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* The amount of time left as a string
|
|
21
|
+
*/
|
|
22
|
+
get timeLeft(): string;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { MidrathCycle as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as deProxy, t as cdn } from "./ImgCdn-
|
|
2
|
-
import { t as
|
|
1
|
+
import { n as deProxy, t as cdn } from "./ImgCdn-DwNJEJ5E.mjs";
|
|
2
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
3
3
|
import { fromNow, languageString, parseDate, timeDeltaToString, toNow } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
5
5
|
//#region lib/models/News.ts
|
|
@@ -9,9 +9,9 @@ const streamReg = /(devstream|prime-time|warframeinternational|stream)/i;
|
|
|
9
9
|
const langString = /(\/Lotus\/Language\/)/i;
|
|
10
10
|
/**
|
|
11
11
|
* Represents a game news item
|
|
12
|
-
* @augments {
|
|
12
|
+
* @augments {WorldStateObject}
|
|
13
13
|
*/
|
|
14
|
-
var News = class extends
|
|
14
|
+
var News = class extends WorldStateObject {
|
|
15
15
|
/**
|
|
16
16
|
* The news message
|
|
17
17
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as WorldStateObject, t as BaseContentObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
2
|
import { Locale } from "warframe-worldstate-data";
|
|
3
3
|
import { ContentTimestamp } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
@@ -22,9 +22,9 @@ interface RawNews extends BaseContentObject {
|
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Represents a game news item
|
|
25
|
-
* @augments {
|
|
25
|
+
* @augments {WorldStateObject}
|
|
26
26
|
*/
|
|
27
|
-
declare class News extends
|
|
27
|
+
declare class News extends WorldStateObject {
|
|
28
28
|
/**
|
|
29
29
|
* The news message
|
|
30
30
|
*/
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as NightwaveChallenge } from "./NightwaveChallenge-
|
|
1
|
+
import { t as WorldStateObject } from "./WorldStateObject-iHgm5OJw.mjs";
|
|
2
|
+
import { t as NightwaveChallenge } from "./NightwaveChallenge-iPlf04Gb.mjs";
|
|
3
3
|
import { fromNow, languageString, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
4
4
|
|
|
5
5
|
//#region lib/models/Nightwave.ts
|
|
6
6
|
/**
|
|
7
|
-
* Represents
|
|
8
|
-
* @augments {
|
|
7
|
+
* Represents a nightwave state
|
|
8
|
+
* @augments {WorldStateObject}
|
|
9
9
|
*/
|
|
10
|
-
var Nightwave = class extends
|
|
10
|
+
var Nightwave = class extends WorldStateObject {
|
|
11
11
|
/**
|
|
12
12
|
* The current season. 0-indexed.
|
|
13
13
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as
|
|
2
|
-
import { n as RawNightwaveChallenge, t as NightwaveChallenge } from "./NightwaveChallenge-
|
|
1
|
+
import { r as WorldStateObject, t as BaseContentObject } from "./WorldStateObject-HVH8YH1P.mjs";
|
|
2
|
+
import { n as RawNightwaveChallenge, t as NightwaveChallenge } from "./NightwaveChallenge-D7AsQ5ex.mjs";
|
|
3
3
|
import { Locale } from "warframe-worldstate-data";
|
|
4
4
|
|
|
5
5
|
//#region lib/models/Nightwave.d.ts
|
|
@@ -12,10 +12,10 @@ interface RawNightwave extends BaseContentObject {
|
|
|
12
12
|
ActiveChallenges: RawNightwaveChallenge[];
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Represents
|
|
16
|
-
* @augments {
|
|
15
|
+
* Represents a nightwave state
|
|
16
|
+
* @augments {WorldStateObject}
|
|
17
17
|
*/
|
|
18
|
-
declare class Nightwave extends
|
|
18
|
+
declare class Nightwave extends WorldStateObject {
|
|
19
19
|
/**
|
|
20
20
|
* The current season. 0-indexed.
|
|
21
21
|
*/
|