27ELNQF5ACGIS3FZ5ITFD4D4NYMLZ2IJ4WDP7QVTMXLBBFIKICFAC
GZRMSSTEWT3T2JERC7WCVT727X237UA6MXWVT6OSV5D5BRD4UOGQC
NIYF4R7SECNOBIZNKAR627Q5BW7ANIFCKKKPHOM2OZIBVEGYWWZQC
6REHBZAOJN4CVZY4HFXVNEUMWGQUXFTXMLQPXEH7RTH5FBL2TXIAC
IZUPWMKDP7DYVZT4LI6WA4X2KGSLZ4GPVAYKDDNJUMRJ6AVZJLAAC
B4JS4Z3VVAD5RJJ272S7GJM5BUNIHHMGNK2VSKVGZFPOVFP2YO4QC
6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC
Y7TNTUXM44MRLGA6FEG7J6BR77I7N3AIPZYVPXULOQZQ6PNOWJ7QC
Y7VEWZEPUKX2WWPTQCUSIF7YMRUC6JZQNUU5OX3HQDB4GSDSTQZAC
PEQNQJYNX7QOEM67QH2UF7VZ43AXHUBO76DN77L43MEFRHVDBO5QC
NJ3CLHJNB5S7K7XHXLMDGD3RDVIFIHYNDMFQJF3CUVMAK6E436YQC
ZGS4FTTFBXTF2SHYTPAJJBWEUVWVYXPSJVEFI5NYJWTW273B4NHAC
TQ57VE45BHV7MOZ6GKTYZEAMAOTXLPQ3ROCWJ2FUCITQWOYVMUIAC
FEYZALRNZQFN7QWCJGGTHHAYUN2OSSWD7SITQMOZIGQFUMWRFFCQC
WTINQMZSNRT5MSAXLMMZVM6OU6TMD4AP4OEUYAXZUFNY5IWFLZSQC
DHO4JCJIELKX4R42XXAMAHVQTTE6OWULLP2QF4BXO3UWC5UTMSMAC
ANA23YLFENNJU3UZDZKIKGZJLM46AM2LQEQ7SPRUVRMOQGDG4DFAC
3UFL673QX2JG7KHTAM7DFH4BBYVHDNMXBS2RW45G3JBNFZFLSRRQC
NKWFGTCM6HM35MAJAREANFQS76ALYOD7K6FT77X5HQPBCRAPXVRAC
WO2ALETBVNH7N3NXJ6JKWCQ2YIZN6LBO7WEXPHAT3EQQJEUCJITQC
WPC667PRTGRE7BNP6E7ZCQIKXYMIHJT3LUTTQT7VX2HQVRBXNIKAC
export const UseGameStateContext = React.createContext<[DeepReadonly<GameState>, UpdaterGeneratorType2<GameState>, () => void]>([] as any);
export const UseGameStateContext = React.createContext<[Const<GameState>, UpdaterGeneratorType2<GameState>, () => void]>([] as any);
export type DeepReadonly<T> = T extends Function ? T : {
readonly [P in keyof T]: T[P] extends { [k: string]: any } ? DeepReadonly<T[P]> : T[P];
/**
* A deep readonly type - given an object type, all subobjects and their subobjects are also marked as readonly.
*/
export type Const<T> = T extends Function ? T : {
readonly [P in keyof T]: T[P] extends { [k: string]: any } ? Const<T[P]> : T[P];
// Twice, actually, because of react dev mode double-calling stuff
/**
* Asserts that a function is not called more than twice. Useful for debugging react lifecycle which may be creating more objects than you realize, impacting performance.
* @param id identifier
*/
/**
* Class representing a value which is only computed when used.
*
* Usage: const lazy = new Lazy(() => thingThatReturnsSomething()).
* Then thingThatReturnsSomething() will only get called on the first time lazy.get() is called.
* On the second and subsequent times, lazy.get() will return the same object - the factory method is not called again.
*/